
RevitBIM자동화개발자
pyRevit로는 한계를 느꼈다면: C# Revit 애드인 개발 첫걸음
MADE IN WORKS·2025. 2. 18.·4분 읽기
pyRevit로 자동화를 하다 보면 언젠가 벽에 부딪힌다. "이 버튼을 회사 전체에 배포하고 싶은데, pyRevit이 설치 안 된 PC에서도 작동해야 한다"거나, "복잡한 다이얼로그 UI가 필요하다"는 요구가 그것이다. 이 지점이 바로 Revit 애드인(Add-in) — C#으로 직접 개발해서 리본 메뉴에 버튼을 심는 방식 — 이 필요해지는 순간이다.
"pyRevit이면 충분한데, 애드인까지 필요한가요?"규모의 문제다. pyRevit은 개인·소규모 팀의 빠른 자동화에 최적화돼 있다. 하지만 조직 전체에 표준 도구로 배포하거나, **복잡한 UI(설정 창, 마법사 형태 다이얼로그)**가 필요하거나, 최고 수준의 실행 속도가 필요하다면 애드인이 정답이다.
개발 환경
애드인 개발 스택
- 언어: C# (.NET Framework 4.8, Revit 버전에 따라 다름)
- IDE: Visual Studio 2022 (Community 버전 무료)
- SDK: Revit API — Revit 설치 시 자동으로 함께 설치됨
- 배포:
.addin매니페스트 파일 + 컴파일된.dll
첫 번째 애드인 — Hello World를 넘어서
가장 기본적인 애드인은 버튼을 누르면 메시지 박스를 띄우는 것이다.
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using System.Windows.Forms;
namespace MyFirstAddin
{
[Autodesk.Revit.Attributes.Transaction(
Autodesk.Revit.Attributes.TransactionMode.Manual)]
public class HelloWorldCommand : IExternalCommand
{
public Result Execute(
ExternalCommandData commandData,
ref string message,
ElementSet elements)
{
MessageBox.Show("Hello, BIM World!");
return Result.Succeeded;
}
}
}
이것만으로는 아무 의미가 없어 보이지만, IExternalCommand를 구현하는 이 구조 자체가 모든 애드인의 뼈대다. MessageBox.Show(...) 자리에 실제 로직(선택한 요소 파라미터 일괄 변경, 시트 자동 생성 등)을 채워 넣으면 pyRevit으로 만들던 스크립트를 그대로 애드인으로 옮길 수 있다.
.addin 매니페스트로 Revit에 등록하기
컴파일한 .dll만으로는 Revit이 애드인을 인식하지 못한다. Revit이 시작할 때 읽어들이는 .addin XML 파일이 필요하다.
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Command">
<Name>MyFirstAddin</Name>
<Assembly>C:\ProgramData\Autodesk\Revit\Addins\2026\MyFirstAddin.dll</Assembly>
<AddInId>여기에-고유한-GUID-입력</AddInId>
<FullClassName>MyFirstAddin.HelloWorldCommand</FullClassName>
<VendorId>MIW</VendorId>
</AddIn>
</RevitAddIns>
.addin 파일 위치가 배포 방식을 결정한다%ProgramData%\Autodesk\Revit\Addins\{버전}\에 넣으면 그 PC의 모든 사용자에게 적용되고, %AppData%\Autodesk\Revit\Addins\{버전}\에 넣으면 현재 사용자에게만 적용된다. 회사 전체 배포라면 전자를, 개인 테스트라면 후자를 쓰는 게 관리하기 편하다.
pyRevit vs 애드인, 뭐가 다른가
| 항목 | pyRevit | C# 애드인 |
|---|---|---|
| 학습 곡선 | Python만 알면 됨 | C# + .NET + Revit API 구조 이해 필요 |
| 실행 속도 | 빠름 | 가장 빠름 (네이티브 컴파일) |
| UI 복잡도 | 버튼 위주, 제한적 | 완전한 커스텀 다이얼로그·폼 가능 |
| 배포 | 스크립트 폴더 복사 | 설치 프로그램(.msi) 제작 가능 |
| 디버깅 | 비교적 쉬움 | Visual Studio 디버거로 완전한 단계별 추적 |
처음부터 C#으로 시작하지 마라pyRevit로 스크립트를 먼저 만들어보고, "이걸 회사 전체에 배포해야겠다"는 확신이 생겼을 때 C# 애드인으로 포팅하는 순서를 추천한다. 처음부터 애드인으로 시작하면 .NET 환경 설정, 트랜잭션 구조, 디버깅 방법까지 한꺼번에 배워야 해서 진입 장벽이 불필요하게 높아진다.
마무리
Revit 애드인 개발은 C#과 .NET 학습이 선행돼야 하지만, 한 번 만든 도구는 조직 전체가 리본 메뉴의 버튼 하나로 사용할 수 있다는 확실한 보상이 있다. pyRevit으로 시작해서 필요할 때 C# 애드인으로 전환하는 것이 대부분의 실무자가 걷는 자연스러운 학습 경로다.