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의 세 가지 뼈대 개념인 노드·와이어·데이터…
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…
Revit API로 공유 매개변수 일괄 생성하고 카테고리에 바인딩하기

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

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

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

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

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

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

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

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

Revit 2026의 생성형 설계·API 개선과 AI 자동화 기능

Revit 2026은 출시 25주년 버전으로, 화려한 신기능보다 실무 생산성을 끌어올리는 자동화·AI·API 안정화에 초점을 맞췄다. 특히 생성형 설계(Generative Design), 반복 작업의 규칙 기반 자동화, 그리고 애드인 개발 환경의 안정성이 함께 개선되면서 BIM 매니저와 개발자가 커스텀 자동화를 더 안전하게 확장할 토대가 넓어졌다. 이 글은 Autodesk가 공개한 내용을 기준으로, 확인된 기능만 정리하고 생성형 설계의 실제 워크플로와 실무 적용 지점을 프로그래밍 관점에서 설명한다. ■ 생성형 설계(Generative Design in Revit)란 생성형 설계는 설계자가 정한 목표·제약·변수에 따라 수많은 설계 대안(outcome)을 자동으로 생성하고 평가하는 기능이다. Revit에 내장된 이 도구는 클라우드 연산을 이용해 사람이 손으로 검토하기 어려운 규모의…
Rhino.Inside.Revit로 연결하는 Grasshopper 파라메트릭 BIM 워크플로

Rhino.Inside.Revit로 연결하는 Grasshopper 파라메트릭 BIM 워크플로

Grasshopper의 알고리즘 설계 능력과 Revit의 BIM 데이터 관리 능력은 오랫동안 별개의 세계였다. 복잡한 형상은 Rhino/Grasshopper에서 만들고, 이를 다시 Revit으로 옮겨 벽·바닥·패밀리로 재작업하는 과정에서 형상 왜곡과 데이터 손실, 중복 모델링이 반복됐다. Rhino.Inside.Revit는 이 단절을 없앤다. Rhino와 Grasshopper를 Revit 프로세스 내부에서 직접 구동해, Grasshopper 캔버스에서 정의한 파라메트릭 지오메트리를 Revit 네이티브 요소로 실시간 생성·갱신하는 것이 핵심이다. 이 글은 개념부터 설치, 컴포넌트를 이용한 요소 생성, 실무 워크플로까지 프로그래밍 관점에서 정리한다. ■ Rhino.Inside.Revit란 무엇인가 Rhino.Inside는 McNeel이 공개한 오픈소스 기술로, Rhino 엔진(RhinoCommon)을 다른 64비트 호스트 애플리케이션의 프로세스 안에 로드해 구동한다. Rhino.Inside.Revit는 그 호스트가 Revit인 버전으로, Revit…
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를 다루는 오픈소스 스택은 크게 세 층으로 나뉜다. 각 층이 무엇을 맡는지 알아야 어느…