Compare commits
No commits in common. "607fdf8d790df4fc6ec1db9bcc0ab8ca70236450" and "e8dde9987621d11917f6327b8da163d767915488" have entirely different histories.
607fdf8d79
...
e8dde99876
BIN
.Readme.md.swp
BIN
.Readme.md.swp
Binary file not shown.
46
Readme.md
46
Readme.md
@ -10,11 +10,7 @@ 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
|
||||||
|
|
||||||
@ -24,7 +20,7 @@ Fin profile is defined using bézier 3 points control
|
|||||||
[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.
|
||||||
|
|
||||||
@ -35,46 +31,6 @@ 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,6 +36,7 @@
|
|||||||
"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",
|
||||||
@ -82,6 +83,7 @@
|
|||||||
"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",
|
||||||
@ -133,6 +135,7 @@
|
|||||||
"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",
|
||||||
@ -142,171 +145,6 @@
|
|||||||
"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,10 +134,6 @@ 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] */
|
||||||
// ---------------------*/
|
// ---------------------*/
|
||||||
@ -157,16 +153,12 @@ 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]
|
||||||
|
|
||||||
@ -238,61 +230,125 @@ 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])
|
||||||
union() {
|
buildFin( fin_thickness );
|
||||||
buildCompletFin();
|
|
||||||
left(box_offset) usBox(fin_base+30);
|
if ( build_box ) {
|
||||||
}
|
buildBox();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Render Mold
|
* Render Mold
|
||||||
*/
|
*/
|
||||||
if ( build_mold )
|
if ( build_mold ) buildMold();
|
||||||
difference(){
|
|
||||||
buildMold();
|
|
||||||
if (partition=="low")
|
|
||||||
partitionMask(false);
|
|
||||||
if (partition=="high")
|
|
||||||
partitionMask(true);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Build complete fin
|
|
||||||
*/
|
|
||||||
module buildCompletFin() {
|
module buildCompletFin() {
|
||||||
difference(){
|
difference(){
|
||||||
buildFin( fin_thickness ); // Fin
|
buildFin( fin_thickness );
|
||||||
baseMask(); // Remove extra base
|
//buildBox();
|
||||||
|
// 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(box_offset)
|
left(80) color("Blue") usBox(fin_base+30,thickness = box_thickness+2*OFFSET,drill=false);
|
||||||
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") right( printable ? 120 : 0 ) union() {
|
if (mold_part != "top") {
|
||||||
// Fin mold
|
// Fin mold
|
||||||
difference() {
|
difference() {
|
||||||
support(part="bottom");
|
support(part="bottom");
|
||||||
@ -301,8 +357,7 @@ module buildMold() {
|
|||||||
}
|
}
|
||||||
// Box mold
|
// Box mold
|
||||||
difference() {
|
difference() {
|
||||||
left(box_offset)
|
left(80) finBoxMold( fin_base+30,part="bottom",skirt=false );
|
||||||
finBoxMold( fin_base+30,part="bottom",skirt=false );
|
|
||||||
// Remove fin
|
// Remove fin
|
||||||
buildCompletFin();
|
buildCompletFin();
|
||||||
}
|
}
|
||||||
@ -310,7 +365,7 @@ module buildMold() {
|
|||||||
moldSkirt( part="bottom" );
|
moldSkirt( part="bottom" );
|
||||||
}
|
}
|
||||||
// Top
|
// Top
|
||||||
if (mold_part != "bottom") /*up(1* 150)*/ left( printable ? 120 : 0 ) yrot(printable ? 180 : 0 ) union() {
|
if (mold_part != "bottom") up(80) {
|
||||||
difference(){
|
difference(){
|
||||||
support(part="top");
|
support(part="top");
|
||||||
usBoxMask();
|
usBoxMask();
|
||||||
@ -319,37 +374,43 @@ module buildMold() {
|
|||||||
}
|
}
|
||||||
// Box mold
|
// Box mold
|
||||||
difference() {
|
difference() {
|
||||||
left(box_offset)
|
left(80) finBoxMold( fin_base+30,part="top",skirt=false );
|
||||||
finBoxMold( fin_base+30,part="top",skirt=false );
|
|
||||||
// Remove fin
|
// Remove fin
|
||||||
buildCompletFin();
|
//buildCompletFin();
|
||||||
}
|
}
|
||||||
// Mold skirt
|
// Mold skirt
|
||||||
difference()
|
down( fin_thickness * 3 ) moldSkirt( part="top" );
|
||||||
{
|
|
||||||
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
|
||||||
*
|
*
|
||||||
@ -360,18 +421,32 @@ 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;
|
|
||||||
|
|
||||||
up (part=="top" ? moldHeight : 0 )
|
//if (part == "bottom") {
|
||||||
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 ) back( moldThickness*1.2 - OFFSET )
|
down(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],
|
||||||
@ -380,7 +455,6 @@ 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);
|
||||||
@ -405,27 +479,52 @@ 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 thickness - Thickness of the surf fin
|
* @param flip - Define it it is top or bottom fin side
|
||||||
* @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)
|
||||||
@ -433,34 +532,14 @@ 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]]);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 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
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function addBase(path) = concat(path,[[fin_base,-base_extra_thickness],[0,-base_extra_thickness]]);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Draws a profile based on Bezier path points with optional debug visualization.
|
* Draws a profile based on Bezier path points with optional debug visualization.
|
||||||
*
|
*
|
||||||
@ -474,14 +553,17 @@ module partitionMask(inverse = false,cut = "sinewave") {
|
|||||||
*/
|
*/
|
||||||
module drawProfile( points,debug = true ){
|
module drawProfile( points,debug = true ){
|
||||||
|
|
||||||
text_size=40;
|
|
||||||
|
|
||||||
debugPoint (start, "Start", "Red" ,textSize=text_size , t=[-20,4,0]);
|
debugPoint (start, "Start", "Red" );
|
||||||
debugPoint (top_point, "Top", "Blue" ,textSize=text_size , t=[-5,5,0]);
|
debugPoint (top_point, "Top", "Blue" );
|
||||||
debugPoint (edge_point, "Edge", "Brown" ,textSize=text_size , t=[10,-5,0]);
|
debugPoint (edge_point, "Edge", "Brown" );
|
||||||
debugPoint (counter_edge_point, "Counter Edge", "Brown" ,textSize=text_size , t=[35,-5,0]);
|
debugPoint (counter_edge_point, "Counter Edge", "Brown" );
|
||||||
debugPoint (tail_point, "Tail", "Yellow" ,textSize=text_size , t=[8,-5,0]);
|
debugPoint (tail_point, "Tail", "Yellow" );
|
||||||
debugPoint (end_point, "End", "Yellow" ,textSize=text_size , t=[13,4,0]);
|
debugPoint (end_point, "End", "Yellow" );
|
||||||
|
|
||||||
|
//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);
|
||||||
}
|
}
|
||||||
@ -489,19 +571,6 @@ 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,14 +31,12 @@ function handle(point,angle,strength) = [
|
|||||||
/**
|
/**
|
||||||
* Show Debug point
|
* Show Debug point
|
||||||
*/
|
*/
|
||||||
module debugPoint(point, id, color,textSize=20,r=1.5,t = [0,0,0]) {
|
module debugPoint(point, id, color,textSize=20,r=1.5) {
|
||||||
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,6 +1,7 @@
|
|||||||
|
|
||||||
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>
|
||||||
|
|
||||||
|
|
||||||
@ -16,8 +17,12 @@ 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
|
||||||
@ -41,12 +46,7 @@ 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,66 +79,76 @@ 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 );
|
||||||
|
|
||||||
if ( part == "bottom") {
|
union() {
|
||||||
union() {
|
difference() {
|
||||||
difference() {
|
// Mold
|
||||||
// Mold
|
{
|
||||||
down (moldHeight/2)
|
//if ( part == "bottom")
|
||||||
linear_extrude(moldHeight)
|
|
||||||
offset(r= (part=="top" ? 0 : moldThickness))
|
|
||||||
boxProfileUS( length, height );
|
|
||||||
|
|
||||||
usBox(length,height,drill=false,color="Red");
|
|
||||||
|
|
||||||
// Mask Top
|
|
||||||
verticalMask =
|
|
||||||
part == "bottom" ? 0 :
|
|
||||||
part == "top" ? moldHeight :
|
|
||||||
100;
|
|
||||||
debug = false ;
|
|
||||||
|
|
||||||
if (!debug)
|
down (moldHeight/2) linear_extrude(moldHeight)
|
||||||
down( verticalMask )
|
offset(r=moldThickness)
|
||||||
linear_extrude( moldHeight )
|
boxProfileUS( length, height );
|
||||||
offset( r = moldThickness*2 )
|
|
||||||
boxProfileUS( length, height );
|
/*
|
||||||
|
if ( part == "top")
|
||||||
}
|
|
||||||
|
down (moldHeight/2) linear_extrude(moldHeight)
|
||||||
|
offset(r=moldThickness)
|
||||||
|
boxProfileUS( length, height );
|
||||||
|
*/
|
||||||
|
if ( part == "top__" ) {
|
||||||
|
//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");
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( false ) {
|
//usBoxMold (130,part="bottom",skirt=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) {
|
||||||
@ -150,6 +160,14 @@ 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)
|
||||||
@ -162,13 +180,14 @@ module thickness_cut(thickness,height) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
//usBoxMold (130,part="bottom",skirt=false);
|
|
||||||
|
|
||||||
//back (30) usBoxMold (130,part="top",skirt=false);
|
//boxProfileUS( length= 188);
|
||||||
|
|
||||||
//down(0) back(0) usBox(130,height=23,drill=false,color="Green");
|
//usBox( 130,drill=false );
|
||||||
|
//usBoxMold( 130,part="top" );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (false )down(50) usBoxMold( 130,part="bottom",skirt=false );
|
||||||
|
|
||||||
|
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 11 KiB |
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.
Loading…
x
Reference in New Issue
Block a user