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);
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |