2 changed files with 88 additions and 0 deletions
@ -0,0 +1,43 @@ |
|||||
|
$fn=50; |
||||
|
l_lower = 20; |
||||
|
w_lower = 44; |
||||
|
h_lower = 3; |
||||
|
l_higher = 10; |
||||
|
h_higher = 1; |
||||
|
h = 7; |
||||
|
b_cable_tie = 7; |
||||
|
d_screw = 5; |
||||
|
d_screw_head = 9.5; |
||||
|
h_screw_head = 4; |
||||
|
color("RoyalBlue", 1.0) |
||||
|
difference () { |
||||
|
// Basic shape |
||||
|
union() |
||||
|
{ |
||||
|
cube([l_lower, w_lower, h_lower], center=true); |
||||
|
hull(){ |
||||
|
cube([l_lower, l_lower, h_lower], center=true); |
||||
|
translate([0,0, h - h_higher/2]) |
||||
|
cube([l_higher, l_higher, h_higher], center=true); |
||||
|
} |
||||
|
} |
||||
|
// Cutouts for cable ties |
||||
|
for (rot = [0:1:1]) { |
||||
|
rotate([0, 0, rot*90]) |
||||
|
translate([0, 0, h_lower/2]) |
||||
|
difference() { |
||||
|
rotate([90, 0, 0]) |
||||
|
cylinder(r=b_cable_tie/2, h=l_lower*2, center=true); |
||||
|
translate([0, 0, -b_cable_tie/2]) |
||||
|
cube([b_cable_tie, 2*l_lower+0.01, b_cable_tie], center=true); |
||||
|
} |
||||
|
} |
||||
|
for (y = [-1:2:1]) { |
||||
|
translate([0, y * ((w_lower/2 - l_lower/2)/2 + l_lower/2), 0]) |
||||
|
union() { |
||||
|
translate([0, 0, -abs(h_screw_head - h_lower)/2 + 0.001]) |
||||
|
cylinder(r1 = d_screw/2, r2 = d_screw_head/2, h = h_screw_head, center=true); |
||||
|
cylinder(r = d_screw/2, h=l_lower*2, center=true); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,45 @@ |
|||||
|
$fn=100; |
||||
|
thickness = 5; |
||||
|
x = 250; |
||||
|
y = 190; |
||||
|
z = 120; |
||||
|
rim_breadth = 30; |
||||
|
drain_d = 34; |
||||
|
scale_center_crosspiece = 0.15; |
||||
|
|
||||
|
difference () { |
||||
|
difference () { |
||||
|
union() { |
||||
|
// Base bowl |
||||
|
difference() { |
||||
|
cube([x, y, z], center=true); |
||||
|
translate([0, thickness/2+0.01, thickness/2+0.01]) |
||||
|
cube([x-2*thickness, y-thickness, z-thickness], center=true); |
||||
|
} |
||||
|
// Center crosspiece |
||||
|
translate([0, 0, -z/2 + thickness + scale_center_crosspiece*z/2]) |
||||
|
cube([2*thickness, y, scale_center_crosspiece*z], center=true); |
||||
|
// Rim back end |
||||
|
/*translate([0, -y/2 - rim_breadth/2, z/2-thickness/2]) |
||||
|
cube([x, rim_breadth, thickness], center=true);*/ |
||||
|
// Rim sides |
||||
|
/*for (v=[-1:2:1]) { |
||||
|
translate([v*(x + rim_breadth)/2, -rim_breadth/2, z/2-thickness/2]) |
||||
|
cube([rim_breadth, y + rim_breadth, thickness], center=true); |
||||
|
}*/ |
||||
|
// Front end dam |
||||
|
scale_dam = 0.4; |
||||
|
translate([0, y/2 - thickness/2, -z/2 + (scale_dam*z)/2]) |
||||
|
cube([x, thickness, scale_dam*z], center=true); |
||||
|
} |
||||
|
// Drain |
||||
|
union() { |
||||
|
scale_drain_gland = 1.4; |
||||
|
cylinder(r=drain_d/2, h=2*z ,center=true); |
||||
|
translate([0, 0, -z/2+(scale_center_crosspiece*z)/2+thickness]) |
||||
|
cylinder(r=scale_drain_gland*(drain_d/2), h=scale_center_crosspiece*z+thickness,center=true); |
||||
|
} |
||||
|
} |
||||
|
translate([-x/4 - rim_breadth/2, 0, 0]) |
||||
|
cube([x/2+rim_breadth+0.01, 2*y, 2*z], center=true); |
||||
|
} |
Loading…
Reference in new issue