You are on page 1of 2

attr tipObjekta = "" // atribut postavljen unutar navodnika e se odnositi na tip objekta VisObjekta = 32 //atribut definisan bez attr

se nee pojaviti u inspektoru kao parametar modela attr VisPrizemlja = 4 attr VisSprata = 3 attr Modul1 = 1.4 // definisani Modul1 e se pojaviti u inspektoru i njegova promena e uticati na Modul2 i Modul3 koji us putem njega definisani Modul2 = Modul1*2 Modul3 = Modul1*3 attr ShProzoraT1 = 1.2 attr VisProzoraT1 = 2.5 //attr ShProzoraT2 = 1. LotInner--> Dvoriste Lot--> 33%: GObjekat ("Tip1") 33%: GObjekat ("Tip2") else: GObjekat ("Tip3") // Sa procentima definiemo procentualno uee pravila u modelu. Izraz se uvek zavrava sa else: // to se odnosi na preostalo procentualno uee. U pravilu Lot definisali smo tipove objekata - Tip1, Tip2 i Tip3 // definisanje tipova objekata putem atributa nam omoguuje da sve operacije, koje su za njih zajednike, definiemo istim pravilom //primer gore navedenog (operacija je na ovaj nain primenjena na sve tipove objekata)

GObjekat(tipObjekta)-->extrude(VisObjekta)Objekat(tipObjekta)

Objekat(tipObjekta)--> [split(y){VisPrizemlja: Prizemlje(tipObjekta) | {~VisSprata: Sprat(tipObjekta, split.index)}*}]ZaKrov(tipObjekta) //split.index se odnosi na numeraciju podele (split-a) //numeracija pocinje sa nulom, tako da povrs koje podeljena na tri dela ima split.total = 3, ali su elementi podele numerisani kao 0, 1 i 2. //Ako elimo da se neko pravilo odnosi na poslednji element u podeli izraz glasi: split.total-1 ZaKrov(tipObjekta)--> case tipObjekta =="Tip3": //case je uslovno pravilo (conditional rule) sa kojim definiemo pod koji uslovima e odreeno pravilo biti primenjeno case geometry.area(front)>geometry.area(left):ZaKosKrov // u ovom slucaju pravilo se primenjuje na objekte iji ulini front je vei od else:ZaRavanKrov //bone fasade else: ZaRavanKrov //NAPOMENA: kada se koriste kljune rei poput back, front,...nije na odmet aktivirati edit model i dvoklikom na element utvrditi poziciju scope-a kako bi bilo jasnije koju //kljucnu rec treba uporebiti u pravilu. Pre nego sto se aktivira edit model sa dve kose crte (//) deaktivirati deo pravila koji nije napisan do kraja...da ne bi doslo do //greske u modelu. Kljune rei vezane za ulicu, poput street.front se mogu primeniti samo ako se model generie na dynamic shape layout-u, odnosno na binamikim povrima //koje su generisane u CE-u. Ako se povr uveze iz drugog softvera ili se runo napravi u CE-u, program ne prepoznaje kljunu re vezanu za ulicu. ZaRavanKrov--> comp(f){top:OsRKrova} // comp - component split, dekomponuje objekat (solid) na sastavne povri. Pogledati u help-u koje su sve kljune rei ZaKosKrov-->comp(f){top:OsKKrova} OsRKrova--> [offset(-0.4,border)Atika]K // upotrebom [] se pravilo odnosi na operaciju u zagradama i istovremeno na operaciju van zagrada. U ovom sluaju je osnova //ravnog krova ofsetovana ka unutra za debljinu atike i istovremeno je oblik na koji se OsRKrova odnosi prosleen na pravilo K. //Druga varijanta za isto pravilo: //OsRKrova --> offset (-0.4)K //K--> comp(f){inside: KrovnaRavan| all:Atika} // U ovoj varijanti je uraen samo offset, a sa comp operacijom je je geometrija dekomponovana na Atiku i KrovnuRavan.

Atika--> extrude(1.2) OsKKrova--> roofGable(20)

//roofGable je jedno od pravila za generisanje krova (pogledati ostala pravila u help-u)

Prizemlje(tipObjekta)--> comp(f){side: FPrizemlja(tipObjekta)} a donja i gornja e nestati.

//ako se neto ne definie u okviru operacije, ono nee ni biti generisano. U ovom sluaju ostae samo bone //stranice,

Sprat(tipObjekta, indexsprata)--> comp(f){side: FSprata(tipObjekta, indexsprata)} //indexsprata prenosi informaciju o split.index-u u naredno pravilo (isto vai i za tipObjekta) FSprata(tipObjekta, indexsprata)--> case tipObjekta=="Tip1": split(x){~3:Polje}* case tipObjekta =="Tip2": case indexsprata%2 >= 1: //prevod izraza: "ako je ostatak pri celobrojnom deljenju indexsprata i 2 jednak 1 sledi" //izraz pravilno glasi: case indexsprata%2 == 1: a moe i oblik koji je u kodu(>=1) split(x){~Modul1:M1| Modul3:M3|Modul2:M2}* else: split(x){~Modul2:M2| Modul3:M3|Modul1:M1}* else: case indexsprata%2 >= 1: split(x){0.5:Zid|{~Modul1:Zid|Modul1:Otvor}*|0.5:Zid} else: split(x){0.5:Zid|{~Modul1:Otvor|Modul1:Zid}*|0.5:Zid} Polje--> 20%: extrude(-1.6)MasaLodje

else: split(x){~1:Zid |{ShProzoraT1:split(y){0.5:Zid|VisProzoraT1:Prozor|~1:Zid} | ~1:Zid}*} MasaLodje--> comp(f){bottom:NIL|all:S } // sa NIL se ponitava odreena geometrija M1--> 50%: split(x){~1:Zid | ShProzoraT1: split(y){0.5:Zid|VisProzoraT1:Prozor|~1:Zid} |~1:Zid} else: Zid M3--> 30%: split(x){~1:Zid | ShProzoraT1*2: split(y){0.5:Zid|VisProzoraT1:Prozor|~1:Zid} |~1:Zid} 30%: split(x){~1:Zid | ShProzoraT1*2: split(y){1.3:Zid|VisProzoraT1/3:Prozor|~1:Zid} |~1:Zid} else:Zid Prozor--> color("#716b5e") // boje se piu u heksadecimalnom obliku

Otvor --> split(y){0.5:Zid|VisProzoraT1:Prozor|~1:Zid}