3d_print/Dom/stojak_golarka.scad
2025-11-02 15:53:42 +01:00

66 lines
No EOL
2 KiB
OpenSCAD

// stojak na golarkę i pędzel
include <BOSL2/std.scad>
h = 50;
t = 5;
razor_dist = 10;
razor_w = 11;
brush_dist = 15;
brush_w = 32;
dlugosc = razor_w + brush_w + 6*t;
top_valley = 8;
slop = 0.3;
$fn = 36;
szer = razor_w>brush_w ? razor_w+2*t : brush_w+2*t;
// podstawka
union() {
// dół
union() {
cuboid([t*4,szer,t], rounding=t/2)
left((razor_dist+razor_w*6/4)/2)
cuboid([razor_dist+razor_w*6/4,szer,t], rounding=t/2);
right((brush_dist+brush_w)/2)
cuboid([brush_dist+brush_w,szer,t], rounding=t/2);
}
// pion
round3d(t/2) {
up(h/2) cuboid([t, szer-t, h], rounding=-15, edges=[BOT+RIGHT, BOT+LEFT]);
}
up(h) cuboid([t, szer-t, t], rounding=t/2, edges="Z");
// połączenia
up(h+t) back(szer/4) cuboid([t,t,t], rounding=1, edges=TOP);
up(h+t) fwd(szer/4) cuboid([t,t,t], rounding=1, edges=TOP);
}
// góra
back(szer*2) difference() {
// góra
union() {
left(razor_dist-brush_dist)
cuboid([(razor_dist+brush_dist),szer,t], rounding=t/2);
left((razor_dist+razor_w)/2)
cuboid([razor_dist+razor_w,szer,t], rounding=t/2);
right((brush_dist+brush_w)/2)
cuboid([brush_dist+brush_w,szer,t], rounding=t/2);
}
// dziury na połączenia
back(szer/4) cuboid([t+slop,t+slop,t+slop], rounding=-1, edges=BOT);
fwd(szer/4) cuboid([t+slop,t+slop,t+slop], rounding=-1, edges=BOT);
// dziura na golarkę
left(razor_dist + razor_w/2) union() {
cyl(h=t+slop, d=razor_w, rounding=-2);
left(dlugosc/2) cuboid([dlugosc, razor_w, t+slop], rounding=-2, edges="X");
up((top_valley*razor_w/2)/2) xrot(90)
cyl(h=szer, d=top_valley*razor_w/2, $fn=$fn*2);
}
// dziura na pędzel
right(brush_dist+brush_w/2) union() {
cyl(h=t+slop, d=brush_w, rounding=-2);
right(dlugosc/2) cuboid([dlugosc, brush_w, t+slop], rounding=-2, edges="X");
up((top_valley*brush_w/2)/2) xrot(90)
cyl(h=szer, d=top_valley*brush_w/2, $fn=$fn*2);
}
}