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 애드인, 뭐가 다른가

항목pyRevitC# 애드인
학습 곡선Python만 알면 됨C# + .NET + Revit API 구조 이해 필요
실행 속도빠름가장 빠름 (네이티브 컴파일)
UI 복잡도버튼 위주, 제한적완전한 커스텀 다이얼로그·폼 가능
배포스크립트 폴더 복사설치 프로그램(.msi) 제작 가능
디버깅비교적 쉬움Visual Studio 디버거로 완전한 단계별 추적
처음부터 C#으로 시작하지 마라
pyRevit로 스크립트를 먼저 만들어보고, "이걸 회사 전체에 배포해야겠다"는 확신이 생겼을 때 C# 애드인으로 포팅하는 순서를 추천한다. 처음부터 애드인으로 시작하면 .NET 환경 설정, 트랜잭션 구조, 디버깅 방법까지 한꺼번에 배워야 해서 진입 장벽이 불필요하게 높아진다.

마무리

Revit 애드인 개발은 C#과 .NET 학습이 선행돼야 하지만, 한 번 만든 도구는 조직 전체가 리본 메뉴의 버튼 하나로 사용할 수 있다는 확실한 보상이 있다. pyRevit으로 시작해서 필요할 때 C# 애드인으로 전환하는 것이 대부분의 실무자가 걷는 자연스러운 학습 경로다.