버스 정류장 생성 (POC)

버스 정류장 생성 POC | 데이터 기반 Revit 모델 자동화

period2023
courseDigital Design 전공 수업
type개인 프로젝트 · POC
toolsRevit · Dynamo · Python

잠시___정류소에서 장소 조건에 맞춰 조합되는 모듈형 정류소를 설계한 뒤, Digital Design 수업에서 Revit과 Dynamo를 처음 배우며 버스 정류장 설계 자동화를 개인 프로젝트로 진행했다. 스프레드시트의 정류장 조건을 Revit 모델에 일괄 반영하기 위해 입력 데이터, 타입 분류, 패밀리 배치와 매개변수 조정을 하나의 Dynamo 흐름으로 구성했다.

정류장의 위치·가용 길이·방향으로 700mm 간격의 Revit 그리드를 작성하고 패밀리를 그 위에 배치한다. 16개의 더미 레코드를 한 번에 실행해 서로 다른 위치와 규모의 정류장에 적용했다.

오른쪽 도식은 700×700mm 그리드에서 규모에 따라 달라지는 네 타입의 배치 규칙을, 왼쪽 Revit 뷰포트는 규칙을 적용한 결과를 보여준다.

types.jpeg

BIM 자동화 흐름

스프레드시트의 한 행은 하나의 정류장을 정의한다. X·Y 좌표와 장축의 가용 길이, 방향을 입력하고, 정류장 높이와 그리드 간격, Revit 패밀리는 Dynamo에서 설정했다.

아래 Dynamo 맵은 입력 데이터부터 Revit 모델까지 이어지는 전체 스크립트다. Python 컴포넌트는 타입을 판정하고 정류장별 데이터를 정리하며, 그리드 작성과 건축 요소의 배치, 패밀리 매개변수 조정은 Dynamo가 담당한다.

DynamoMap.jpg

정류장 데이터와 배치 규칙

Length는 정류장을 놓을 수 있는 설치 구간의 장축 가용 길이다. Dynamo는 X·Y 좌표와 방향에 맞춰 700mm 간격의 Revit 그리드를 작성한다. 그리드 범위는 입력 길이를 700mm 단위로 내림해 정했다.

Python은 다중 조건문으로 정류장의 길이를 비교해 A–D 타입을 판정한다. 결과는 정류장별 딕셔너리로 정리해 Dynamo의 데이터 트리에 연결했다. Dynamo는 각 정류장의 길이와 타입을 읽고 양 끝의 구성과 중간 반복부를 배치한다.

SHEET.jpeg
DyPy 01.jpeg
DyPy 02.jpeg

왼쪽은 16개 정류장의 위치·가용 길이·방향을 담은 입력 시트이고, 가운데와 오른쪽은 타입 판정과 딕셔너리 구성을 담당하는 Python 코드다.


700mm 그리드와 네 건축 요소

Dynamo는 정류장의 길이와 타입에 따라 그리드 위의 배치 위치를 계산하고, 태양광 패널·파티션·지붕·기둥의 Revit 패밀리를 배치한다.

  • 태양광 패널은 정류장 방향에 따라 장축 또는 단축 방향으로 배열하고 태양각 변수를 받는다.
  • 파티션은 철판과 유리 유형을 선택한다.
  • 지붕은 하나의 패밀리를 반복 배치해 정류장 길이에 맞춘다.
  • 기둥은 공기질 입력값에 따라 조명 유형이 바뀌도록 구성했다.
FM 01.jpeg
FM 02.jpeg
FM 03.jpeg
FM 04.jpeg

이미지는 왼쪽부터 태양광 패널, 파티션, 지붕, 조명 기둥 패밀리다.


패밀리 매개변수

높이와 폭, 재료, 태양광 패널의 방향과 각도, 기둥의 조명 유형을 Revit 패밀리 매개변수로 연결했다.

MG 01.jpeg
MG 02.jpeg
MG 03.jpeg

세 화면은 각각 태양광 패널, 공기질 조명 기둥, 파티션 패밀리의 유형과 치수·재료 매개변수를 보여준다.


개념 증명과 다음 작업

더미 데이터로 스프레드시트 입력, Revit 그리드 작성, 타입 분류, 패밀리 배치와 매개변수 조정이 연속해서 작동하는 것을 확인했다. 스프레드시트를 수정하고 Dynamo를 다시 실행하면 변경된 위치·길이·방향이 Revit 모델에 반영된다.

태양각과 공기질에는 임의의 값을 사용해 패밀리 매개변수의 연결을 확인했다. 실제 도시 데이터의 연동과 환경 성능 검토는 진행하지 않았다.

현재 형상은 생성 흐름을 확인하기 위한 기본 정류장이다. 다음 작업에서는 반복·결합할 수 있는 모듈을 새로 설계해 이 자동화 흐름에 연결하고 싶다.