Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $fn=24;
- difference(){
- translate([25,0,0]) body(215,85,12,12,3);
- union(){
- translate([0,0,1.5]) body(163,82,11,12,5);
- translate([0,39,0]) sidebuttons(-60,-40,-20,5,2);
- translate([5,0,0]) camerahole(30,7);
- translate([60,-20,5]) cylinder(30,5,5,true);
- intersection(){
- }
- difference(){
- translate([25,0,0]) body(210,80,10,12,4);
- cube([165,100,15],true);
- //screwposts
- translate([0,0,5]) screwposts();
- }
- }
- //usbc hole
- translate([80,3,0]) cube([20,15,10],true);
- //cut out a right door
- translate([105,0,-8]) difference(){
- cube([50,100,10],true);
- translate([.5,0,-.5]) cube([50,101,10],true);
- }
- translate([0,0,5]) screws();
- //headphone hole
- translate([-80,-20,0]) rotate([0,90,0]) cylinder(50,3,3,true);
- //kb hole
- translate([103,0,10]) cube([40,65,20],true);
- }
- module body(x,y,z,r1,r2){
- //r1 is the xy corners
- //r2 is the zx/y corners
- for(ix= [-1,1,1]) for(iy=[-1,1,1])
- translate([ix*(x*.5-r1),iy*(y*.5-r1),0]) bodycorner(x,y,z,r1,r2);
- bodysides(x,y,z,r1,r2);
- }
- module bodycorner(x,y,z,r1,r2){
- //middle
- cylinder(z-r2-r2,r1,r1,true);
- //caps
- for(iz= [-1,1,1]) translate([0,0,iz*(z*.5-r2)]) scale([1,1,r2/r1]) sphere(r1);
- }
- module bodysides(x,y,z,r1,r2){
- //body sides y
- //middle
- cube([x,y-r1-r1,z-r2-r2],true);
- for(iz= [-1,1,1]) for(ix=[-1,1,1])
- translate([ix*(x*.5-r1),0,iz*(z*.5-r2)]) scale([1,1,r2/r1]) rotate([90,0,0]) cylinder(y-r1-r1,r1,r1,true);
- //body sides x
- //middle
- cube([x-r1-r1,y,z-r2-r2],true);
- for(iz= [-1,1,1]) for(iy=[-1,1,1])
- translate([0,iy*(y*.5-r1),iz*(z*.5-r2)]) scale([1,1,r2/r1]) rotate([90,0,90]) cylinder(x-r1-r1,r1,r1,true);
- //body sides z
- //middle
- cube([x-r1-r1,y-r1-r1,z],true);
- }
- module dpad(x,y,z,c){
- cube([x,y-c-c,z],true);
- cube([x-c-c,y,z],true);
- }
- module buttons(sr,br,z){
- for(ir=[0,90,180,270])
- rotate([0,0,ir]) translate([0,sr,0]) cylinder(z,br,br,true);
- }
- module shoulderbuttons(a,b,c,d,r1,r2){
- translate([a,6,0]) shoulderbutton(r1,r2);
- translate([b,6,0])shoulderbutton(r1,r2);
- translate([c,6,0]) shoulderbutton(r1,r2);
- translate([d,6,0]) shoulderbutton(r1,r2);
- }
- module sidebuttons(a,b,c,r1,r2){
- translate([a,5,0]) sidebutton(r1,r2);
- translate([b,5,0])sidebutton(r1,r2);
- translate([c,5,0]) sidebutton(r1,r2);
- }
- module sidebutton(r1,r2){
- rotate([0,90,90]) cylinder(8,r1,r2,true);
- }
- module shoulderbutton(r1,r2){
- rotate([0,90,90]) cylinder(8,r1,r2,true);
- }
- module camerahole(w,r){
- translate([-65,17,0]) {
- translate([0,w/2-r,0]) cylinder(20,r,r,true);
- translate([0,-w/2+r,0]) cylinder(20,r,r,true);
- cube([r+r,w-r-r,20],true);
- }
- }
- module cabletube(){
- translate([0,-42,0])rotate([90,0,90]) cylinder(225,4,4,true);
- }
- module screwposts(){
- translate([125,0,0]) cylinder(20,3,3,true);
- translate([90,-35,0]) cylinder(20,3,3,true);
- translate([90,35,0]) cylinder(20,3,3,true);
- }
- module screws(r){
- translate([125,0,-10]) cylinder(20,r,r,true);
- translate([90,-35,-10]) cylinder(20,r,r,true);
- translate([90,35,-10]) cylinder(20,r,r,true);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement