Add boxes
This commit is contained in:
		
							parent
							
								
									e7d0196e50
								
							
						
					
					
						commit
						a01e1853a7
					
				
							
								
								
									
										82
									
								
								base.scad
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								base.scad
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,82 @@
 | 
			
		||||
include <./rosetta.scad>
 | 
			
		||||
 | 
			
		||||
base = 160; // mm
 | 
			
		||||
top = 90; //mm
 | 
			
		||||
height = 40;
 | 
			
		||||
thickness = 9; // mm
 | 
			
		||||
thick_height=7; // mm
 | 
			
		||||
delta = 0.01;
 | 
			
		||||
 | 
			
		||||
// M4
 | 
			
		||||
screw_width = 5; //mm
 | 
			
		||||
piulitza = 7; // mm
 | 
			
		||||
piulitza_h = 4; // mm
 | 
			
		||||
 | 
			
		||||
// dent depth
 | 
			
		||||
dent_depth = 3.5;
 | 
			
		||||
 | 
			
		||||
base_2 = base/2;
 | 
			
		||||
top_2 = top/2 - 1;
 | 
			
		||||
top_3 = top_2 - 5;
 | 
			
		||||
top_4 = top_2/2;
 | 
			
		||||
screw_distance = 33;
 | 
			
		||||
inital_screw_angle = -30;
 | 
			
		||||
 | 
			
		||||
thin_base = (base-thickness);
 | 
			
		||||
thin_base_2 = thin_base/2;
 | 
			
		||||
 | 
			
		||||
//slit
 | 
			
		||||
slit_b1 = (thickness*2/3)/2;
 | 
			
		||||
slit_b2 = slit_b1/2;
 | 
			
		||||
slit_h = slit_b2;
 | 
			
		||||
 | 
			
		||||
module ovaloid(radius, width, height) {
 | 
			
		||||
    union(){
 | 
			
		||||
        translate([-width/2+radius,0,0]) cylinder(r=radius, h=height);
 | 
			
		||||
        translate([width/2 - radius, 0,0]) cylinder(r=radius, h=height);
 | 
			
		||||
        translate([0,0,height/2]) cube([width-radius*2, radius*2, height],center=true);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module hole(radius, width, height, thickness) {
 | 
			
		||||
    difference() {
 | 
			
		||||
        ovaloid(radius,width,height);
 | 
			
		||||
        translate([0,0,-delta])
 | 
			
		||||
        ovaloid(radius-thickness,width-thickness*3.14/2,height+2*delta); 
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
union() {
 | 
			
		||||
    translate([0,0,-2])
 | 
			
		||||
    hole(screw_width+3,screw_width*5+6,1.5,1.5);
 | 
			
		||||
    translate([0,-base/3,-2])
 | 
			
		||||
    rotate([0,0,90])
 | 
			
		||||
    hole(screw_width+3,screw_width*5+6,1.5,1.5);
 | 
			
		||||
 | 
			
		||||
    difference() {
 | 
			
		||||
        cube([base,base,thickness], center= true);
 | 
			
		||||
        translate([0,0,dent_depth-1])
 | 
			
		||||
        cube([thin_base,thin_base,thickness], center= true);
 | 
			
		||||
        
 | 
			
		||||
        // screws
 | 
			
		||||
        translate([0,0,-thickness-delta]) 
 | 
			
		||||
        ovaloid(screw_width,screw_width*5,10);
 | 
			
		||||
 | 
			
		||||
    translate([0,-base/3,0])
 | 
			
		||||
    rotate([0,0,90])
 | 
			
		||||
        translate([0,0,-thickness-delta]) 
 | 
			
		||||
        ovaloid(screw_width,screw_width*5,10);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // The two slits to slide the base into
 | 
			
		||||
    //
 | 
			
		||||
    translate([-base_2 + slit_b2*3/2,base_2-slit_h,thickness-4-delta])
 | 
			
		||||
    rotate([90, 180, 0])
 | 
			
		||||
    trapeze(slit_b1,slit_b2,slit_h,base-slit_h);
 | 
			
		||||
    
 | 
			
		||||
    translate([base_2 - slit_b2*3/2,base_2-slit_h,thickness-4-delta])
 | 
			
		||||
    rotate([90, 180, 0])
 | 
			
		||||
    trapeze(slit_b1,slit_b2,slit_h,base-slit_h);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										107
									
								
								reolink-box.scad
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								reolink-box.scad
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,107 @@
 | 
			
		||||
include <BOSL2/std.scad>
 | 
			
		||||
include <./rosetta.scad>
 | 
			
		||||
 | 
			
		||||
base = 160; // mm
 | 
			
		||||
top = 90; //mm
 | 
			
		||||
height = 40;
 | 
			
		||||
thickness = 9; // mm
 | 
			
		||||
thick_height=7; // mm
 | 
			
		||||
delta = 0.01;
 | 
			
		||||
 | 
			
		||||
// M4
 | 
			
		||||
screw_width = 5; //mm
 | 
			
		||||
piulitza = 7; // mm
 | 
			
		||||
piulitza_h = 4; // mm
 | 
			
		||||
 | 
			
		||||
// dent depth
 | 
			
		||||
dent_depth = 3.5;
 | 
			
		||||
 | 
			
		||||
base_2 = base/2;
 | 
			
		||||
top_2 = top/2 - 1;
 | 
			
		||||
top_3 = top_2 - 5;
 | 
			
		||||
top_4 = top_2/2;
 | 
			
		||||
screw_distance = 33;
 | 
			
		||||
inital_screw_angle = -30;
 | 
			
		||||
 | 
			
		||||
thin_base = (base-thickness);
 | 
			
		||||
thin_base_2 = thin_base/2;
 | 
			
		||||
 | 
			
		||||
//slit
 | 
			
		||||
slit_b1 = (thickness*2/3)/2;
 | 
			
		||||
slit_b2 = slit_b1/2;
 | 
			
		||||
slit_h = slit_b2;
 | 
			
		||||
 | 
			
		||||
top_3 = top_2 - 5;
 | 
			
		||||
 | 
			
		||||
module m3base(x,y,z) {
 | 
			
		||||
    translate([x , y, z]) cylinder(h=thick_height+delta*3, d=screw_width);  
 | 
			
		||||
    translate([x , y, z]) cylinder(h=piulitza_h, d=piulitza);  
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* TODO - the screw notch for the bottom 
 | 
			
		||||
module m3notch(x,y,z) {
 | 
			
		||||
  difference() {
 | 
			
		||||
    translate(x,y,z)  
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
$fn = 180; //production
 | 
			
		||||
$fn = 32; //development
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
difference () {
 | 
			
		||||
 | 
			
		||||
    union() {    
 | 
			
		||||
       //translate([0,0,-slit_h])
 | 
			
		||||
        //color("green") translate([0,0,height-piulitza_h*2]) cap(true);
 | 
			
		||||
        difference() {
 | 
			
		||||
            translate([-base_2,-base_2,0]) cube([base,base,slit_h*2]);
 | 
			
		||||
            translate([-thin_base_2 ,-thin_base_2, -delta]) cube([thin_base,thin_base,slit_h*2+1]);
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        difference() {
 | 
			
		||||
            hull(){
 | 
			
		||||
                translate([-base_2,-base_2,0]) cube([base,base,slit_h*2]);
 | 
			
		||||
                translate([-base_2,-base_2, height]) cube([base,base,slit_h*2]);
 | 
			
		||||
                //cylinder(h=delta, r=top_3, center=true);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            hull() {
 | 
			
		||||
                translate([-thin_base_2,-thin_base_2,-delta]) 
 | 
			
		||||
                    cube([thin_base,thin_base,slit_h*2]);
 | 
			
		||||
                translate([-thin_base_2,-thin_base_2, height - thickness + delta])  
 | 
			
		||||
                    cube([thin_base,thin_base,slit_h*2]);
 | 
			
		||||
                // cylinder(delta, top_3-thickness, center=true);
 | 
			
		||||
            }
 | 
			
		||||
            translate([0,0, height - delta])
 | 
			
		||||
             cylinder(h=15, r=top_3, center=true);
 | 
			
		||||
        } 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        difference() {
 | 
			
		||||
            translate([0 ,0, height-4]) cylinder(h=thick_height,r=top_3);
 | 
			
		||||
            translate([0 ,0, height-4-delta]) cylinder(h=thick_height+delta*2,r=top_3-thickness*1.5);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    union() {
 | 
			
		||||
 | 
			
		||||
    // The two slits to slide the base into
 | 
			
		||||
    //
 | 
			
		||||
    translate([-base_2 + slit_b2*3/2,base_2-slit_h,+slit_h/2-delta*2])
 | 
			
		||||
    rotate([90, 180, 0])
 | 
			
		||||
    trapeze(slit_b1,slit_b2,slit_h,base);
 | 
			
		||||
 | 
			
		||||
    translate([base_2 - slit_b2*3/2,base_2-slit_h,+slit_h/2-delta*2])
 | 
			
		||||
    rotate([90, 180, 0])
 | 
			
		||||
    trapeze(slit_b1,slit_b2,slit_h,base);
 | 
			
		||||
 | 
			
		||||
    // The rosetta
 | 
			
		||||
    translate([0,0, height + delta]) rosetta_flat(top_3, piulitza_h, dent_depth);
 | 
			
		||||
    translate([0,0, height - piulitza_h+delta]) rosetta_flat(top_3, piulitza_h+delta, dent_depth);
 | 
			
		||||
    translate([0,0, height - piulitza_h+delta]) rotate (53,0,0) rosetta_flat(top_3, piulitza_h+delta, dent_depth);
 | 
			
		||||
    translate([0,0, height - piulitza_h*2+delta]) rosetta_flat(top_3, piulitza_h+delta, dent_depth);
 | 
			
		||||
    translate([0,0, height - piulitza_h*2+delta]) rotate (53,0,0) rosetta_flat(top_3, piulitza_h+delta, dent_depth);
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										30
									
								
								reolink-cap-wide-holes.scad
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								reolink-cap-wide-holes.scad
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,30 @@
 | 
			
		||||
include <BOSL2/std.scad>
 | 
			
		||||
include <./rosetta.scad>
 | 
			
		||||
 | 
			
		||||
base = 160; // mm
 | 
			
		||||
top = 90; //mm
 | 
			
		||||
height = 50;
 | 
			
		||||
thickness = 9; // mm
 | 
			
		||||
thick_height=7; // mm
 | 
			
		||||
delta = 0.01;
 | 
			
		||||
 | 
			
		||||
// M4
 | 
			
		||||
screw_width = 5; //mm
 | 
			
		||||
piulitza = 7; // mm
 | 
			
		||||
piulitza_h = 4; // mm
 | 
			
		||||
 | 
			
		||||
// dent depth
 | 
			
		||||
dent_depth = 3.5;
 | 
			
		||||
 | 
			
		||||
base_2 = base/2;
 | 
			
		||||
top_2 = top/2 - 1;
 | 
			
		||||
top_3 = top_2 - 5;
 | 
			
		||||
top_4 = top_2/2;
 | 
			
		||||
screw_distance = 33;
 | 
			
		||||
inital_screw_angle = -30;
 | 
			
		||||
 | 
			
		||||
$fn = 180; //production
 | 
			
		||||
$fn = 24; //development
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
cap(true);
 | 
			
		||||
							
								
								
									
										51
									
								
								reolink-cap.scad
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								reolink-cap.scad
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,51 @@
 | 
			
		||||
include <BOSL2/std.scad>
 | 
			
		||||
include <./rosetta.scad>
 | 
			
		||||
 | 
			
		||||
base = 160; // mm
 | 
			
		||||
top = 90; //mm
 | 
			
		||||
height = 50;
 | 
			
		||||
thickness = 9; // mm
 | 
			
		||||
thick_height=7; // mm
 | 
			
		||||
delta = 0.01;
 | 
			
		||||
 | 
			
		||||
// M4
 | 
			
		||||
screw_width = 5; //mm
 | 
			
		||||
piulitza = 7; // mm
 | 
			
		||||
piulitza_h = 4; // mm
 | 
			
		||||
 | 
			
		||||
base_2 = base/2;
 | 
			
		||||
top_2 = top/2 - 1;
 | 
			
		||||
top_3 = top_2 - 5;
 | 
			
		||||
top_4 = top_2/2;
 | 
			
		||||
screw_distance = 33;
 | 
			
		||||
inital_screw_angle = -30;
 | 
			
		||||
 | 
			
		||||
$fn = 180;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
difference() {
 | 
			
		||||
    union() {
 | 
			
		||||
        rosetta(top_3, piulitza_h, screw_width);
 | 
			
		||||
        color("lightgreen") translate([0,0,piulitza_h-delta]) cylinder(h=piulitza_h, r=top_3-piulitza_h-1);
 | 
			
		||||
        color("lightblue") translate([0,0,piulitza_h*2-delta]) cylinder(h=piulitza_h,r1=top_2-3, r2=top_3);
 | 
			
		||||
        //translate([0,0,6])
 | 
			
		||||
        //cylinder(h=2,r=top_2,center=true, $fn=segments);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    union() {
 | 
			
		||||
        color("green") translate([0,0,-5]) {
 | 
			
		||||
        // screw holes
 | 
			
		||||
        rotate([0,0, inital_screw_angle]) translate([0,screw_distance-screw_width/2,0]) cylinder(20,r=screw_width/2);
 | 
			
		||||
        rotate([0,0, inital_screw_angle + 120]) translate([0,screw_distance-screw_width/2,0]) cylinder(20,r=screw_width/2);
 | 
			
		||||
        rotate([0,0,inital_screw_angle-120]) translate([0,screw_distance-screw_width/2,0]) cylinder(20,r=screw_width/2);
 | 
			
		||||
        
 | 
			
		||||
        // cable pass
 | 
			
		||||
        cylinder(h=20, r=12.5);
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        // Thinner disk
 | 
			
		||||
        translate([0,0,-2]) cylinder(h=piulitza_h*2, r=top_3*2/3);   
 | 
			
		||||
    }    
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										93
									
								
								rosetta.scad
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								rosetta.scad
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,93 @@
 | 
			
		||||
 | 
			
		||||
// rotate as per a, v, but around point pt
 | 
			
		||||
module rotate_about_pt(z, y, pt) {
 | 
			
		||||
    translate(pt)
 | 
			
		||||
        rotate([0, y, z])
 | 
			
		||||
            translate(-pt)
 | 
			
		||||
                children();   
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module dent(radius, height, depth, delta=0.001) {
 | 
			
		||||
 | 
			
		||||
    difference() {
 | 
			
		||||
        color("blue") 
 | 
			
		||||
            translate([-radius, 0, 0]) 
 | 
			
		||||
            cylinder(h=height, r=radius+depth, $fn=3);
 | 
			
		||||
        union() {
 | 
			
		||||
            color("red")
 | 
			
		||||
                translate([0,0,-delta])
 | 
			
		||||
                cylinder(h=height+2*delta, r=radius-depth);
 | 
			
		||||
            
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module tilted_dent(radius, height, depth, delta=0.001) {
 | 
			
		||||
    translate([0,0,-delta]) dent(radius, height, depth, delta);
 | 
			
		||||
    rotate([5,0,60]) translate([0,0,height*(1-sin(5))]) dent(radius, height, depth, delta);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module rosetta(radius,height,depth,delta=0.001) {
 | 
			
		||||
    difference() {
 | 
			
		||||
        cylinder(h=height, r=radius);
 | 
			
		||||
        union() {
 | 
			
		||||
            tilted_dent(radius,height+2*delta,depth);
 | 
			
		||||
            rotate([0,0,120]) tilted_dent(radius,height+2*delta,depth);
 | 
			
		||||
            rotate([0,0,-120]) tilted_dent(radius,height+2*delta,depth);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module rosetta_flat(radius,height,depth,delta=0.001) {
 | 
			
		||||
    difference() {
 | 
			
		||||
        cylinder(h=height, r=radius);
 | 
			
		||||
        translate([0,0,-delta]) union() {
 | 
			
		||||
            dent(radius,height+2*delta,depth);
 | 
			
		||||
            rotate([0,0,120]) dent(radius,height+2*delta,depth);
 | 
			
		||||
            rotate([0,0,-120]) dent(radius,height+2*delta,depth);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module trapeze(b1, b2, h, w) {
 | 
			
		||||
    color("red")
 | 
			
		||||
    linear_extrude(height=w)
 | 
			
		||||
    polygon(points= [[-b1/2, -h/2],
 | 
			
		||||
                  [-b2/2, h/2],
 | 
			
		||||
                  [b2/2, h/2],
 | 
			
		||||
                  [b1/2, -h/2]
 | 
			
		||||
                 ]);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module cap(flat=true) {
 | 
			
		||||
    difference() {
 | 
			
		||||
        union() {
 | 
			
		||||
            // Generate a flat or screw rosetta if needed
 | 
			
		||||
            if (flat)
 | 
			
		||||
                rosetta_flat(top_3, piulitza_h, dent_depth);
 | 
			
		||||
            else
 | 
			
		||||
                rosetta(top_3, piulitza_h, dent_depth);
 | 
			
		||||
            
 | 
			
		||||
            color("lightgreen") translate([0,0,piulitza_h-delta]) cylinder(h=piulitza_h, r=top_3-dent_depth);
 | 
			
		||||
            color("lightblue") translate([0,0,piulitza_h*2-delta]) cylinder(h=piulitza_h,r1=top_2-3, r2=top_3);
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        union() {
 | 
			
		||||
            color("green") translate([0,0,-5]) {
 | 
			
		||||
            // screw holes
 | 
			
		||||
            rotate([0,0, inital_screw_angle]) translate([0,screw_distance-screw_width/2,0]) cylinder(20,r=screw_width/2);
 | 
			
		||||
            rotate([0,0, inital_screw_angle + 120]) translate([0,screw_distance-screw_width/2,0]) cylinder(20,r=screw_width/2);
 | 
			
		||||
            rotate([0,0,inital_screw_angle-120]) translate([0,screw_distance-screw_width/2,0]) cylinder(20,r=screw_width/2);
 | 
			
		||||
            
 | 
			
		||||
            // cable pass
 | 
			
		||||
            cylinder(h=20, r=12.5);
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            // Thinner disk
 | 
			
		||||
            translate([0,0,-2]) cylinder(h=piulitza_h*2, r=top_3*2/3);   
 | 
			
		||||
        }    
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//rosetta_flat(10, 3, 3);
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user