W codziennej praktyce projektowej często spotykamy się z sytuacją, w której proces BIM zderza się z rzeczywistością dokumentacji archiwalnej lub branżowej opartej na formacie DWG. Otrzymujemy podkład technologiczny, inwentaryzację lub koncepcję architektoniczną zawierającą setki, a nierzadko tysiące bloków.
Każdy z nich reprezentuje konkretny element wyposażenia i niejednokrotnie posiada przypisane atrybuty CAD, które są kluczowe dla dalszego procesu projektowego. Jako inżynierowie stajemy wtedy przed dylematem: traktować ten plik jako martwy podkład graficzny, czy podjąć próbę manualnej, obarczonej ryzykiem błędu konwersji – wstawiając blok po bloku, rodzinę po rodzinie, przepisując i uzupełniając parametry. Oba rozwiązania są nieefektywne z punktu widzenia zarządzania informacją i czasem pracy zespołu.
Tutaj ujawnia się technologiczny paradoks środowiska Autodesk. Choć Revit jest potężnym narzędziem bazodanowym, jego natywne mechanizmy interpretacji geometrii z plików DWG/DXF są ograniczone i często prowadzą do „zaśmiecenia” projektu zbędnymi stylami linii czy niestabilną geometrią. Próby automatyzacji procesu importu poprzez czyste Dynamo, mimo że możliwe, często napotykają na bariery wydajnościowe przy odczycie surowej geometrii CAD lub wymagają stosowania niestandardowych paczek, co komplikuje utrzymanie skryptów w biurze.
W tym obszarze Rhino.Inside.Revit (RIR) udowadnia swoją wartość jako międzyplatformowy „szwajcarski scyzoryk”. Rhino, będąc środowiskiem naturalnie przystosowanym do obsługi dowolnej geometrii NURBS, Mesh i CAD, potrafi bezbłędnie i błyskawicznie interpretować strukturę plików DWG. Wykorzystując RIR, nie importujemy plików do Revita, lecz używamy silnika Rhino do precyzyjnej ekstrakcji danych (geometrii i atrybutów), a następnie API Revita do generowania natywnych rodzin.
Prezentowany w dołączonym materiale wideo case study ilustruje proces migracji ponad 1200 bloków CAD, rozlokowanych w kilkunastu definicjach, w czasie niespełna minuty. Algorytm zrealizowany w Grasshopperze realizuje jednocześnie zadania geometryczne i informacyjne. Kluczowym elementem jest tutaj moduł napisany w Pythonie – „Smart Collector” – który analizuje definicje bloków, normalizuje ich punkty wstawienia (rozwiązując częsty problem przesuniętych geometrycznych środków ciężkości względem punktów wstawienia w CAD) i ekstrahuje ich geometrię oraz atrybuty.
Skrypt generuje lekkie obiekty typu Bounding Box dla widoku 3D oraz symboliczne linie dla rzutów 2D. Tworzymy w ten sposób rodziny typu „placeholder” – lekkie, parametryczne obiekty, które nie obciążają modelu, a jednocześnie niosą pełny ładunek informacyjny. Dzięki temu unikamy degradacji wydajności modelu, co jest typowym skutkiem importowania geometrii CAD bezpośrednio do rodzin.
Równolegle odbywa się transfer danych niegeometrycznych. Atrybuty bloków są mapowane i wpisywane do parametrów instancji w Revicie. Eliminuje to ryzyko błędu ludzkiego, który jest nieunikniony przy ręcznym przepisywaniu wartości. Co istotne, tak przygotowane rodziny placeholderowe posiadają poprawne nazewnictwo i kategoryzację, co pozwala w późniejszym etapie projektu na ich błyskawiczną, systemową zamianę na docelowe, szczegółowe rodziny producenckie, bez utraty wprowadzonych danych czy pozycji.
Zastosowanie Rhino.Inside.Revit w tym scenariuszu to nie tylko kwestia szybkości skryptu. To przede wszystkim zmiana filozofii pracy z danymi zewnętrznymi. Zamiast importować niepoddające się zarządzaniu płaskie rysunki, budujemy most, który pozwala zachować higienę modelu Revit używając natywnych obiektów, jednocześnie w pełni wykorzystując zasoby dostarczone w formacie DWG.
