Speckle로 BIM 모델 연동하기 – 파일 없이 Revit·Rhino 데이터를 주고받는 오픈소스 데이터 허브와 specklepy 실전

Speckle로 BIM 모델 연동하기 – 파일 없이 Revit·Rhino 데이터를 주고받는 오픈소스 데이터 허브와 specklepy 실전

BIM 협업의 오랜 골칫거리는 '파일'이다. Revit로 만든 모델을 구조 엔지니어에게 넘기려면 IFC로 내보내고, 다시 Rhino나 Grasshopper로 검토하려면 또 다른 포맷으로 변환한다. 그 과정에서 정보가 깨지고, 버전이 엉키고, 누가 최신 파일을 갖고 있는지 아무도 모른다. Speckle은 이 문제를 근본적으로 다르게 접근한다. 파일을 주고받는 대신, 모델을 잘게 쪼갠 객체(object) 단위로 데이터베이스에 올리고, Git처럼 버전을 관리하며, 어떤 툴에서든 그 데이터를 읽고 쓴다. 오픈소스이고, 자체 서버를 직접 구축할 수도 있다. 이 글에서는 Speckle의 데이터 모델을 이해하고, Python SDK인 specklepy로 실제 모델을 올리고 받아 물량을 집계하는 코드까지 살펴본다. ■ Speckle의 핵심 개념 - 파일이 아니라…
Dynamo로 반복 작업 자동화하기 – 노드 기반 비주얼 스크립트 기초

Dynamo로 반복 작업 자동화하기 – 노드 기반 비주얼 스크립트 기초

Dynamo는 Revit에 기본 내장된 노드 기반 비주얼 프로그래밍 도구다. 코드를 한 줄씩 타이핑하는 대신, 기능이 담긴 사각형 노드(node)를 캔버스에 올리고 선(wire)으로 연결해 데이터가 흐르는 경로를 만든다. 왼쪽에서 입력을 받은 노드가 결과를 내보내고, 그 결과가 다음 노드의 입력으로 이어지는 방식이라, 프로그래밍 언어를 몰라도 데이터가 어떻게 변형되는지 눈으로 따라갈 수 있다. 수백 개의 방에 규칙에 맞춰 이름을 한 번에 붙이거나, 외부 엑셀 값을 읽어 매개변수에 채워 넣는 반복 작업을 노드 몇 개로 처리할 수 있어, 설계자가 직접 자동화를 시작해 볼 수 있는 진입점이 된다. 이 글은 Dynamo의 세 가지 뼈대 개념인 노드·와이어·데이터…
Revit API로 공유 매개변수 일괄 생성하고 카테고리에 바인딩하기

Revit API로 공유 매개변수 일괄 생성하고 카테고리에 바인딩하기

Revit에서 물량·일람표·필터를 제대로 다루려면 결국 공유 매개변수(Shared Parameter)를 손에 익혀야 한다. 프로젝트 하나에 쓰이는 사용자 매개변수가 수십 개를 넘어가면, 이걸 손으로 하나씩 만들고 카테고리마다 바인딩하는 작업은 지루할 뿐 아니라 실수가 쌓이는 지점이 된다. 이름을 한 글자 다르게 치거나, 벽에는 넣고 기둥에는 빠뜨리거나, 인스턴스로 넣어야 할 것을 타입으로 넣는 식이다. Revit API로 이 과정을 코드로 옮기면 회사 표준 매개변수 세트를 프로젝트마다 동일하게, 단추 한 번으로 심을 수 있다. 이 글은 공유 매개변수의 구조부터 실제 C# 바인딩 코드까지 순서대로 정리한다. ■ 공유 매개변수가 패밀리·프로젝트 매개변수와 다른 점 Revit의 사용자 매개변수는 크게 세…
IfcOpenShell로 IFC에서 물량 뽑아내기 – 수량 정보 추출과 CSV 내보내기

IfcOpenShell로 IFC에서 물량 뽑아내기 – 수량 정보 추출과 CSV 내보내기

IFC 파일은 형상만 담는 그릇이 아니다. 벽 한 장의 면적, 슬래브의 부피, 문의 개수 같은 수량 정보가 요소마다 함께 들어 있다. 이 값을 읽어내면 Revit이나 ArchiCAD 같은 상용 저작도구를 띄우지 않고도, 파일 하나만으로 물량표를 만들고 납품된 모델을 교차 검증할 수 있다. 이 과정을 자동화하는 표준 도구가 파이썬 라이브러리 IfcOpenShell이다. 여기서는 설치부터 요소 순회, 수량 추출, Pandas 집계, CSV 저장까지 실제 코드로 이어서 다룬다. 기준은 2025년 기준 안정 버전인 IfcOpenShell 0.8 계열이다. ■ 설치와 첫 실행 0.7 시절에는 conda나 수동 바이너리 배치가 필요했지만, 0.8부터는 pip 휠(wheel)이 배포되어 설치가 간단해졌다. 파이썬 3.9…
IfcOpenShell로 IFC 파일 파싱하기 — Python으로 요소 조회와 속성 추출

IfcOpenShell로 IFC 파일 파싱하기 — Python으로 요소 조회와 속성 추출

IfcOpenShell은 IFC 파일을 코드로 직접 다루는 오픈소스 파이썬 라이브러리다. Revit이나 ArchiCAD를 띄우지 않고도 요소 조회와 속성 추출이 되므로, 납품 전 물량 검토나 데이터 품질 점검 스크립트를 짜기에 알맞다. 이 글에서는 IFC 스키마가 어떻게 생겼는지 개념을 먼저 잡고, 파일을 열어 요소를 조회하고 속성을 추출한 뒤, 건물의 공간 구조(대지-건물-층-공간)를 순회하는 데까지 실제 코드로 이어간다. ■ IFC 스키마의 뼈대 — IfcProduct와 PropertySet IFC의 거의 모든 물리적 요소는 IfcProduct를 상속한다. 벽(IfcWall), 슬래브(IfcSlab), 문(IfcDoor), 기둥(IfcColumn)이 모두 여기 속한다. 각 요소는 세 가지 축으로 정보를 갖는다. 구분담는 것접근 관계 속성(PropertySet)재질, 방화등급, 외벽 여부 등 비형상 정보IsDefinedBy…
Revit API FilteredElementCollector로 요소 일괄 조회하고 트랜잭션으로 고치기

Revit API FilteredElementCollector로 요소 일괄 조회하고 트랜잭션으로 고치기

Revit API로 무언가를 하려면 거의 항상 첫 단계가 같다. 모델에서 원하는 요소를 골라내는 것이다. 벽만, 특정 레벨의 문만, 배치된 인스턴스만. 이 조회를 담당하는 클래스가 FilteredElementCollector다. 그리고 골라낸 요소의 값을 바꾸려면 반드시 Transaction 안에서 해야 한다. 이 두 가지, "필터로 모으고 트랜잭션으로 고친다"는 패턴은 Revit 플러그인 코드의 8할을 차지한다. 이 글은 컬렉터의 필터 종류와 성능 차이, 그리고 트랜잭션의 시작·커밋·롤백을 실제 C# 코드와 함께 정리한다. ■ FilteredElementCollector의 기본형 컬렉터는 생성자에 Document를 넘기고 필터 메서드를 체인으로 이어 붙이는 방식으로 쓴다. 마지막에 ToElements()나 ToElementIds()로 결과를 뽑는다. // 배치된 벽 인스턴스만 모으기 var walls =…
Dynamo로 Revit 반복작업 자동화하기: 시트 생성과 파라미터 일괄 입력 활용

Dynamo로 Revit 반복작업 자동화하기: 시트 생성과 파라미터 일괄 입력 활용

Revit 프로젝트 후반부에는 도면 시트를 대량으로 만들고, 요소마다 파라미터를 채워 넣는 단순 반복 작업이 몰린다. 시트 200장을 손으로 만들고 제목블록에 번호·이름을 하나씩 입력하는 데 며칠이 걸리기도 한다. Dynamo는 이 과정을 그래프 하나로 자동화한다. 엑셀에 정리된 시트 목록을 읽어 시트를 한꺼번에 생성하고, 지정한 위치에 뷰를 배치하며, 요소 파라미터를 스프레드시트 값으로 일괄 입력할 수 있다. 이 글은 시트 자동 생성 그래프와 파라미터 일괄 입력의 실제 노드 흐름, 그리고 트랜잭션·되돌리기 같은 실무 주의점을 단계별로 정리한다. ■ 준비: 데이터를 엑셀로 먼저 정리한다 자동화의 출발점은 좋은 데이터다. 시트 번호·시트 이름·배치할 뷰 이름을 열로 정리한 엑셀…
pyRevit로 시작하는 Revit 자동화 스크립팅 입문

pyRevit로 시작하는 Revit 자동화 스크립팅 입문

Revit 자동화를 배우고 싶은데 C#과 비주얼 스튜디오, 그리고 플러그인 빌드·배포까지 넘어야 한다면 진입 문턱이 꽤 높다. pyRevit은 그 문턱을 크게 낮춘다. 파이썬 스크립트를 리본 버튼으로 등록해 클릭 한 번으로 실행하는 오픈소스 확장 도구로, 컴파일도 배포용 설치 파일도 필요 없다. 스크립트 파일을 정해진 폴더 구조에 넣기만 하면 Revit 리본에 버튼이 생긴다. 이 글은 pyRevit의 설치와 확장·번들 구조, 첫 스크립트 작성, 그리고 RevitPythonShell과의 차이와 배포 방법까지 입문에 필요한 뼈대를 정리한다. ■ pyRevit이 잘하는 일 pyRevit은 "입력이 같으면 결과도 같은" 반복 업무에 특히 강하다. 실무에서 흔히 이렇게 쓴다. 뷰·시트 이름을 사무소 표준에 맞게…
Dynamo 비주얼 프로그래밍으로 배우는 BIM 워크플로 자동화

Dynamo 비주얼 프로그래밍으로 배우는 BIM 워크플로 자동화

Dynamo는 Revit에 내장된 노드 기반 비주얼 프로그래밍 환경으로, 코드를 몰라도 반복 작업 자동화·대량 데이터 조작·파라메트릭 형상 생성을 할 수 있다. 노드(작업 단위)와 와이어(데이터 연결)로 네트워크를 구성하고, 필요하면 파이썬 노드로 Revit API 레벨까지 확장한다. 중요한 것은 "무엇을 자동화할 수 있는가"를 먼저 파악하는 일이다. 도구를 배우기 전에 자동화가 잘 맞는 작업 유형을 알면, 어디에 Dynamo를 붙일지 판단이 빨라진다. 이 글은 자동화 가능한 워크플로 유형을 표로 정리하고, 완성한 그래프를 팀에 배포하는 Dynamo Player, 생산성을 끌어올리는 핵심 패키지, 그리고 실전 학습 로드맵을 다룬다. ■ 자동화하기 좋은 워크플로 유형 Dynamo가 특히 효과를 내는 작업은 "규칙이…
IFC.js와 오픈소스 스택으로 구축하는 웹 기반 BIM 뷰어

IFC.js와 오픈소스 스택으로 구축하는 웹 기반 BIM 뷰어

웹 브라우저 안에서 IFC 파일을 열고, 3D로 돌려보고, 요소를 눌러 속성을 확인한다. 서버에 무거운 저작도구를 두지 않고도 이런 웹 기반 BIM 뷰어를 만들 수 있게 해 준 것이 IFC.js였다. 다만 지금은 이름과 구조가 바뀌었다. IFC.js 프로젝트는 That Open Engine(That Open Company)으로 발전하며 저수준 파서 web-ifc와 고수준 툴킷 @thatopen/components로 재편됐다. 이 글은 그 오픈소스 웹 BIM 스택의 구성을 정리하고, 브라우저에서 IFC를 로드·렌더링하고 요소를 선택해 속성을 표시하는 데까지 실제 자바스크립트 코드로 이어간다. ■ 웹 BIM 스택의 구성 웹에서 IFC를 다루는 오픈소스 스택은 크게 세 층으로 나뉜다. 각 층이 무엇을 맡는지 알아야 어느…