Compare commits

..

4 Commits

16 changed files with 927643 additions and 275 deletions

BIN
.Readme.md.swp Normal file

Binary file not shown.

View File

@ -10,7 +10,11 @@ The box is designed using library [Fin Base](https://github.com/hrobeers/finbase
![](https://user-images.githubusercontent.com/2812522/105723055-9fd71100-5f26-11eb-8a9e-b892212b240b.jpg)
## Fin profile
Fin profile is defined using bézier 3 points control
![](./res/Control-Points.webp)
## 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/)
## Measure models
### Measure models
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.
### Materials
| Volume | Weight | Fiber Load | Résine |
| ------ | ------ | ---------- | ------- |
| 100% | x1.4 | 60% | 40% |
| 21 cm3 | 29.4g | 17.64 g | 11.76 g |
## Surf fin 10 inch
| Volume | Weight | Fiber Load | Résine |
| ------ | ------ | ---------- | ------- |
| 100% | x1.4 | 60% | 40% |
| 207 cm3 | 290g | 174 g | 116 g |
#### Pin
The pin slides into a groove in the US Box fin slot, allowing the fin to move forward or backward to adjust the fin's position for different conditions or board feel.
US Box require a pin of diameter 4.76mm (3/16 inch) per L 14.28 mm (9/16inch)
### Screw
The screw for securing single fins is often 10-32 x ¾” (or 5mm x 19mm).
It's usually a slotted screw designed to go through the fin and into the square plate.
- Stainless Steel Longboard Fin Screw & Plate
- [3/6Pcs Stainless Steel Surfboard Fin Screw M4 Surf](https://www.aliexpress.com/item/1005005128486923.html) R$30.39
- [Copper Pin for 6.5/8/9/9.5/10/12 Inch Surf Fin SUP Fin Water Sports](https://www.aliexpress.com/item/1005003301708931.html) R$ 19.22 + 25.73
### Square Washer (Plate)
Dimensions: Commonly about ½” x ½” (or 14mm x 14mm), with a thickness of about 0.15" (4mm).
This plate spreads the load of the screw over a larger area, ensuring a secure hold.
## Required Material
- Durcisseur : Correspondant à la résine choisie.

View File

@ -36,7 +36,6 @@
"parts": "all",
"piston_depth": "5",
"printable": "false",
"resin_escape_diameter": "4",
"scale_factor": "1",
"show_curve_points": "false",
"show_debug_layers": "false",
@ -83,7 +82,6 @@
"pin_dia": "3",
"piston_depth": "5",
"printable": "true",
"resin_escape_diameter": "4",
"scale_factor": "1",
"screw_dia": "4.5",
"screw_pos": "9.5999999999999996",
@ -135,7 +133,6 @@
"pin_dia": "3",
"piston_depth": "5",
"printable": "true",
"resin_escape_diameter": "4",
"scale_factor": "1",
"screw_dia": "4.5",
"screw_pos": "9.5999999999999996",
@ -145,6 +142,171 @@
"tab_height": "13",
"thick": "9.1999999999999993",
"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"
}
}
}

View File

@ -91,7 +91,7 @@ mold_extra_width = 15;
mold_piston_height = 10;
resin_escape_diameter = 4;
//resin_escape_diameter = 4;
// Diameter for screw holes in mm
merge_holes_diameter = 6;
@ -134,6 +134,10 @@ pin_back = 9;
//thick_cut = 0.001*1000;
thick_cut = 1;
// Offset the box to fit the fin
box_offset = 80;
// ---------------------*/
/* [Debugging] */
// ---------------------*/
@ -153,12 +157,16 @@ draw_profile = false;
// Rendering parts
build_fin = false;
build_box = false;
build_mold = true;
build_mold = true;
partition = "none"; // [none, low, high]
parts = "all"; // [all, top, bottom]
mold_part = "all"; // [all, top, bottom]
version ="0.9b";
// Scaling
scale_factor = 1.0; // [0.1:0.1:2]
@ -230,125 +238,61 @@ points = flatten([
profile_curve_with_base = translate_path( addBase(asCurve(points,32)),-fin_base/2,0 );
profile = translate_path( asCurve(points,32),-fin_base/2,0 );
//profile_curve_with_base = translate_path( asCurve(points,32),-fin_base/2,0 );
//profile_curve_with_base = resample_path(translate_path( asCurve(points,32),-fin_base/2,0 ),64);
assert(is_path_simple(profile_curve_with_base));
if (show_curve_points)
color("Blue")move_copies(profile_curve_with_base) circle($fn=16);
// Draw fin profile
if (draw_profile) {
//left(425) drawProfile( points, true );
layer0 = expandPath(profile_curve_with_base,-2);
layer1 = expandPath(profile_curve_with_base,-8);
layer2 = expandPath(profile_curve_with_base,-15);
layer3 = expandPath(profile_curve_with_base,-30);
layer4 = expandPath(profile_curve_with_base,-40);
back(10) showDebugPath(layer0);
left(500) {
color("Red") polygon(profile_curve_with_base);
up(10) polygon(layer0);
up(20) color("Yellow") polygon(layer1);
up(30) color("Brown") polygon(layer2);
}
layers = [profile_curve_with_base,layer0,layer1,layer2,layer3,layer4];
left (800) color ("Green") polygon(profile_curve_with_base);
left (1000) color ("Green") shell(10) polygon(profile_curve_with_base);
}
// *****************
// * Fin Drawing *
// *****************
if ( build_fin )
scale([scale_factor, scale_factor, scale_factor])
buildFin( fin_thickness );
if ( build_box ) {
buildBox();
}
scale([scale_factor, scale_factor, scale_factor]) {
union() {
buildCompletFin();
left(box_offset) usBox(fin_base+30);
}
}
/**
* Render Mold
*/
if ( build_mold ) buildMold();
if ( build_mold )
difference(){
buildMold();
if (partition=="low")
partitionMask(false);
if (partition=="high")
partitionMask(true);
}
/**
* Build complete fin
*/
module buildCompletFin() {
difference(){
buildFin( fin_thickness );
//buildBox();
// Remove extra base
baseMask();
buildFin( fin_thickness ); // Fin
baseMask(); // Remove extra base
}
}
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() {
fwd(OFFSET) cube([fin_base*1.1,base_extra_thickness*1.1,fin_thickness*1.1],anchor=BACK);
}
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
*
*/
module buildMold() {
// Bottom Mold
if (mold_part != "top") {
if (mold_part != "top") right( printable ? 120 : 0 ) union() {
// Fin mold
difference() {
support(part="bottom");
@ -357,7 +301,8 @@ module buildMold() {
}
// Box mold
difference() {
left(80) finBoxMold( fin_base+30,part="bottom",skirt=false );
left(box_offset)
finBoxMold( fin_base+30,part="bottom",skirt=false );
// Remove fin
buildCompletFin();
}
@ -365,7 +310,7 @@ module buildMold() {
moldSkirt( part="bottom" );
}
// Top
if (mold_part != "bottom") up(80) {
if (mold_part != "bottom") /*up(1* 150)*/ left( printable ? 120 : 0 ) yrot(printable ? 180 : 0 ) union() {
difference(){
support(part="top");
usBoxMask();
@ -374,43 +319,37 @@ module buildMold() {
}
// Box mold
difference() {
left(80) finBoxMold( fin_base+30,part="top",skirt=false );
left(box_offset)
finBoxMold( fin_base+30,part="top",skirt=false );
// Remove fin
//buildCompletFin();
buildCompletFin();
}
// Mold skirt
down( fin_thickness * 3 ) moldSkirt( part="top" );
difference()
{
down( fin_thickness * 3 ) moldSkirt( part="top" ); // Inclinded Skirt
back(0.65)
cube([250,40,9.6],anchor=BACK); // Remove skirt on us box side
}
}
//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
*
@ -421,32 +360,18 @@ module moldSkirt( part ){
box_profile = move([-80,0],profileUS (fin_base+30));
finAndBoxProfile = path_merge_collinear(union([box_profile,profile]));
moldHeight = fin_thickness * 3;
//if (part == "bottom") {
skirt( finAndBoxProfile, side = part ,moldThickness = 3 , angle = skirt_angle, moldDeep = fin_thickness );
//} else if (part == "top") {
//}
up (part=="top" ? moldHeight : 0 )
skirt( finAndBoxProfile, side = part ,moldThickness = 3 , angle = skirt_angle, moldDeep = fin_thickness );
}
//moldSkirt(part="top");
module moldJunctionMask(moldThickness = 3,height,angle){
deviation = opp_ang_to_adj (height,angle);
right(moldThickness)
left(moldThickness/2)
down(OFFSET)
//fwd(60)
//back(moldThickness*2-0.5)
back(moldThickness*1.2-OFFSET )
down( OFFSET ) back( moldThickness*1.2 - OFFSET )
color("Red")
prismoid(
size1=[fin_width/2-1.5*moldThickness, moldThickness*3+2*OFFSET],
@ -455,6 +380,7 @@ module moldJunctionMask(moldThickness = 3,height,angle){
);
}
module buildMoldSkirt( height,offset,thickness ) {
outside = expandPath(profile,offset);
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
*
* @param thickness - Thickness of the fin
*/
module buildFin( thickness ) {
union() {
if (parts != "bottom") buildFinSide( thickness );
if (parts != "top") buildFinSide( thickness , true );
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
*
* @param thickness - Thickness of the surf fin
* @param flip - Define it it is top or bottom fin side
*
*/
module buildFinSide(thickness,flip=false) {
//profile_curve_with_base1 = subdivide_path (profile_curve_with_base,500);
//if (false)
mirror([0,0,flip ? 1 : 0])
color(flip ? "Gray" : "LightGray")
ellipse_extrude( thickness / 2 /*,height=2*/,center=false,twist=-7)
@ -532,14 +433,34 @@ module buildFinSide(thickness,flip=false) {
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
);
}
/**
* 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 ){
text_size=40;
debugPoint (start, "Start", "Red" );
debugPoint (top_point, "Top", "Blue" );
debugPoint (edge_point, "Edge", "Brown" );
debugPoint (counter_edge_point, "Counter Edge", "Brown" );
debugPoint (tail_point, "Tail", "Yellow" );
debugPoint (end_point, "End", "Yellow" );
//pt = [100,0];
//pos = bezpath_closest_point(points, pt);
//xy = bezpath_points(points,pos[0],pos[1]);
debugPoint (start, "Start", "Red" ,textSize=text_size , t=[-20,4,0]);
debugPoint (top_point, "Top", "Blue" ,textSize=text_size , t=[-5,5,0]);
debugPoint (edge_point, "Edge", "Brown" ,textSize=text_size , t=[10,-5,0]);
debugPoint (counter_edge_point, "Counter Edge", "Brown" ,textSize=text_size , t=[35,-5,0]);
debugPoint (tail_point, "Tail", "Yellow" ,textSize=text_size , t=[8,-5,0]);
debugPoint (end_point, "End", "Yellow" ,textSize=text_size , t=[13,4,0]);
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);

View File

@ -31,12 +31,14 @@ function handle(point,angle,strength) = [
/**
* 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) {
color(color) sphere(r = r);
//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")
scale([0.2, 0.2, 1])
linear_extrude(height = 0.1)

View File

@ -1,7 +1,6 @@
include <BOSL2/std.scad>;
include <BOSL2/beziers.scad>;
include <BOSL2/std.scad>
include <BOSL2/beziers.scad>
include <Round-Anything/polyround.scad>
@ -17,12 +16,8 @@ OFFSET=0.01;
**/
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");
tabExtra = opp_ang_to_adj(height-tabHeight,45);
points = [
[ -tabLength , 0 ,1], // 0
@ -46,7 +41,12 @@ function profileUS( length,height=23,tabHeight = 8,tabLength = 20, backRounding
[ -tabLength , -tabHeight ,1] // 5
]);
/**
* US Box
*
* @param length : Length of the fin base. backExtra and tabLength will be added to have the full length
*
*/
module usBox( length, height=23, thickness = 9, tabLength = 20,pinDiameter = 5,pinInset = 8, backExtra = 10,cutReduction = 0.5,screw_diameter=4.5,drill = true, color="Grey" ) {
color(color) mirror_copy([0,0,1], offset=-OFFSET) difference() {
linear_extrude ( height = thickness/2 ) boxProfileUS( length, tabLength = tabLength, height=height, backExtra=backExtra );
@ -69,9 +69,9 @@ module usBoxMold( length, height=23, thickness = 9, moldThickness = 4,tabLength
assert (length >0,"length should be bigger than 0");
moldHeight = thickness + 2 * moldThickness;
skirtHeight = 3 * thickness;
echo ("---skirtHeight",skirtHeight);
echo ("---part",part);
deviation = opp_ang_to_adj (skirtHeight,skirtAngle); // Skirt devitation
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 );
topExt = offset(baseInt,delta=deviation+moldThickness , chamfer=false, same_length=true );
union() {
difference() {
// Mold
{
//if ( part == "bottom")
down (moldHeight/2) linear_extrude(moldHeight)
offset(r=moldThickness)
if ( part == "bottom") {
union() {
difference() {
// Mold
down (moldHeight/2)
linear_extrude(moldHeight)
offset(r= (part=="top" ? 0 : moldThickness))
boxProfileUS( length, height );
usBox(length,height,drill=false,color="Red");
/*
if ( part == "top")
// Mask Top
verticalMask =
part == "bottom" ? 0 :
part == "top" ? moldHeight :
100;
debug = false ;
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" ) {
if (!debug)
down( verticalMask )
linear_extrude( moldHeight )
offset( r = moldThickness*2 )
boxProfileUS( length, height );
}
//topInt = offset(baseInt,delta=deviation,chamfer=false,same_length=true);
if (skirt) difference(){
skin([baseExt,topExt],z=[0,skirtHeight],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) {
@ -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) {
color("Orange")
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 );
//usBoxMold( 130,part="top" );
//down(0) back(0) usBox(130,height=23,drill=false,color="Green");
if (false )down(50) usBoxMold( 130,part="bottom",skirt=false );

BIN
res/Control-Points.png Normal file

Binary file not shown.

After

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.