Skip to content

Repository files navigation

RevitRebar

English | Русский


English

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.

The component

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.

Requirements

  • Autodesk Revit 2026 (retargetable — see RevitVersion in RevitRebar.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

Installation

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.

Why two files?

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.

Building from source

# 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.csproj

Deploy:

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:

  1. lib\RhinoInside.Revit\ next to the .csproj (copy the 3 assemblies there for a portable/CI build — see lib\RhinoInside.Revit\README.txt);
  2. 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.

Repository layout

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

History

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 не публикуются — сборка находит их автоматически, срабатывает первое совпадение:

  1. папка lib\RhinoInside.Revit\ рядом с .csproj (скопируйте туда 3 сборки для переносимой/CI-сборки — см. lib\RhinoInside.Revit\README.txt);
  2. реальная установка 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.

About

**RevitRebar** is a Grasshopper plugin for Autodesk Revit (running through [Rhino.Inside.Revit](https://www.rhino3d.com/inside/revit/)) that creates **free-form rebar** in a Revit document directly from Grasshopper curves.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages