80 lines
1.6 KiB
OpenSCAD
80 lines
1.6 KiB
OpenSCAD
size_wall = 1.5;
|
|
size_floor = size_wall * 2;
|
|
|
|
size_x = 105;
|
|
size_y = 50;
|
|
size_z = 10;
|
|
|
|
hole_dist_x = 35;
|
|
hole_dist_y = 20.5;
|
|
|
|
hole_rad = 3 / 2;
|
|
|
|
module blind_hole(r_top = 1.5, r_bot = 3, z_size = 3, seg = 60)
|
|
{
|
|
h = r_bot > r_top ? r_bot - r_top : r_top - r_bot;
|
|
union()
|
|
{
|
|
// Big/small
|
|
cylinder(h, r_bot, r_top, $fn = seg, center = true);
|
|
|
|
translate([0, 0, h/2 + (z_size - h)/4])
|
|
cylinder((z_size - h)/2, r_top, r_top, $fn = seg, center = true);
|
|
|
|
translate([0, 0, -h/2 - (z_size - h)/4])
|
|
cylinder((z_size - h)/2, r_bot, r_bot, $fn = seg, center = true);
|
|
}
|
|
}
|
|
|
|
difference()
|
|
{
|
|
union()
|
|
{
|
|
difference()
|
|
{
|
|
// Main block
|
|
cube([size_x + size_wall * 2 + 1, size_y + size_wall * 2 + 1, size_z + size_floor], center = true);
|
|
|
|
// Hollow
|
|
translate([0, 0, size_floor])
|
|
{
|
|
cube([size_x + 1, size_y + 1, size_z + size_floor], center = true);
|
|
}
|
|
}
|
|
|
|
// Mounts
|
|
for (x = [-1:2:1])
|
|
{
|
|
for (y = [-1:2:1])
|
|
{
|
|
translate([x * hole_dist_x, y * hole_dist_y, 0])
|
|
{
|
|
difference()
|
|
{
|
|
cylinder(size_z + size_floor - 2, hole_rad + size_wall, hole_rad + size_wall, $fn = 60, center = true);
|
|
cylinder(size_z + size_floor + 1, hole_rad, hole_rad, $fn = 60, center = true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Cut screw holes
|
|
for (x = [-1:2:1])
|
|
{
|
|
for (y = [-1:2:1])
|
|
{
|
|
translate([x * hole_dist_x, y * hole_dist_y, size_floor/2 - (size_z + size_floor)/2])
|
|
{
|
|
blind_hole(r_top = hole_rad, r_bot = hole_rad * 2, z_size = size_floor);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Cut Half
|
|
translate([(size_x + size_wall * 2 + 1)/2, 0, 0])
|
|
{
|
|
cube([size_x + size_wall * 2 + 1, size_y + size_wall * 2 + 1 + 1, size_z + size_floor + 1], center = true);
|
|
}
|
|
}
|