// stojak na golarkę i pędzel include 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); } }