filament-counter-v2/openscad/main_top.scad

114 lines
2.3 KiB
OpenSCAD

size_x = 85;
size_y = 85;
size_z = 15;
thick = 1.5;
pcb = 1.6;
rad_hole = 1.5;
seg = 360;
rad_display = 1;
usb_x = 9;
usb_z = 3;
usb_pos = 5.75;
ribbon_x = 16;
ribbon_y = 11;
ribbon_pos = -13.25;
display_x = 27;
display_y = 15;
display_pos_x = -13.25;
display_pos_y = 10.75 + 1.5;
led_size = 5;
led_pos_x = 14.75;
led_pos_y = 37.25;
btn_y = 15;
btn_z = 3.5;
btn_pos = 12.5;
battery_x = 22;
battery_y = 80;
battery_pos = 29;
union()
{
difference()
{
// Main Block
cube([size_x, size_y, size_z], center = true);
// Hollow
translate([0, 0, thick])
{
cube([size_x - 2 * thick, size_y - 2 * thick, size_z], center = true);
}
// Cut USB
translate([usb_pos, size_y/2 - thick/2, size_z/2])
{
cube([usb_x, thick * 2, usb_z*2], center = true);
}
// Cut Ribbon Cable Connector
translate([ribbon_pos, size_y/2 - ribbon_y/2, 0])
{
cube([ribbon_x, ribbon_y, size_z + 1], center = true);
}
// Cut Display
translate([display_pos_x, display_pos_y, 0])
{
cube([display_x, display_y, size_z + 1], center = true);
}
// Cut LED
translate([led_pos_x, led_pos_y, 0])
{
cube([led_size, led_size, size_z + 1], center = true);
}
// Cut Button
translate([-(size_x/2 - thick/2), btn_pos, size_z/2])
{
cube([thick * 2, btn_y, btn_z * 2], center = true);
}
// Cut Battery
translate([battery_pos, 0, 0])
{
cube([battery_x, battery_y, size_z + 1], center = true);
}
// Screw Holes
for (y = [-1:1:1])
{
x = y == 0 ? 1 : -1;
translate([-13.5 + x * 22.25, y * 35.75, 0])
{
cylinder(size_z + 1, rad_hole, rad_hole, $fn = seg, center = true);
}
}
}
// Add Screw Holders
for (y = [-1:1:1])
{
x = y == 0 ? 1 : -1;
translate([-13.5 + x * 22.25, y * 35.75, 0])
{
difference()
{
cylinder(size_z, rad_hole + 1, rad_hole + 1, $fn = seg, center = true);
cylinder(size_z + 1, rad_hole, rad_hole, $fn = seg, center = true);
}
}
}
// Add Ribbon Extra
translate([ribbon_pos, size_y/2 - ribbon_y/2, -size_z/2 + 5/2 + thick])
difference()
{
translate([0, -thick, 0])
{
cube([ribbon_x + thick * 2, ribbon_y, 5], center = true);
}
cube([ribbon_x, ribbon_y, 5 + 1], center = true);
}
}