úterý 17. ledna 2017

Vzorce v Revite: Trigonometria a pravouhlé trojuholníky

V nasledujúcom článku sa budeme venovať vzorcom a ich správnej definícií v rodinách Revitu. Určite ste sa už stretli so situáciou, kedy ste poznali strany pravouhlého trojuholníka a potrebovali ste vypočítať uhol, alebo keď poznáte dĺžku prepony a hodnotu uhla a potrebujete zistiť veľkosť odvesny. Tieto situácie nastávajú napr. keď je potrebné poznať presnú hodnotu parametra pre správne umiestnenie referenčnej roviny, ktorá definuje počiatok, hodnotu odsadenia, ťažisko, atď...



Je jasné, že sa bude jednať o látku zo základnej školy - trigonometria - ale popravde, kto si má všetky tie vzorce stále pamätať? :) A v akom tvare zadávame Revitu napr. arkus tangens alebo odmocninu?

V tomto prehľadnom zozname vám prinášame zhrnutie presných zápisov jednotlivých vzorcov:


Poznáme:  A,B
C = sqrt(A^2 + B^2)
α = atan(A/B)
β = atan(B/A)

Poznáme:  A,C
B = sqrt(C^2 - A^2)
α = asin(A/C)
β = acos(A/C)

Poznáme:  B,C
A = sqrt(C^2 - B^2)
α = acos(B/C)
β = asin(B/C)

Poznáme:  C,α
A = C*sin(α)
B = C*cos(α)
β = 90°-α


Poznáme:  C,β
A = C*cos(β)
B = C*sin(β)
α = 90°-β

Poznáme:  A,β
B = A*tan(β)
C = A/cos(β)
α = 90°-β

Poznáme:  B,α
A = B*tan(α)
C = B/cos(α)
β = 90°-α

Poznáme:  A,α
B = A/tan(α)
C = A/sin(α)
β = 90°-α

Poznáme:  B,β
A = B/tan(β)
C = B/sin(β)
α = 90°-β



pondělí 16. ledna 2017

DYNAMO TIP #1: příkaz If

Poslední dobou zaznamenáváme vzestup zájmu o vizuální programování ze strany našich čtenářů - proto jsme se rozhodli vytvořit nový kanál věnovaný Dynamu, který se bude zabývat jednotlivými uzly jako takovými. Pochopení jejich funkce v Dynamu je z mého pohledu alfou a omegou při sestavování algoritmů.

První uzel, který bychom si v dnešním tipu ukázali, je příkaz If (Jestliže). Příkaz If je notorický známý v řadách programátorů, ale i u pokročilejších uživatelů Revitu, kteří daný příkaz využívají při programování složitějších parametrických objektů. Příkaz If má svoji nezastupitelnou roli v různých programovacích jazycích a není tomu jinak ani u Dynama.

Dynamo nabízí tři možné varianty, jak daný příkaz zasadit do grafu algoritmu:

1.) Uzel If













2.) Uzel Formula se zápisem if(x,y,z)













3.) Uzel Code Block se zápisem (x?y:z)













Pro otestování funkčnosti daných uzlů si můžete sestavit následující algoritmus:

V případě, že vstupní hodnota je True (pravda):

 

V případě, že vstupní hodnota je False (nepravda):





















Místo uzlu Boolean může figurovat uzel ==, který může porovnávat dvě vstupní hodnoty.

















V případě vstupních hodnota pravda („PRAVDA!“) a nepravda („#@_0!“), mohou být opět použity libovolné hodnoty.

pondělí 19. prosince 2016

Revit 2017: Nová šablóna pre betónové konštrukcie a vystužovanie

Na portáli helpdesk.cadstudio.cz v sekcií Dokumenty(download) si môžete stiahnuť novú konštrukčnú šablónu pre Revit 2017. Šablóna je zameraná predovšetkým na tvorbu betónových konštrukcií a vystužovanie. Obsahuje plne parametrické knižnice a mnohé užitočné nastavenia prvkov podľa našich zvyklostí. Niektoré z nich si predstavíme v nasledujúcom článku:

Konštrukčná výstuž: v šablóne sú definované základné typy a tvary konštrukčnej výstuže:



Materiály: Knižnica obsahuje konštrukčné materiály (betón, oceľ, drevo, ...) vrátane grafických, fyzikálnych, mechanických a pevnostných parametrov (Moduly pružnosti, Hustota, Poissonova konšt, ...)


Do šablóny sú načítané viaceré formáty poznámok výstuží a popisov výstuže. Niektoré príklady a varianty použitia sú znázornené na tomto obrázku:
Stavebné úpravy: Parametrické knižnice otvorov (hranaté, kruhové, popisy otvorov, ...) sú pripravené tak, aby ich bolo možné jednoducho popisovať a vykazovať. Niektoré príklady sú znázornené tu:


Knižnica prierezov konštrukčných nosníkov a konštrukčných stĺpov obsahuje základné tvary, s nastavenými parametrami pre komunikáciu s programom SCIA Engineer:


Knižnica obsahuje viaceré typy konštrukčných podláh, stien a schodísk:

V prehliadači projektu je pred-pripravených niekoľko základných typov výkazov:



Do šablony sú načítané základné vzory čiar, šrafy a ďalšie užívateľské šrafy pre značenie materiálov v pôdoryse, reze a 3D pohľade.



V šablóne nájdete tiež mnohé ďalšie užitočné prvky a nastavenia, napr. popisy dosiek, výškové kóty, nastavenie pre legendy, šablóny pohľadov, rezové čiary, typy podlaží, a mnohé ďalšie.


Podrobný popis nastavení (vo formáte PDF) k tejto konštrukčnej šablóne CAD Studio je možné stiahnuť na helpdesk.cadstudio.cz  v sekcií Download. Šablóna je taktiež súčasťou BonusDVD CS+

středa 30. listopadu 2016

Názvy prostorů (Space Naming)

Hromadné přejmenování a přečíslování prostorů v projektech Revitu MEP podle místností z připojeného architektonického modelu bylo možné do verze Revit 2017 realizovat pouze pomocí doplňku Space Naming Utility.

Tento bezplatný doplněk je pro verzi Revit 2016 ke stažení na Autodesk Apps - zde.


Pro Revit 2017 je doplněk ke stažení na Autodesk Account, resp. pomocí Autodesk Desktop App.


Od verze Revit 2017.1 je ale nástroj Space Naming již standardní součástí Revitu a je tak možné ho ihned používat bez jakékoli dodatečné instalace.

Funkce Space Naming je velmi jednoduchá a umožňuje určit, zda chcete přenést z podloženého modelu pouze čísla místností, nebo pouze názvy a nebo obojí. A jestli bude přepsání parametrů použito pouze na konkrétní podlaží, nebo všechna podlaží projektu.

Krátká video ukázka:

úterý 29. listopadu 2016

DYNAMO PLAYER: podlahová plocha místnosti; UPDATE 03.01.2017

V dnešním článku se zaměříme opět na vizuální programovací nástroj Dynamo a pokusíme se pomocí tohoto nástroje vyřešit problém spojený s vykazováním podlahové plochy místnosti. Pokročilí uživatelé Revitu pravděpodobně tuší o čem bude řeč - jde o to, že objekt místnosti je systémově naprogramován tak, aby po osazení do půdorysu generoval užitnou plochu daného prostoru, tzn., že nezapočítává výklenky jako niky vzniklé zapuštěním oken a dveří atd. Viz obrázek:


Na obrázku je patrné, že objekt místnosti skutečně generuje plochu podle hrany stěn, které ohraničují prostor místnosti, ale nezapočítává plochy vzniklé zapuštěním dveří do stěny, tedy tam, kde ve skutečnosti bude zrealizována podlahová krytina. Viz červené otazníky na obrázku. A právě zde je důležité si uvědomit, že plocha, se kterou počítám v tabulce místností, je právě užitná plocha a ne podlahová plocha, se kterou pracují rozpočtáři. V počátečních fázích projektu, jako DUR nebo DSP, to takový problém nejspíš nebude, ale v pozdějších fázích projektu, kdy se již generují výkazy a data přecházejí např. na realizační firmy, je nutné tento problém konstruktivně vyřešit.



Revit standardně nabízí řešení této problematiky přes nástroje Plocha, kdy tento nástroj vytvoří duplikát z daného půdorysu a umožní uživateli si pomocí náčrtu objet prostor místnosti podle potřeby a zahrnout i výklenky a niky. Toto řešení je samozřejmě funkční, ale tak nějak napůl. Jde o to, že nástroj Místnost a Plocha sdílí stejný systémový parametr, který nemůže figurovat v jednom výkazu, např. v tabulce místností. Tento pracovní postup se zdá být značně těžkopádný, jelikož nutí uživatele si vytvořit duplikát daného půdorysu a pracovat se dvěma výkazy zvlášť.

Daný problém řeší až vizuální programovací nástroj Dynamo, který pro generování podlahové plochy může využít komponentu Podlaha. Tato komponenta se vytváří přes náčrt stejně jako nástroj plocha, s tím rozdílem, že není nutné vytvářet duplikát daného půdorysu a vygenerovanou plochu podlahy lze jednoduše zaimplementovat do objektu místnosti a následně zahrnout do výkazu.

Než si nastartujeme Dynamo, je nutné si připravit testovací půdorys o libovolném počtu místností, ve kterých budou figurovat výklenky, niky atd. Do vzniklé dispozice si vložíme místnosti v náhodném pořadí a následně si pomocí náčrtu vytvoříme podlahy, které budou zohledňovat i výklenky, niky a zapuštěné dveře či okna.

V další fázi si vytvoříme sdílený parametr, který nazveme Podlahová plocha, a typ parametru musí být Plocha, jelikož do tohoto parametru budeme zapisovat hodnotu v metrech čtverečních. Následně daný parametr musíme zaimplementovat do projektu respektive do kategorie místností přes nástroj Parametry projektu. Daný parametr vytvoříme jako parametr Instance a zařadíme ho do skupiny Rozměry. Po označení libovolné místnosti by se měl parametr zobrazovat ve vlastnostech dané místnosti, Viz obrázek. Tento sdílený parametr také zaimplementujeme do popisky místností.

Další sdílený parametr, který je nutné vytvořit, je parametr Číslo místnosti. Tento parametr vytvoříme jako parametr Text a stejně jako v předchozím případě ho musíme zaimplementovat do projektu přes nástroj Parametry projektu. Parametr musí figurovat v projektu jako parametr Instance a zařadíme ho do skupiny Vazby. Po označení libovolné podlahy by se měl parametr zobrazovat ve vlastnostech dané podlahy, viz obrázek. Tento parametr nám pomůže seřadit podlahy, respektive jejich podlahové plochy k odpovídajícím místnostem.

Nyní už máme vše připravené a můžeme si nastartovat programovací nástroj Dynamo. Pro sestavení algoritmu je nutné si stáhnout nejaktuálnější verzi Dynama 1.2.1 ze stránek vývojového týmu.

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í část algoritmu sestavíme z následujících uzlů:

1.)  Categories: Tento uzel umožňuje vybrat danou kategorii, kterou chceme načíst do prostředí Dynama. V našem případě si vybereme kategorii Místnosti.
2.)  All Elements of Category: Tento uzel načte všechny elementy zvolené kategorie.
3.)  SortByFuncion: Tento uzel umožní seřadit položky v seznamu podle nadefinované funkce.
4.)  Element.GetParameterValueByName: Tento parametr umožní získat hodnotu parametru z daného prvku, v našem případě poslouží jako funkce pro uzel SortByFuncion.
5.)  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 grafu. Do daného uzlu zapíšeme název parametru, podle kterého budeme řadit jednotlivé místnosti a tím je parametr „Číslo“. Pokud používáte uzel Code Block a zapisujete do něj textovou hodnotu, je nutné, aby tato hodnota byla v „uvozovkách“.

Výše zmíněné uzly spolu propojíme a přes zkratku ctrl+g uložíme do jedné skupiny, kterou nazveme Načtení všech místností z projektu a seřazení dle čísla místnosti. 


Následně si vytvoříme další skupinu, kterou si nazveme Načtení všech podlah z projektu a seřazení dle čísla místnosti, tuto skupinu budou tvořit stejné uzly jako v předchozí skupině, jen s tím rozdílem, že v uzlu Categories vybereme kategorii Podlahy a do uzlu Code Block zapíšeme hodnotu „Číslo místnosti“.












V další části si vytvoříme algoritmus, který nám pomůže vyfiltrovat podlahy, které nereprezentují skladby podlah v místnostech jako např. stropní desky, střešní plášť apod. Daný algoritmus obsahuje následující uzly:

6.)  Element.GetParameterValueByName: Tento parametr umožní získat hodnotu parametru z daného prvku, v našem případě budeme získávat hodnotu z parametru Číslo místnosti.
7.)  Code Block: Do daného uzlu zapíšeme název parametru Číslo místnosti a propojíme s uzlem Element.GetParameterValueByName.
8.)  List.UniqueItems: Tento uzel vytvoří nový seznam obsahující jedinečné položky ze seznamu, který generuje uzel Element.GetParameterValueByName. Podlahy, které nemají vyplněný parametr Číslo místnosti jako základové či stropní desky budou jednoduše vyfiltrovány daným uzlem. V novém seznamu se vždy na prvním indexu vytvoří prázdná hodnota, kterou je potřeba odstranit, proto si do grafu zaneseme následující uzel:
9.)  List.RestOfItems: Daný uzel odebere první položky z daného seznamu.
10.)  Count: Do grafu si zaneseme dva uzly Count, kdy jeden propojíme na přímo s uzlem SortByFunction ze skupiny Načtení všech podlah z projektu a seřazení dle čísla místnosti a druhy uzel propojíme s uzlem List.RestOfItems. Tuto operaci provádíme proto, abychom si vytvořili masku filtru, pomocí které vyfiltrujeme elementy podlah, které nereprezentují skladby podlah.
11.)  Operator - : Daný uzel vypočítá rozdíl mezi dvěma hodnotami. Tento uzel propojíme s uzly Count.
12.)  List.Cycle: Tento uzel vytvoří nový seznam zřetězením vstupní hodnoty.
13.)  Code Block: Do daného uzlu zapíšeme hodnotu „“, která reprezentuje prázdný index. Tento uzel propojíme s uzlem List.Cycle.
14.)  Code Block: Do daného uzlu zapíšeme např. hodnotu „!“, v tomto případě lze použít jakýkoliv symbol, u kterého je nepravděpodobné, že se bude vyskytovat v názvu místnosti.
15.)  String.Contains: Do grafu si zaneseme dva uzly String.Contains. Tento uzel určuje, zdali zadaný řetězec obsahuje daný dílčí řetězec. Jeden uzel propojíme s uzly z bodů 6.) a 12.) a druhy uzel propojíme s uzly z bodů 9.) a 14.). Výstupem daných uzlů je hodnota boolean (true, false).
16.)  List.Join: Tento uzel zřetězí všechny dané seznamy do jednoho seznamu, v našem případě chceme zřetězit hodnoty z uzlů String.Contains.
17.)  List.FilterByBoolMask: Tento uzel umožní vyfiltrovat elementy, které definuje maska filtru. V našem případě je maska filtru definována uzlem List.Join a seznam elementu definuje uzel SortByFunction ze skupiny Načtení všech podlah z projektu a seřazení dle čísla místnosti.
Propojené uzly sloučíme do skupiny, kterou si nazveme Vyfiltrování podlah, které nereprezentují skladby podlah. Algoritmus by měl mít tuto podobu:










V dalším kroku si vytvoříme algoritmus, který nám bude filtrovat místnosti podle počtu podlah, které mají nadefinovaný parametr Číslo místnosti. Pro správnou funkčnost algoritmu je nutné, aby počet místností vždy seděl s počtem přiřazených podlah. Pokud uživatel nadefinuje pouze tři podlahy z pěti, je nutné, aby počet místností v seznamu také klesl z pěti na tři.

18.)  Element.GetParameterValueByName: Tento parametr umožní získat hodnotu parametru z daného prvku, v našem případě budeme získávat hodnotu z parametru „Číslo místnosti“. Daný uzel propojíme s uzlem List.FilterByBoolMask ze skupiny Vyfiltrování podlah, které nereprezentují skladby podlah.
19.)  Code Block: Do daného uzlu zapíšeme název parametru „Číslo místnosti“ a propojíme s uzlem Element.GetParameterValueByName.
20.)  Element.GetParameterValueByName: Tento parametr umožní získat hodnotu parametru z daného prvku, v našem případě budeme získávat hodnotu z parametru „Číslo“. Daný uzel propojíme s uzlem SortByFunction ze skupiny Načtení všech místností z projektu a seřazení dle čísla místnosti.
21.)  Code Block: Do daného uzlu zapíšeme název parametru „Číslo“ a propojíme s uzlem z bodu 20.).
22.)  List.ContainsItem: Tento uzel určuje, zdali daný seznam obsahuje danou položku. Do vstupu List propojíme uzel z bodu 18.) a do vstupu Item propojíme uzel z bodu 20.).
23.)  List.FilterByBoolMask: Tento uzel umožní vyfiltrovat elementy, které definuje maska filtru. V našem případě je maska filtru definována uzlem List.ContainsItem a seznam elementu definuje uzel SortByFunction ze skupiny Načtení všech místností z projektu a seřazení dle čísla místnosti.
Propojené uzly sloučíme do skupiny, kterou si nazveme Vyfiltrování místností. Algoritmus by měl mít tuto podobu:





Dalším algoritmem, který potřebujeme zasadit do našeho grafu, je algoritmus, který nám vyselektuje jednotlivé podlahové plochy, které nám generují komponenty podlahy.

22.)  Element.GetParameterValueByName: Tento uzel získá hodnoty z nadefinovaného parametru. V našem případě se bude jednat o parametr Plocha. Do vstupu parameterName je nutné připojit uzel, do kterého můžeme vepsat název parametru.
23.)  Code Block: Do uzlu vepíšeme textovou hodnotu Plocha, která musí být v uvozovkách a daný uzel propojíme se vstupem parameterName uzlu Element.GetParameterValueByName.
24.)  Math.Round: Tento uzel zaokrouhluje hodnoty směrem nahoru. U vstupu digits, lze nastavit, nakolik desetinných míst se bude zaokrouhlovat, proto do grafu vložíme ještě jeden uzel:
25.)  Code Block: Do uzlu vepíšeme hodnotu 2, tato hodnota nám bude definovat počet desetinných míst u zaokrouhlování.

Tento algoritmus si uložíme do skupiny, kterou si nazveme Získání podlahové plochy a její následné zaokrouhlení. Algoritmu má tuto podobu:










Poslední algoritmus, který musíme vytvořit je založený pouze na dvou uzlech, a jsou to tyto dva:

26.)  Element.SetParameterByName: Tento uzel umožní zapsat plochu, kterou jsme získali z komponent podlah do námi vytvořeného sdíleného parametru Podlahová plocha, který jsme zaimplementovali v projektu do kategorie místnosti.
27.)  Code Block: Do uzlu zapíšeme textovou hodnotu, respektive název sdíleného parametru, tedy Podlahová plocha. Hodnota musí být v uvozovkách.

Oba uzly si sloučíme do skupiny a nezveme si ji Zápis hodnot do parametru „Podlahová plocha“. Algoritmu by měl mít tuto podobu:












Propojený algoritmus by měl mít tuto podobu:










Algoritmus funguje automaticky, tzn., lze spouštět napřímo z funkce Dynamo Player. Tato funkce se Vám zpřístupní až po instalaci nejnovějšího updatu na Revit 2017.1















Videoukázka:



DYN soubor ke stažení na www.cadstudio.cz/freeware

pondělí 28. listopadu 2016

Collaboration for Revit - trial verzia na 60 dní

Od tohto mesiaca je k dispozícií služba Collaboration for Revit (C4R) aj ako skúšobná verzia, ktorá umožňuje jednoduchú vzdialenú spoluprácu na projektoch v cloude. Trial verzia je pre užívateľov úplne zdarma po dobu 60 dní, tzn všetky funkcionality C4R sú počas celého trvania skúšobnej doby k dispozícií bez akýchkoľvek dalších obmedzení.


Collaboration for Revit umožňuje spoluprácu viacerých užívateľov naraz na centrálnom modeli Revitu, podobným spôsobom ako sme zvyknutý pri spolupráci na lokálnej sieti. Tento centrálny model pri použití C4R sa ukladá do cloudu a projektanti môžu k nemu pristupovať doslova odkiaľkoľvek.

Táto služba umožňuje teda bez akejkoľvek pokročilej znalosti IT, či nastavovania sietí, zdieľať model napríklad s projektantami z ostatných profesií, ktorý majú kancelárie v inom meste a všetci môžu v reálnom čase sledovať a reagovať na zmeny ostatných spolupracovníkov (chat).


Doteraz bola táto aplikácia dostupná len po zaplatení - formou nájmu - na určitú dobu (napr. štvrť roka, rok, 2 roky,  a pod...), po novom je tak možné aj túto službu najskôr vyskúšať, a plnohodnotne si tak overiť jej rýchlosť, ovládanie, synchronizácie či ďalšie možnosti priamo na Vašich pracovných staniciach. Novinkou je taktiež 60-dňová trial verzia  Autodesk BIM 360 Team, ktorá je odteraz súčasťou trialky C4R (pôvodne bolo možné  BIM 360 Team vyskúšať na dobu 30 dní a požiadať o trialku zvlášť - cez vaše konto v nastavení).


Viac informácií o Collaboration for Revit ("Revit cloud server") nájdete tiež v predchádzajúcich článkoch po kliknutí sem alebo sem.

úterý 22. listopadu 2016

Automatické spojování geometrie v nových Revit Tools

Kdo někdy zpracoval projekt v Revitu, jistě mi dá za pravdu, že jednou z časově náročných a obtěžujících činností, nutných ke správnému vytvoření modelu, je spojování geomerie. Tedy manuální napojení protínajících nebo dotýkajících se elementů, které zajistí správné vykreslení ve 2D pohledech a správné vykázání objemů a ploch materiálů. Při použití standardních nástrojů Revitu je tento proces, zejména na větších a složitějších modelech, poměrně zdlouhavý. Každý spoj je nutné řešit individuálně a ručně a některá skrytá místa lze také snadno přehlédnout, což pak vede k chybám v modelu. Na větších projektech se jedná o stovky nebo tisíce kliknutí myší, při kterých si jistě řada z vás nejednou zanadávala a zamýšlela se nad tím, jestli by Revit nemohl mít chytřejší nástroje, které by spoje řešily do určité míry automaticky.

V jednom  z předchozích článků zde na blogu se můj kolega zabýval vytvořením syntaxe v programovací nadstavbě Dynamo, která vytvoření spojů automatizuje. Ne každý uživatel však má chuť a čas se zabývat programováním. Nyní však může mít od neustálého oklikávání jednotlivých spojů jednou pro vždy klid třeba i ten, kdo s Revitem teprve začíná. Do doplňkové aplikace Revit Tools v nejnovější verzi V2.2.10-2017 totiž přibyla nová funkce, která na základě předdefinované konfigurace provede spojení geometrií automaticky na celém projektu, nebo pouze jeho vybrané části. Ušetří vám tak nemalé množství cenného času. Než zde dlouze popisovat, jak aplikace funguje, podívejte se raději na následující video:


Aplikace CADstudio Revit Tools (RvtTools) - součást bonus nástrojů CS+ - rozšiřuje BIM aplikaci Autodesk Revit o sadu utilit a automatických funkcí zefektivňující práci v Revitu. S licencí Revitu zakoupenou u CAD Studia mají zákazníci bonus nástroje zdarma. Ostatní mohou Revit Tools zakoupit třeba prostřednictvím našeho CAD e-shopu. Revit Tools lze také zdarma vyzkoušet ve formě dvoutýdenní zkušební verze. Pro přímě stažení aktuální verze klikněte zde.