Compare commits
4 Commits
e8dde99876
...
607fdf8d79
Author | SHA1 | Date | |
---|---|---|---|
607fdf8d79 | |||
8e4f99cd44 | |||
51a60d4018 | |||
0149de63e0 |
BIN
.Readme.md.swp
Normal file
BIN
.Readme.md.swp
Normal file
Binary file not shown.
46
Readme.md
46
Readme.md
@ -10,7 +10,11 @@ The box is designed using library [Fin Base](https://github.com/hrobeers/finbase
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
## Fin profile
|
||||||
|
|
||||||
|
Fin profile is defined using bézier 3 points control
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
## Kitesurf Fins
|
## Kitesurf Fins
|
||||||
|
|
||||||
@ -20,7 +24,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/)
|
[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.
|
Open web app [at](https://0x00019913.github.io/meshy/) and import it to get the volume.
|
||||||
|
|
||||||
@ -31,6 +35,46 @@ To convert 21037 cubic millimeters (mm³) to deciliters (dl), you can use the co
|
|||||||
Therefore, 21037 cubic millimeters is equivalent to 0.21dl.
|
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
|
## Required Material
|
||||||
|
|
||||||
- Durcisseur : Correspondant à la résine choisie.
|
- Durcisseur : Correspondant à la résine choisie.
|
||||||
|
@ -36,7 +36,6 @@
|
|||||||
"parts": "all",
|
"parts": "all",
|
||||||
"piston_depth": "5",
|
"piston_depth": "5",
|
||||||
"printable": "false",
|
"printable": "false",
|
||||||
"resin_escape_diameter": "4",
|
|
||||||
"scale_factor": "1",
|
"scale_factor": "1",
|
||||||
"show_curve_points": "false",
|
"show_curve_points": "false",
|
||||||
"show_debug_layers": "false",
|
"show_debug_layers": "false",
|
||||||
@ -83,7 +82,6 @@
|
|||||||
"pin_dia": "3",
|
"pin_dia": "3",
|
||||||
"piston_depth": "5",
|
"piston_depth": "5",
|
||||||
"printable": "true",
|
"printable": "true",
|
||||||
"resin_escape_diameter": "4",
|
|
||||||
"scale_factor": "1",
|
"scale_factor": "1",
|
||||||
"screw_dia": "4.5",
|
"screw_dia": "4.5",
|
||||||
"screw_pos": "9.5999999999999996",
|
"screw_pos": "9.5999999999999996",
|
||||||
@ -135,7 +133,6 @@
|
|||||||
"pin_dia": "3",
|
"pin_dia": "3",
|
||||||
"piston_depth": "5",
|
"piston_depth": "5",
|
||||||
"printable": "true",
|
"printable": "true",
|
||||||
"resin_escape_diameter": "4",
|
|
||||||
"scale_factor": "1",
|
"scale_factor": "1",
|
||||||
"screw_dia": "4.5",
|
"screw_dia": "4.5",
|
||||||
"screw_pos": "9.5999999999999996",
|
"screw_pos": "9.5999999999999996",
|
||||||
@ -145,6 +142,171 @@
|
|||||||
"tab_height": "13",
|
"tab_height": "13",
|
||||||
"thick": "9.1999999999999993",
|
"thick": "9.1999999999999993",
|
||||||
"thick_cut": "1"
|
"thick_cut": "1"
|
||||||
|
},
|
||||||
|
"New set 4": {
|
||||||
|
"$fn": "64",
|
||||||
|
"base_extra_thickness": "20",
|
||||||
|
"base_tickness": "8",
|
||||||
|
"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": "high",
|
||||||
|
"parts": "all",
|
||||||
|
"pin_back": "9",
|
||||||
|
"pin_depth": "16.399999999999999",
|
||||||
|
"pin_dia": "3",
|
||||||
|
"piston_depth": "5",
|
||||||
|
"printable": "true",
|
||||||
|
"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"
|
||||||
|
},
|
||||||
|
"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",
|
||||||
|
"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": "false",
|
||||||
|
"draw_profile": "true",
|
||||||
|
"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",
|
||||||
|
"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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -91,7 +91,7 @@ mold_extra_width = 15;
|
|||||||
|
|
||||||
mold_piston_height = 10;
|
mold_piston_height = 10;
|
||||||
|
|
||||||
resin_escape_diameter = 4;
|
//resin_escape_diameter = 4;
|
||||||
|
|
||||||
// Diameter for screw holes in mm
|
// Diameter for screw holes in mm
|
||||||
merge_holes_diameter = 6;
|
merge_holes_diameter = 6;
|
||||||
@ -134,6 +134,10 @@ pin_back = 9;
|
|||||||
//thick_cut = 0.001*1000;
|
//thick_cut = 0.001*1000;
|
||||||
thick_cut = 1;
|
thick_cut = 1;
|
||||||
|
|
||||||
|
// Offset the box to fit the fin
|
||||||
|
box_offset = 80;
|
||||||
|
|
||||||
|
|
||||||
// ---------------------*/
|
// ---------------------*/
|
||||||
/* [Debugging] */
|
/* [Debugging] */
|
||||||
// ---------------------*/
|
// ---------------------*/
|
||||||
@ -153,12 +157,16 @@ draw_profile = false;
|
|||||||
// Rendering parts
|
// Rendering parts
|
||||||
build_fin = false;
|
build_fin = false;
|
||||||
build_box = false;
|
build_box = false;
|
||||||
build_mold = true;
|
build_mold = true;
|
||||||
|
partition = "none"; // [none, low, high]
|
||||||
|
|
||||||
parts = "all"; // [all, top, bottom]
|
parts = "all"; // [all, top, bottom]
|
||||||
|
|
||||||
|
|
||||||
mold_part = "all"; // [all, top, bottom]
|
mold_part = "all"; // [all, top, bottom]
|
||||||
|
|
||||||
|
version ="0.9b";
|
||||||
|
|
||||||
// Scaling
|
// Scaling
|
||||||
scale_factor = 1.0; // [0.1:0.1:2]
|
scale_factor = 1.0; // [0.1:0.1:2]
|
||||||
|
|
||||||
@ -230,125 +238,61 @@ points = flatten([
|
|||||||
profile_curve_with_base = translate_path( addBase(asCurve(points,32)),-fin_base/2,0 );
|
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 = 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));
|
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 *
|
// * Fin Drawing *
|
||||||
// *****************
|
// *****************
|
||||||
if ( build_fin )
|
if ( build_fin )
|
||||||
scale([scale_factor, scale_factor, scale_factor])
|
scale([scale_factor, scale_factor, scale_factor]) {
|
||||||
buildFin( fin_thickness );
|
union() {
|
||||||
|
buildCompletFin();
|
||||||
if ( build_box ) {
|
left(box_offset) usBox(fin_base+30);
|
||||||
buildBox();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Render Mold
|
* Render Mold
|
||||||
*/
|
*/
|
||||||
if ( build_mold ) buildMold();
|
if ( build_mold )
|
||||||
|
difference(){
|
||||||
|
buildMold();
|
||||||
|
if (partition=="low")
|
||||||
|
partitionMask(false);
|
||||||
|
if (partition=="high")
|
||||||
|
partitionMask(true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build complete fin
|
||||||
|
*/
|
||||||
module buildCompletFin() {
|
module buildCompletFin() {
|
||||||
difference(){
|
difference(){
|
||||||
buildFin( fin_thickness );
|
buildFin( fin_thickness ); // Fin
|
||||||
//buildBox();
|
baseMask(); // Remove extra base
|
||||||
// Remove extra base
|
|
||||||
baseMask();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
module buildBox() {
|
|
||||||
/*
|
|
||||||
left(80) {
|
|
||||||
xflip() {
|
|
||||||
finfit(fin_base+20, [1,1,0],false,false);
|
|
||||||
}
|
|
||||||
|
|
||||||
//up(20) tab_cut();
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
|
||||||
module buildBoxMold() {
|
|
||||||
|
|
||||||
// To be defined
|
|
||||||
}
|
|
||||||
|
|
||||||
module baseMask() {
|
module baseMask() {
|
||||||
fwd(OFFSET) cube([fin_base*1.1,base_extra_thickness*1.1,fin_thickness*1.1],anchor=BACK);
|
fwd(OFFSET) cube([fin_base*1.1,base_extra_thickness*1.1,fin_thickness*1.1],anchor=BACK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
module usBoxMask() {
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
module bottomSupport() {
|
|
||||||
moldHeight = 10;
|
|
||||||
moldContour = expandPath(profile,mold_extra_width);
|
|
||||||
down(moldHeight)
|
|
||||||
linear_extrude (moldHeight) polygon(moldContour); // bottom support
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
module support( part ) {
|
|
||||||
moldHeight = 10;
|
|
||||||
moldContour = expandPath(profile,mold_extra_width);
|
|
||||||
down( (part == "bottom" ? 1 : 0) * moldHeight)
|
|
||||||
linear_extrude (moldHeight) polygon(moldContour); // bottom support
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build mold
|
* Build mold
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
module buildMold() {
|
module buildMold() {
|
||||||
// Bottom Mold
|
// Bottom Mold
|
||||||
if (mold_part != "top") {
|
if (mold_part != "top") right( printable ? 120 : 0 ) union() {
|
||||||
// Fin mold
|
// Fin mold
|
||||||
difference() {
|
difference() {
|
||||||
support(part="bottom");
|
support(part="bottom");
|
||||||
@ -357,7 +301,8 @@ module buildMold() {
|
|||||||
}
|
}
|
||||||
// Box mold
|
// Box mold
|
||||||
difference() {
|
difference() {
|
||||||
left(80) finBoxMold( fin_base+30,part="bottom",skirt=false );
|
left(box_offset)
|
||||||
|
finBoxMold( fin_base+30,part="bottom",skirt=false );
|
||||||
// Remove fin
|
// Remove fin
|
||||||
buildCompletFin();
|
buildCompletFin();
|
||||||
}
|
}
|
||||||
@ -365,7 +310,7 @@ module buildMold() {
|
|||||||
moldSkirt( part="bottom" );
|
moldSkirt( part="bottom" );
|
||||||
}
|
}
|
||||||
// Top
|
// Top
|
||||||
if (mold_part != "bottom") up(80) {
|
if (mold_part != "bottom") /*up(1* 150)*/ left( printable ? 120 : 0 ) yrot(printable ? 180 : 0 ) union() {
|
||||||
difference(){
|
difference(){
|
||||||
support(part="top");
|
support(part="top");
|
||||||
usBoxMask();
|
usBoxMask();
|
||||||
@ -374,43 +319,37 @@ module buildMold() {
|
|||||||
}
|
}
|
||||||
// Box mold
|
// Box mold
|
||||||
difference() {
|
difference() {
|
||||||
left(80) finBoxMold( fin_base+30,part="top",skirt=false );
|
left(box_offset)
|
||||||
|
finBoxMold( fin_base+30,part="top",skirt=false );
|
||||||
// Remove fin
|
// Remove fin
|
||||||
//buildCompletFin();
|
buildCompletFin();
|
||||||
}
|
}
|
||||||
// Mold skirt
|
// 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
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//up(50) buildCompletFin();
|
|
||||||
|
|
||||||
//left(300) linear_extrude (skirtHeight) polygon(moldSkirtRegion);
|
|
||||||
/*
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
module support( part ) {
|
||||||
|
moldHeight = 10;
|
||||||
|
moldContour = expandPath(profile,mold_extra_width);
|
||||||
|
if (part == "bottom") {
|
||||||
|
down( moldHeight )
|
||||||
|
linear_extrude (moldHeight) polygon(moldContour); // bottom support
|
||||||
|
} else if (part == "top") {
|
||||||
|
//linear_extrude (moldHeight) polygon(moldContour); // top support
|
||||||
|
linear_extrude (moldHeight) polygon(profile); // top support
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build the piston skirt
|
* Build the piston skirt
|
||||||
*
|
*
|
||||||
@ -421,32 +360,18 @@ module moldSkirt( part ){
|
|||||||
|
|
||||||
box_profile = move([-80,0],profileUS (fin_base+30));
|
box_profile = move([-80,0],profileUS (fin_base+30));
|
||||||
finAndBoxProfile = path_merge_collinear(union([box_profile,profile]));
|
finAndBoxProfile = path_merge_collinear(union([box_profile,profile]));
|
||||||
|
moldHeight = fin_thickness * 3;
|
||||||
|
|
||||||
//if (part == "bottom") {
|
up (part=="top" ? moldHeight : 0 )
|
||||||
|
skirt( finAndBoxProfile, side = part ,moldThickness = 3 , angle = skirt_angle, moldDeep = fin_thickness );
|
||||||
skirt( finAndBoxProfile, side = part ,moldThickness = 3 , angle = skirt_angle, moldDeep = fin_thickness );
|
|
||||||
//} else if (part == "top") {
|
|
||||||
|
|
||||||
|
|
||||||
//}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//moldSkirt(part="top");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
module moldJunctionMask(moldThickness = 3,height,angle){
|
module moldJunctionMask(moldThickness = 3,height,angle){
|
||||||
|
|
||||||
deviation = opp_ang_to_adj (height,angle);
|
deviation = opp_ang_to_adj (height,angle);
|
||||||
right(moldThickness)
|
right(moldThickness)
|
||||||
left(moldThickness/2)
|
left(moldThickness/2)
|
||||||
down(OFFSET)
|
down( OFFSET ) back( moldThickness*1.2 - OFFSET )
|
||||||
//fwd(60)
|
|
||||||
//back(moldThickness*2-0.5)
|
|
||||||
back(moldThickness*1.2-OFFSET )
|
|
||||||
color("Red")
|
color("Red")
|
||||||
prismoid(
|
prismoid(
|
||||||
size1=[fin_width/2-1.5*moldThickness, moldThickness*3+2*OFFSET],
|
size1=[fin_width/2-1.5*moldThickness, moldThickness*3+2*OFFSET],
|
||||||
@ -455,6 +380,7 @@ module moldJunctionMask(moldThickness = 3,height,angle){
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
module buildMoldSkirt( height,offset,thickness ) {
|
module buildMoldSkirt( height,offset,thickness ) {
|
||||||
outside = expandPath(profile,offset);
|
outside = expandPath(profile,offset);
|
||||||
inside = expandPath(profile,offset-thickness);
|
inside = expandPath(profile,offset-thickness);
|
||||||
@ -479,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
|
* Build fin
|
||||||
*
|
*
|
||||||
|
* @param thickness - Thickness of the fin
|
||||||
*/
|
*/
|
||||||
module buildFin( thickness ) {
|
module buildFin( thickness ) {
|
||||||
union() {
|
union() {
|
||||||
if (parts != "bottom") buildFinSide( thickness );
|
if (parts != "bottom" ) buildFinSide( thickness );
|
||||||
if (parts != "top") buildFinSide( thickness , true );
|
if (parts != "top" ) buildFinSide( thickness , true );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build fin side
|
* 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) {
|
module buildFinSide(thickness,flip=false) {
|
||||||
|
|
||||||
//profile_curve_with_base1 = subdivide_path (profile_curve_with_base,500);
|
|
||||||
|
|
||||||
//if (false)
|
|
||||||
mirror([0,0,flip ? 1 : 0])
|
mirror([0,0,flip ? 1 : 0])
|
||||||
color(flip ? "Gray" : "LightGray")
|
color(flip ? "Gray" : "LightGray")
|
||||||
ellipse_extrude( thickness / 2 /*,height=2*/,center=false,twist=-7)
|
ellipse_extrude( thickness / 2 /*,height=2*/,center=false,twist=-7)
|
||||||
@ -532,14 +433,34 @@ module buildFinSide(thickness,flip=false) {
|
|||||||
polygon( profile_curve_with_base);
|
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]]);
|
function addBase(path) = concat(path,[[fin_base,-base_extra_thickness],[0,-base_extra_thickness]]);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Partition mask
|
||||||
|
|
||||||
|
* @param inverse - Side of the cut
|
||||||
|
* @param cut - Cut type
|
||||||
|
*/
|
||||||
|
module partitionMask(inverse = false,cut = "sinewave") {
|
||||||
|
partition_mask(
|
||||||
|
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.
|
* Draws a profile based on Bezier path points with optional debug visualization.
|
||||||
*
|
*
|
||||||
@ -553,17 +474,14 @@ function addBase(path) = concat(path,[[fin_base,-base_extra_thickness],[0,-base_
|
|||||||
*/
|
*/
|
||||||
module drawProfile( points,debug = true ){
|
module drawProfile( points,debug = true ){
|
||||||
|
|
||||||
|
text_size=40;
|
||||||
|
|
||||||
debugPoint (start, "Start", "Red" );
|
debugPoint (start, "Start", "Red" ,textSize=text_size , t=[-20,4,0]);
|
||||||
debugPoint (top_point, "Top", "Blue" );
|
debugPoint (top_point, "Top", "Blue" ,textSize=text_size , t=[-5,5,0]);
|
||||||
debugPoint (edge_point, "Edge", "Brown" );
|
debugPoint (edge_point, "Edge", "Brown" ,textSize=text_size , t=[10,-5,0]);
|
||||||
debugPoint (counter_edge_point, "Counter Edge", "Brown" );
|
debugPoint (counter_edge_point, "Counter Edge", "Brown" ,textSize=text_size , t=[35,-5,0]);
|
||||||
debugPoint (tail_point, "Tail", "Yellow" );
|
debugPoint (tail_point, "Tail", "Yellow" ,textSize=text_size , t=[8,-5,0]);
|
||||||
debugPoint (end_point, "End", "Yellow" );
|
debugPoint (end_point, "End", "Yellow" ,textSize=text_size , t=[13,4,0]);
|
||||||
|
|
||||||
//pt = [100,0];
|
|
||||||
//pos = bezpath_closest_point(points, pt);
|
|
||||||
//xy = bezpath_points(points,pos[0],pos[1]);
|
|
||||||
|
|
||||||
debug_bezier(points, N=3,width=1.2);
|
debug_bezier(points, N=3,width=1.2);
|
||||||
}
|
}
|
||||||
@ -571,6 +489,19 @@ module drawProfile( points,debug = true ){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
echo ("****************************");
|
||||||
|
echo ("** Build **");
|
||||||
|
echo ("****************************");
|
||||||
|
echo (str("filename :"," surf-fins-10inch-",mold_part,"-",partition,"_",version,".stl"," "));
|
||||||
|
|
||||||
|
// Draw fin profile
|
||||||
|
if (draw_profile) drawProfile(points);
|
||||||
|
|
||||||
|
|
||||||
|
// Show curve points
|
||||||
|
if (show_curve_points)
|
||||||
|
color("Blue")move_copies(profile_curve_with_base) circle($fn=16);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -31,12 +31,14 @@ function handle(point,angle,strength) = [
|
|||||||
/**
|
/**
|
||||||
* Show Debug point
|
* 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) {
|
translate(point) {
|
||||||
color(color) sphere(r = r);
|
color(color) sphere(r = r);
|
||||||
|
|
||||||
//translate([3, 3, 0.6]) {
|
//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")
|
color("white")
|
||||||
scale([0.2, 0.2, 1])
|
scale([0.2, 0.2, 1])
|
||||||
linear_extrude(height = 0.1)
|
linear_extrude(height = 0.1)
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
|
|
||||||
include <BOSL2/std.scad>;
|
include <BOSL2/std.scad>
|
||||||
include <BOSL2/beziers.scad>;
|
include <BOSL2/beziers.scad>
|
||||||
|
|
||||||
include <Round-Anything/polyround.scad>
|
include <Round-Anything/polyround.scad>
|
||||||
|
|
||||||
|
|
||||||
@ -17,12 +16,8 @@ OFFSET=0.01;
|
|||||||
**/
|
**/
|
||||||
module boxProfileUS( length ,height=23, tabHeight = 8,tabLength = 20, backRounding = 8, backExtra = 10 ) {
|
module boxProfileUS( length ,height=23, tabHeight = 8,tabLength = 20, backRounding = 8, backExtra = 10 ) {
|
||||||
|
|
||||||
|
|
||||||
echo ("------ height",height);
|
|
||||||
echo ("------ tabHeight",tabHeight);
|
|
||||||
echo ("------ height-tabHeight",height-tabHeight);
|
|
||||||
assert (height-tabHeight,"height-tabHeight should be bigger than 0");
|
assert (height-tabHeight,"height-tabHeight should be bigger than 0");
|
||||||
|
|
||||||
tabExtra = opp_ang_to_adj(height-tabHeight,45);
|
tabExtra = opp_ang_to_adj(height-tabHeight,45);
|
||||||
points = [
|
points = [
|
||||||
[ -tabLength , 0 ,1], // 0
|
[ -tabLength , 0 ,1], // 0
|
||||||
@ -46,7 +41,12 @@ function profileUS( length,height=23,tabHeight = 8,tabLength = 20, backRounding
|
|||||||
[ -tabLength , -tabHeight ,1] // 5
|
[ -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" ) {
|
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() {
|
color(color) mirror_copy([0,0,1], offset=-OFFSET) difference() {
|
||||||
linear_extrude ( height = thickness/2 ) boxProfileUS( length, tabLength = tabLength, height=height, backExtra=backExtra );
|
linear_extrude ( height = thickness/2 ) boxProfileUS( length, tabLength = tabLength, height=height, backExtra=backExtra );
|
||||||
@ -69,9 +69,9 @@ module usBoxMold( length, height=23, thickness = 9, moldThickness = 4,tabLength
|
|||||||
assert (length >0,"length should be bigger than 0");
|
assert (length >0,"length should be bigger than 0");
|
||||||
|
|
||||||
moldHeight = thickness + 2 * moldThickness;
|
moldHeight = thickness + 2 * moldThickness;
|
||||||
|
|
||||||
|
|
||||||
skirtHeight = 3 * thickness;
|
skirtHeight = 3 * thickness;
|
||||||
echo ("---skirtHeight",skirtHeight);
|
|
||||||
echo ("---part",part);
|
|
||||||
deviation = opp_ang_to_adj (skirtHeight,skirtAngle); // Skirt devitation
|
deviation = opp_ang_to_adj (skirtHeight,skirtAngle); // Skirt devitation
|
||||||
|
|
||||||
baseInt = profileUS (length);
|
baseInt = profileUS (length);
|
||||||
@ -79,76 +79,66 @@ module usBoxMold( length, height=23, thickness = 9, moldThickness = 4,tabLength
|
|||||||
topInt = offset(baseInt,delta=deviation , chamfer=false, same_length=true );
|
topInt = offset(baseInt,delta=deviation , chamfer=false, same_length=true );
|
||||||
topExt = offset(baseInt,delta=deviation+moldThickness , chamfer=false, same_length=true );
|
topExt = offset(baseInt,delta=deviation+moldThickness , chamfer=false, same_length=true );
|
||||||
|
|
||||||
union() {
|
if ( part == "bottom") {
|
||||||
difference() {
|
union() {
|
||||||
// Mold
|
difference() {
|
||||||
{
|
// Mold
|
||||||
//if ( part == "bottom")
|
down (moldHeight/2)
|
||||||
|
linear_extrude(moldHeight)
|
||||||
down (moldHeight/2) linear_extrude(moldHeight)
|
offset(r= (part=="top" ? 0 : moldThickness))
|
||||||
offset(r=moldThickness)
|
|
||||||
boxProfileUS( length, height );
|
boxProfileUS( length, height );
|
||||||
|
|
||||||
|
usBox(length,height,drill=false,color="Red");
|
||||||
|
|
||||||
/*
|
// Mask Top
|
||||||
if ( part == "top")
|
verticalMask =
|
||||||
|
part == "bottom" ? 0 :
|
||||||
|
part == "top" ? moldHeight :
|
||||||
|
100;
|
||||||
|
debug = false ;
|
||||||
|
|
||||||
down (moldHeight/2) linear_extrude(moldHeight)
|
if (!debug)
|
||||||
offset(r=moldThickness)
|
down( verticalMask )
|
||||||
boxProfileUS( length, height );
|
linear_extrude( moldHeight )
|
||||||
*/
|
offset( r = moldThickness*2 )
|
||||||
if ( part == "top__" ) {
|
boxProfileUS( length, height );
|
||||||
//baseInt = profileUS (length);
|
|
||||||
//baseInt = profileUS (length);
|
}
|
||||||
//topInt = offset(baseInt,delta=-deviation,chamfer=false,same_length=true);
|
|
||||||
baseInt2 = offset(baseInt,delta=-moldThickness,chamfer=false,same_length=true);
|
|
||||||
topInt2 = offset(baseInt,delta=deviation-moldThickness,chamfer=false,same_length=true);
|
|
||||||
|
|
||||||
difference(){
|
|
||||||
skin([baseInt , topInt ],z=[0,skirtHeight],slices=0);
|
|
||||||
skin([baseInt2 , topInt2 ],z=[thickness/2+moldThickness,skirtHeight+OFFSET],slices=0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
down (moldHeight/2) linear_extrude(moldHeight)
|
|
||||||
offset(r=moldThickness)
|
|
||||||
boxProfileUS( length, height );
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// US Box to subtract
|
|
||||||
usBox(length,height,drill=false,color="Red");
|
|
||||||
|
|
||||||
// Mask Top
|
|
||||||
verticalMask =
|
|
||||||
part == "bottom" ? 0 :
|
|
||||||
part == "top" ? moldHeight :
|
|
||||||
100;
|
|
||||||
down( verticalMask )
|
|
||||||
linear_extrude( moldHeight )
|
|
||||||
offset( r = moldThickness*2 )
|
|
||||||
boxProfileUS( length, height );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( part == "bottom" ) {
|
|
||||||
//topInt = offset(baseInt,delta=deviation,chamfer=false,same_length=true);
|
//topInt = offset(baseInt,delta=deviation,chamfer=false,same_length=true);
|
||||||
if (skirt) difference(){
|
if (skirt) difference(){
|
||||||
skin([baseExt,topExt],z=[0,skirtHeight],slices=0);
|
skin([baseExt,topExt],z=[0,skirtHeight],slices=0);
|
||||||
skin([baseInt,topInt],z=[0,skirtHeight+OFFSET],slices=0);
|
skin([baseInt,topInt],z=[0,skirtHeight+OFFSET],slices=0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( part == "top") {
|
}
|
||||||
|
|
||||||
}
|
if ( part == "top") {
|
||||||
}
|
difference() {
|
||||||
|
// Top Mold
|
||||||
|
linear_extrude( thickness/2+OFFSET+moldThickness /*moldHeight/2*/ )
|
||||||
|
offset(r=-OFFSET)
|
||||||
|
boxProfileUS( length, height );
|
||||||
|
// Box to subtract
|
||||||
|
usBox(length,height,drill=false,color="Red");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//usBoxMold (130,part="bottom",skirt=false);
|
if ( false ) {
|
||||||
|
// Bottom
|
||||||
|
down(0) back(0) usBoxMold( 130 ,part="bottom" ,skirt=false );
|
||||||
|
// Top
|
||||||
|
down(-50) back(0) usBoxMold( 130 ,part="top" ,skirt=false );
|
||||||
|
|
||||||
|
down(50) back(0) usBoxMold( 130 ,part="bottom" ,skirt=true );
|
||||||
|
|
||||||
|
|
||||||
|
//down(0) back(0) usBox(130,height=23,drill=false,color="Green");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//back (30) usBoxMold (130,part="top",skirt=false);
|
|
||||||
|
|
||||||
|
|
||||||
module finBoxMold( length, finLength=-1, skirtAngle = 80, part="bottom", skirt = true) {
|
module finBoxMold( length, finLength=-1, skirtAngle = 80, part="bottom", skirt = true) {
|
||||||
@ -160,14 +150,6 @@ module finBoxMold( length, finLength=-1, skirtAngle = 80, part="bottom", skirt =
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//test = profileUS (100);
|
|
||||||
//test2 = offset(test,30);
|
|
||||||
//region1 =
|
|
||||||
//region([test,test2]);
|
|
||||||
//polygon(region1);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
module thickness_cut(thickness,height) {
|
module thickness_cut(thickness,height) {
|
||||||
color("Orange")
|
color("Orange")
|
||||||
linear_extrude(thickness)
|
linear_extrude(thickness)
|
||||||
@ -180,14 +162,13 @@ module thickness_cut(thickness,height) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//usBoxMold (130,part="bottom",skirt=false);
|
||||||
|
|
||||||
//boxProfileUS( length= 188);
|
//back (30) usBoxMold (130,part="top",skirt=false);
|
||||||
|
|
||||||
//usBox( 130,drill=false );
|
//down(0) back(0) usBox(130,height=23,drill=false,color="Green");
|
||||||
//usBoxMold( 130,part="top" );
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (false )down(50) usBoxMold( 130,part="bottom",skirt=false );
|
|
||||||
|
|
||||||
|
|
||||||
|
BIN
res/Control-Points.png
Normal file
BIN
res/Control-Points.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
257487
stl/10inch/01-surf-fins-10inch-bottom-high_0.9b.gcode
Normal file
257487
stl/10inch/01-surf-fins-10inch-bottom-high_0.9b.gcode
Normal file
File diff suppressed because it is too large
Load Diff
243171
stl/10inch/02-surf-fins-10inch-bottom-low_0.9b.gcode
Normal file
243171
stl/10inch/02-surf-fins-10inch-bottom-low_0.9b.gcode
Normal file
File diff suppressed because it is too large
Load Diff
214630
stl/10inch/03-surf-fins-10inch-top-high_0.9b.gcode
Normal file
214630
stl/10inch/03-surf-fins-10inch-top-high_0.9b.gcode
Normal file
File diff suppressed because it is too large
Load Diff
211960
stl/10inch/04-surf-fins-10inch-top-low_0.9b.gcode
Normal file
211960
stl/10inch/04-surf-fins-10inch-top-low_0.9b.gcode
Normal file
File diff suppressed because it is too large
Load Diff
BIN
stl/10inch/Surf-Fins-10inch.stl
Normal file
BIN
stl/10inch/Surf-Fins-10inch.stl
Normal file
Binary file not shown.
BIN
stl/10inch/surf-fins-10inch-bottom-high_0.9b.stl
Normal file
BIN
stl/10inch/surf-fins-10inch-bottom-high_0.9b.stl
Normal file
Binary file not shown.
BIN
stl/10inch/surf-fins-10inch-bottom-low_0.9b.stl
Normal file
BIN
stl/10inch/surf-fins-10inch-bottom-low_0.9b.stl
Normal file
Binary file not shown.
BIN
stl/10inch/surf-fins-10inch-top-high_0.9b.stl
Normal file
BIN
stl/10inch/surf-fins-10inch-top-high_0.9b.stl
Normal file
Binary file not shown.
BIN
stl/10inch/surf-fins-10inch-top-low_0.9b.stl
Normal file
BIN
stl/10inch/surf-fins-10inch-top-low_0.9b.stl
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user