Compare commits
No commits in common. "3e17af43aaadda413c90c997071346778448b264" and "8c40943060af720f58d86f05a4e6663b5447c5c6" have entirely different histories.
3e17af43aa
...
8c40943060
@ -36,6 +36,7 @@
|
||||
"base_extra_thickness": "20",
|
||||
"base_tickness": "8",
|
||||
"build_fin": "true",
|
||||
"build_mold": "true",
|
||||
"draw_profile": "false",
|
||||
"fin_back_angle": "20",
|
||||
"fin_back_height": "30",
|
||||
@ -67,131 +68,6 @@
|
||||
"resin_escape_diameter": "4",
|
||||
"scale_factor": "1",
|
||||
"show_debug_layers": "false"
|
||||
},
|
||||
"New set 3": {
|
||||
"$fn": "64",
|
||||
"OFFSET": "0.01",
|
||||
"base_extra_thickness": "20",
|
||||
"base_tickness": "8",
|
||||
"build_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",
|
||||
"merge_holes_diameter": "6",
|
||||
"mold_base_height": "10",
|
||||
"mold_extra_width": "15",
|
||||
"mold_part": "top",
|
||||
"mold_piston_height": "10",
|
||||
"mold_top_height": "5",
|
||||
"parts": "all",
|
||||
"piston_depth": "5",
|
||||
"printable": "true",
|
||||
"render_fin": "true",
|
||||
"render_mold": "false",
|
||||
"resin_escape_diameter": "4",
|
||||
"scale_factor": "1",
|
||||
"show_debug_layers": "false"
|
||||
},
|
||||
"New set 4": {
|
||||
"$fn": "64",
|
||||
"OFFSET": "0.01",
|
||||
"base_extra_thickness": "20",
|
||||
"base_tickness": "8",
|
||||
"build_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",
|
||||
"merge_holes_diameter": "6",
|
||||
"mold_base_height": "10",
|
||||
"mold_extra_width": "15",
|
||||
"mold_part": "all",
|
||||
"mold_piston_height": "10",
|
||||
"mold_top_height": "5",
|
||||
"parts": "all",
|
||||
"piston_depth": "5",
|
||||
"printable": "true",
|
||||
"render_fin": "false",
|
||||
"render_mold": "false",
|
||||
"resin_escape_diameter": "4",
|
||||
"scale_factor": "1",
|
||||
"show_debug_layers": "false"
|
||||
},
|
||||
"New set 5": {
|
||||
"$fn": "64",
|
||||
"CLEARING": "0.10000000000000001",
|
||||
"OFFSET": "0.01",
|
||||
"base_extra_thickness": "20",
|
||||
"base_tickness": "8",
|
||||
"build_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",
|
||||
"merge_holes_diameter": "6",
|
||||
"mold_base_height": "10",
|
||||
"mold_extra_width": "15",
|
||||
"mold_part": "all",
|
||||
"mold_piston_height": "10",
|
||||
"mold_top_height": "5",
|
||||
"parts": "all",
|
||||
"piston_depth": "5",
|
||||
"printable": "true",
|
||||
"render_drill_template": "true",
|
||||
"render_fin": "false",
|
||||
"render_mold": "false",
|
||||
"resin_escape_diameter": "4",
|
||||
"scale_factor": "1",
|
||||
"show_debug_layers": "false"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,17 +10,6 @@ include <DotScad/src/bend_extrude.scad>;
|
||||
include <DotScad/src/ellipse_extrude.scad>;
|
||||
include <DotScad/src/loft.scad>;
|
||||
|
||||
|
||||
/**
|
||||
* Kitesurf Fins mold
|
||||
*
|
||||
*
|
||||
*
|
||||
* Requirements :
|
||||
* - The plunger normaly should be twice the height of the part
|
||||
*
|
||||
*/
|
||||
|
||||
/************************************************/
|
||||
/* Parameters */
|
||||
/************************************************/
|
||||
@ -73,6 +62,9 @@ draw_profile = false;
|
||||
// Draw Fin
|
||||
build_fin = false;
|
||||
|
||||
// Build mold
|
||||
build_mold = true;
|
||||
|
||||
/* [Mold] */
|
||||
|
||||
// Mold base height
|
||||
@ -91,13 +83,8 @@ piston_depth = 5;
|
||||
/* [Rendering] */
|
||||
|
||||
// Rendering parts
|
||||
render_fin = false;
|
||||
render_mold = true;
|
||||
render_drill_template = true;
|
||||
|
||||
parts = "all"; // [all, top, bottom]
|
||||
|
||||
|
||||
mold_part = "all"; // [all, top, bottom]
|
||||
// Scaling
|
||||
scale_factor = 1.0; // [0.1:0.1:2]
|
||||
@ -105,6 +92,9 @@ scale_factor = 1.0; // [0.1:0.1:2]
|
||||
// Printable rendering
|
||||
printable = true;
|
||||
|
||||
// Rendering mold
|
||||
//render_mold = true;
|
||||
|
||||
|
||||
$fn=64;
|
||||
|
||||
@ -112,9 +102,9 @@ $fn=64;
|
||||
/* Constants */
|
||||
/*************/
|
||||
|
||||
|
||||
// Define the offset value as a constant
|
||||
OFFSET = 0.01;
|
||||
CLEARING = 0.1;
|
||||
|
||||
/************************************************/
|
||||
/* Derived variable */
|
||||
@ -129,12 +119,14 @@ drilling_length = mold_base_height+mold_piston_height+2*OFFSET;
|
||||
pt1_x = adj_ang_to_opp(fin_height,fin_sweep)+fin_base/2;
|
||||
pt1_y = fin_height;
|
||||
|
||||
//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];
|
||||
|
||||
|
||||
|
||||
/******************/
|
||||
/* Profile points */
|
||||
/******************/
|
||||
@ -178,21 +170,57 @@ counter_edge_point = [fin_width-6,fin_height-8];
|
||||
profile_path = translate_path( asCurve(profile_points),-fin_width/2 );
|
||||
|
||||
|
||||
|
||||
function asCurve(points) = bezier_curve(points/*,N=3*/,splinesteps=128);
|
||||
function handle(point,angle,strength) = [
|
||||
//point[0] + adj_ang_to_opp(strength,angle) /** xAngleFactor(angle)*/,
|
||||
//point[1] + /*(angle>0 ? strength :-strength)*/ strength * yAngleFactor(angle),
|
||||
point[0] + polar_to_xy(strength,angle)[0] ,
|
||||
point[1] + polar_to_xy(strength,angle)[1]
|
||||
];
|
||||
|
||||
function xAngleFactor(angle) = angle > 0 && angle < 180 ? 1 : -1;
|
||||
function yAngleFactor(angle) = angle > -90 && angle < 90 ? 1 : -1;
|
||||
|
||||
//function counterTop(x,withdraw,height) = [x-withdraw, height ];
|
||||
function handleStart(x,withdraw,angle,strength) = [x+adj_ang_to_opp(strength,angle), x-withdraw +strength];
|
||||
function handleEnd(x,withdraw,angle,strength) = [x-adj_ang_to_opp(strength,angle), x-withdraw -strength];
|
||||
function endHandle(angle)=
|
||||
angle < 90 ?
|
||||
[fin_base + adj_ang_to_opp(fin_end_strength,90-angle),fin_end_strength]
|
||||
:
|
||||
[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);
|
||||
|
||||
// Surf Fin profile
|
||||
fin_profile = pathProfile( profile_points );
|
||||
|
||||
function expandPath(path,delta) =
|
||||
offset(
|
||||
deduplicate(path),
|
||||
delta=delta,
|
||||
chamfer=false,
|
||||
same_length=true
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
// *****************
|
||||
// * Fin Drawing *
|
||||
// *****************
|
||||
if ( render_fin ) {
|
||||
scale([scale_factor, scale_factor, scale_factor])
|
||||
buildFin( fin_thickness );
|
||||
if (build_fin) {
|
||||
scale([scale_factor, scale_factor, scale_factor]) buildFin();
|
||||
}
|
||||
|
||||
/**
|
||||
* Render Mold
|
||||
*/
|
||||
if ( render_mold ) buildMold();
|
||||
if ( render_drill_template ) buildDrillTemplate();
|
||||
|
||||
|
||||
if (build_mold) {
|
||||
buildMold();
|
||||
}
|
||||
|
||||
/**
|
||||
* Build mold
|
||||
@ -200,27 +228,29 @@ if ( render_drill_template ) buildDrillTemplate();
|
||||
*/
|
||||
module buildMold() {
|
||||
// Bottom mold
|
||||
if (mold_part != "top")
|
||||
|
||||
difference() {
|
||||
case(mold_base_height,true);
|
||||
// Piston
|
||||
down(piston_depth-OFFSET) fwd(20) bottomInsert();
|
||||
}
|
||||
// Top Mold
|
||||
if (mold_part != "bottom")
|
||||
up(printable ? 0 : 60) fwd(printable ? fin_height+50 : 0) down(mold_base_height) mirror([0,0,printable ? 1 : 0 ]) {
|
||||
|
||||
|
||||
difference() {
|
||||
union() {
|
||||
// case
|
||||
case(mold_top_height,false);
|
||||
|
||||
// Piston
|
||||
mirror([1,0,0])
|
||||
down(mold_top_height+piston_depth-OFFSET) fwd(20) topPiston();
|
||||
};
|
||||
resin_escape(40);
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
@ -229,7 +259,35 @@ module buildMold() {
|
||||
* @param height - Height of the case
|
||||
* @param bottom - Is bottom or top
|
||||
*/
|
||||
module case( height , bottom=true ) {
|
||||
module case_old(height,bottom=true) {
|
||||
diff() cuboid( [ mold_length, mold_width, height ],
|
||||
rounding=4,
|
||||
edges=[bottom ? BOTTOM: TOP],
|
||||
anchor=TOP ){
|
||||
// Drills
|
||||
align(BOTTOM,[FRONT+LEFT,FRONT+RIGHT,BACK+LEFT,BACK+RIGHT],inset=10,overlap=-OFFSET)
|
||||
color("orange")
|
||||
tag("remove")
|
||||
drilling();
|
||||
// Material holes
|
||||
/*
|
||||
align(TOP,[CENTER+BACK+LEFT],inside=true,inset=15,overlap=-OFFSET)
|
||||
color("Red") wedge([mold_height+2*OFFSET, 50, 30], center=true,orient=FRONT,spin=-90 );
|
||||
*/
|
||||
// Material holes
|
||||
align(TOP,[CENTER+BACK+LEFT]/*,inside=true*/,inset=15,overlap=-OFFSET)
|
||||
color("Red")
|
||||
up(OFFSET)
|
||||
tag("remove")
|
||||
rounded_triangle(radius=3, height=height+2*OFFSET);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
module case(height,bottom=true) {
|
||||
difference() {
|
||||
diff() cuboid( [ mold_length, mold_width, height ],
|
||||
rounding=4,
|
||||
@ -240,71 +298,41 @@ module case( height , bottom=true ) {
|
||||
color("orange")
|
||||
tag("remove")
|
||||
drilling();
|
||||
// Material holes
|
||||
/*
|
||||
align(TOP,[CENTER+BACK+LEFT],inside=true,inset=15,overlap=-OFFSET)
|
||||
color("Red") wedge([mold_height+2*OFFSET, 50, 30], center=true,orient=FRONT,spin=-90 );
|
||||
*/
|
||||
|
||||
|
||||
};
|
||||
// Material holes
|
||||
mirror([bottom ? 0:1,0,0])
|
||||
back(38) left(55)
|
||||
color("Red")
|
||||
up(OFFSET)
|
||||
//tag("remove")
|
||||
rounded_triangle(radius=3, height=height+2*OFFSET);
|
||||
// Length hole
|
||||
fwd(32) cuboid([120,10,50],rounding=5);
|
||||
// Side holes
|
||||
left(67) cuboid([10,40,50],rounding=5);
|
||||
right(67) cuboid([10,40,50],rounding=5);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Drill template
|
||||
*
|
||||
*/
|
||||
module buildDrillTemplate() {
|
||||
|
||||
spacing = 38.5;
|
||||
drill_depth = 15;
|
||||
drill_diameter = 6;
|
||||
template_height = 5;
|
||||
|
||||
p1 = 20;
|
||||
p2 = p1-spacing;
|
||||
|
||||
mirror([0,0,printable ? 1 : 0]) difference() {
|
||||
|
||||
left(1) color ("Orange") cuboid([fin_width+7,15,10],rounding=3);
|
||||
down(OFFSET) {
|
||||
hull(){
|
||||
left(28) cylinder(h=template_height+2*OFFSET,r=drill_diameter/2);
|
||||
left(55) cylinder(h=template_height+2*OFFSET,r=drill_diameter/2);
|
||||
}
|
||||
hull(){
|
||||
left(12) cylinder(h=template_height+2*OFFSET,r=drill_diameter/2);
|
||||
left(-10) cylinder(h=template_height+2*OFFSET,r=drill_diameter/2);
|
||||
}
|
||||
hull(){
|
||||
left(-27) cylinder(h=template_height+2*OFFSET,r=drill_diameter/2);
|
||||
left(-53) cylinder(h=template_height+2*OFFSET,r=drill_diameter/2);
|
||||
}
|
||||
}
|
||||
xrot(-90) buildFin(fin_thickness + 2*CLEARING );
|
||||
//left(60) cylinder(h=20,r=6/2);
|
||||
up(template_height+OFFSET)
|
||||
{
|
||||
left(p1)
|
||||
cylinder(h=drill_depth+template_height,r=drill_diameter/2,orient=DOWN);
|
||||
left(p2)
|
||||
cylinder(h=drill_depth,r=drill_diameter/2,orient=DOWN);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
module rounded_triangle(radius, height) {
|
||||
triangle_points = [[0, 0], [75, 0], [0, -35]]; // Equilateral triangle with side length 100
|
||||
// Round the corners of the triangle
|
||||
rounded_shape = round_corners( triangle_points, r=radius );
|
||||
// Extrude the 2D rounded triangle
|
||||
//mirror([0,0,1]) linear_extrude(height = height) polygon(rounded_shape);
|
||||
mirror([0,0,1]) linear_extrude(height = height) polygon(rounded_shape);
|
||||
|
||||
//mirror([0,0,1]) linear_extrude(height = height) polygon(round_corners(right_triangle([40,30]),r=radius));
|
||||
//mirror([0,0,1]) linear_extrude(height = height) polygon(right_triangle([40,30]));
|
||||
//mirror([0,0,1]) cyl(l=80, r=10); // Work with cylinder
|
||||
}
|
||||
|
||||
|
||||
@ -336,26 +364,17 @@ module topPiston() {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Build fin
|
||||
*
|
||||
*/
|
||||
module buildFin( thickness ) {
|
||||
union() {
|
||||
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
|
||||
*/
|
||||
module buildFinSide(thickness,flip=false) {
|
||||
module buildFinSide(flip=false) {
|
||||
debug=false;
|
||||
mirror([0,0,flip ? 1 : 0])
|
||||
color(flip ? "Gray" : "LightGray") /*up(fin_thickness/4)*/ /*down(fin_thickness) */
|
||||
ellipse_extrude( thickness / 2 )
|
||||
ellipse_extrude( fin_thickness/2*(debug?1.2:1))
|
||||
polygon(profile_path);
|
||||
}
|
||||
|
||||
@ -367,8 +386,11 @@ module resin_escape(length) {
|
||||
// * Drilling *
|
||||
// *****************
|
||||
module drilling(){
|
||||
/*fwd(20)*/ color("Red") /*up(mold_piston_height+5)*/ up(-OFFSET)
|
||||
orient(DOWN)
|
||||
|
||||
//length = mold_base_height+mold_piston_height+10;
|
||||
|
||||
/*fwd(20)*/ color("Red") /*up(mold_piston_height+5)*/ up(-OFFSET)
|
||||
orient(DOWN)
|
||||
threaded_rod(
|
||||
d=merge_holes_diameter,
|
||||
l=drilling_length,
|
||||
@ -380,13 +402,56 @@ module drilling(){
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//drilling();
|
||||
|
||||
module buildFin() {
|
||||
if (false)
|
||||
union(){
|
||||
difference(){
|
||||
union() {
|
||||
if (parts != "bottom")
|
||||
//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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module subtracted(anchor) {
|
||||
color("Red") fwd(40) left(40) cube([fin_width+100,fin_height+100,20],anchor=anchor);
|
||||
}
|
||||
|
||||
|
||||
// Draw fin profile
|
||||
if (draw_profile) drawProfile( profile_points, true );
|
||||
|
||||
|
||||
|
||||
if (show_debug_layers) {
|
||||
left(130) {
|
||||
showDebugPath(layer_0);
|
||||
showDebugPath(layer_1);
|
||||
showDebugPath(layer_2);
|
||||
|
||||
assert(is_path(layer_3),"Layer 3 is not a path");
|
||||
showDebugPath(layer_3);
|
||||
//showDebugPath(layer_4);
|
||||
}
|
||||
left(230)
|
||||
showDebugPath(vertical_profile);
|
||||
//showDebugPath(layer_3);
|
||||
|
||||
}
|
||||
if (draw_profile) {
|
||||
// Draw fin profile
|
||||
drawProfile( profile_points, true );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@ -458,48 +523,11 @@ module print_path_points(path) {
|
||||
echo ("**********************");
|
||||
echo ("* Configuration *");
|
||||
echo ("**********************");
|
||||
//echo ("Layers count" ,len(layers));
|
||||
echo ("Base thickness" ,str(base_tickness," mm"));
|
||||
|
||||
|
||||
|
||||
function asCurve(points) = bezier_curve(points/*,N=3*/,splinesteps=128);
|
||||
function handle(point,angle,strength) = [
|
||||
//point[0] + adj_ang_to_opp(strength,angle) /** xAngleFactor(angle)*/,
|
||||
//point[1] + /*(angle>0 ? strength :-strength)*/ strength * yAngleFactor(angle),
|
||||
point[0] + polar_to_xy(strength,angle)[0] ,
|
||||
point[1] + polar_to_xy(strength,angle)[1]
|
||||
];
|
||||
|
||||
function xAngleFactor(angle) = angle > 0 && angle < 180 ? 1 : -1;
|
||||
function yAngleFactor(angle) = angle > -90 && angle < 90 ? 1 : -1;
|
||||
|
||||
//function counterTop(x,withdraw,height) = [x-withdraw, height ];
|
||||
function handleStart(x,withdraw,angle,strength) = [x+adj_ang_to_opp(strength,angle), x-withdraw +strength];
|
||||
function handleEnd(x,withdraw,angle,strength) = [x-adj_ang_to_opp(strength,angle), x-withdraw -strength];
|
||||
function endHandle(angle)=
|
||||
angle < 90 ?
|
||||
[fin_base + adj_ang_to_opp(fin_end_strength,90-angle),fin_end_strength]
|
||||
:
|
||||
[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);
|
||||
|
||||
// Surf Fin profile
|
||||
fin_profile = pathProfile( profile_points );
|
||||
|
||||
function expandPath(path,delta) =
|
||||
offset(
|
||||
deduplicate(path),
|
||||
delta=delta,
|
||||
chamfer=false,
|
||||
same_length=true
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
36
Readme.md
36
Readme.md
@ -17,41 +17,5 @@ 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
|
||||
|
||||
Open web app [at](https://0x00019913.github.io/meshy/) and import it to get the volume.
|
||||
|
||||
Volume is 21037 mm3.
|
||||
|
||||
To convert 21037 cubic millimeters (mm³) to deciliters (dl), you can use the conversion factor that 1 deciliter equals 100000 cubic millimeters.
|
||||
|
||||
Therefore, 21037 cubic millimeters is equivalent to 0.21dl.
|
||||
|
||||
|
||||
## Required Material
|
||||
|
||||
- Durcisseur : Correspondant à la résine choisie.
|
||||
- Fibre de verre :
|
||||
Tissus de fibre de verre : Différents grammages, comme le roving (tissé) pour la solidité et le mat pour l'imprégnation.
|
||||
- Fibre de carbone :
|
||||
Tissus de fibre de carbone : Pour des pièces plus légères et très résistantes.
|
||||
- Résine époxy : Choisissez selon les propriétés mécaniques et la température de travail. Il est préférable d'utiliser une résine époxy de bonne qualité pour des pièces finies robustes.
|
||||
- Wax (Vonixx Carnauba Plus) R$ 30
|
||||

|
||||
|
||||
|
||||
|
||||
## Required Tools
|
||||
|
||||
|
||||
|
||||
- Gants et masques : Pour la sécurité, car les résines époxy sont toxiques.
|
||||
- Scellants et cires de démoulage : Pour faciliter le démoulage et éviter que les pièces ne collent au moule.
|
||||
- Ciseaux ou coupe-couteau : Pour découper les tissus de fibre.
|
||||
- Pinceaux ou rouleaux : Pour appliquer la résine.
|
||||
- Système de dégazage : Optionnel, pour éliminer les bulles d'air dans la résine, améliorant la qualité du composite.
|
||||
- Seringue
|
||||
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 51 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
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
Loading…
x
Reference in New Issue
Block a user