Věc, se kterou se setkal asi každý uživatel Revitu – číslování komponent. Máte již hotový model, ale pro vytvoření výkazu a správného označení na výkrese potřebujete hromadně očíslovat veškeré komponenty podle určitého pravidla. U větších staveb může algoritmizace číslování ušetřit nemálo času. V tomto článku si ukážeme, jak takový skript jednoduše vytvořit pro číslování dveří v programovacím doplňku Dynamo verze 1.3.0 dle Y souřadnic komponent projektu v Revitu.

Funkce Dynamo skriptu

Následující Dynamo skript bude mít funkce:

  • Vybere všechny dveře v projektu
  • Rozdělí a seřadí dveře podle podlaží do skupin
  • V každé skupině seřadí dveře podle Y souřadnice projektu
  • Zapíše do parametru “Označení” všech dveří číselnou hodnotu v závislosti na poloze Y a podlaží
  • Před první (suterénní) podlaží vloží prefix S

Tvorba Dynamo skriptu

Samotný skript využívá základní uzly, které lze v Dynamu nalézt. Pro zadávání číselných hodnot a názvů parametrů využijeme tzv. Kódové bloky (Code Block). Samotný skript je k dispozici ke stažení na konci tohoto článku. Pro pochopení, jak skript funguje a jak takovéto skripty tvořit, nyní popíši postup jeho tvorby.

Categories

Začneme s vložením uzlu pro výběr elementů podle kategorie. V našem případě volíme kategorii “Dveře”. Pokud budete potřebovat vybrat jinou kategorii, stačí hodnotu v uzlu zaměnit za jinou kategorii v rolovacím seznamu.

All Elements of Category

K uzlu Categories připojíme uzel, který nám umožňuje vybrat všechny elementy zvolené kategorie.

All Elements of Category

All Elements of Category

List.GroupByKey

Nyní musíme rozdělit a seřadit vybrané elementy podle jednotlivých pater. Po vybrání všech dveří v projektu využijeme uzel “List.GroupByKey” pro vytvoření skupin dle zadané klíčové hodnoty. Vstupem do uzlu je seznam vybraných elementů a hodnota podle které se seznam rozdělí do skupin.

Element.GetParameterValueByName

Pro definování hodnoty podle, které se seznam rozdělí do skupin vytvoříme nový uzel vstupních hodnot “Element.GetParameterValueByName”. Ten vybere hodnoty vybraného parametru ze všech vstupních elementů. To uděláme vstupem vybraných elementů a novým uzlem, který zadá název parametru ze kterého má brát hodnoty. Vytvoříme uzel se stringovou hodnotou (textový řetězec) “Podlaží”, což odpovídá názvu parametru, který máme v Revitu. V anglické verzi by to byla hodnota “Level”.

List.SortByKey

Po rozdělení seznamu do skupin budeme řadit tyto skupiny podle výškové hodnoty od nejnižší výšky podlaží po nejvyšší. To nám zajistí řazení podle skutečné výšky bez ohledu na název podlaží. K řazení použijeme uzel “List.SortByKey”. Vstupem do uzlu je seznam elementů a hodnoty podle kterých bude uzel řadit.

Level.Elevation

Pro stanovení řadící hodnoty použijeme uzel Level.Elevation. Vstupem bude seznam unikátních podlaží elementů z předchozího uzlu. Uzel seřadí podlaží podle hodnoty výškové úrovně.

Level.Elevation

Level.Elevation

Poté budeme mít vzestupně seřazený seznam podle výšky úrovní rozdělený do skupin.

Code Block “Číslo podlaží”

Jelikož máme nyní tolik skupin, kolik máme podlaží se dveřmi, vytvoříme kódový blok pro výběr jednotlivých skupin podle jejich čísla. Jelikož Dynamo pracuje s kódovými bloky psanými v programovacím jazyce Python, číslování skupin začíná od 0, nikoliv od 1. Hodnoty zapíšeme do řádků a oddělíme středníkem.

Code Block “Číslo podlaží”

Číslo podlaží

Poté budeme s tvorbou uzlů pokračovat pro každé podlaží zvlášť. Vytvoříme uzly pro výpočet jednoho podlaží. Tyto uzly ke konci budeme hromadně kopírovat pro ostatní podlaží.

List.GetItemAtIndex

Elementy seřazené a rozdělené do skupin budeme potřebovat oddělit podle jednotlivých podlaží. K tomu použijem uzel “List.GetItemAtIndex”. Vstupem do uzlu jsou skupiny elementů a číselná hodnota, kterou skupinu elementů má uzel vybrat. Pro vybrání elementů nejnižšího podlaží vložíme jako indexový vstup číslo “0”, pro druhé nejnižší podlaží číslo “1” a tak dále.

List.Join

Pokud používáme pomocná podlaží či mezipodlaží u kterých budeme chtít zachovat stejné číslování, použijeme uzel “List.Join”, kterým spojíme skupiny dohromady.

List.SortByKey

Nyní budeme řadit elementy podle Y souřadnice. Použijeme opět uzel “List.SortByKey”. V tomto místě můžeme změnit řazení podle jakéhokoliv pravidla, které zrovna budeme potřebovat. Například podle šířky dveří, výšky, plochy atd.

FamilyInstance.Location

Vstupní hodnotou řazení bude Y souřadnice, která vychází ze souřadnic umístění komponenty dveří. Ty zjistíme pomocí uzlu FamilyInstance.Location.

Point.Y

Protože předchozí uzel získal souřadnice elementů XYZ, potřebujeme vybrat pouze Y souřadnici. K tomu slouží uzel Point.Y.

Element.SetParameterByName

Nyní máme vybrané elementy skupiny jednoho podlaží, seřazené podle souřadnice Y. Pro očíslování použijeme uzel “Element.SetParameterByName”. Tento uzel zapíše zvolenou hodnotu do zvoleného parametru zvoleným elementům.

String

Elementy máme. Volbu parametru provedeme pomocí uzlu “String” do kterého vložíme jako hodnotu název parametru “Označení” (anglicky “Mark”).

Range

Pro utvoření hodnot, které chceme zapisovat vytvoříme pomocí uzlu “Range” rozmezí číselných hodnot (v případě nejnižšího podlaží od hodnoty 001 do hodnoty 099 s krokem 1).

List.Create + String from Object

Z tohoto rozmezí uděláme seznam, který převedeme na strigové hodnoty.

String.Insert

Jelikož se jedná o nejnižší podlaží a v našem případě je nejnižší podlaží suterén, vložíme ke každému tomuto číslu prefix “S”, který bude označovat, že se jedná o dveře v suterénu.

Propojení uzlu Element.SetParameterByName

V poslední řadě už jen spojíme vše do uzlu, který zapíše hodnoty do parametru “Označení”(anglicky “Mark”) všem seřazeným elementům, které prošly filtrem.

Element.SetParameterByName

Element.SetParameterByName

Nyní máme funkční skript pro číslování všech dveří v nejnižším podlaží hotový. Pro číslování dveří na dalších podlaží stačí poslední řadu uzlů jen zkopírovat, přiřadit další číslo z číselné řady podlaží a definovat nové rozmezí čísel spolu s prefixem. Skript po spuštění očísluje všechny elementy kategorie dveří podle jejich podlaží a Y souřadnice projektu.

Automatické číslování dveří v Dynamu

Závěr

Na tomto praktickém příkladu jsme si ukázali praktické využití vizuálního programovacího doplňku pro Revit – Dynamo. Skript lze při pochopení principů Dynama snadno modifikovat. Je možné na příklad jednoduše změnit kategorii elementů nebo pravidlo, podle kterého jsou elementy číslovány. Jelikož lze skript spustit v jakýchkoli projektech, kde se počet elementů může pohybovat řádově ve stovkách až tisícovkách, jedná se o efektivní způsob úspory času při číslování.

print

O autorovi

Roman Macháček

Své zkušenosti s informačním modelováním a programem Revit jsem začínal získávat již při svém studiu oboru Požární bezpečnost na ČVUT v Praze. Zde jsem psal na toto téma bakalářskou a později i diplomovou práci. Praktické zkušenosti jsem při svém studiu získal podílením se na tvorbě informačního modelu bytového domu ve společnosti ADNS architekti. Následně ve společnosti cadconsulting, spol. s r.o., kde jsem se podílel na modelech dalších projektů, jako jsou například modely nových stanic metra D pro METROPROJEKT Praha a.s. Své zahraniční zkušenosti jsem získal na stáži v Norsku, kde jsem pracoval pro společnost zabývající se stavbami vodních elektráren. Zde jsem pracoval na bezpapírové dokumentaci pomocí A360 a na zavádění BIM. Další zkušeností byla stáž v Japonsku na Kyushu University, kde jsem se zabýval problematikou propojení BIM a GIS pro požární zásah.

Odpovědět