DynamoBIM자동화입문

이 작업을 100번 반복해야 한다고? Dynamo 비주얼 스크립팅 입문

MADE IN WORKS·2026. 7. 11.·6분 읽기

개요

Revit에서 "이 작업을 100번 반복해야 한다고?"라는 생각이 들 때가 있다. 창호 500개를 일일이 이름을 바꾼다거나, 50개 층의 레벨을 수동으로 만든다거나. 이럴 때 필요한 것이 Dynamo다. Dynamo는 Revit용 비주얼 프로그래밍 도구로, 노드를 연결하는 방식으로 코드를 짜지 않고도 반복 작업을 자동화할 수 있다.

Dynamo가 필요한 순간
  • "같은 작업을 10번 이상 반복하고 있다" → Dynamo로 한 번에 처리
  • "엑셀 데이터를 Revit에 입력해야 한다" → Dynamo로 자동 매핑
  • "이런 게 가능할까?" 싶은 복잡한 작업 → Dynamo의 힘을 빌릴 때

Dynamo의 기본 개념

Dynamo는 **노드(Node)**를 연결해서 프로그램을 만든다. 각 노드는 입력을 받아서 정해진 기능을 수행하고 결과를 출력한다.

[입력 노드] → [처리 노드] → [출력 노드]

핵심 용어:

  • 노드(Node): 기능의 단위 (예: "모든 벽 선택", "높이 변경", "이름 출력")
  • 와이어(Wire): 노드 간 데이터 연결
  • 패키지(Package): 추가 기능 — 커뮤니티에서 만든 확장 노드 모음
  • 스크립트(.dyn): Dynamo 파일. 노드와 와이어로 구성된 프로그램

첫 번째 스크립트 — "선택한 모든 벽의 높이를 4m로 변경"

Dynamo를 처음 접하는 사람을 위한 가장 기본적인 예제다.

  1. 노드 추가: Categories → 벽 카테고리 선택
  2. 노드 추가: All Elements of Category → 모든 벽 요소 가져오기
  3. 노드 추가: Element.SetParameterByName → 파라미터 변경 노드
  4. 파라미터 입력: 파라미터명 = "높이", 값 = 4000 (mm)
  5. 실행: 실행 버튼 클릭
Categories.벽 → All Elements of Category → Element.SetParameterByName (파라미터명: "높이", 값: 4000)

이렇게만 하면 프로젝트의 모든 벽 높이가 한 번에 변경된다. 수동으로 100개 벽을 선택해서 속성창에서 바꾸는 것과 비교하면 엄청난 시간 절약이다.

Dynamo 실행 전에 꼭 확인할 것
Dynamo 스크립트는 Undo(Ctrl+Z)가 안 되는 경우가 있다. 특히 모델을 변경하는 스크립트는 실행 전에 반드시 프로젝트를 백업하거나 ".rvt" 파일을 별도로 저장해두고 실행하라. "한 번 실행하면 돌이킬 수 없다"는 마음가짐으로 접근해야 한다.

실전 예제 3선

예제 1: 층별 레벨 자동 생성

50층짜리 건물의 레벨을 수동으로 하나씩 만드는 것은 비효율적이다. Dynamo로 20초면 해결된다.

Sequence (시작: 0, 증가: 4000mm, 개수: 50)
  → Level.ByElevationAndName
  → (각 레벨이 자동 생성됨)

예제 2: 엑셀 데이터로 창호 이름 변경

엑셀에 있는 창호 번호표를 Revit에 자동으로 적용한다.

  1. Data.ImportExcel → 엑셀 파일 읽기
  2. 모든 창호 선택
  3. 엑셀 데이터와 창호를 매핑 (예: "기존_이름" 기준으로 매칭)
  4. Element.SetParameterByName으로 창호 번호 변경
이 작업을 수동으로 하면?
창호 200개를 하나하나 선택해서 속성창에서 번호를 바꾸는 작업. 숙련자도 1시간은 걸린다. Dynamo로 하면 5초.

예제 3: 간섭 체크 결과를 엑셀로 내보내기

Revit과 Navisworks를 쓰지 않고도 Dynamo로 간단한 간섭 체크를 할 수 있다.

  1. 건축 벽과 구조 기둥을 각각 선택
  2. 각 객체의 BoundingBox 계산
  3. BoundingBox가 겹치는 객체를 필터링
  4. 결과를 Excel로 출력
건축_벽.모든요소 → BoundingBox → 겹침_체크 → 간섭_목록 → Excel 출력

Dynamo vs Python vs Revit API

Dynamo가 모든 자동화 작업에 적합한 것은 아니다. 각 도구의 특성을 이해하고 적절히 선택해야 한다.

도구난이도속도유연성추천 상황
Dynamo낮음보통보통10~50개 노드 수준의 간단한 자동화
Dynamo + Python 노드중간빠름높음복잡한 로직 + Dynamo UI 활용
pyRevit중간빠름매우 높음Revit 전용 자동화, 버튼 형태 배포
Revit API (C#)높음매우 빠름완전고성능 애드인, 대규모 배포
Dynamo의 한계를 인식하라
Dynamo는 배우기 쉽지만, 스크립트가 복잡해질수록 노드가 너무 많아져서 관리가 어려워진다. 노드가 50개를 넘어가면 Python 스크립트나 Revit API로 전환하는 것을 고려하자. 노드가 100개가 넘으면 디버깅 자체가 불가능에 가까워진다.

Dynamo 시작 가이드

  1. Dynamo 설치: Revit 2020 이상은 Revit에 Dynamo가 기본 포함되어 있음 (Manage → Dynamo)
  2. 기본 학습 리소스:
    • Dynamo Primer (무료, 공식 튜토리얼)
    • 유튜브 "Dynamo BIM Tutorials" 채널
    • forum.dynamobim.com (문제 발생 시 검색)
  3. 추천 패키지:
    • Clockwork: 추가 노드 모음, 실무에서 자주 사용
    • LunchBox: 데이터 처리·리스트 관리 노드
    • DataShapes: 사용자 인터페이스 개선 노드

마무리

Dynamo는 Revit 사용자에게 "반복 작업에서의 자유"를 선물한다. 처음에는 간단한 것부터 시작해서, 점점 더 복잡한 자동화로 확장해나가면 된다. 오늘 5분짜리 작업을 자동화하는 스크립트를 짜는 데 30분이 걸리더라도, 그 스크립트가 앞으로 100번 재사용된다면 500분을 버는 셈이다.

다음 글에서는 Dynamo를 넘어 Python으로 Revit API를 직접 다루는 방법을 알아본다.