mirror of https://github.com/lumapu/ahoy.git
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							283 lines
						
					
					
						
							6.7 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							283 lines
						
					
					
						
							6.7 KiB
						
					
					
				| $fn=100; | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| translate([-w/2-10,0,d+bpt+tpt]) | |
| rotate(a=180, v=[0,1,0]) | |
| box_top(); | |
| translate([w/2+10,0,0]) | |
| box_bottom(); | |
|               | |
| 
 | |
| //*************************************************// | |
| //PARAMETERS | |
| //*************************************************// | |
| //BOX | |
| //-------------------------------------------------- | |
| //inner box width + tolerances | |
| w=90; | |
| //inner box length + tolerances | |
| h=30; | |
| //inner box depth  | |
| d=35; | |
| //wall tickness | |
| wt=3; | |
| //bottom plate tickness | |
| bpt=3; | |
| //top plate tickness | |
| tpt=3; | |
| //top cutout depth | |
| cd=5; | |
| //top cutout tickness | |
| cwt=1.5; | |
| //-------------------------------------------------- | |
| //BOARD MOUNTING HOLES | |
| //-------------------------------------------------- | |
| //position | |
| cx=0; | |
| cy=0; | |
| //holes size (radius) | |
| chs_i=1.5; | |
| chs_o=4; | |
| //distancer height | |
| dsth=3; | |
| //holes distance h | |
| chd_h=90; | |
| //holes distance v | |
| chd_v=90; | |
| //-------------------------------------------------- | |
| //TOP PART MOUNTING HOLES | |
| //-------------------------------------------------- | |
| //position | |
| cx1=0; | |
| cy1=0; | |
| //holes size (radius) | |
| chs_i1=1.6; | |
| chs_o1=3; | |
| //holes distance h | |
| chd_h1=h-2*chs_i1-2; | |
| //holes distance v | |
| chd_v1=w-2*chs_i1-2; | |
| //*************************************************// | |
| //*************************************************// | |
| //MODULES | |
| //*************************************************// | |
|  | |
| //top box part           | |
| module box_top() | |
| { | |
|         difference() | |
|         { | |
|             union() | |
|             { | |
|                 difference() | |
|                 { | |
|                     translate([ 0, 0, d+bpt-cd-0.2])      | |
|                     rounded_cube( w+2*wt, h+2*wt, tpt+cd+0.2, 6); | |
|                      | |
|                     translate([ 0, 0,  d+bpt-cd-1]) | |
|                     rounded_cube( w+2*cwt+0.3, h+2*cwt+0.3, cd+1, 4); | |
|                 } | |
|                 /*************************/ | |
|                  | |
|                 //add here... | |
|                  | |
|                 /*************************/ | |
|             } | |
|             //TOP PART HOLES | |
|             //tph_t_cut(); | |
|             /*************************/ | |
|              | |
|             //subtract here...  | |
|              | |
|             /*************************/  | |
|         } | |
| } | |
| //bottom box | |
| module box_bottom() | |
| { | |
|     difference() | |
|     { | |
|         union() | |
|         { | |
|             difference() | |
|             { | |
|                 rounded_cube( w+2*wt, h+2*wt, d+bpt, 6); | |
|                  | |
|                 translate([ 0, 0, -cd]) | |
|                 difference() | |
|                 { | |
|                     translate([ 0, 0,  d+bpt]) | |
|                     rounded_cube( w+2*wt+1, h+2*wt+1, cd+1, 4); | |
| 
 | |
|                     translate([ 0, 0,  d+bpt-1]) | |
|                     rounded_cube( w+2*cwt, h+2*cwt, cd+3, 4); | |
|                 } | |
|                 translate([ 0, 0, bpt]) | |
|                 rounded_cube( w, h, d+bpt, 4); | |
|             } | |
|             //BOARD DISTANCER | |
|             //board_distancer(); | |
|             //TOP PLATE DISTANCER | |
|             //top_distancer(); | |
|             /*************************/ | |
| 
 | |
|              | |
|              | |
|             /*************************/ | |
|         } | |
|          | |
|         //BOARD HOLES | |
|         //bh_cut(); | |
|         //TOP PART HOLES | |
|         //tph_b_cut(); | |
|         /*************************/ | |
|          | |
|         //subtract here... | |
|                      | |
|             translate([25, 0, 14]) | |
|             rotate([0,90,0])    | |
|             cylinder(r=3.5,h=40); | |
| 
 | |
|             translate([-48, 0, 7]) | |
|             cube( [10, 10, 5], true); | |
|              | |
|         /*************************/ | |
|    | |
|     } | |
| } | |
| 
 | |
| /****************************************************/ | |
| module board_distancer() | |
| { | |
|     translate([cx,cy,0]) | |
|     {               | |
|         translate([+chd_h/2,chd_v/2,0]) | |
|         cylinder(r=chs_o,h=bpt+dsth); | |
|         translate([-chd_h/2,chd_v/2,0]) | |
|         cylinder(r=chs_o,h=bpt+dsth); | |
|         translate([+chd_h/2,-chd_v/2,0]) | |
|         cylinder(r=chs_o,h=bpt+dsth); | |
|         translate([-chd_h/2,-chd_v/2,0]) | |
|         cylinder(r=chs_o,h=bpt+dsth); | |
|     } | |
| } | |
| module top_distancer() | |
| { | |
|     translate([cx1,cy1,0]) | |
|     { | |
|         translate([-chd_v1/2, chd_h1/2, 0])    | |
|         cylinder(r=chs_o1,h=d+bpt); | |
|         translate([-chd_v1/2, -chd_h1/2, 0])    | |
|         cylinder(r=chs_o1,h=d+bpt); | |
|         translate([chd_v1/2, chd_h1/2, 0])    | |
|         cylinder(r=chs_o1,h=d+bpt); | |
|         translate([chd_v1/2, -chd_h1/2, 0])    | |
|         cylinder(r=chs_o1,h=d+bpt); | |
|     } | |
| } | |
| module bh_cut() | |
| { | |
|     translate([cx,cy,0]) | |
|     {   | |
|         translate([-chd_h/2,-chd_v/2,-1]) | |
|         cylinder(r=chs_i,h=bpt+dsth+2); | |
|         translate([+chd_h/2,-chd_v/2,-1]) | |
|         cylinder(r=chs_i,h=bpt+dsth+2); | |
|         translate([-chd_h/2,chd_v/2,-1]) | |
|         cylinder(r=chs_i,h=bpt+dsth+2); | |
|         translate([+chd_h/2,chd_v/2,-1]) | |
|         cylinder(r=chs_i,h=bpt+dsth+2); | |
|          | |
|         translate([-chd_h/2,-chd_v/2,1.3]) | |
|         fhex(5.5,3); | |
|         translate([+chd_h/2,-chd_v/2,1.3]) | |
|         fhex(5.5,3); | |
|         translate([-chd_h/2,chd_v/2,1.3]) | |
|         fhex(5.5,3); | |
|         translate([+chd_h/2,chd_v/2,1.3]) | |
|         fhex(5.5,3); | |
|     } | |
| } | |
| 
 | |
| module tph_t_cut() | |
| { | |
|     translate([cx1,cy1,0]) | |
|     { | |
|         translate([-chd_v1/2, chd_h1/2, -2])    | |
|         cylinder(r=chs_i1,h=d+bpt+tpt+3); | |
|         translate([chd_v1/2, chd_h1/2, -2])    | |
|         cylinder(r=chs_i1,h=d+bpt+tpt+3); | |
|      | |
|         translate([-chd_v1/2, -chd_h1/2, -2])    | |
|         cylinder(r=chs_i1,h=d+bpt+tpt+3); | |
|         translate([chd_v1/2, -chd_h1/2, -2])    | |
|         cylinder(r=chs_i1,h=d+bpt+tpt+3); | |
|          | |
|         translate([-chd_v1/2, chd_h1/2, d+bpt+tpt-1.3])  | |
|         fhex(5.5,3); | |
|          | |
|         translate([chd_v1/2, chd_h1/2, d+bpt+tpt-1.3])   | |
|         fhex(5.5,3); | |
|      | |
|         translate([-chd_v1/2, -chd_h1/2, d+bpt+tpt-1.3])    | |
|         fhex(5.5,3); | |
|          | |
|         translate([chd_v1/2, -chd_h1/2, d+bpt+tpt-1.3])    | |
|         fhex(5.5,3); | |
|      | |
|     }    | |
| } | |
| module tph_b_cut() | |
| { | |
|     translate([cx1,cy1,0]) | |
|     { | |
|         translate([-chd_v1/2, chd_h1/2, -2])    | |
|         cylinder(r=chs_i1,h=d+bpt+3); | |
|         translate([chd_v1/2, chd_h1/2, -2])    | |
|         cylinder(r=chs_i1,h=d+bpt+3); | |
|      | |
|         translate([-chd_v1/2, -chd_h1/2, -2])    | |
|         cylinder(r=chs_i1,h=d+bpt+3); | |
|         translate([chd_v1/2, -chd_h1/2, -2])    | |
|         cylinder(r=chs_i1,h=d+bpt+3); | |
|          | |
|         translate([-chd_v1/2, chd_h1/2, -1])  | |
|         cylinder(r=3,h=4); | |
|          | |
|         translate([chd_v1/2, chd_h1/2, -1])   | |
|         cylinder(r=3,h=4); | |
|      | |
|         translate([-chd_v1/2, -chd_h1/2, -1])    | |
|         cylinder(r=3,h=4); | |
|          | |
|         translate([chd_v1/2, -chd_h1/2, -1])    | |
|         cylinder(r=3,h=4);  | |
|      | |
|     }    | |
| } | |
| 
 | |
| 
 | |
| module rounded_cube( x, y, z, r) | |
| { | |
|     translate([-x/2+r,-y/2+r,0]) | |
|     linear_extrude(height=z) | |
|     minkowski()  | |
|     { | |
|         square([x-2*r,y-2*r],true); | |
|         translate([x/2-r,y/2-r,0]) | |
|         circle(r); | |
| 
 | |
|     } | |
| } | |
| 
 | |
| module fhex(wid,height) | |
| { | |
|     hull() | |
|     { | |
|         cube([wid/1.7,wid,height],center = true); | |
|         rotate([0,0,120])cube([wid/1.7,wid,height],center = true); | |
|         rotate([0,0,240])cube([wid/1.7,wid,height],center = true); | |
|     } | |
| }
 | |
| 
 |