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