3d_print/Dom/hook_mirror.scad

54 lines
No EOL
1.3 KiB
OpenSCAD

include <BOSL2/std.scad>
t = 3;
w = 5;
r = 1;
num = 3;
// haczyk do przyczepienia
hook_top = 17;
hook_bottom = 20;
hook_h = 30;
hook_angle = 5; // atan((hook_bottom-hook_top)/hook_h);
module hook() {
fwd(hook_top + t/2) union() {
cuboid([w, hook_top+t, t], rounding=r, anchor=TOP+FWD);
rotate([90 - hook_angle,0,0]) cuboid([w, hook_h, t], rounding=r, anchor=TOP+BACK);
}
}
// holder
hold_h = 80;
hold_d = 17;
hold_hf = 90; // height front
module holder() {
diff("R") {
cuboid([w,t,hold_h], anchor=TOP, rounding=r);
down(hold_h) cuboid([w,hold_d,t], anchor=BOTTOM+FWD, rounding=r);
down(hold_h) back(hold_d) cuboid([w,t,hold_hf], anchor=BOTTOM, rounding=r);
tag("R") down(hold_h) back(hold_d/2) up(t*(2/3)) cuboid([10,w,10], anchor=BOTTOM);
}
}
hold_w = 130;
hold_side = 50;
module crossbar() {
down(hold_h) back(hold_d/2) up(t) diff("R") {
cuboid([hold_w,w,t], anchor=BOTTOM, rounding=r);
left(hold_w/2) cuboid([t,w,hold_side], anchor=BOTTOM, rounding=r);
right(hold_w/2) cuboid([t,w,hold_side], anchor=BOTTOM, rounding=r);
tag("R") left(hold_w/2) up(t/3) for(i = [1:num]) {
right(hold_w/(num+1) * i) cuboid([w,10,10], anchor=TOP);
}
}
}
hook();
holder();
crossbar();