úterý 25. října 2016

DYNAMO a jeho praktické využití: vytvoření topografie z Excelu

V dnešním článku se opět zaměříme na vizuální programovací nástroj Dynamo, ve kterém si vytvoříme algoritmus, který nám pomůže vytvořit topografii pomocí seznamu bodů uložených v tabulce programu MS Excel.

Standardní postup vytvoření topografie v Revitu vyžaduje seznam bodů, buď ve formátu CSV nebo TXT, který jsme obdrželi od geodeta, jenž zájmové území zaměřoval. Jelikož Revit vyžaduje striktní zápis souřadnic, je většinou nutné zápis od geodeta poupravit do načitatelné podoby, která vypadá následovně: 0.000,0.000,0.000. Desetinné čárky musí být tečky a oddělovače seznamu jednotlivých souřadnic jsou čárky - to je jediný správný zápis, se kterým Revit dokáže pracovat. Tuto postprodukci je vhodné provést buď v MS Wordu anebo v MS Excelu a následně upravené souřadnice nakopírovat do Poznámkového bloku. My si ukážeme postup, kde souřadnice ponecháme v souboru tabulky MS Excel, který pomocí Dynama vytvoří topografii v Revitu. Jediné, na co je nutné dát si pozor při kopírování souřadnic do Excelu, je fakt, že jednotlivé koordináty musejí být zapsány v samostatných buňkách. Zápis souřadnice v Excelu by měl mít tuto podobu: Sloupec A odpovídá souřadnicím Y, sloupec B odpovídá souřadnici X a sloupec C odpovídá souřadnici Z, čísla řádků jsou pak čísla jednotlivých bodů.


Pokud jsou již jednotlivé souřadnice nakopírovány do listu Excelu, nezbývá nám nic jiného než spustit Revit a následně nastartovat vizuální programovací nástroj Dynamo.

Program Dynamo, který je již součástí Revitu 2017, naleznete na kartě Správa na panelu Vizuální programování. Pokud používáte nižší verzi Revitu, je nutné si tento doplněk stáhnout ze stránek vývojového týmu, nainstalovat a následně se bude zobrazovat na kartě Doplňky.

V minulých článcích jsme si k jednotlivým uzlům uváděli přesnou cestu, dnes bychom si popsali rychlejší způsob vkládání uzlů do grafu. Při kliknutí pravého tlačítka myši do plochy grafu se zpřístupní vyhledávací konzole, do které lze zadat přesný název hledaného uzlu. První uzel, který budeme hledat, je uzel:

1) File Path: Tento uzel poskytuje instrukce o cestě, kde je hledaný soubor Excelu uložený.
2) File.FromPath: Tento uzel načítá data z Excelu do Dynama.
3) Excel.ReadFromFile: Tento uzel má schopnost číst data z Excelu, po správnou funkčnost je nutné propojit jeho vstupy sheetName a readAsStrings s odpovídajícími uzly, proto do grafu vložíme následující uzly:
4) String: Do tohoto uzlu můžeme zapisovat textovou hodnotu bez nutnosti ji vkládat do uvozovek, v tomto případě lze použít i uzel Code Block, který ale vyžaduje, aby daný text byl v uvozovkách. Do pole napíšeme název listu, ve kterém se nacházejí souřadnice, standardně se jedná o List1.
5) Boolean: Tento uzel umožňuje vybrat možnosti True a False, hodnota vstupu readAsStrings doporučuje, aby tento uzel byl nastaven na hodnotu False.
Následující uzly propojíme dohromady a sloučíme je do skupiny [ctrl+g], kterou si můžeme nazvat např.: IMPORT EXCELOVÉ TABULKY.


Načtený soubor bodů z Excelu je v další fázi nutné posunout směrem ke globální nule. Toho docílíme tak, že ze seznamu listů, který nám zobrazuje uzel Excel.ReadFromFile vyselektujeme první list, v našem případě se jedná o 0 List. Abychom byli schopni vyselektovat 0 list, vložíme si do grafu následující uzel:

6) List.FirstItem: Tento uzel vyselektuje vždy 0 list ze seznamu, v našem případě se jedná o list, který zastřešuje souřadnice prvního zaměřeného bodu, které odečteme od souřadnic všech ostatních bodů v seznamu. Pro tuto operaci je nutné se vytvořit následující uzly:
7) List.GetItemAtIndex: Tento uzel vyselektuje konkrétní položku ze seznamu, v našem případě nám pomůže vyselektovat vždy konkrétní souřadnici z uzlu List.FirstItem.
8) List.GetItemAtIndex: Tento uzel získáme zkopírováním předchozího uzlu, postačí notoricky známé ctrl+c a ctrl+v. Tento uzel nám bude selektovat vždy konkrétní souřadnici ze všech listů. Používáme nejnovější verzi Dynamo 1.2.0, proto již není potřeba připojovat uzel List.Map do grafu, abychom docílili této operace, stačí pouze u vstupu list kliknout na index šipky a označit možnost Pomocí podlaží a vybrat hodnotu @L2



9) List.Cycle: Tento uzel zřetězí nadefinovanou hodnotu, v našem případě se bude jednat o hodnotu té dané souřadnice z prvního bodu, který jsme si v předchozí fázi vyselektovali. Druhý vstup tohoto uzlu je hodnota počtu kopií, proto je nutné do grafu vložit následující uzel:
10) List.Count: Tento uzel spočítá počet položek v daném seznamu, v našem případě budeme počítat počet položek z uzlu List.GetItemAtIndex s hodnotou @L2 a daný výsledek propojíme s uzlem List.Cycle.
11) String.ToNumber: Tento uzel si do grafu zaneseme dvakrát, jak název napovídá, bude konvertovat textovou hodnotu na číselnou. Je pravděpodobné, že při kopírování souřadnic ze zdrojového Wordu od Excelu se číselné hodnoty budou jevit jako text a s textem nemůžeme provádět matematické operace. Tento uzel tuto problematiku vyřeší za nás.
12) - : Dalším uzlem, který si vložíme do grafu, bude uzel mínus, který nám vypočítá rozdíl jeho vstupů x a y.

Následně všechny zanesené uzly, které jsme si výše popsali, spojíme dohromady a seskupíme je do skupiny, kterou si můžeme pojmenovat jako SOUŘADNICE Y. Graf by měl mít tuto podobu:


Skupinu SOUŘADNICE Y si zkopírujeme a dvakrát vložíme do pole grafu, následně kopie přejmenujeme na SOUŘADNICE X a SOUŘADNICE Z.

13) Code Block: Do grafu si ještě zaneseme uzel Code Block, který vyvoláme pro změnu dvojklikem levého tlačítka myši do plochy. Do něj zapíšeme hodnoty dle obrázku:


14) Convert Between Units: Tento uzel si do grafu zaneseme hned třikrát, každý pro jednu skupinu SOUŘADNIC Y, X, Z. Souřadnice jsou od geodeta ve většině případě zaměřeny v metrech a projekty kreslíme v milimetrech, proto nastavím v uzlech, že chceme převádět jednotky z metrů na milimetry. Následně si můžeme tyto tři uzly uložit do skupiny.


15) Point.ByCoordinates: Tento uzel nám vytvoří body v prostor dle souřadnic, které jsme si upravili pro vygenerování topografie.
16) Topography.ByPoints: Poslední uzel, který si přidáme do grafu, je uzel, který nám z bodů, které jsme si definovali, vytvoří povrch terénu v Revitu. Tento terén již není potřeba nějak natáčet anebo výškově posunout ke globální nule. Mějte na paměti, že Revit neumožňuje osadit povrch terénu do správných X a Y souřadnic, tuto vlastnost v současné době Revit nenabízí, proto je nutné následně terén ještě posunout tak, aby odpovídal připojenému výškopisu.

Výsledný graf by měl mít tuto podobu:


Videoukázka postupu:


Žádné komentáře:

Okomentovat