Kako je često potrebno da se sobe ili stanovi numerišu u određenom rasporedu na primeru jednog manjeg objekta u Revitu, objasniću kako Dynamo može da nam pomogne da taj inače mukotrpan posao obavimo jako efikasno.

Na jednom spratu objekta unete su sobe koje su po automatici dobile brojeve od 1 – 16

Dodaćemo u Manage>>Additional settings>>Line Styles novi tip linije koja će nam služiti da pomoću nje zadamo putanju reimenovanja soba. Ja sam napravio novi tip linije „Imenovanje soba“ koji je obeležen žutom na slici dole.

Koristeći „Detail line“ uneo sam linije na osnovi sprata. Magenta je linija koja će odrediti koje prostorije želim da preimenujem i to u rasporedu s leva na desno. Zelena linija služi da pokaže kako će skripta odbaciti sve druge linije osim one koja ima stil „Imenovanje soba“

Ako koristite verziju Revita 2018 skriptu možete pokrenuti iz Dynamo player-a a ako kao ja koristite još uvek 2017.1 verziju, morate instalirati plugin Dynamo 1.3 ili noviji. Možete ga skinuti OVDE

OBJAŠNJENJE RADA SKRIPTE

1Selektujemo sve „Detail“ linije u modelu.

2 U prvom segmentu (crveni kvadrat na slici) iz prethodne liste linija čitamo parametar linija „Line Style“. U drugom segmentu upoređujemo da li je stil linije, prethodno zadat, „Imenovanje soba“ i dobijamo listu u kojoj je označeno kao tačno (true), ako stil linije odgovara zadatom a u suprotnom označeno je sa pogrešno (false).

Tako formirana lista će nam poslužiti kao „maska“ za razdvajanje elemenata liste linija prema tome da li je linija predviđena za imenovanje ili neka druga.

Maska funkcioniše kao preklapanje lista. Ako se element prve liste preklopi sa „true“ on se pojavi u novoj listi „in“ a u protivnom ode u listu „out“.

3Kako su linije koje predstavljaju putanju po kojoj se krećemo pri imenovanju prostorija, određene, u ovom delu podelićemo ih na segmente. Posledica ovog postupka biće veći broj tačaka, koji zavisi od klizača „Broj tačaka na krivoj“, koje ćemo iskoristiti da uradimo proveru da li linija seče neku od soba. U ovom primeru ja sam izabrao dve stotine podela svake od linija radi preciznosti a vi naravno možete eksperimentisati.

Kako ste verovatno primetili, tačke koje ću birati su krajnje tačke segmenata (Curve.EndPoint čvor) pa se na taj način u stvari definiše smer uvećavanja numeracije prostorija.

Ako koristite više izlomljenih linija umesto "spline" morate voditi računa o smeru crtanja linije.

4Pomoću čvora List.map proveriću da li se svaka od tačaka nalazi u svakoj od soba, a u drugom „čvoru“ prema prethodnoj proveri sastavići novu listu ali koja će se sada sastojati od soba kroz koje je prošla naša putanja.

Kako je vrlo verovatno da će se više tačaka naći u jednoj istoj sobi iz prethodne liste izdvojiću jedino unikatne sobe kako bih izbegao ponavljanje.

Kako su tačke koje proveravan u uređenoj listi, tako će i nova lista soba biti uređena od prve sobe iz koje smo krenuli do one u kojoj smo završili putanju.

5U poslednjem delu skripte ćemo standardnom procedurom dodavanja vrednosti nekom parametru dodati brojeve sobama.

Da bi znali koliko ima soba kroz koje prolazi naša putanja prvo ih moramo izbrojati. Zatim formiram listu brojeva počev od zadatog broja (u ovom slučaju 201) i sa korakom 1 broj ukupno onoliko koliko ima soba kroz koje prolazi lista.

Kako je paramatar sobe „Number“ (broj sobe), tekstualni parametar moram pretvoriti moju sekvencu brojeva u tekstualni podatak „string“.

Kada je parametar pripremljen unosim svaki od brojeva u odgovarajući element prethodno formirane liste soba.

Naravno broj skripta uz manje prepravke može menjati i neki drugi parametar sobe a takođe parametar ne mora biti broj, možete generisati sami neku drugu vrstu obeležavanja.

6Posle pokretanja skripte konačan rezultat su reimenovane sobe od 201 do 212 kako možete videti na slici. Primetite sa sobe kroz koje nije prošla putanja nisu reimenovane ako i da smo recimo kroz sobu 210 prošli dva puta ali je imenovana kada je prvi put presekla putanja.

Kompletnu skriptu možete skinuti odavde:  DOWNLOAD

Категорије: BIMDynamo