mirror of
https://github.com/whowechina/iidx_pico.git
synced 2024-11-12 01:10:50 +01:00
144 lines
3.7 KiB
OpenSCAD
144 lines
3.7 KiB
OpenSCAD
include <keycap_frame.scad>
|
|
|
|
difference() {
|
|
union() {
|
|
body();
|
|
buttons();
|
|
}
|
|
//pcb();
|
|
}
|
|
|
|
translate([50,91,2.6]) scale([1.5,1.5,1]) import("beatmania_iidx.stl");
|
|
|
|
%color("gray", 0.3) pcb();
|
|
|
|
module pcb() {
|
|
translate([-137.32,144.4,-1.21]) import("iidx_pico_to_stl v1.stl");
|
|
}
|
|
|
|
module body() {
|
|
difference() {
|
|
union() {
|
|
color("green") translate([0,45,0]) rcube(183,163,3,6.5);
|
|
}
|
|
// main button holes
|
|
color("#2C3E50") {
|
|
translate([-61.5,0]) main_hole();
|
|
translate([-20.5,0]) main_hole();
|
|
translate([20.5,0]) main_hole();
|
|
translate([61.5,0]) main_hole();
|
|
translate([-41,56]) main_hole();
|
|
translate([0,56]) main_hole();
|
|
translate([41,56]) main_hole();
|
|
}
|
|
// aux button holes
|
|
color("#2C3E50") {
|
|
translate([-65,110]) aux_hole();
|
|
translate([-32,110]) aux_hole();
|
|
translate([1,110]) aux_hole();
|
|
translate([34,110]) aux_hole();
|
|
}
|
|
// set button holes
|
|
color ("darkgray") translate([0,0,-1]) {
|
|
hull() {
|
|
translate([59,110]) rcube(7,8.8,2.5,1);
|
|
translate([59,110]) rcube(7,7,4.1,2);
|
|
}
|
|
translate([59,110]) rcube(7,7,6,2);
|
|
|
|
hull() {
|
|
translate([70,110]) rcube(7,8.8,2.6,1);
|
|
translate([70,110]) rcube(7,7,4.1,2);
|
|
}
|
|
translate([70,110]) rcube(7,7,6,2);
|
|
}
|
|
// pogo holes
|
|
translate([-48.92,121.5,0]) rotate([0,0,90]) pogo_hole();
|
|
translate([86.6,74.42,0]) rotate([0,0,0]) pogo_hole();
|
|
// usb hole
|
|
translate([-16.72,121.4]) usb_hole();
|
|
|
|
// screws
|
|
color("gray") translate([0,0,-1],$fn=24) {
|
|
translate([-82.5,117.5]) cylinder(d=3.4,h=10);
|
|
translate([-82.5,-27.5]) cylinder(d=3.4,h=10);
|
|
translate([82.5,117.5]) cylinder(d=3.4,h=10);
|
|
translate([82.5,-27.5]) cylinder(d=3.4,h=10);
|
|
}
|
|
|
|
// screw sinks
|
|
color("gray") translate([0,0,1.5],$fn=24) {
|
|
translate([-82.5,117.5]) cylinder(d=6,h=10);
|
|
translate([-82.5,-27.5]) cylinder(d=6,h=10);
|
|
translate([82.5,117.5]) cylinder(d=6,h=10);
|
|
translate([82.5,-27.5]) cylinder(d=6,h=10);
|
|
}
|
|
}
|
|
}
|
|
|
|
module main_hole()
|
|
{
|
|
cube([24.2,41.2,20],center=true);
|
|
}
|
|
|
|
module aux_hole()
|
|
{
|
|
cube([18,18,20],center=true);
|
|
}
|
|
|
|
module pogo_hole()
|
|
{
|
|
rotate([90,0,0]) resize([3,4.5,14]) cylinder(d=1,h=1,center=true,$fn=32);
|
|
}
|
|
|
|
module usb_hole()
|
|
{
|
|
translate([4.3,0]) rotate([90,0,0]) resize([1.6,2,6]) cylinder(d=1,h=1,center=true,$fn=32);
|
|
translate([-4.3,0]) rotate([90,0,0]) resize([1.6,2,6]) cylinder(d=1,h=1,center=true,$fn=32);
|
|
}
|
|
|
|
module buttons() {
|
|
// main button
|
|
color("#2C3E50") translate([0,0,2.99]) {
|
|
translate([-61.5,0]) main_button();
|
|
translate([-20.5,0]) main_button();
|
|
translate([20.5,0]) main_button();
|
|
translate([61.5,0]) main_button();
|
|
translate([-41,56]) main_button();
|
|
translate([0,56]) main_button();
|
|
translate([41,56]) main_button();
|
|
}
|
|
// aux button
|
|
color("#2C3E50") translate([0,0,2.99]) {
|
|
translate([-65,110]) aux_button();
|
|
translate([-32,110]) aux_button();
|
|
translate([1,110]) aux_button();
|
|
translate([34,110]) aux_button();
|
|
}
|
|
// set button
|
|
color ("#2C3E50") translate([0,0,2.9]) {
|
|
difference() {
|
|
hull() {
|
|
translate([59,110]) rcube(8.5,8.5,1,2);
|
|
translate([59,110]) rcube(10,10,0.1,2.75);
|
|
}
|
|
translate([59,110,-1]) rcube(7,7,6,2);
|
|
}
|
|
difference() {
|
|
hull() {
|
|
translate([70,110]) rcube(8.5,8.5,1,2);
|
|
translate([70,110]) rcube(10,10,0.1,2.75);
|
|
}
|
|
translate([70,110,-1]) rcube(7,7,6,2);
|
|
}
|
|
}
|
|
}
|
|
|
|
module rcube(w,h,d,r) {
|
|
hull($fn=r*16) {
|
|
translate([w/2-r,-h/2+r,0]) cylinder(r=r,h=d);
|
|
translate([-w/2+r,h/2-r,0]) cylinder(r=r,h=d);
|
|
translate([w/2-r,h/2-r,0]) cylinder(r=r,h=d);
|
|
translate([-w/2+r,-h/2+r,0]) cylinder(r=r,h=d);
|
|
}
|
|
} |