Commit | Line | Data |
---|---|---|
148163dd TM |
1 | //Model of infamous Beograd Rudo Buildings in Istočna Kapija Park (Serbia) |
2 | ||
3 | fast=false; //disable slow features like windows... | |
4 | ||
5 | module rudo_module(xs=5, ys=4, zs=3, s=1, in=0.2, shrink=0) { | |
6 | //jeden "blok" (patro) budovy | |
7 | ||
8 | inb=0.15; | |
9 | inx=0.5; | |
10 | ||
11 | lsx=xs-(shrink*2); | |
12 | lsy=ys-(shrink*2); | |
13 | lsz=zs; | |
14 | ssx=lsx-(in*2); | |
15 | ssy=lsy-(in*2); | |
16 | ssz=lsz; | |
17 | ||
18 | rr=3; | |
19 | rc=xs*ys*2; | |
20 | randx=rands(-1,xs,rc+1); | |
21 | randy=rands(-1,ys,rc+1); | |
22 | randz=rands(0.3,1.8,rc+1); | |
23 | ||
24 | translate([shrink,shrink,0]) difference() { | |
25 | //Zakladni tvar patra | |
26 | translate([-0.5,-0.5,-0.5]) cube([lsx,lsy,lsz]); | |
27 | ||
28 | //Nahodne otevrena okna | |
29 | if(!fast) difference() { | |
30 | for(i = [0 : rc]) { | |
31 | translate([ | |
32 | round(randx[i]*rr)/rr, | |
33 | round(randy[i]*rr)/rr, | |
34 | round(randz[i]/2)*1.5 | |
35 | ]) cube([1,1,0.6], center=true); | |
36 | } | |
37 | ||
38 | //Kostka ktera limituje hloubku oken | |
39 | translate([in-0.5,in-0.5,-0.5]) cube([ssx,ssy,ssz]); | |
40 | } | |
41 | ||
42 | //celni sachty | |
43 | translate([inb-1,ys/2-0.5,0]) cube([1,1,zs*3], center=true); | |
44 | translate([xs-inb,ys/2-0.5,0]) cube([1,1,zs*3], center=true); | |
45 | ||
46 | //rohy | |
47 | if(shrink==0) { | |
48 | translate([-0.5,-0.5,0]) cube([2*inx,2*inx,zs*3], center=true); | |
49 | translate([-0.5,ys-0.5,0]) cube([2*inx,2*inx,zs*3], center=true); | |
50 | translate([xs-0.5,-0.5,0]) cube([2*inx,2*inx,zs*3], center=true); | |
51 | translate([xs-0.5,ys-0.5,0]) cube([2*inx,2*inx,zs*3], center=true); | |
52 | } | |
53 | } | |
54 | } | |
55 | ||
56 | module rudo_building() { | |
57 | w=6; | |
58 | translate([0,0.5-(w/2),0]) { | |
59 | //sklep | |
60 | translate([0,0,-2]) rudo_module(10,w,2, shrink=0.15, in=0.1); | |
61 | translate([11,0,-2]) rudo_module(4,w,2, shrink=0.15, in=0.1); | |
62 | //patra | |
63 | translate([0,0,0]) rudo_module(15,w,3); | |
64 | translate([0,0,3]) rudo_module(10,w,1, shrink=0.15); | |
65 | translate([0,0,4]) rudo_module(10,w,3); | |
66 | translate([0,0,7]) rudo_module(9,w,3); | |
67 | translate([0,0,10]) rudo_module(8,w,3); | |
68 | translate([0,0,13]) rudo_module(7,w,3); | |
69 | translate([0,0,16]) rudo_module(6,w,3); | |
70 | translate([1,0,19]) rudo_module(4,w,3); | |
71 | //vytahova budka | |
72 | translate([1.5,0,20]) cube([2,1.5,2]); | |
73 | translate([1.5,w-2.5,20]) cube([2,1.5,2]); | |
74 | } | |
75 | } | |
76 | ||
77 | module rudo_scene() { | |
78 | //vsechny 3 budovy | |
79 | for(r=[0,120,240]) rotate([0,0,r]) translate([7.5,0,2.5]) rudo_building(); | |
80 | difference() { | |
81 | intersection() { | |
82 | translate([0,0,-77]) sphere(r=80, $fn=100); | |
83 | cylinder(r=16, h=3); | |
84 | } | |
85 | //napis | |
86 | rotate([0,0,30]) translate([-12.5,3,0.3]) | |
87 | rotate([180,0,0]) linear_extrude(1) scale(0.5) text("HARVIE"); | |
88 | } | |
89 | } | |
90 | ||
91 | //!translate([0,-1,0]) rudo_module(7,3,3, shrink=0.2) | |
92 | //scale(2) rudo_building(); | |
93 | ||
94 | scale(2) rudo_scene(); |