157 lines
3.3 KiB
OpenSCAD
157 lines
3.3 KiB
OpenSCAD
$fn = 300;
|
|
|
|
outer = 25.9;
|
|
|
|
part = "b";
|
|
|
|
if (part == "a" || part == "*") {
|
|
difference() {
|
|
assembly();
|
|
clips(mask=true);
|
|
}
|
|
}
|
|
|
|
if (part == "b" || part == "*") {
|
|
intersection() {
|
|
assembly();
|
|
clips(mask=true);
|
|
}
|
|
}
|
|
|
|
|
|
module tenten() {
|
|
color("red")
|
|
union() {
|
|
difference() {
|
|
hull() {
|
|
for (x=[0.75, outer - 0.75], y=[0.75, outer - 0.75])
|
|
translate([x, y, 0]) {
|
|
cylinder(h=30, r=0.75);
|
|
}
|
|
}
|
|
|
|
for (t=[[-1, (outer - 9) / 2], [outer - 1.0, (outer - 9) / 2]])
|
|
translate([t[0], t[1], -1])
|
|
cube([2, 9, 32]);
|
|
|
|
for (t=[[-1, (outer - 9) / 2], [outer - 3, (outer - 9) / 2]])
|
|
translate([t[0], t[1] + 1.1, -1])
|
|
cube([4, 6.8, 32]);
|
|
|
|
for (t=[[(outer - 9) / 2, -1], [(outer - 9) / 2, outer - 1.0]])
|
|
translate([t[0], t[1], -1])
|
|
cube([9, 2, 32]);
|
|
|
|
for (t=[[(outer - 9) / 2, -1], [(outer - 9) / 2, outer - 3]])
|
|
translate([t[0] + 1.1, t[1], -1])
|
|
cube([6.8, 4, 32]);
|
|
}
|
|
|
|
for (x=[(outer - 9) / 2,(outer - 9) / 2 + 9], y=[1.1,outer-1.1]) {
|
|
translate([x, y, 0])
|
|
cylinder(h=30, d=2.2);
|
|
|
|
translate([y, x, 0])
|
|
cylinder(h=30, d=2.2);
|
|
}
|
|
}
|
|
}
|
|
|
|
module assembly() {
|
|
difference() {
|
|
union() {
|
|
hull() {
|
|
for (x=[1, outer + 3], y=[1, outer])
|
|
translate([x, y, 0])
|
|
cylinder(h=12, r=1.4);
|
|
}
|
|
|
|
hull() {
|
|
for (x=[1.7, outer + 2.3], y=[1.7, outer - 0.7])
|
|
translate([x, y, 0])
|
|
cylinder(h=20, r=1.2);
|
|
}
|
|
}
|
|
|
|
translate([2, -1.01, -1])
|
|
tenten();
|
|
|
|
translate([10, -1, -1])
|
|
cube([15, 5, 30]);
|
|
}
|
|
|
|
clips();
|
|
}
|
|
|
|
|
|
module clips(mask=false) {
|
|
translate([-3.51, 1, 0]) {
|
|
if (mask) {
|
|
clipmask();
|
|
} else {
|
|
clip();
|
|
}
|
|
}
|
|
|
|
translate([outer + 7.51, 1, 0])
|
|
mirror([1, 0, 0]) {
|
|
if (mask) {
|
|
clipmask();
|
|
} else {
|
|
clip();
|
|
}
|
|
}
|
|
|
|
translate([3, outer + 4.5, 0])
|
|
rotate([0, 0, -90]) {
|
|
if (mask) {
|
|
clipmask();
|
|
} else {
|
|
clip();
|
|
}
|
|
}
|
|
|
|
translate([27, outer + 9.5, 0])
|
|
mirror([1, 0, 0])
|
|
rotate([0, 0, -90]) {
|
|
if (mask) {
|
|
clipmask();
|
|
} else {
|
|
clip();
|
|
}
|
|
}
|
|
}
|
|
|
|
module clip() {
|
|
difference() {
|
|
hull() {
|
|
for (y=[0, 20])
|
|
translate([0, y, 0]) {
|
|
translate([1, 2, 0])
|
|
cylinder(h=12, d=4);
|
|
|
|
translate([1, 0, 0])
|
|
cube([4, 4, 12]);
|
|
}
|
|
}
|
|
|
|
translate([1.2, -1.75, -1])
|
|
rotate([0, 0, 25])
|
|
cube([2.4, 2, 14]);
|
|
|
|
for (y=[0.8:1.7:18])
|
|
translate([2.4, y, -1])
|
|
rotate([0, 0, 65])
|
|
cube([0.5, 2.0, 14]);
|
|
|
|
for (y=[0.4:1.7:18])
|
|
translate([0.7, y, -1])
|
|
rotate([0, 0, -65])
|
|
cube([0.5, 2.1, 14]);
|
|
}
|
|
}
|
|
|
|
module clipmask() {
|
|
translate([0.3, -1, -1])
|
|
cube([2.7, 20.1, 14]);
|
|
} |