Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- dash dildo v1 for Jehannum's red rocket
- aka "I wonder if this pastebin post will haunt him on google forever"
- coordinate meanings:
- X is width, positive is toward passenger side
- Z is depth, positive is coming out of the dash
- Y is height, positive is up
- */
- // small overlap of cutouts to make previews look better.
- nudge = 0.01;
- // ** uncomment one of these to change what's displayed ****
- // main clock cutout (for generating a STL)
- //clock();
- // clock plus ipod preview
- preview();
- // sectioned preview showing how crap goes together
- //sectioned_preview();
- module preview() {
- //nano_preview();
- clock();
- }
- module sectioned_preview() {
- nano_preview();
- difference() {
- clock();
- translate([-100,0,-nudge]) cube([200,200,200]);
- }
- }
- // ************** parameters ******************
- // all dimensions in mm
- // clock body dimensions
- clock_face_angle = 10.85;
- clock_x = 84;
- clock_y = 28;
- clock_z = 52;
- corner_radius = 3;
- // clock mounting tab configuration
- clock_tab_width = 110;
- clock_tab_height = 22;
- clock_tab_hole_dia = 5;
- clock_tab_hole_spacing = 95;
- clock_tab_thickness = 2;
- clock_tab_corner_radius = 3;
- clock_tab_z = 43;
- // nano dimensions from apple's website
- nano_x = 39.6;
- nano_y = 5.4;
- nano_z = 76.5;
- nano_rounding = 2.4;
- // offsets to move ipod off-center in dock
- nano_x_offset = 0;
- nano_y_offset = 0;
- // offset for lightning adapter, you probably want this to be negative
- nano_adapter_z_offset = -10;
- // clearance around nano (slot width/height is expanded by this #)
- nano_x_clearance = 1.5;
- nano_y_clearance = 1;
- // from the internet
- nano_adapter_x = 26.3;
- nano_adapter_y = 5.8;
- nano_adapter_z = 26.3;
- nano_adapter_rounding = 2.4;
- // clearance (two-sided) from adapter to slot
- // 1 will make the slot 1mm wider/taller
- nano_adapter_x_clearance = 0.5;
- nano_adapter_y_clearance = 0.5;
- // X offset from center of adapter to center of ipod (wild guess)
- nano_adapter_x_offset = -14;
- // face rounding idea #1 = sphere hull
- module face_sphere_cutout() {
- color("red")
- translate([0,0,clock_z+1]) // PLAY WITH THE +1 NUMBER TO FRIG WITH SLOT DEPTH
- scale([1,1,1])
- hull() {
- translate([-19,0,0]) sphere(r=5);
- translate([19,0,0]) sphere(r=5);
- translate([-19,0,10]) sphere(r=5); // ADD THESE TWO LINES
- translate([19,0,10]) sphere(r=5); // ADD THESE TWO LINES
- }
- }
- // clock body with cutouts for face/ipod/adapter
- module clock() {
- difference() {
- clock_body();
- nano_cutout();
- face_sphere_cutout();
- }
- }
- // solid clock body
- module clock_body() {
- // body
- difference() {
- // face (extended)
- translate([-clock_x/2,-clock_y/2,0]) cube_rounded_z([clock_x,clock_y,clock_z+clock_y],r=3);
- // angled face cutoff
- translate([0,0,clock_z]) rotate([-clock_face_angle,0,0]) translate([-clock_x/2-nudge,-clock_y]) cube([clock_x+(2*nudge),2*clock_y,2*clock_y]);
- }
- // tabs w/hole cutouts
- difference() {
- // tab
- translate([-clock_tab_width/2,-clock_tab_height/2,clock_tab_z])
- cube_rounded_z([clock_tab_width,clock_tab_height,clock_tab_thickness],r=clock_tab_corner_radius);
- // holes
- translate([-clock_tab_hole_spacing/2,0,clock_tab_z-nudge])
- cylinder(d=clock_tab_hole_dia,h=clock_tab_hole_dia+nudge);
- translate([clock_tab_hole_spacing/2,0,clock_tab_z-nudge])
- cylinder(d=clock_tab_hole_dia,h=clock_tab_hole_dia+nudge);
- }
- }
- module nano_preview() {
- // adapter
- color("silver")
- translate([nano_x_offset+nano_adapter_x_offset,nano_y_offset,nano_adapter_z_offset])
- cube_rounded_z([nano_adapter_x,nano_adapter_y,nano_adapter_z],r=nano_adapter_rounding,center_xy=true);
- // nano
- color("pink")
- translate([nano_x_offset,0,nano_adapter_z + nano_adapter_z_offset])
- cube_rounded_z([nano_x,nano_y,nano_z],r=nano_rounding,center_xy=true);
- }
- module nano_cutout() {
- // adapter
- color("gray")
- translate([nano_x_offset+nano_adapter_x_offset,nano_y_offset,nano_adapter_z_offset])
- cube_rounded_z([nano_adapter_x+nano_adapter_x_clearance,nano_adapter_y+nano_adapter_y_clearance,nano_adapter_z+nudge],r=nano_adapter_rounding+(nano_adapter_y_clearance/2),center_xy=true);
- // nano
- color("purple")
- translate([nano_x_offset,0,nano_adapter_z + nano_adapter_z_offset])
- cube_rounded_z([nano_x+nano_x_clearance,nano_y+nano_y_clearance,nano_z],r=nano_rounding+(nano_y_clearance/2),center_xy=true);
- }
- module cube_rounded_z(dimensions,r=0,center=false,center_xy=false) {
- // dimensions
- x = dimensions[0];
- y = dimensions[1];
- z = dimensions[2];
- center_xy = center ? true : center_xy;
- // clip radius to maximum possible
- r = min([r,x/2,y/2]);
- translate([center_xy ? -x/2 : 0, center_xy ? -y/2 : 0, center ? -z/2 : 0])
- if (r > 0) {
- hull() {
- translate([r,r,0]) cylinder(r=r,h=z);
- translate([x-r,r,0]) cylinder(r=r,h=z);
- translate([x-r,y-r,0]) cylinder(r=r,h=z);
- translate([r,y-r,0]) cylinder(r=r,h=z);
- }
- } else {
- cube([x,y,z]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement