RevitRebar is a Grasshopper plugin for Autodesk Revit (running through Rhino.Inside.Revit) that creates free-form rebar in a Revit document directly from Grasshopper curves.
| Component | Add Rebar (Free Form) (nickname Rebar) |
| Location | Grasshopper tab RevitRebar → panel Rebar |
Inputs
| Name | Nick | Description |
|---|---|---|
| Host | H |
Revit host element the rebar belongs to (beam, column, wall, foundation…) |
| Curve | C |
Rebar axis curve (Rhino curve; lines, arcs, polylines, closed loops are supported) |
| Type | T |
(optional) Rebar Type to use; defaults to the document default |
Output
| Name | Nick | Description |
|---|---|---|
| Rebar | R |
The created Revit rebar element |
The component uses Rhino.Inside.Revit element tracking: re-running the definition updates the previously created rebar instead of producing duplicates.
- Autodesk Revit 2026 (retargetable — see
RevitVersioninRevitRebar.csproj) - Rhino 8 with Rhino.Inside.Revit installed (new installs with the
R8\assembly layout are supported) - .NET 8 SDK — only needed to build from source
Two files must go into %AppData%\Grasshopper\Libraries:
| File | Purpose |
|---|---|
RevitRebar.gha |
The plugin itself |
!RevitRebarLoader.gha |
Companion loader — required, see below |
Then start Revit → open a project → Rhino.Inside → Grasshopper. The RevitRebar tab appears on the Grasshopper ribbon.
If you downloaded the files, right-click each one → Properties → Unblock before starting Revit.
Revit 2026 loads add-ins into isolated AssemblyLoadContexts (ALC). When Grasshopper scans plugin assemblies it cannot resolve RhinoInside.Revit.GH from its default context, so the plugin would be silently skipped — no error, no component. !RevitRebarLoader.gha starts first (the leading ! makes it alphabetically first) and registers an AssemblyResolve handler that redirects all RhinoInside.Revit.* requests to the copies already loaded by Rhino.Inside.Revit. Both files are required; the plugin will not load without the loader.
# main plugin -> bin\Debug R26\net8.0-windows\RevitRebar.gha
dotnet build RevitRebar.csproj -c "Debug R26"
# loader -> loader\bin\Debug\net8.0-windows\RevitRebarLoader.dll
dotnet build loader\loader.csprojDeploy:
Copy-Item "bin\Debug R26\net8.0-windows\RevitRebar.gha" "$env:APPDATA\Grasshopper\Libraries\"
Copy-Item "loader\bin\Debug\net8.0-windows\RevitRebarLoader.dll" "$env:APPDATA\Grasshopper\Libraries\!RevitRebarLoader.gha"The Revit API and Grasshopper references come from NuGet (Nice3point.Revit.Api.RevitAPI, Grasshopper), so no Revit/Rhino install is needed just to compile. The RhinoInside.Revit.* assemblies are not on NuGet — the build resolves them automatically, first match wins:
lib\RhinoInside.Revit\next to the.csproj(copy the 3 assemblies there for a portable/CI build — seelib\RhinoInside.Revit\README.txt);- the actual Rhino.Inside.Revit install on the machine (
%ProgramData%/%AppData%\Autodesk\Revit\Addins\<year>\RhinoInside.Revit\,R8\subfolder probed first).
To target another Revit year, change <RevitVersion> in RevitRebar.csproj.
| Path | Contents |
|---|---|
RevitRebar.csproj |
Main plugin project (net8.0-windows) |
RevitRebar\ |
The AddRebar component, plugin info, utilities |
Grasshopper\, RhinoInside\, System\ |
Support/extension code |
loader\ |
The companion loader project (RevitRebarLoader) |
lib\RhinoInside.Revit\ |
Optional drop-in folder for the RiR assemblies |
The code originates from a legacy compiled plugin (Rev2RIRUtils) that was decompiled, repaired (decompilation artifacts, a lost static constructor recovered from IL), ported to the Revit 2026 / Rhino 8 / current Rhino.Inside.Revit stack, and rebranded. Unused decompiled files are excluded from the build in the .csproj.
RevitRebar — плагин Grasshopper для Autodesk Revit (работает через Rhino.Inside.Revit), который создаёт арматуру свободной формы (free-form rebar) в документе Revit напрямую из кривых Grasshopper.
| Компонент | Add Rebar (Free Form) (короткое имя Rebar) |
| Расположение | Вкладка Grasshopper RevitRebar → панель Rebar |
Входы
| Имя | Ник | Описание |
|---|---|---|
| Host | H |
Элемент-основа Revit, к которому привязывается арматура (балка, колонна, стена, фундамент…) |
| Curve | C |
Кривая оси стержня (кривая Rhino; поддерживаются линии, дуги, полилинии, замкнутые контуры) |
| Type | T |
(необязательный) Тип арматуры; по умолчанию берётся тип из документа |
Выход
| Имя | Ник | Описание |
|---|---|---|
| Rebar | R |
Созданный элемент арматуры Revit |
Компонент использует отслеживание элементов Rhino.Inside.Revit: при повторном запуске определения обновляется ранее созданный стержень, а не создаётся дубликат.
- Autodesk Revit 2026 (можно перенацелить — см.
RevitVersionвRevitRebar.csproj) - Rhino 8 с установленным Rhino.Inside.Revit (поддерживаются новые установки с раскладкой сборок в
R8\) - .NET 8 SDK — нужен только для сборки из исходников
В папку %AppData%\Grasshopper\Libraries нужно положить два файла:
| Файл | Назначение |
|---|---|
RevitRebar.gha |
Сам плагин |
!RevitRebarLoader.gha |
Загрузчик — обязателен, см. ниже |
Затем запустите Revit → откройте проект → Rhino.Inside → Grasshopper. На ленте Grasshopper появится вкладка RevitRebar.
Если файлы были скачаны из интернета, перед запуском Revit щёлкните по каждому правой кнопкой → Свойства → Разблокировать.
Revit 2026 загружает надстройки в изолированные AssemblyLoadContext (ALC). Когда Grasshopper сканирует сборки плагинов, он не может разрешить RhinoInside.Revit.GH из своего контекста по умолчанию, и плагин молча пропускается — без ошибки и без компонента. !RevitRebarLoader.gha загружается первым (ведущий ! ставит его первым по алфавиту) и регистрирует обработчик AssemblyResolve, который перенаправляет все запросы RhinoInside.Revit.* на копии, уже загруженные Rhino.Inside.Revit. Нужны оба файла — без загрузчика плагин не загрузится.
# основной плагин -> bin\Debug R26\net8.0-windows\RevitRebar.gha
dotnet build RevitRebar.csproj -c "Debug R26"
# загрузчик -> loader\bin\Debug\net8.0-windows\RevitRebarLoader.dll
dotnet build loader\loader.csprojРазвёртывание:
Copy-Item "bin\Debug R26\net8.0-windows\RevitRebar.gha" "$env:APPDATA\Grasshopper\Libraries\"
Copy-Item "loader\bin\Debug\net8.0-windows\RevitRebarLoader.dll" "$env:APPDATA\Grasshopper\Libraries\!RevitRebarLoader.gha"Ссылки на Revit API и Grasshopper берутся из NuGet (Nice3point.Revit.Api.RevitAPI, Grasshopper), поэтому для компиляции не требуется установленный Revit/Rhino. Сборки RhinoInside.Revit.* в NuGet не публикуются — сборка находит их автоматически, срабатывает первое совпадение:
- папка
lib\RhinoInside.Revit\рядом с.csproj(скопируйте туда 3 сборки для переносимой/CI-сборки — см.lib\RhinoInside.Revit\README.txt); - реальная установка Rhino.Inside.Revit на машине (
%ProgramData%/%AppData%\Autodesk\Revit\Addins\<год>\RhinoInside.Revit\, сначала проверяется подпапкаR8\).
Чтобы собрать под другой год Revit, измените <RevitVersion> в RevitRebar.csproj.
| Путь | Содержимое |
|---|---|
RevitRebar.csproj |
Проект основного плагина (net8.0-windows) |
RevitRebar\ |
Компонент AddRebar, информация о плагине, утилиты |
Grasshopper\, RhinoInside\, System\ |
Вспомогательный код и расширения |
loader\ |
Проект загрузчика (RevitRebarLoader) |
lib\RhinoInside.Revit\ |
Необязательная папка для локальных копий сборок RiR |
Код восходит к старому скомпилированному плагину (Rev2RIRUtils), который был декомпилирован, исправлен (артефакты декомпиляции, потерянный статический конструктор восстановлен из IL), перенесён на стек Revit 2026 / Rhino 8 / актуальный Rhino.Inside.Revit и переименован. Неиспользуемые декомпилированные файлы исключены из сборки в .csproj.