54 lines
No EOL
1.3 KiB
OpenSCAD
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(); |