Initial commit.
This commit is contained in:
commit
adafcac042
16 changed files with 21645 additions and 0 deletions
91
3d/lock/lock_0.1.scad
Normal file
91
3d/lock/lock_0.1.scad
Normal file
|
@ -0,0 +1,91 @@
|
|||
|
||||
opn_h = 48;
|
||||
opn_w = 11.2;
|
||||
|
||||
d = 3;
|
||||
|
||||
btn_s = 6;
|
||||
btn_dist = 34;
|
||||
btn_d = 3.2;
|
||||
|
||||
h = btn_dist+btn_s+1.4+2;
|
||||
|
||||
hub = 1.5;
|
||||
|
||||
l_d = 24;
|
||||
|
||||
module ring(dia, thickness, w) {
|
||||
translate([0, w, 0]) rotate ([90, 0, 0])
|
||||
difference() {
|
||||
cylinder(w, dia, dia, $fn=128);
|
||||
translate([0, 0, -0.1])
|
||||
cylinder(w+0.2, dia-thickness, dia-thickness, $fn=128);
|
||||
}
|
||||
}
|
||||
|
||||
rotate([90, 0, 0]) {
|
||||
|
||||
/* Base */
|
||||
cube([d, btn_s, h]);
|
||||
/* Top clamp */
|
||||
translate([d, 0, h-1.4])
|
||||
cube([btn_d, btn_s, 1.4]);
|
||||
/* Bottom clamp */
|
||||
translate([d, 0, h-btn_s-(1.4*2)-0.4])
|
||||
cube([btn_d, btn_s, 1.4]);
|
||||
/*
|
||||
{
|
||||
translate([d, -0.2, btn_dist-0.2])
|
||||
cube([btn_s, btn_s+0.4, btn_s+0.4]);
|
||||
translate([d, -0.1, 0])
|
||||
cube([btn_d+0.1, btn_s+0.2, (btn_dist-(8+hub/2)+btn_s/2)]);
|
||||
}
|
||||
}
|
||||
*/
|
||||
/* Foot */
|
||||
difference() {
|
||||
rotate([0, 30, 0])
|
||||
cube([20, btn_s, d]);
|
||||
translate([16, -0.1, -10])
|
||||
cube([btn_s, btn_s+0.2, btn_s]);
|
||||
}
|
||||
|
||||
/* Side hold */
|
||||
/*
|
||||
translate([0, 0, btn_dist+((btn_s-3.7)/2)])
|
||||
cube([d, btn_s+2, 3.7]);
|
||||
*/
|
||||
|
||||
/* Ledge */
|
||||
/*
|
||||
translate([0, 0, h-1.4])
|
||||
cube([d+btn_d+hub+1.4, btn_s, 1.4]);
|
||||
*/
|
||||
translate([d+btn_d+hub, 0, h-24])
|
||||
intersection() {
|
||||
translate([24, 0, 24])
|
||||
ring(24, 1.4, btn_s);
|
||||
cube([12, 24, 24]);
|
||||
}
|
||||
|
||||
translate([(d+btn_d+hub+1.4)/2, 0, h])
|
||||
intersection() {
|
||||
ring((d+btn_d+hub+1.4)/2, 1.4, btn_s);
|
||||
translate([-10, 0, 0])
|
||||
cube([20, 10, 10]);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
translate([4+d+btn_d+hub+0.2, 0, btn_dist+btn_s/2])
|
||||
ring(4, 0.6, btn_s);
|
||||
|
||||
translate([d+btn_d, 0, btn_dist-(8+hub/2)+btn_s/2])
|
||||
intersection() {
|
||||
translate([0, 0, 4+hub])
|
||||
ring(4+hub, 0.6, btn_s);
|
||||
cube([6, 6, 4+hub]);
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
9466
3d/lock/lock_0.1.stl
Normal file
9466
3d/lock/lock_0.1.stl
Normal file
File diff suppressed because it is too large
Load diff
156
3d/lock/lock_0.3.scad
Normal file
156
3d/lock/lock_0.3.scad
Normal file
|
@ -0,0 +1,156 @@
|
|||
|
||||
render_lock = true;
|
||||
render_wings = false;
|
||||
|
||||
d = 4; // Thickness (button/wall distance)
|
||||
|
||||
btn_s = 6; // Button (edge) size
|
||||
btn_dist = 34; // Button distance from floor
|
||||
btn_d = 3.2; // Button depth
|
||||
hub = 1.5; // Button hub
|
||||
|
||||
h = btn_dist+btn_s+1.4+2;
|
||||
|
||||
fil = 0.32; // Filament thickness
|
||||
l_d = 24; // Ledge size
|
||||
l_thick = fil*4; // Ledge thickness
|
||||
foot_s = 34; // Foot size
|
||||
|
||||
w_t = fil*4; // Wing thickness
|
||||
w_h = 8; // Wing height
|
||||
w_l = 4; // Wing length (per wing)
|
||||
w_notch = 1; // Notch depth
|
||||
|
||||
module ring(dia, thickness, w) {
|
||||
translate([0, w, 0]) rotate ([90, 0, 0])
|
||||
difference() {
|
||||
cylinder(w, dia, dia, $fn=128);
|
||||
translate([0, 0, -0.1])
|
||||
cylinder(w+0.2, dia-thickness, dia-thickness, $fn=128);
|
||||
}
|
||||
}
|
||||
|
||||
if (render_lock) {
|
||||
rotate([90, 0, 0]) {
|
||||
|
||||
/* Base */
|
||||
//difference() {
|
||||
translate([0, 0, foot_s/2])
|
||||
cube([d, btn_s, h-foot_s/2]);
|
||||
// Wing notch cut-out
|
||||
//translate([-0.4, btn_s-w_notch-0.4, btn_dist-w_h*2+w_t-0.2])
|
||||
// cube([w_t+0.8, w_notch+0.5, w_h/2+0.8]);
|
||||
//}
|
||||
|
||||
/* Top clamp */
|
||||
translate([d, 0, h-fil*4])
|
||||
cube([btn_d, btn_s, fil*4]);
|
||||
/* Bottom clamp */
|
||||
translate([d, 0, h-btn_s-(fil*4*2)-0.4])
|
||||
cube([btn_d, btn_s, fil*4]);
|
||||
/* Notch */
|
||||
notch = fil*4;
|
||||
translate([0, 0, h-btn_s+btn_s/4-fil*4-0.2])
|
||||
difference() {
|
||||
cube([d, btn_s+notch, btn_s/2]);
|
||||
translate([-0.1, 0.1, 4*fil])
|
||||
cube([d-4*fil+0.1, btn_s+notch+0.2, btn_s/2-8*fil]);
|
||||
}
|
||||
|
||||
/* Angel wing clamp */
|
||||
/*
|
||||
translate([d, 0, btn_dist-w_h*2]) {
|
||||
cube([w_t+0.6, btn_s, fil*4]);
|
||||
translate([w_t+0.6, 0, 0])
|
||||
cube([fil*4, btn_s, w_h]);
|
||||
}
|
||||
*/
|
||||
|
||||
/* Wire clamp */
|
||||
/*
|
||||
w_s = 1.2;
|
||||
translate([d, 0, btn_dist-10-w_s]) {
|
||||
cube([w_s, btn_s/2, fil*4]);
|
||||
translate([w_s, 0, 0])
|
||||
cube([fil*4, btn_s/2, 10]);
|
||||
}
|
||||
*/
|
||||
|
||||
/* Ledge */
|
||||
translate([d+btn_d+hub+0.2, 0, h-42+l_thick])
|
||||
intersection() {
|
||||
translate([42, 0, 42])
|
||||
ring(42, l_thick, btn_s);
|
||||
cube([8, 42, 42]);
|
||||
}
|
||||
|
||||
// Extension
|
||||
ext = 2;
|
||||
translate([0, 0, h+l_thick])
|
||||
cube([l_thick, btn_s, ext]);
|
||||
translate([d+btn_d+hub+0.2, 0, h+l_thick])
|
||||
cube([l_thick, btn_s, ext]);
|
||||
|
||||
translate([0, 0, h])
|
||||
difference() {
|
||||
cube([l_thick*2, btn_s, l_thick]);
|
||||
translate([l_thick*2, -0.1, l_thick]) rotate([-90, 0, 0])
|
||||
cylinder(btn_s+0.2, l_thick, l_thick, $fn=64);
|
||||
}
|
||||
|
||||
translate([(d+btn_d+hub+l_thick+0.2)/2, 0, h+l_thick+ext])
|
||||
intersection() {
|
||||
ring((d+btn_d+hub+l_thick+0.2)/2, l_thick, btn_s);
|
||||
translate([-10, 0, 0])
|
||||
cube([20, 10, 10]);
|
||||
}
|
||||
|
||||
/* Foot */
|
||||
translate([foot_s, 0, foot_s/2])
|
||||
intersection() {
|
||||
ring(foot_s, d, btn_s);
|
||||
translate([-foot_s, -0.1, -foot_s])
|
||||
cube([foot_s-12, btn_s+0.2, foot_s]);
|
||||
}
|
||||
|
||||
}
|
||||
} // endif (render_lock)
|
||||
|
||||
/* Angel wings */
|
||||
if (render_wings) {
|
||||
translate([-20, 0, 0]) {
|
||||
|
||||
// Middle piece
|
||||
translate([0, -0.2, 0])
|
||||
cube([w_t, btn_s+0.4, w_h]);
|
||||
|
||||
// Middle
|
||||
translate([0, -w_t-0.2, 0])
|
||||
cube([d+w_t, w_t, w_h]);
|
||||
translate([0, btn_s+0.2, 0])
|
||||
cube([d+w_t, w_t, w_h]);
|
||||
|
||||
// Notch
|
||||
translate([d, -0.2, 0])
|
||||
cube([w_t, w_notch, w_h/2]);
|
||||
|
||||
// Wings
|
||||
translate([d, -w_l-w_t-0.2, 0])
|
||||
cube([w_t, w_l, w_h]);
|
||||
translate([d, btn_s+w_t+0.2, 0])
|
||||
cube([w_t, w_l, w_h]);
|
||||
|
||||
// Wire clamps
|
||||
wire = 1.2;
|
||||
translate([d-w_t-wire, -w_l-w_t-0.2, 0])
|
||||
cube([w_t, w_l-wire, w_h/2]);
|
||||
translate([d-wire, -w_l-w_t-0.2, 0])
|
||||
cube([wire, w_t, w_h/2]);
|
||||
|
||||
translate([d-w_t-wire, btn_s+w_t+0.2+wire, 0])
|
||||
cube([w_t, w_l-wire, w_h/2]);
|
||||
translate([d-wire, btn_s+w_t+w_l+0.2-w_t])
|
||||
cube([wire, w_t, w_h/2]);
|
||||
|
||||
}
|
||||
} // endif (render_wings)
|
6792
3d/lock/lock_0.3.stl
Normal file
6792
3d/lock/lock_0.3.stl
Normal file
File diff suppressed because it is too large
Load diff
BIN
3d/mount/mount magnet.stl
Normal file
BIN
3d/mount/mount magnet.stl
Normal file
Binary file not shown.
59
3d/mount/mount.scad
Normal file
59
3d/mount/mount.scad
Normal file
|
@ -0,0 +1,59 @@
|
|||
|
||||
fil = 0.25;
|
||||
w = 31+fil*6;
|
||||
l = 12;
|
||||
cls = 6.4;
|
||||
base_width = 30;
|
||||
base_height = 15;
|
||||
|
||||
// Size of magnets used (plus clearance).
|
||||
magnet = [20.1+1, 6.1+0.4, 1.6+0.8];
|
||||
|
||||
// Glue mount or magnet mount?
|
||||
magnet_mount = true;
|
||||
|
||||
// Clamp.
|
||||
module clamp (){
|
||||
translate([0, fil*6, 0])
|
||||
cube([fil*6, fil*6, l]);
|
||||
translate([fil*6+2.5, fil*6, 0])
|
||||
cube([cls-2.5, fil*8, l]);
|
||||
cube([fil*3+cls, fil*6, l]);
|
||||
}
|
||||
|
||||
// Lower clamp.
|
||||
translate ([0, -fil*4, 0])
|
||||
clamp();
|
||||
|
||||
// Upper clamp.
|
||||
translate ([0, w+fil*4, l]) rotate([180, 0, 0])
|
||||
clamp();
|
||||
|
||||
difference () {
|
||||
minkowski () {
|
||||
union () {
|
||||
// Clamp connection.
|
||||
translate([fil*3+cls, -4, 0])
|
||||
cube([0.001, w+4+fil, l]);
|
||||
// Clamp to base.
|
||||
translate([fil*3+cls, -4, 0]) rotate([0, 0, 270])
|
||||
cube([0.001, 4, l]);
|
||||
|
||||
// Base.
|
||||
translate([fil*3+cls+4, -4, 0]) rotate([0, 0, 345])
|
||||
if (magnet_mount) {
|
||||
cube([magnet[2], magnet[1]*2, magnet[0]]);
|
||||
} else {
|
||||
cube([0.001, base_height, base_width]);
|
||||
}
|
||||
}
|
||||
cylinder(0.001, fil*3, fil*3, $fn=64);
|
||||
}
|
||||
|
||||
translate([fil*3+cls+4, -4, 0]) rotate([0, 0, 345])
|
||||
if (magnet_mount) {
|
||||
translate([magnet[2]/2, magnet[1]/2, -0.001])
|
||||
cube([magnet[2], magnet[1], magnet[0]+0.002]);
|
||||
}
|
||||
}
|
||||
|
4524
3d/mount/mount.stl
Normal file
4524
3d/mount/mount.stl
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue