홈으로
B+CD+P

BIM-IT 융합 과정

BIM + Computational Design + Programming

200
HOURS
10
CHAPTERS
13
이론시간
187
실습시간
DEC[Digital Engineering Corporation]Revit, RhinoInside, C# API
B+CD+P
BIM-IT 융합 과정
Index

Index

BIM-IT 융합 과정 - 총 200시간

BIM-IT 개요
BIM과 IT 기술의 융합 소개
4H
BIM 소프트웨어 이해
Revit 기초 및 프로젝트 관리
7H
BIM-IT 데이터 이해
Revit 데이터 구조와 파라메트릭 원리
7H
BIM-IT 기술 융합 개요
건설산업 트렌드와 인재상
2H
BIM-IT 융합기술 기본
그래픽 코딩 입문 (Grasshopper & Rhino Inside)
35H
BIM-IT 융합기술 모델링
파라메트릭 모델링 및 데이터 전송
35H
BIM-IT 융합기술 활용
Revit API 개발 기초
35H
BIM-IT 융합기술 심화
API 개발 실습
35H
BIM 시뮬레이션
공정 시뮬레이션 및 시각화
4H
건축 + IT 융합 실무교육
실습수업 및 최종 평가
36H
200
총 교육시간
10
총 챕터 수
13H
이론 시간
187H
실습 시간
DEC[Digital Engineering Corporation]|200시간 과정
2
01
Chapter

BIM-IT 개요

BIM과 IT 기술의 융합 소개

4
HOURS
4
SECTIONS
1.1O.T
1.2BIM 개요 및 개념 이해
1.3BIM에서 IT로의 진화
1.4BIM-IT 기술 스택 소개
B+CD+P
BIM-IT 융합 과정
Chapter 1: BIM-IT 개요

교과과정 소개

BIM + Computational Design + Programming

과정 개요

과정명
BIM-IT 융합 과정
총 교육시간
200시간
구성
10개 챕터
기술스택
Revit, RhinoInside, C# API

학습 목표

BIM 데이터 구조와 파라메트릭 원리 이해
Grasshopper를 활용한 시각적 프로그래밍 역량 습득
Revit API + C#을 통한 자동화 개발 능력 확보
반복 작업을 자동화하는 문제 해결 사고 방식 체득
실무 프로젝트 기반 포트폴리오 구축

얻어가는 핵심 역량

알고리즘적 사고
복잡한 문제를 논리적 단계로 분해
코딩 마인드셋
반복을 자동화로 전환하는 사고
하이브리드 스킬
그래픽 + 텍스트 코딩 통합 활용
데이터 리터러시
BIM 데이터 추출, 분석, 활용

커리큘럼 (10개 챕터)

1
BIM-IT 개요
4H
2
BIM 소프트웨어 이해
7H
3
BIM-IT 데이터 이해
7H
4
BIM-IT 기술 융합 개요
2H
5
BIM-IT 융합기술 기본
35H
6
BIM-IT 융합기술 모델링
35H
7
BIM-IT 융합기술 활용
35H
8
BIM-IT 융합기술 심화
35H
9
BIM 시뮬레이션
4H
10
건축 + IT 융합 실무교육
36H
시간 배분:
20HBIM 기초
105H융합기술
35HAPI 개발
40H실무
DEC[Digital Engineering Corporation]|200시간 과정
4
B+CD+P
BIM-IT 융합 과정
Chapter 1: BIM-IT 개요

BIM 개요 및 개념 이해

Building Information Modeling의 기본 개념과 정의

BIM의 정의

Building Information Modeling(BIM)은 건축물의 물리적, 기능적 특성을 디지털로 표현한 3D 모델 기반의 프로세스입니다.

🎯단순 3D가 아닌 정보가 담긴 지능형 모델
🔄설계-시공-운영 전 생애주기 데이터 관리
👥다분야 협업을 위한 통합 플랫폼
핵심 키워드
3D 모델링정보 통합협업생애주기

BIM vs 기존 CAD

구분CADBIM
표현 방식2D 도면3D 객체
데이터선, 도형객체 + 정보
수정 시개별 수정자동 연동
협업파일 교환모델 공유
활용 범위설계 단계전 생애주기

BIM의 구성요소

📐
3D 형상 정보
건물의 물리적 형태와 공간
📊
속성 정보
재료, 비용, 일정 등 메타데이터
🔗
관계 정보
객체 간 연결과 의존성
📋
프로세스 정보
시공, 유지관리 절차

CAD → BIM 진화

📄
CAD
2D 선과 도형
도면 = 단순 그림
→
정보
통합
🏗️
BIM
3D 객체 + 정보
모델 = 정보 DB
DEC[Digital Engineering Corporation]|200시간 과정
5
B+CD+P
BIM-IT 융합 과정
Chapter 1: BIM-IT 개요

BIM의 핵심 원칙과 목표

BIM 프로세스의 핵심 원칙과 도입 목표

* 출처: 국토교통부, 건설산업 BIM 기본지침 (2020)
📌

BIM 4대 핵심 원칙

🎯
01단일 정보원 (SSOT)
하나의 모델에서 모든 정보를 통합 관리하여 데이터 일관성 보장
🤝
02협업 중심 프로세스
건축, 구조, 설비 등 다분야 이해관계자가 실시간으로 협업
🔗
03정보의 연속성
설계-시공-운영 전 단계에서 데이터가 끊김 없이 연계
🔬
04시뮬레이션 기반 의사결정
가상 환경에서 사전 검토하여 리스크를 최소화
🎯

국가 BIM 도입 목표

📋 건설산업 BIM 기본지침 (국토부, 2020)
조사-설계-발주-시공-유지관리 전 생애주기 BIM 도입
📐
설계 품질
3D 시각화·간섭검토
🤝
협업 강화
다분야 실시간 협업
📊
데이터 관리
생애주기 정보 통합
공공건설 단계별 의무화 로드맵
2024
1,000억원 이상 (철도·건축)
2026
500억원 이상 공공공사
2030
모든 공공공사 전면 적용
📊

정책 목표 효과

(국토부)
📝2024
인허가 디지털화
100%
⚡2027
설계 생산성
40%↑
🏗️2030
건설 생산성
15%↑
🏢2030
민간 BIM 활용
100%
DEC[Digital Engineering Corporation]|200시간 과정
6
B+CD+P
BIM-IT 융합 과정
Chapter 1: BIM-IT 개요

글로벌 BIM 시장 및 의무화 현황

세계 BIM 시장 규모와 주요국 도입 현황

* 출처: Grand View Research, 2023

📊글로벌 BIM 시장 규모2023-2030

2023년$8.6B
2030년$24.8B
CAGR [연평균성장률]16.3%
성장 지역Asia-Pacific

🌍지역별 시장 점유율

북미대형 건설사 도입
35%
유럽정부 의무화
30%
아시아태평양최고 성장률
25%
기타신흥 시장
10%

📋주요국 BIM 의무화

🇬🇧 영국2016Level 2 의무화
🇸🇬 싱가포르2015BIM e-Submission
🇺🇸 미국2007GSA 공공 의무화
🇩🇪 독일2020연방 인프라 적용
🇯🇵 일본2023단계적 의무화

🚀성장을 이끄는 요인

🏛️
정부 정책공공 BIM 의무화 확대
💰
비용 절감설계 오류 감소
🌱
지속가능성탄소 중립 건설
🔗
디지털 전환IoT, AI 연계
DEC[Digital Engineering Corporation]|200시간 과정
7
B+CD+P
BIM-IT 융합 과정
Chapter 1: BIM-IT 개요

주요국 BIM 정책 및 표준 체계

영국, 싱가포르, 미국의 BIM 프레임워크 상세

* 출처: UK BIM Task Group, BCA Singapore, GSA USA

영국 BIM Framework

Level 2 의무화
2016년 공공 프로젝트 필수
ISO 19650
국제 BIM 표준 제정 주도
시간 30% 단축
설계-시공 프로세스 효율화
비용 20% 절감
재작업 및 오류 방지

싱가포르 BIM 정책

BCA (건설건축청)
Building and Construction Authority BIM 로드맵 총괄 및 정책 수립
e-Submission
Electronic Submission 2015년 전자 인허가 의무화
Smart Nation
Smart Nation Initiative 도시 디지털 트윈 구축
전 건물 적용
Mandatory BIM 2016년 신축 BIM 전면 의무화

미국 BIM 정책

GSA (연방조달청)
General Services Administration 공공건물 BIM 의무화 선도
USACE (육군공병대)
U.S. Army Corps of Engineers 군사시설 BIM 적용 확대
NAVFAC (해군시설사)
Naval Facilities Engineering 해군 시설 BIM 표준화
NBIMS (국가표준)
National BIM Standard 미국 BIM 표준 가이드라인
DEC[Digital Engineering Corporation]|200시간 과정
8
B+CD+P
BIM-IT 융합 과정
Chapter 1: BIM-IT 개요

해외 BIM 적용 사례 및 효과

글로벌 메가 프로젝트의 BIM 도입 성과 분석

* 출처: McGraw-Hill Construction, NBS National BIM Report

🚆인프라 프로젝트

🇬🇧 Crossrail£18.8B
런던 횡단 철도
✓ 공기 15% 단축✓ 비용 10% 절감
🇺🇸 Denver Airport$2.5B
공항 확장
✓ $4M 절감✓ RFI 50% 감소

🏢건축 프로젝트

🇸🇬 Marina Bay Sands$8.0B
복합 리조트
✓ 오류 90% 검출✓ 3개월 단축
🇦🇺 Sydney OperaFM (유지관리)
As-Built BIM 모델 구축
✓ FM 40% 향상✓ 에너지 15%↓

📊BIM 도입 효과 (글로벌 통계)

📉
40%↓
설계 오류
💰
20%
비용 절감
⏱️
30%
공기 단축
📈
25%↑
생산성

💡핵심 시사점

01
정부 주도 의무화
정책이 BIM 확산의 핵심 동력
02
표준 체계 확립
ISO 19650 기반 프레임워크
03
인력 양성
BIM 전문인력 자격제도
04
생애주기 연계
설계-시공-운영 데이터 연속성
DEC[Digital Engineering Corporation]|200시간 과정
9
B+CD+P
BIM-IT 융합 과정
Chapter 1: BIM-IT 개요

국내 BIM 정책 동향

공공 BIM 의무화 확대 로드맵

* 출처: 국토교통부 「건축 BIM 활성화 로드맵」 (2020.12)
🏛️
조달청 BIM 의무화 시작
500억 이상 공공건축 BIM 설계 의무화
🏢
LH 공동주택 BIM 25%
LH 공동주택 BIM 설계 25% 의무화
📈
LH 공동주택 BIM 50%
LH 공동주택 BIM 설계 50% 확대
✅
LH 공동주택 BIM 100%
LH 전 공동주택 BIM 전면 의무화
🔍
민간 BIM 감리 대상
민간 건축물 BIM 감리 대상 확대
🎯
민간 전면 의무화
연면적 500㎡ 이상 건축물 BIM 의무화

📋BIM 의무화 대상 사업

조달청
300억↑ 전공종, 200~300억 건축·구조
LH공사
공동주택 100% BIM 설계 의무
민간
'24년 협력대상 → '27년 감리대상
2030
연면적 500㎡ 이상 건축물 의무화

🎯2030년 목표

디지털 건축서비스 완전 구현
30%↑
설계 효율
20%
비용 절감
DEC[Digital Engineering Corporation]|200시간 과정
10
B+CD+P
BIM-IT 융합 과정
Chapter 1: BIM-IT 개요

국내 주요 BIM 적용 사례

대형 프로젝트의 BIM 도입 성과

* 출처: 국토교통부, 한국BIM학회, 각 발주처 공식 자료

🏙️롯데월드타워

555m
국내 최고층 초고층 건축물 Full BIM 적용
프로젝트 규모지상 123층, 연면적 50만㎡
BIM 적용 범위설계-시공-유지관리 전 단계
주요 성과복잡한 외피 설계 최적화
✓ 간섭 검토 100%✓ 공기 단축

✈️인천공항 T2

352,000㎡
BIM 기반 통합 설계 및 시공 관리
프로젝트 규모연간 1,800만 명 수용 규모
BIM 적용 범위건축, 구조, MEP 통합 모델
주요 성과복합 시설 간섭 사전 해결
✓ 오류 90% 감소✓ 협업 효율↑

🚄GTX-A 노선

83.1km
국내 최대 규모 철도 BIM 프로젝트
프로젝트 규모수도권 3개 노선 연결
BIM 적용 범위토목, 궤도, 역사 통합 BIM
주요 성과지하 터널 굴착 최적화
✓ 물량 산출 자동화✓ 4D 공정관리

🏛️세종시 행복도시

73㎢
도시 전체 BIM 마스터플랜 적용
프로젝트 규모행정중심복합도시 전체
BIM 적용 범위도시계획, 인프라, 건축물
주요 성과스마트시티 인프라 구축
✓ 디지털 트윈✓ 통합 운영
DEC[Digital Engineering Corporation]|200시간 과정
11
B+CD+P
BIM-IT 융합 과정
Chapter 1: BIM-IT 개요

주요 BIM 발주 기관 및 시사점

국내 BIM 생태계 주요 기관과 BIM 인력 양성 방향

* 출처: 국토교통부, 조달청

주요 BIM 발주 기관

조달청정책 주관
공공건축 BIM 의무화 총괄
LH공사주거 분야
공동주택 전 사업 BIM 적용
국토교통부정책 수립
스마트건설 정책 및 가이드라인
서울시지자체
공공건축물 BIM 설계 의무화
한국도로공사인프라
도로 인프라 BIM 표준 개발
한국철도시설공단철도
철도 BIM 사업 확대

BIM 인력 양성 시사점

BIM 의무화 확대
2030년 민간 전면 의무화로 수요 급증 예상
전문 인력 부족
BIM 설계·관리 전문가 인력 양성 시급
IT 융합 필요
BIM + 프로그래밍 융합 인재 수요 증가
생애주기 관리
설계-시공-FM 전 단계 BIM 역량 필요
🎯본 과정의 목표
BIM + IT 융합 역량을 갖춘 전문 인력 양성을 통해 2030년 디지털 건축서비스 시대를 선도하는 인재 배출
DEC[Digital Engineering Corporation]|200시간 과정
12
B+CD+P
BIM-IT 융합 과정
Chapter 1: BIM-IT 개요

왜 BIM에서 IT로?

BIM 실무의 현실과 IT 융합의 필요성

🤔"BIM 모델링만 잘하면 충분할까요?"
매일 반복되는 수작업, 끝없는 설계 변경, 데이터 재입력... 더 효율적인 방법은 없을까요?
😰반복의 굴레
•동일한 패밀리 100개 배치
•파라미터 값 일일이 수정
•매번 똑같은 뷰/시트 생성
😤변경의 악순환
•설계 변경 → 전체 재작업
•연관 요소 수동 업데이트
•버전 관리의 혼란
😩데이터의 단절
•Excel ↔ Revit 수동 입력
•물량표 매번 새로 작성
•정보 불일치 오류 발생
📊

BIM 엔지니어의 실제 업무 시간 분포

반복 작업 (배치, 수정, 복사)
45%
데이터 입력/변환
20%
검토/수정 대응
20%
창의적 설계 작업
15%
창의적 설계 작업은 15%에 불과 → 85%는 자동화 가능
💡

해결책: BIM + IT 융합

🔗
Visual Programming
Grasshopper, Dynamo
코딩 없이 알고리즘 설계
⚙️
API 개발
Revit API, C#
완전한 커스텀 자동화
📊
데이터 연동
Excel, DB 연계
정보 자동 동기화
DEC[Digital Engineering Corporation]|200시간 과정
13
B+CD+P
BIM-IT 융합 과정
Chapter 1: BIM-IT 개요

Before & After: 실무 시나리오

수작업 vs 자동화, 실제 업무에서의 차이

시나리오 1: 창호 500개 배치
BEFORE수작업
• 도면 보며 위치 확인
• 하나씩 클릭하여 배치
• 타입별 파라미터 수정
⏱️ 8시간 소요
AFTER자동화
• Excel 좌표 데이터 로드
• Dynamo로 일괄 배치
• 타입 자동 매핑
⏱️ 30분 소요 (94%↓)
시나리오 2: 물량 산출표 작성
BEFORE수작업
• 일람표에서 데이터 추출
• Excel로 복사/붙여넣기
• 수식 적용 및 검토
⏱️ 4시간 소요
AFTER자동화
• API로 모델 데이터 추출
• 자동 집계 및 분류
• 템플릿 자동 적용
⏱️ 5분 소요 (98%↓)
시나리오 3: 층고 변경 대응
BEFORE수작업
• 레벨 수동 조정
• 연관 요소 일일이 수정
• 누락 항목 재검토
⏱️ 1일 소요
AFTER자동화
• 파라미터 값만 변경
• 연관 요소 자동 업데이트
• 검증 스크립트 실행
⏱️ 1시간 소요 (88%↓)
시나리오 4: 시트 50장 생성
BEFORE수작업
• 뷰 하나씩 생성
• 시트에 수동 배치
• 타이틀블록 정보 입력
⏱️ 6시간 소요
AFTER자동화
• 규칙 기반 뷰 자동 생성
• 템플릿 시트 자동 배치
• 정보 자동 매핑
⏱️ 20분 소요 (95%↓)
BEFORE
19시간
기존 방식 총 소요
→
BIM-IT 자동화
AFTER
2시간
자동화 후 소요
시간 절감 효과
89%
업무 효율 향상
DEC[Digital Engineering Corporation]|200시간 과정
14
B+CD+P
BIM-IT 융합 과정
Chapter 1: BIM-IT 개요

BIM 기술의 진화

CAD에서 AI까지, BIM 기술 발전의 흐름

BIM 기술 진화 타임라인

1세대
2000s
CAD → BIM
2D 도면에서 3D 모델로
Revit, ArchiCAD
2세대
2010s
BIM 협업
통합 모델 & 클라우드
BIM 360, Navisworks
3세대
2020s
BIM + IT
자동화 & 데이터 활용
Dynamo, GH, API
4세대
2030s
AI + BIM
AI 기반 자동 설계
Generative AI
B+CD+P
BIM + Computational Design + Programming
BIM
Building Information Modeling
3D 모델 기반 건물 정보 통합 관리
RevitArchiCADTekla
Computational Design
컴퓨테이셔널 디자인
알고리즘 기반 파라메트릭 설계
GrasshopperDynamo
Programming
프로그래밍
코드 기반 커스텀 자동화 개발
C#PythonRevit API

세 기술의 융합이 만드는 시너지

B + CD
파라메트릭 BIM
규칙 기반 자동 모델링
예: 복잡한 패턴 자동 생성
B + P
BIM 자동화
API 기반 업무 자동화
예: 일괄 수정, 데이터 추출
CD + P
커스텀 노드
새로운 알고리즘 개발
예: GH/Dynamo 확장
B + CD + P
완전 자동화
엔드투엔드 자동화
예: 데이터 → 모델 → 도면
DEC[Digital Engineering Corporation]|200시간 과정
15
B+CD+P
BIM-IT 융합 과정
Chapter 1: BIM-IT 개요

BIM-IT 핵심 기술 스택

Visual Programming에서 Text-based Programming까지

기술 스택 피라미드

AI/ML 통합미래
API & Script
Visual Programming
BIM Software
난이도 ↑ | 자유도 ↑
Level 4AI/ML 통합미래 기술
머신러닝 기반 설계 최적화, 자동 품질 검토
Generative Design자동 간섭 검토설계 추천
Level 3API & Script
Revit API, C#/Python 기반 완전 커스텀 자동화
Add-in 개발외부 DB 연동BIM 데이터 분석
Level 2Visual Programming
Grasshopper, Dynamo 노드 기반 알고리즘 설계
파라메트릭 모델링자동 배치데이터 처리
Level 1BIM Software
Revit, Rhino 등 기본 모델링 환경
3D 모델링패밀리 작성협업 워크플로우

상황별 기술 선택 가이드

🔄
단순 반복 작업
Visual Programming
예: 동일 패밀리 반복 배치
🧩
복잡한 로직 필요
API Development
예: 조건부 자동화 프로세스
🔗
외부 연동 필요
API + Database
예: Excel/DB 데이터 연동
🤖
최적화 설계
AI/ML 통합
예: 설계안 자동 생성/비교
DEC[Digital Engineering Corporation]|200시간 과정
16
B+CD+P
BIM-IT 융합 과정
Chapter 1: BIM-IT 개요

BIM-IT 핵심 도구 상세

6가지 핵심 도구와 학습 로드맵

RevitBIM 저작도구
건축/구조/MEP 통합 BIM 플랫폼
●패밀리 기반 모델링
●협업 중앙 모델
●일람표/도면 생성
Rhino3D 모델링
자유형상 모델링 및 GH 호스트
●NURBS 기반
●플러그인 생태계
●다양한 포맷 지원
GrasshopperVisual Programming
Rhino 기반 파라메트릭 설계
●노드 기반 알고리즘
●실시간 피드백
●풍부한 플러그인
DynamoVisual Programming
Revit 네이티브 자동화 도구
●Revit 완벽 연동
●Python 스크립팅
●패키지 매니저
RhinoInsideBridge Technology
Rhino/GH ↔ Revit 실시간 연결
●크로스 플랫폼
●실시간 데이터 교환
●GH 컴포넌트 활용
Revit APIProgramming
C# 기반 완전한 커스터마이징
●Add-in 개발
●외부 명령
●무제한 자유도

추천 학습 로드맵 (총 200시간)

1
BIM 기초
Revit 기본 모델링
18H
→
2
Visual Programming
Dynamo/GH 입문
37H
→
3
RhinoInside
GH → Revit 연동
35H
→
4
API 개발
C# + Revit API
70H
→
5
실무 프로젝트
종합 자동화 개발
40H
💡기초부터 심화까지 단계별 학습으로 BIM-IT 전문가로 성장하세요
6종
도구
200H
총 시간
5단계
단계
DEC[Digital Engineering Corporation]|200시간 과정
17
B+CD+P
BIM-IT 융합 과정
Chapter 1: BIM-IT 개요

BIM-IT 통합 워크플로우

Rhino → Grasshopper → RhinoInside → Revit 연결 체계

BIM-IT 통합 워크플로우

Rhino
형상 모델링
자유로운 3D 형상 설계
→
Grasshopper
알고리즘 설계
파라메트릭 로직 구성
→
RhinoInside
데이터 변환
Geometry → BIM 요소
→
Revit
BIM 생성
패밀리 배치 및 정보 입력

입력 데이터

Excel/CSV좌표, 파라미터 데이터
CAD 도면평면 레이아웃 참조
설계 기준모듈, 간격 규칙
데이터베이스부재 정보, 사양

처리 과정

데이터 파싱입력 데이터 구조화
지오메트리 생성Rhino 기하 객체 생성
변환 로직GH → Revit 요소 매핑
파라미터 설정속성값 자동 입력

출력 결과

BIM 모델완성된 Revit 모델
일람표자동 생성된 수량표
도면뷰/시트 자동 배치
리포트검토 보고서 출력

실제 적용 예시: 커튼월 패널 1,200개 자동 배치

자동화 프로세스
① Excel에서 패널 좌표/타입 데이터 로드
② GH에서 데이터 파싱 및 패널 형상 생성
③ RhinoInside로 Revit 패밀리와 매핑
④ 파라미터 자동 설정 및 배치 완료
자동화 성과
1,200개
패널 수
15분
소요 시간
95%↓
수작업 대비
0%
오류율
DEC[Digital Engineering Corporation]|200시간 과정
18
B+CD+P
BIM-IT 융합 과정
Chapter 1: BIM-IT 개요

Text Coding 기반 워크플로우

C#, Python, Revit API를 활용한 BIM 자동화

Text Coding 기반 자동화 워크플로우

요구사항 분석
업무 프로세스
자동화 대상 정의
→
C# / Python
코드 개발
API 로직 구현
→
Revit API
BIM 제어
요소 생성/수정/조회
→
Add-in 배포
실무 적용
팀 전체 활용

C# + Revit API

Add-in 개발리본 메뉴 플러그인
External Command버튼 클릭 실행
Event Handler자동 트리거 처리
WPF UI커스텀 인터페이스

Python + pyRevit

pyRevitPython 기반 Add-in
RevitPythonShell인터랙티브 실행
Pandas 연동데이터 분석 통합
Batch 처리다중 파일 자동화

외부 시스템 연동

DB 연동SQL/NoSQL 데이터
REST API웹 서비스 통신
Excel 자동화보고서 생성
Cloud 연동BIM 360/ACC 통합

실제 적용 예시: 물량 산출 자동화 시스템

자동화 프로세스
① Revit API로 모델 요소 데이터 추출
② Python으로 물량 집계 및 분류
③ Excel 템플릿에 자동 입력
④ 검증 로직으로 오류 자동 검출
자동화 성과
50,000+
요소 수
5분
소요 시간
98%↓
수작업 대비
99.9%
정확도
DEC[Digital Engineering Corporation]|200시간 과정
19
B+CD+P
BIM-IT 융합 과정
Chapter 1: BIM-IT 개요

BIM-IT 엔지니어 역량과 커리어

BIM-IT 융합 전문가로 성장하기 위한 핵심 역량과 진로

BIM-IT 엔지니어 핵심 역량

🧠
알고리즘적 사고
문제를 논리적 단계로 분해하고 최적의 해결책 설계
💻
코딩 마인드셋
반복 작업을 자동화로 전환하는 프로그래밍적 사고
📊
데이터 리터러시
BIM 데이터 추출, 가공, 분석, 시각화 역량
🔄
하이브리드 스킬
Visual + Text 코딩을 상황에 맞게 선택 활용
🎯
문제 해결 능력
실무 이슈를 IT 기술로 창의적으로 해결
🤝
커뮤니케이션
기술/비기술 팀 간 원활한 소통 및 협업

BIM-IT 커리어 성장 경로

Entry
BIM 모델러
Revit 기본
0-2년
→
Junior
BIM 코디네이터
+ Visual Prog.
2-4년
→
Mid
BIM 개발자
+ API 개발
4-6년
→
Senior
솔루션 아키텍트
+ 시스템 설계
6-10년
→
Expert
Digital Twin 전문가
+ AI/ML 통합
10년+

BIM-IT 미래 전망

현재Visual Programming 확산활성
단기 (1-3년)API 기반 자동화 일반화성장
중기 (3-5년)AI 보조 설계 도입도입
장기 (5-10년)AI 기반 자율 설계연구

BIM-IT 취업 분야

설계사무소
BIM 자동화 담당
건설사
BIM 기술개발팀
CM/감리사
BIM 검토 자동화
BIM 컨설팅
솔루션 개발
소프트웨어 회사
AEC 플러그인 개발
스타트업
ConTech 서비스
"단순한 BIM 모델러를 넘어, 건설 산업의 디지털 혁신을 이끄는 BIM-IT 전문가로 성장하세요"
DEC[Digital Engineering Corporation]|200시간 과정
20
02
Chapter

BIM 소프트웨어 이해

Revit 기초 및 프로젝트 관리

7
HOURS
6
SECTIONS
2.1Revit 개요 및 인터페이스 이해
2.2기본 모델링
2.3뷰 생성 및 관리
2.4도면 작업 및 주석 추가
2.5Revit 프로젝트 설정 및 관리
2.6샘플 프로젝트
B+CD+P
BIM-IT 융합 과정
Chapter 2: BIM 소프트웨어 이해

BIM 소프트웨어 이해

강의계획서 - Revit 기초 및 프로젝트 관리

1. 강의 개요

과목명
BIM 소프트웨어 이해
교육시간
7시간 (이론 2H + 실습 5H)
대상
BIM 입문자 및 Revit 기초 학습자
선수학습
Chapter 1. BIM-IT 개요
실습환경
Autodesk Revit 2025

2. 지도목표

Revit의 기본 인터페이스와 건축 모델링 워크플로우를 이해하고, 실무에서 활용 가능한 BIM 프로젝트 수행 역량을 습득한다.
1Revit UI 및 프로젝트 브라우저 구조 파악
2건축/구조 요소의 기본 모델링 수행
3평면도, 입면도, 단면도 등 뷰 생성 및 관리
4일람표(Schedule) 작성 및 도면 출력
5협업을 위한 프로젝트 설정 및 관리

3. 사용교재 (자료)

주교재
본 교육자료
참고
Revit 공식 문서
실습
강사 제공

4. 주요 내용 (학습활동)

2.1Revit 개요 및 인터페이스 이해이론1H
Revit 기본 개념 / UI 소개 / 프로젝트 브라우저
2.2기본 모델링실습2H
건축 요소 모델링 / 구조 요소 / 레벨·그리드 설정
2.3뷰 생성 및 관리실습1H
평면도·입면도·단면도 / 3D 뷰 / 일람표 생성
2.4도면 작업 및 주석 추가실습1H
치수선·텍스트·태그 / 상세도 작업 / 도면 출력
2.5Revit 프로젝트 설정 및 관리이론+실습1H
단위·재료 설정 / Worksharing / 디자인 옵션
2.6샘플 프로젝트실습1H
프로젝트 초기설정 및 모델링 / 검토 및 피드백
평가 기준
실습시험100%
샘플 프로젝트 완성도 중심 평가
DEC[Digital Engineering Corporation]|200시간 과정
22
B+CD+P
BIM-IT 융합 과정
Chapter 2: BIM 소프트웨어 이해

Revit 개요 및 인터페이스 이해

Revit의 기본 개념과 사용자 인터페이스 구조

Revit이란?

Autodesk Revit은 BIM(Building Information Modeling) 방법론을 구현하는 대표적인 소프트웨어로, 건축/구조/MEP 분야의 통합 설계 플랫폼입니다.

3D 모델링 - 파라메트릭 객체 기반
정보 관리 - 속성 데이터 통합
도면 생성 - 자동 2D 추출
협업 - 중앙 모델 공유
🏗️
BIM Platform
1
리본 메뉴
Ribbon
모든 도구와 명령을 탭별로 구성
●아키텍처
●구조
●삽입
●주석
●뷰
●관리
2
프로젝트 브라우저
Project Browser
프로젝트 내 모든 요소를 트리 구조로 관리
●뷰(평면/입면/단면)
●일람표
●시트
●패밀리
3
도면 영역
Drawing Area
모델링 및 편집이 이루어지는 작업 공간
●뷰 컨트롤 바
●축척/상세수준
●표시 스타일
4
속성 팔레트
Properties
선택 요소의 파라미터 확인 및 수정
●타입 선택기
●인스턴스 속성
●타입 속성

프로젝트 브라우저 (Project Browser)

프로젝트 내 모든 뷰, 일람표, 시트, 패밀리를 계층 구조로 관리
뷰 (Views)
평면, 입면, 단면, 3D
일람표 (Schedules)
물량, 부재 목록
시트 (Sheets)
출력용 도면
패밀리 (Families)
재사용 가능 객체

속성 팔레트 (Properties Palette)

선택한 요소의 타입 및 인스턴스 파라미터를 확인/수정
타입 선택기 - 패밀리 타입 변경 드롭다운
인스턴스 파라미터 - 개별 요소의 고유 속성
타입 파라미터 - 같은 타입 공유 속성
DEC[Digital Engineering Corporation]|200시간 과정
23
B+CD+P
BIM-IT 융합 과정
Chapter 2: BIM 소프트웨어 이해

Revit 인터페이스 이해

Revit 사용자 인터페이스 구성 요소

UI 핵심 구성 요소

Revit 작업 환경의 주요 인터페이스

1
리본 메뉴Ribbon
모든 도구와 명령을 탭별로 구성
2
프로젝트 브라우저Project Browser
뷰, 일람표, 시트, 패밀리 트리 구조
3
속성 팔레트Properties
선택 요소의 파라미터 확인/수정
4
도면 영역Drawing Area
모델링 및 편집 작업 공간
5
뷰 컨트롤 바View Control
축척, 상세수준, 표시 스타일
Revit 인터페이스 화면
Revit 인터페이스
1
2
3
4
5
💡
Tip: 프로젝트 브라우저와 속성 팔레트는 항상 화면에 표시해두는 것이 효율적입니다.
DEC[Digital Engineering Corporation]|200시간 과정
24
B+CD+P
BIM-IT 융합 과정
Chapter 2: BIM 소프트웨어 이해

Revit 프로젝트 기본 설정

프로젝트 시작 전 반드시 확인해야 할 프로젝트 정보, 단위 설정 등 기본 환경을 학습합니다.

📋프로젝트 정보
관리 탭 > 프로젝트 정보
📏프로젝트 단위
관리 탭 > 프로젝트 단위
🗂️브라우저 구성
뷰 탭 > 사용자 인터페이스 > 브라우저 구성

📋 프로젝트 정보 (Project Information)

프로젝트 이름
프로젝트 식별명
Project Name
프로젝트 번호
관리 번호
Project Number
프로젝트 주소
건물 위치
Project Address
건물주/클라이언트
발주처 정보
Client Name
프로젝트 상태
진행 단계
Project Status

📏 프로젝트 단위 (Project Units)

📏
길이
밀리미터 (mm)
예: 3000
📐
면적
제곱미터 (m²)
예: 150.00
📦
체적
세제곱미터 (m³)
예: 450.000
📐
각도
도 (°)
예: 45.00
국내 표준: 길이(mm), 면적(m²), 각도(도) 사용 권장
⚠️
주의: 프로젝트 단위는 작업 시작 전에 설정해야 합니다. 중간에 변경 시 기존 요소에 문제가 발생할 수 있습니다.
💡
Tip: 프로젝트 정보는 도면 타이틀 블록과 일람표에 자동으로 연동되어 표시됩니다.
DEC[Digital Engineering Corporation]|200시간 과정
25
B+CD+P
BIM-IT 융합 과정
Chapter 2: BIM 소프트웨어 이해

기본 모델링 요소

Revit의 건축 탭과 구조 탭에서 제공하는 모델링 도구를 활용하여 건물 요소를 생성합니다.

건축 탭 (Architecture)

Revit 건축 탭
벽(Wall)
기본벽, 커튼월 생성
문(Door)
벽에 문 배치
창(Window)
벽에 창문 배치
구성요소
가구, 장비 배치
바닥(Floor)
스케치 기반 바닥
지붕(Roof)
돌출/면 지붕
천장(Ceiling)
자동/스케치 천장
계단(Stair)
계단 및 난간

구조 탭 (Structure)

Revit 구조 탭
보(Beam)
구조 보 배치
기둥(Column)
구조/건축 기둥
바닥(Floor)
구조 바닥판
트러스(Truss)
지붕 트러스
가새(Brace)
수평/수직 가새
기초(Foundation)
기초 배치
철근(Rebar)
철근 배근
연결(Connection)
강접합 연결
요소 배치 시 레벨과 그리드를 먼저 설정하면 정확한 위치에 모델링할 수 있습니다.
DEC[Digital Engineering Corporation]|200시간 과정
26
B+CD+P
BIM-IT 융합 과정
Chapter 2: BIM 소프트웨어 이해

수정 탭의 기본 기능

Revit의 수정(Modify) 탭에서 제공하는 편집 도구를 활용하여 모델 요소를 효율적으로 수정하고 관리합니다.

Revit 리본 메뉴 - 수정 탭 전체 구성

Revit 수정 탭 리본 메뉴
정렬(Align)
두 개 이상의 요소를 특정 기준에 맞춰 정렬
옵셋(Offset)
특정 기준에서 일정 거리만큼 띄워 요소 생성
미러(Mirror)
기준 축에 따라 반전하여 대칭 요소 생성
무브(Move)
선택한 요소를 원하는 위치로 이동
카피(Copy)
선택한 요소를 복제하여 새 위치에 생성
회전(Rotate)
선택한 요소를 기준점 중심으로 회전
트림/연장(Trim/Extend)
교차점 기준으로 잘라내거나 연장
분할(Split)
특정 요소를 여러 조각으로 나눔
배열(Array)
요소를 일정 간격으로 반복 배치
스케일(Scale)
요소 크기를 비율에 맞춰 조절
고정(Pin)
요소가 이동/변경되지 않도록 잠금
삭제(Delete)
선택한 요소를 제거
요소 선택 후 상단 리본메뉴의 수정 탭에서 위 기능들을 사용할 수 있습니다.
DEC[Digital Engineering Corporation]|200시간 과정
27
B+CD+P
BIM-IT 융합 과정
Chapter 2: BIM 소프트웨어 이해

레벨과 그리드

건물의 수직/수평 기준 체계 설정

Level (수평 기준면)에 대한 기본 용어
000
EL +35,000
EL (Elevation Level)
설계 기준이 되는 특정 고도
상대적인 기준점으로 활용 (임의의값 or 해발고도)
GL
EL. +31,000
GL (Ground Level)
건물이 위치하는 지반의 레벨
EL을 기준으로 상대적 높이
1층 FL
EL. +35,500
FL (Floor Level)
각 층의 바닥 상단 높이
1층 SL
EL. +35,300
SL (Slab Level)
구조 슬라브의 상단 높이

레벨 생성 순서

1
입면도 또는 단면 뷰 열기 - 프로젝트 브라우저에서 선택
2
건축 탭 > 기준 > 레벨 - 리본 메뉴에서 레벨 도구 선택
3
시작점 클릭 → 끝점 클릭 - 레벨선 범위 지정
4
레벨 이름 및 높이 입력 - 속성 팔레트에서 수정
Grid (수직 기준선)에 대한 기본 용어
A
B
C
1
A1
B1
C1
2
A2
B2
C2
3
A3
B3
C3
세로 그리드
A, B, C, D... (좌→우)
가로 그리드
1, 2, 3, 4... (하→상)

그리드 생성 순서

1
평면도 뷰 열기 - 프로젝트 브라우저에서 선택
2
건축 탭 > 기준 > 그리드 - 리본 메뉴에서 그리드 도구 선택
3
시작점 클릭 → 끝점 클릭 - 그리드선 위치 지정
4
그리드 이름 지정 - 세로: A,B,C / 가로: 1,2,3
⚠️
중요: 레벨과 그리드는 프로젝트 초기에 정확히 설정해야 합니다. 나중에 변경하면 연결된 모든 요소에 영향을 미칩니다.
DEC[Digital Engineering Corporation]|200시간 과정
28
B+CD+P
BIM-IT 융합 과정
Chapter 2: BIM 소프트웨어 이해

패밀리(Family) 이해

Revit 객체 시스템의 핵심 - 카테고리, 패밀리, 타입, 인스턴스

패밀리 계층 구조 (Family Hierarchy)

Category
카테고리
문 (Doors)
Revit이 정의한 요소 분류 체계
→
Family
패밀리
단일 플러시 문
특정 형태/기능을 가진 객체 그룹
→
Type
타입
900 × 2100mm
패밀리 내 크기/재료 변형
→
Instance
인스턴스
1층 현관문
실제 배치된 개별 요소
시스템 패밀리
System Family
Revit 내장, 외부 파일 없음
벽바닥천장지붕계단
로드 가능 패밀리
Loadable Family
.rfa 파일로 로드/편집
문창문가구조명기둥
내부 패밀리
In-Place Family
프로젝트 내에서 직접 생성
특수 형태맞춤 요소

파라미터 유형

타입 파라미터
같은 타입의 모든 인스턴스가 공유
예: 높이, 재료, 비용
인스턴스 파라미터
개별 인스턴스마다 다른 값
예: 레벨, 오프셋, 주석

패밀리 활용 핵심

재사용성
한 번 만든 패밀리는 여러 프로젝트에서 재사용
일관성
타입 변경 시 모든 인스턴스가 자동 업데이트
정보 관리
파라미터를 통해 BIM 데이터 체계적 관리
DEC[Digital Engineering Corporation]|200시간 과정
29
B+CD+P
BIM-IT 융합 과정
Chapter 2: BIM 소프트웨어 이해

뷰(View) 유형 이해

Revit의 다양한 뷰 유형을 이해합니다. 각 뷰는 프로젝트에서 특정 목적에 맞게 설정됩니다.

View 유형

주요 뷰 유형은 다음과 같습니다

구조평면도
구조 설계를 위한 평면도 뷰
기둥, 보, 슬래브 등 구조 요소를 표현합니다.
건축평면도
건축물의 각 층을 수평으로 잘라 보여주는 뷰
벽, 문, 창문, 가구 배치 등을 나타냅니다.
천장평면도
천장의 조명, 배관, 스프링클러 등을 계획하는 뷰
각 층의 천장 구성을 수평적으로 보여줍니다.
면적평면도
건물의 면적을 계산하고 관리하는 뷰
공간 및 구역을 정의하고 면적을 분석합니다.
3D뷰
건축물의 전체 구조를 3차원으로 시각화하는 뷰
설계 요소 간의 입체적 관계를 파악하는 데 유용합니다.
입면도
건물의 외부 또는 내부 벽면을 수직적으로 나타내는 뷰
창문, 문 등의 위치와 외장 재료를 표현합니다.
단면도
건물을 수직적으로 잘라 내부 구조와 구성 요소를 보여주는 뷰
내부 공간과 구조적인 관계를 명확히 할 수 있습니다.
드래프팅뷰
도면 작성에 필요한 2D 정보를 추가하는 뷰
모델과 연결없이 선, 텍스트 등을 추가할 수 있습니다.
범례
도면에서 사용되는 다양한 요소를 시각적으로 설명하는 뷰
모델과 연결없이 여러 시트에 동시적용이 가능합니다.
일람표
프로젝트 내의 요소 데이터를 표 형식으로 나타낸 뷰
모델과 동기화되어 있어 상호간 변경이 가능합니다.
DEC[Digital Engineering Corporation]|200시간 과정
30
B+CD+P
BIM-IT 융합 과정
Chapter 2: BIM 소프트웨어 이해

디테일 뷰 (Detail Views)

상세 뷰로 활용되는 다양한 뷰 타입의 종류와 그 차이점, 사용 방법을 이해합니다.

각 뷰 타입의 특성을 이해하고 실무에서 효율적으로 활용하는 방법을 습득합니다.

+

Callout View

(콜아웃 뷰)
  • 건축 도면에서 특정 영역을 확대하여 더 세밀한 설계 정보를 보여줄 때 사용
  • 모델과 직접 연결되어 실시간으로 업데이트되는 정보를 제공
  • 예시: 상세 단면 확대, 단열층/보강재 세부 사항 표현
SCOPE BOX

Scope Box

(스코프 박스)
  • 모델 내에서 특정 영역의 뷰 경계를 정의하는 도구
  • 여러 뷰에서 동일한 영역을 일관성 있게 표시
  • 예시: 확대 평면도, 코어 확대 평면도 등 영역별 구획화
1500

Drafting View

(드래프팅 뷰)
  • 모델과 별개로 2D 도면 작성, CAD 삽입, 주석 추가에 사용
  • 모델과 연결이 필요 없는 표준 도면이나 상세도 작성
  • 예시: 창호일람표, 재료마감 상세, 범례 등 2D 문서화
💡
Tip
Callout View는 모델 변경 시 자동 업데이트되지만, Drafting View는 수동 관리가 필요합니다.
⚠️
주의
Scope Box 삭제 시 연결된 모든 뷰의 범위 설정이 해제됩니다.
DEC[Digital Engineering Corporation]|200시간 과정
31
B+CD+P
BIM-IT 융합 과정
Chapter 2: BIM 소프트웨어 이해

시트와 뷰 (Views in Sheets)

시트는 프로젝트의 최종 도면을 출력하거나 문서화할 때 사용되는 '종이' 역할을 합니다.

시트에는 여러 뷰 (평면도, 단면도, 3D 뷰 등)를 삽입할 수 있습니다. 각 뷰는 시트에서 배치 및 크기 조절이 가능하며, 시트는 도면과 같은 역할을 합니다.

시트 (Sheet)

도면을 배치하고 출력하기 위한 레이아웃
타이틀블록 + 여러 뷰 + 주석
  • 최종 도면 출력용
  • 여러 뷰를 하나의 시트에 배치
  • 도면 번호, 제목란 포함

뷰 (View)

모델을 다양한 관점에서 표시하는 창
평면도, 입면도, 단면도, 3D 등
  • 모델의 특정 관점 표시
  • 시트에 배치되거나 독립적으로 존재
  • 작업용 / 문서화용 구분

뷰 생성 순서

1
뷰 탭 선택 - 리본 메뉴에서 뷰 탭 클릭
2
뷰 유형 선택 - 평면도, 단면도, 3D 등 선택
3
기준 요소 지정 - 레벨, 단면선 등 기준 설정
4
뷰 속성 설정 - 축척, 상세수준, 가시성 조정
5
뷰 템플릿 적용 - 일관된 표현을 위한 템플릿 적용

시트 생성 순서

1
시트 생성 - 뷰 탭 > 시트 > 새 시트
2
타이틀블록 선택 - 도면 제목란 템플릿 선택
3
뷰 배치 - 프로젝트 브라우저에서 뷰를 드래그
4
뷰 크기/위치 조정 - 시트 내 뷰의 배치 조정
5
주석 추가 - 노트, 심볼, 범례 등 추가
💡
시트는 여러 뷰를 포함할 수 있지만, 뷰는 단독으로 존재하며 시트에 배치되지 않을 수 있습니다.
DEC[Digital Engineering Corporation]|200시간 과정
32
B+CD+P
BIM-IT 융합 과정
Chapter 2: BIM 소프트웨어 이해

파라미터(매개변수) 개요

Revit에서 객체의 속성을 정의하고 관리하는 파라미터 시스템을 이해합니다.

파라미터(Parameter)란?

파라미터는 Revit 요소의 속성값을 저장하고 관리하는 데이터 필드입니다. 높이, 폭, 재료, 비용 등의 정보를 저장하며, 일람표 생성 및 BIM 데이터 관리의 핵심입니다.

T

타입 파라미터

Type Parameter
같은 타입의 모든 인스턴스가 공유
타입 값을 변경하면 해당 타입의 모든 요소가 일괄 변경됩니다.
예시
높이 (Height)문/창문의 기본 높이
폭 (Width)문/창문의 기본 폭
재료 (Material)기본 재료 설정
타입 마크타입 식별 코드
비용 (Cost)단위당 비용
I

인스턴스 파라미터

Instance Parameter
개별 인스턴스마다 다른 값
각 요소별로 독립적인 값을 가지며, 개별 수정이 가능합니다.
예시
레벨 (Level)배치된 층 위치
오프셋 (Offset)기준점으로부터 거리
마크 (Mark)개별 요소 번호
주석 (Comments)메모/설명
위상 (Phase)생성/철거 단계
타입 변경 시
같은 타입의 모든 요소가 함께 변경됨
인스턴스 변경 시
선택한 해당 요소만 개별적으로 변경됨
DEC[Digital Engineering Corporation]|200시간 과정
33
B+CD+P
BIM-IT 융합 과정
Chapter 2: BIM 소프트웨어 이해

공유 파라미터 & 프로젝트 파라미터

사용자 정의 파라미터를 생성하고 관리하는 두 가지 방법을 이해합니다.

📤

공유 파라미터

Shared Parameter
외부 .txt 파일로 관리되어 여러 프로젝트/패밀리에서 공유 가능
외부 파일 저장.txt 파일로 관리
다중 프로젝트 공유여러 프로젝트에서 재사용
일람표 사용 가능일람표 필드로 추가 가능
태그 표시 가능태그에서 값 표시 가능
📁

프로젝트 파라미터

Project Parameter
프로젝트 파일 내부에 저장되어 해당 프로젝트에서만 사용
프로젝트 내부 저장해당 프로젝트에만 존재
빠른 생성외부 파일 불필요
일람표 사용 가능일람표 필드로 추가 가능
태그 표시 불가태그에서 사용 불가

공유 파라미터 생성 순서

1
파라미터 파일 생성 - 관리 탭 > 공유 파라미터 > 생성
2
그룹 생성 - 파라미터 그룹 정의 (예: 프로젝트 정보)
3
파라미터 정의 - 이름, 데이터 유형, 분야 설정
4
프로젝트에 추가 - 프로젝트 파라미터로 추가하여 적용

프로젝트 파라미터 생성 순서

1
프로젝트 파라미터 열기 - 관리 탭 > 프로젝트 파라미터
2
추가 클릭 - 새 파라미터 추가
3
파라미터 설정 - 이름, 분야, 타입/인스턴스 선택
4
카테고리 선택 - 적용할 요소 카테고리 지정
💡
Tip: 태그에서 파라미터 값을 표시하려면 반드시 공유 파라미터로 생성해야 합니다.
DEC[Digital Engineering Corporation]|200시간 과정
34
B+CD+P
BIM-IT 융합 과정
Chapter 2: BIM 소프트웨어 이해

일람표(Schedule) 개요

모델 요소의 파라미터를 표 형태로 추출하여 관리하는 일람표의 개념과 생성 방법을 학습합니다.

일람표(Schedule)란?

BIM 모델에서 요소들의 파라미터 값을 표 형태로 추출하여 보여주는 뷰입니다. 모델과 양방향 동기화되어 수정 시 모델도 함께 변경됩니다.

실시간 동기화자동 수량 산출필터/정렬시트 배치
문 일람표 예시
마크타입폭높이레벨
D01단일문90021001F
D02단일문90021001F
D03양개문180021001F
🚪
문 일람표
마크, 타입, 크기, 재질
🪟
창호 일람표
규격, 위치, 재질 정보
📐
실 일람표
이름, 번호, 면적, 체적
🧱
재료 추출
재료명, 수량, 면적

일람표 생성 순서

1
뷰 탭 > 일람표 - 일람표/수량
2
카테고리 선택 - 문, 창문 등
3
필드 추가 - 파라미터 선택
4
정렬/그룹화 - 데이터 구성
5
서식 지정 - 열 너비, 합계

일람표 핵심 특징

🔄
양방향 동기화 - 수정 시 모델 자동 반영
📊
자동 물량 산출 - 수량, 면적, 체적 계산
🔍
필터/정렬 - 조건별 데이터 필터링
📄
시트 배치 - 도면 시트에 배치 가능
💡
Tip: 일람표에서 요소를 선택하면 모델에서 해당 요소가 하이라이트되어 쉽게 찾을 수 있습니다.
DEC[Digital Engineering Corporation]|200시간 과정
35
B+CD+P
BIM-IT 융합 과정
Chapter 2: BIM 소프트웨어 이해

파라미터 활용 및 데이터 관리

파라미터를 활용한 물량 산출, 태그 표시, 필터링 및 외부 시스템 연동 방법을 학습합니다.

📊

물량 산출

재료/요소별 수량을 자동 계산하여 견적에 활용

콘크리트 체적철근 중량마감재 면적
🏷️

태그 표시

도면에 문번호, 실이름 등 정보를 자동 표시

문 마크실 이름창호 규격
🎨

필터/색상

파라미터 값에 따라 요소 필터링 및 색상 지정

층별 구분상태별 표시공종별 색상
📤

데이터 교환

Excel, DB 등 외부 시스템과 데이터 연동

Excel 내보내기DB 연동API 활용

파라미터 데이터 흐름

🏗️ BIM 모델 요소 (파라미터 값)
↕ 양방향
📋 일람표
🏷️ 태그
🎨 필터
↓ 출력
📤 Excel / PDF / 도면 출력

외부 시스템 연동

📊
Excel 연동기본
Excel로 내보내기/가져오기
🗄️
Database 연동고급
SQL/NoSQL DB 동기화
🔌
API 활용개발
Revit API 자동화
☁️
Cloud 플랫폼협업
BIM 360, ACC 연동
⚠️
주의: 일람표에서 값 수정 시 모델도 변경됩니다. 대량 수정 전 백업 필수!
💡
Tip: 공유 파라미터로 태그 표시가 가능하고, 프로젝트간 재사용할 수 있습니다.
DEC[Digital Engineering Corporation]|200시간 과정
36
B+CD+P
BIM-IT 융합 과정
Chapter 2: BIM 소프트웨어 이해

워크셋(Worksets) 개요

Revit의 팀 협업 기능인 워크셋의 개념과 작업 방식을 이해합니다.

워크셋(Workset)이란?

워크셋은 Revit의 중앙 파일 기반 협업 시스템입니다. 하나의 프로젝트 파일을 여러 팀원이 동시에 작업할 수 있도록 모델 요소를 논리적 그룹으로 분할하여 관리합니다.

🏢
중앙 모델
Central Model
👥
동시 작업
여러 사용자가 동일 프로젝트를 동시에 편집
🔒
요소 소유권
편집 중인 요소는 다른 사용자가 수정 불가
🔄
실시간 동기화
변경사항을 중앙 모델과 즉시 동기화
📊
작업 분할
건축/구조/MEP 등 분야별 워크셋 구성

워크셋 작업 흐름

1
중앙 모델 생성 - 워크셋 활성화 후 저장
2
로컬 복사본 생성 - 각 사용자가 로컬에 복사
3
요소 편집 - 워크셋/요소 소유권 획득 후 작업
4
중앙과 동기화 - 변경사항 저장 및 업데이트

중앙 모델 구조

🏢 Central Model (서버)
↕ 동기화
💻 사용자 A
Local Copy
💻 사용자 B
Local Copy
💻 사용자 C
Local Copy
💡
Tip: 워크셋 작업 시 주기적으로 "중앙과 동기화"를 실행하여 충돌을 최소화하세요. 작업 종료 시 반드시 소유권을 반환해야 다른 사용자가 해당 요소를 편집할 수 있습니다.
DEC[Digital Engineering Corporation]|200시간 과정
37
B+CD+P
BIM-IT 융합 과정
Chapter 2: BIM 소프트웨어 이해

링크(Links) 및 협업 방식 비교

Revit 링크 기능과 워크셋과의 차이점을 비교하여 프로젝트에 적합한 협업 방식을 선택합니다.

링크(Link)란?

링크는 외부 파일을 현재 프로젝트에 참조하는 방식입니다. 원본 파일은 독립적으로 유지되며, 각 분야(건축/구조/MEP)를 별도 파일로 관리하여 대규모 프로젝트에 적합합니다.

🏗️
Revit 링크 - 다른 Revit 파일 참조
📐
CAD 링크 - DWG/DXF 파일 참조
🌐
IFC 링크 - IFC 파일 참조

워크셋 vs 링크 비교

비교 항목
워크셋 (Worksets)
링크 (Links)
파일 구조
📁 단일 중앙 파일
🔗 별도 파일 참조
협업 방식
👥 동시 작업 (실시간)
🔀 분리 작업 후 연결
적합 규모
🏠 중소규모 프로젝트
🏢 대규모/복잡 프로젝트
성능
⚖️ 파일 크기 증가
🚀 개별 파일 경량화
관리
🎯 중앙 집중 관리
🔄 분산 관리
워크셋 추천
팀원 수가 적고, 실시간 협업이 필요하며, 파일 관리를 단순화하고 싶을 때
링크 추천
대규모 프로젝트, 다수의 분야 협업, 파일 성능 최적화가 중요할 때
DEC[Digital Engineering Corporation]|200시간 과정
38
B+CD+P
BIM-IT 융합 과정
Chapter 2: BIM 소프트웨어 이해

시트(Sheet) 및 타이틀블록

Revit에서 도면 출력의 기본 단위인 시트를 생성하고 관리하는 방법을 학습합니다.

시트(Sheet)란?

시트는 도면 출력의 기본 단위입니다. 여러 뷰를 뷰포트로 배치하여 완성된 도면을 구성합니다.

📋
Sheet = 뷰포트 + 타이틀블록

시트 생성 프로세스

1
시트 생성
새 시트 생성
→
2
타이틀블록
용지 크기 선택
→
3
뷰 배치
드래그앤드롭
→
4
정보 입력
파라미터 설정

타이틀블록 구성요소

프로젝트 정보
• 프로젝트명
• 발주처
• 위치
도면 정보
• 도면번호
• 도면명
• 축척
작성 정보
• 작성자
• 검토자
• 승인자
날짜/버전
• 작성일
• 수정일
• 리비전

뷰포트(Viewport) 설정

뷰 축척 - 1:100, 1:50 등 출력 축척
뷰 제목 - 뷰 이름 및 축척 표시
자르기 영역 - 경계선 표시 여부
뷰 템플릿 - 가시성/그래픽 적용
💡
Tip: 타이틀블록 파라미터는 프로젝트 정보(관리 탭)와 연동되어 모든 시트에 자동 반영됩니다.
DEC[Digital Engineering Corporation]|200시간 과정
39
B+CD+P
BIM-IT 융합 과정
Chapter 2: BIM 소프트웨어 이해

주석 도구 (치수, 태그, 텍스트)

도면에 정보를 추가하는 다양한 주석 도구의 종류와 활용 방법을 학습합니다.

📝

주석(Annotate) 탭

주석 탭에서 치수, 태그, 텍스트, 기호 등 2D 주석 요소를 추가합니다. 주석은 뷰에 종속되어 해당 뷰에서만 표시됩니다.

↔

치수선

정렬 치수
요소 면에 평행하게 거리 측정
DI
선형 치수
수평/수직 방향으로 거리 측정
DL
각도 치수
두 선 또는 면 사이의 각도
DA
반지름/직경
호 또는 원의 크기 표시
DR
호 길이
곡선 호의 실제 길이
고도점
특정 점의 레벨 높이 표시
EL
🏷️

태그 (Tag)

🚪
문 태그
문 번호, 타입, 크기 표시
🪟
창 태그
창호 정보 및 사양 표시
🏠
실 태그
실 이름, 면적, 번호 표시
🧱
벽 태그
벽 타입 및 구조 정보
🎨
재료 태그
마감재 및 재료 정보
🏷️
다중 카테고리
범용 태그 (여러 요소)
A

텍스트 & 기호

A
텍스트 노트
자유 텍스트 입력
↗
지시선
화살표 + 텍스트 조합
⊖
단면 기호
단면 절단 위치 표시
◉
입면 기호
입면 뷰 방향 표시
☁
구름 수정
변경사항 하이라이트
📊
범례
도면 기호 설명 표
💡
Tip: 태그는 요소의 파라미터 값을 자동으로 표시합니다. "모두 태그" 기능으로 뷰 내 모든 요소에 한 번에 태그를 추가할 수 있습니다.
DEC[Digital Engineering Corporation]|200시간 과정
40
B+CD+P
BIM-IT 융합 과정
Chapter 2: BIM 소프트웨어 이해

상세도 작업 및 도면 출력

2D 상세도 작성 방법과 다양한 도면 출력/내보내기 옵션을 학습합니다.

상세도 유형

🔍
상세 콜아웃
모델 뷰의 특정 영역을 확대하여 상세 표현
✏️
제도 뷰
모델과 무관한 2D 전용 상세도 작성
📐
상세 구성요소
2D 상세 패밀리로 단면 디테일 표현
🔄
반복 상세
벽돌, 타일 등 패턴 반복 요소 표현

상세선 도구

상세선 - 2D 선 그리기 (직선, 호, 원 등)
영역 - 채움 패턴 영역 생성
단열재 - 단열재 패턴 자동 생성
마스킹 영역 - 배경 요소 가리기

도면 출력 및 내보내기 형식

📄
PDF
범용 문서 형식, 배포 및 검토용
📐
DWG/DXF
AutoCAD 호환, 2D 도면 교환
🔷
DWF
Autodesk 경량 형식, 마크업 협업
🌐
IFC
개방형 BIM 표준, 타 소프트웨어 연계
🔗
NWC
Navisworks 연동, 간섭검토용

인쇄 설정 (Ctrl + P)

📏
용지 크기 : A0, A1, A2, A3, A4 등
📋
인쇄 범위 : 현재 창, 선택 뷰/시트, 전체
🔍
축척 : 시트에 맞춤 / 원본 크기
🎨
색상 : 컬러 / 그레이스케일 / 흑백

내보내기 팁

PDF 일괄 출력
인쇄 > 선택 뷰/시트에서 여러 시트를 선택하여 하나의 PDF로 통합 출력
DWG 내보내기 설정
내보내기 설정에서 레이어 매핑, 선 가중치, 해치 패턴 등 세부 옵션 조정 가능
DEC[Digital Engineering Corporation]|200시간 과정
41
03
Chapter

BIM-IT 데이터 이해

Revit 데이터 구조와 파라메트릭 원리

7
HOURS
6
SECTIONS
3.1Revit 데이터 모델 이해
3.2Revit 데이터의 이해
3.3Element와 Parameter 체계
3.4Geometry와 Location 개념
3.5Family의 파라메트릭 원리
3.6파라미터 기반 형상 제어
B+CD+P
BIM-IT 융합 과정
Chapter 3: BIM-IT 데이터 이해

BIM-IT 데이터 이해

강의계획서 - Revit 데이터 구조와 파라메트릭 원리

1. 강의 개요

과목명
BIM-IT 데이터 이해
교육시간
7시간 (이론 4H + 실습 3H)
대상
Revit 기초 학습자 및 API 개발 입문자
선수학습
Chapter 2. BIM 소프트웨어 이해
실습환경
Revit 2025 + Revit Lookup

2. 지도목표

Revit의 내부 데이터 구조를 이해하고, API 개발과 파라메트릭 패밀리 설계를 위한 기초 역량을 습득한다.
1Revit 데이터 구조(Document-Element-Parameter) 이해
2Category, Family, Type, Instance 계층 관계 파악
3Element와 Parameter 체계 분석 및 활용
4Geometry와 Location 개념 이해
5Family의 파라메트릭 원리 학습

3. 사용교재 (자료)

주교재
본 교육자료
참고
Revit API Docs
실습
Revit Lookup

4. 주요 내용 (학습활동)

3.1Revit 데이터 모델 이해이론1H
Document-Element-Parameter 구조 / Category 계층 관계
3.2Revit 데이터의 이해이론+실습1H
Element 내부 구조 / Snoop Lookup 활용
3.3Element와 Parameter 체계이론1H
Model vs Annotation / Instance vs Type Parameter
3.4Geometry와 Location 개념이론+실습1H
좌표계 / XYZ Point, Vector / Solid, Face, Edge
3.5Family의 파라메트릭 원리실습2H
Family Editor / 참조 평면 / 구속조건
3.6파라미터 기반 형상 제어실습1H
Formula / 조건문 / 가시성 Parameter
평가 기준
이론평가100%
Revit 데이터 구조 및 파라메트릭 원리 이해도 평가
DEC[Digital Engineering Corporation]|200시간 과정
43
B+CD+P
BIM-IT 융합 과정
Chapter 3: BIM-IT 데이터 이해

Revit 데이터 모델 이해

Revit은 단순한 3D 모델링 도구가 아닌, 건물 정보를 담는 데이터베이스입니다.

Revit = Building Information Database

Revit 파일(.rvt)은 단순한 3D 형상이 아니라, 건물을 구성하는 모든 요소(Element)와 그 요소들의 속성(Parameter)을 저장하는 관계형 데이터베이스입니다.

기존 3D CAD

형상 중심: 선, 면, 솔리드 등 기하학적 도형
정보 부재: 벽인지 바닥인지 구분 불가
수동 관리: 물량, 일람표 별도 작성

Revit BIM

정보 중심: 벽, 문, 창 등 건축 요소
속성 포함: 재료, 두께, 높이 등 파라미터
자동 연동: 물량, 일람표 자동 추출

Revit 데이터의 구성 요소

1
Element (요소)
벽, 문, 창, 기둥 등
건물 구성 객체
2
Parameter (속성)
높이, 두께, 재료 등
요소의 특성 정보
3
Relationship (관계)
벽-문 호스트 관계,
레벨 구속 등 연결
💡
핵심: Revit API 개발의 핵심은 이 데이터베이스에서 Element를 조회하고 Parameter를 읽고 쓰는 것입니다.
DEC[Digital Engineering Corporation]|200시간 과정
44
B+CD+P
BIM-IT 융합 과정
Chapter 3: BIM-IT 데이터 이해

Document - Element - Parameter 구조

Revit 데이터의 3계층 구조를 이해합니다.

Revit 데이터 계층 구조

Document
.rvt 파일 전체
→
Element
개별 객체
→
Parameter
속성 값

Document

Revit 프로젝트 파일(.rvt)의 최상위 객체
• 모든 Element 포함
• 프로젝트 설정 정보
• View, Family 정의
• Transaction 관리

Element

Revit 모델을 구성하는 개별 객체 단위
• 고유 Element ID 보유
• Category 소속
• 형상(Geometry) 포함
• 위치(Location) 정보

Parameter

Element의 특성을 정의하는 속성 값
• 이름(Name)과 값(Value)
• 데이터 타입 지정
• Instance / Type 구분
• 읽기전용 / 편집가능
API 접근 패턴 (C#)
Document doc = UIApplication.ActiveUIDocument.Document;
Element wall = doc.GetElement(elementId);
Parameter height = wall.get_Parameter(BuiltInParameter.WALL_HEIGHT);
DEC[Digital Engineering Corporation]|200시간 과정
45
B+CD+P
BIM-IT 융합 과정
Chapter 3: BIM-IT 데이터 이해

Category - Family - Type - Instance

Revit Element의 4단계 분류 체계를 이해합니다.

Element 분류 계층 구조

Category
요소의 대분류
→
Family
동일 유형의 그룹
→
Type
세부 사양 정의
→
Instance
실제 배치된 객체
C

Category

요소의 대분류
예: Walls, Doors, Windows
F

Family

동일 유형의 그룹
예: Basic Wall, Single Flush
T

Type

세부 사양 정의
예: Generic - 200mm
I

Instance

실제 배치된 객체
예: 1층 외벽 #12345

실제 예시: 문(Door) 요소

Category
Doors
Family
Single Flush
Type
900 x 2100
Instance
ID: 456789
Element ID
모든 Element는 프로젝트 내에서 고유한 정수 ID를 가집니다. API에서 Element를 조회하는 핵심 키(Key)입니다.
DEC[Digital Engineering Corporation]|200시간 과정
46
B+CD+P
BIM-IT 융합 과정
Chapter 3: BIM-IT 데이터 이해

Revit Element 내부 구조

Element 객체의 주요 속성과 종류를 이해합니다.

Element란?

Revit에서 모든 객체의 기본 단위입니다. 벽, 문, 창뿐만 아니라 뷰, 레벨, 그리드, 심지어 재료까지 모두 Element입니다.

Element 주요 속성

Id고유 식별자 (ElementId)
ElementId
Name요소 이름
String
Category요소가 속한 카테고리
Category
Parameters모든 파라미터 컬렉션
ParameterSet
Location위치 정보 (Point/Curve)
Location
LevelId연결된 레벨
ElementId

Element 종류

Model Element
Wall, Floor, Roof, Column, Beam
Annotation
Dimension, Tag, Text Note
Datum
Level, Grid, Reference Plane
View
Floor Plan, Section, 3D View, Sheet
⚠️
주의: Element는 추상 클래스입니다. 실제로는 Wall, Door, FamilyInstance 등 구체적인 하위 클래스로 존재합니다.
DEC[Digital Engineering Corporation]|200시간 과정
47
B+CD+P
BIM-IT 융합 과정
Chapter 3: BIM-IT 데이터 이해

Revit Lookup 활용

Revit 데이터 구조를 탐색하는 필수 도구입니다.

🔬

Revit Lookup (RevitLookup)

Revit API 개발자를 위한 데이터 탐색 애드인입니다. Element, Parameter, Geometry 등 내부 데이터를 직접 확인할 수 있습니다.

주요 기능

Snoop DB
전체 데이터베이스 탐색
Snoop Current Selection
선택한 요소 분석
Snoop Active View
현재 뷰 정보 확인
Snoop Application
애플리케이션 객체 탐색

확인 가능한 정보

Element 정보
Element ID / Category / Family / Type
Parameter 값
Built-in Parameters / Shared Parameters / Family Parameters
Geometry 데이터
Solid / Face / Edge / Curve
Location 정보
LocationPoint / LocationCurve / BoundingBox

사용 방법

1
요소 선택
Revit에서 분석할 요소 선택
2
Lookup 실행
Add-ins > Revit Lookup
3
데이터 탐색
트리 구조에서 정보 확인
4
코드 작성
확인한 정보로 개발
💡
Tip: GitHub에서 무료로 다운로드 가능합니다. API 개발 시 필수 도구이므로 반드시 설치하세요.
DEC[Digital Engineering Corporation]|200시간 과정
48
B+CD+P
BIM-IT 융합 과정
Chapter 3: BIM-IT 데이터 이해

Model Element vs Annotation Element

Revit Element의 두 가지 주요 분류를 이해합니다.

Revit Element는 크게 Model Element(실제 건물 구성 요소)와 Annotation Element(도면 표기 요소)로 구분됩니다.

🏗️

Model Element

특징
  • 실제 건물의 물리적 요소
  • 3D 형상(Geometry)을 가짐
  • 모든 뷰에서 동일하게 표현
  • 물량 산출 대상
예시
Wall (벽)
Floor (바닥)
Door (문)
Window (창)
Column (기둥)
Beam (보)
📝

Annotation Element

특징
  • 도면 표기용 2D 요소
  • 뷰에 종속 (View-Specific)
  • 축척에 따라 크기 조절
  • 시공/물량에 미포함
예시
Dimension (치수)
Tag (태그)
Text Note (문자)
Detail Line
Symbol
Filled Region

Host Element vs Component

Host: 다른 요소를 포함하는 요소 (벽, 바닥, 천장)
Component: Host에 삽입되는 요소 (문, 창)
DEC[Digital Engineering Corporation]|200시간 과정
49
B+CD+P
BIM-IT 융합 과정
Chapter 3: BIM-IT 데이터 이해

Instance Parameter vs Type Parameter

Parameter의 두 가지 범위를 이해합니다.

Instance Parameter는 각 요소마다 다른 값을 가질 수 있고, Type Parameter는 같은 Type의 모든 요소가 동일한 값을 공유합니다.

Instance Parameter

3m
벽 A
4m
벽 B
5m
벽 C
각 벽의 높이가 다름
예시: 높이, 위치(X,Y,Z), 코멘트, Mark 번호

Type Parameter

200
벽 A
200
벽 B
200
벽 C
모든 벽의 두께가 동일
예시: 두께, 재료, 구조, 단열 성능

비교 요약

구분
Instance Parameter
Type Parameter
적용 범위
개별 요소에만 적용
동일 Type의 모든 요소에 적용
수정 영향
해당 요소만 변경
같은 Type 전체 변경
예시
높이, 위치, 코멘트
두께, 재료, 색상
API 접근
element.get_Parameter()
elementType.get_Parameter()
DEC[Digital Engineering Corporation]|200시간 과정
50
B+CD+P
BIM-IT 융합 과정
Chapter 3: BIM-IT 데이터 이해

Parameter 종류와 데이터 타입

다양한 Parameter 종류와 데이터 타입을 이해합니다.

Parameter 종류

Built-in Parameter
Revit에 기본 내장된 파라미터
예: WALL_HEIGHT, DOOR_WIDTH
Shared Parameter
여러 프로젝트/패밀리에서 공유 가능
예: 사용자 정의 코드, 단가 정보
Project Parameter
특정 프로젝트에서만 사용
예: 프로젝트 특화 관리 정보
Family Parameter
패밀리 내부에서 정의
예: 형상 제어, 가시성 설정

Parameter 데이터 타입

Aa
String
문자열: "벽체-01"
#
Integer
정수: 100
.
Double
실수: 3.14159
🔗
ElementId
요소 참조: Id: 456789
📍
XYZ
3D 좌표: (10, 20, 0)
✓
Boolean
참/거짓: True/False
⚠️
주의: Revit 내부에서 길이 단위는 항상 Feet입니다. API 작업 시 단위 변환(UnitUtils)을 반드시 사용하세요.
DEC[Digital Engineering Corporation]|200시간 과정
51
B+CD+P
BIM-IT 융합 과정
Chapter 3: BIM-IT 데이터 이해

Geometry의 개념

Revit Element의 3D 형상(Geometry) 구조를 이해합니다.

Geometry란?

Revit Element가 가지고 있는 3D 형상 정보입니다. 벽, 문, 창 등의 요소가 실제로 어떤 모양인지를 정의하며, API를 통해 이 형상을 추출하고 분석할 수 있습니다.

Geometry 구성 요소

🧊Solid
폐곡면으로 둘러싸인 3D 볼륨
예: 벽체, 슬래브, 기둥
⬜Face
Solid의 표면을 구성하는 면
예: 벽의 내부면/외부면
📏Edge
Face를 구성하는 경계선
예: 창문 테두리
〰️Curve
선, 호, 스플라인 등
예: 상세선, 모델선
📍Point
3D 공간의 좌표점
예: XYZ 위치
🔺Mesh
삼각형 면의 집합
예: 복잡한 형상 표현

Geometry 계층 구조

GeometryElement
최상위 컨테이너
→
GeometryInstance
변환 정보 포함
→
Solid / Curve
실제 형상
→
Face / Edge
세부 요소
Geometry 추출 패턴 (C#)
Options opt = new Options();
GeometryElement geom = element.get_Geometry(opt);
foreach (GeometryObject obj in geom) { ... }
DEC[Digital Engineering Corporation]|200시간 과정
52
B+CD+P
BIM-IT 융합 과정
Chapter 3: BIM-IT 데이터 이해

Location의 개념

Revit Element의 위치(Location) 정보를 이해합니다.

Location이란?

Element가 3D 공간에서 어디에 위치하는지를 정의합니다. Geometry가 '어떤 모양'인지라면, Location은 '어디에 있는지'를 나타냅니다.

LocationPoint

📍
Point (X, Y, Z)
설명: 단일 점 위치
해당 요소: 문, 창, 가구, 기둥

LocationCurve

StartPoint → EndPoint
설명: 선형 경로 위치
해당 요소: 벽, 보, 파이프, 덕트

Location 주요 속성

LocationPoint
  • Point: XYZ 좌표
  • Rotation: 회전 각도
  • Move(): 이동 메서드
LocationCurve
  • Curve: 선형 경로
  • ElementsAtJoin: 연결된 요소
  • Move(), Rotate()
Location 활용 예시 (C#)
Location loc = element.Location;
if (loc is LocationPoint lp)
XYZ point = lp.Point; // 점 위치
else if (loc is LocationCurve lc)
Curve curve = lc.Curve; // 선형 경로
💡
팁: 벽의 길이를 구하려면 LocationCurve의 Curve.Length를 사용합니다. 단, 내부 단위는 Feet이므로 변환이 필요합니다.
DEC[Digital Engineering Corporation]|200시간 과정
53
B+CD+P
BIM-IT 융합 과정
Chapter 3: BIM-IT 데이터 이해

Family의 개념과 구조

Revit Family의 기본 개념과 역할을 이해합니다.

Family란?

Family는 Revit에서 동일한 특성을 공유하는 요소들의 그룹입니다. 문, 창, 가구 등의 요소는 각각의 Family에 속하며, Family는 해당 요소의 형상, 파라미터, 동작 방식을 정의합니다.

Family 계층 구조

Category
문 (Doors)
→
Family
단일 여닫이문
→
Type
900 x 2100
→
Instance
1층 문 #1
🎨
형상 정의
요소의 3D 모양과 2D 표현 방식을 정의합니다.
⚙️
파라미터 정의
크기, 재료 등 수정 가능한 속성들을 정의합니다.
🔄
동작 방식
호스트 관계, 커넥터 등 행동 양식을 정의합니다.

Family 파일

.rfa 파일
Family Editor에서 생성한 개별 Family 파일입니다. 문, 창, 가구 등 로드 가능한 Family에 사용됩니다.
.rvt 프로젝트 내장
시스템 Family(벽, 바닥 등)는 프로젝트 파일에 내장되어 있으며 별도 파일로 저장할 수 없습니다.
DEC[Digital Engineering Corporation]|200시간 과정
54
B+CD+P
BIM-IT 융합 과정
Chapter 3: BIM-IT 데이터 이해

Family 유형과 종류

Revit의 3가지 Family 유형을 이해합니다.

System Family

Revit에 내장된 시스템 요소
.rfa 파일 없음, 프로젝트 내에서만 편집
예시
Wall (벽)Floor (바닥)Ceiling (천장)Roof (지붕)Stair (계단)

Loadable Family

별도 파일로 로드하는 컴포넌트
.rfa 파일, Family Editor에서 편집
예시
Door (문)Window (창)Furniture (가구)Equipment (장비)Lighting (조명)

In-Place Family

프로젝트 내에서 직접 생성
해당 프로젝트에서만 사용 가능
예시
특수 형상곡면 천장비정형 몰딩맞춤형 오브젝트

Family 유형 비교

구분
System
Loadable
In-Place
파일 형식
.rvt 내장
.rfa 파일
.rvt 내장
재사용
프로젝트 내
모든 프로젝트
해당 프로젝트만
편집 위치
프로젝트
Family Editor
프로젝트
DEC[Digital Engineering Corporation]|200시간 과정
55
B+CD+P
BIM-IT 융합 과정
Chapter 3: BIM-IT 데이터 이해

파라메트릭 Family의 원리

파라미터 값에 따라 형상이 변화하는 원리를 이해합니다.

파라메트릭 모델링이란?

형상을 파라미터(변수)로 제어하는 모델링 방식입니다. 폭, 높이 등의 값을 변경하면 형상이 자동으로 업데이트됩니다. 이를 통해 하나의 Family로 다양한 크기/형태의 Type을 생성할 수 있습니다.

파라메트릭 Family의 구성 요소

📐
참조 평면
형상의 기준이 되는 평면
📏
치수 구속
형상 간의 거리/크기 관계
🔗
파라미터 연결
치수와 파라미터 값 연결
📊
수식
파라미터 간 수학적 관계

파라메트릭 동작 원리

1. 파라미터
Width = 900mm
→
2. 치수 연결
치수 = Width
→
3. 형상 갱신
Geometry 변화

수식 활용 예시

Frame_Width = Width * 0.1
Height = Width * 1.5
Glass_Area = Width * Height

조건부 가시성

파라미터 값에 따라 형상을 표시/숨김 처리
Show_Handle = Yes → 손잡이 표시
Panel_Count = 2 → 2패널 형상
💡
핵심: 잘 설계된 파라메트릭 Family는 하나의 .rfa 파일로 수십 가지 Type을 생성할 수 있어 모델링 효율과 파일 관리에 큰 이점을 제공합니다.
DEC[Digital Engineering Corporation]|200시간 과정
56
B+CD+P
BIM-IT 융합 과정
Chapter 3: BIM-IT 데이터 이해

API를 통한 파라미터 제어

Revit API로 파라미터 값을 읽고 수정하는 방법을 학습합니다.

Revit API를 통해 Element의 Parameter 값을 읽고(Get), 수정(Set)할 수 있습니다. 이를 통해 대량의 요소를 자동화하거나 외부 데이터와 연동할 수 있습니다.

파라미터 접근 방식

BuiltInParameter
Revit 기본 파라미터
WALL_HEIGHT, DOOR_WIDTH
Parameter Name
파라미터 이름으로 접근
LookupParameter("높이")
GUID
Shared Parameter 고유 ID
get_Parameter(guid)
파라미터 읽기 (Get)
Parameter p = wall.get_Parameter(
BuiltInParameter.WALL_USER_HEIGHT_PARAM);
double height = p.AsDouble();
string name = p.AsString();
파라미터 쓰기 (Set)
using (Transaction t = ...)
{
t.Start("Set Height");
p.Set(3000 / 304.8); // mm→ft
t.Commit();
}

데이터 타입별 Get/Set 메서드

String
Get: AsString()
Set: Set(string)
Integer
Get: AsInteger()
Set: Set(int)
Double
Get: AsDouble()
Set: Set(double)
ElementId
Get: AsElementId()
Set: Set(ElementId)
ValueString
Get: AsValueString()
Set: SetValueString()
⚠️
주의: 파라미터 값 수정은 반드시 Transaction 내부에서 수행해야 합니다. 또한 읽기 전용(Read-Only) 파라미터는 수정할 수 없습니다.
DEC[Digital Engineering Corporation]|200시간 과정
57
B+CD+P
BIM-IT 융합 과정
Chapter 3: BIM-IT 데이터 이해

파라미터 제어 활용 사례

API를 통한 파라미터 제어의 실제 활용 예시입니다.

📝
일괄 값 수정
선택한 모든 벽의 높이를 한 번에 변경
예: 벽 100개의 높이를 3m로 일괄 설정
📊
Excel 연동
스프레드시트 데이터로 파라미터 업데이트
예: 일람표 데이터를 모델에 동기화
🔢
자동 넘버링
규칙에 따라 요소에 번호 자동 부여
예: 문/창에 순차적 Mark 번호 할당
🎯
조건부 설정
특정 조건에 따라 값을 다르게 설정
예: 층별로 다른 마감재 자동 적용
실습 예제: 선택한 벽의 높이 일괄 변경 (C#)
ICollection<ElementId> ids = uidoc.Selection.GetElementIds();
using (Transaction t = new Transaction(doc))
{
t.Start("벽 높이 변경");
foreach (ElementId id in ids)
{
Wall wall = doc.GetElement(id) as Wall;
if (wall != null) wall.get_Parameter(BuiltInParameter.WALL_USER_HEIGHT_PARAM).Set(3000/304.8);
}
t.Commit();
}

핵심 정리

데이터 구조
Document → Element → Parameter
요소 분류
Category → Family → Type → Instance
Geometry & Location
형상 정보 + 위치/방향 정보
파라메트릭 Family
파라미터로 형상 제어하는 원리
DEC[Digital Engineering Corporation]|200시간 과정
58
04
Chapter

BIM-IT 기술 융합 개요

건설산업 트렌드와 인재상

2
HOURS
4
SECTIONS
4.1과정 준비 및 마음가짐
4.2건설산업 현황과 BIM 트렌드
4.3AI 시대의 일자리 변화
4.4기업이 원하는 인재상
B+CD+P
BIM-IT 융합 과정
Chapter 4: BIM-IT 기술 융합 개요

솔직한 안내

이 과정이 어려운 3가지 이유를 먼저 말씀드립니다.

⚠️
미리 알려드립니다
이 과정은 쉽지 않습니다. 하지만 어려운 만큼 성장도 큽니다. 지금부터 어떤 도전이 기다리는지 솔직하게 안내해 드리겠습니다.
🧠
사고방식 전환
수동 작업에서 자동화 사고로
•반복 클릭 → 코드 한 줄
•수작업 습관 버리기
•효율성 우선 마인드셋
💻
코딩 장벽
완전히 새로운 언어 학습
•C#/Python 기초부터
•변수, 조건문, 반복문
•API 개념 이해
⚔️
익숙함과의 싸움
기존 방식을 버려야 함
•"원래 이렇게 했는데..."
•편한 방식 포기하기
•새로운 워크플로우 적응
그래서 왜 이 과정을 들어야 할까요?
어려운 만큼, 할 수 있는 사람이 적습니다.
희소성이 곧 경쟁력입니다.
수강생 중
상위 10%
취업/이직 성공
연봉 상승
+30%
평균 기대 효과
업무 효율
3배
자동화 후 생산성
DEC[Digital Engineering Corporation]|200시간 과정
60
B+CD+P
BIM-IT 융합 과정
Chapter 4: BIM-IT 기술 융합 개요

감정의 롤러코스터

학습 과정에서 겪게 될 예상 감정 흐름입니다. 미리 알면 덜 흔들립니다.

🌟
😵
😰
💪
🚀
1-2주
3-4주
5-6주
7-8주
9-10주
설렘
새로운 시작에 대한 기대감
"드디어 코딩을 배운다!"
혼란
용어와 개념이 쏟아짐
"이게 다 뭐지..."
좌절
에러의 늪에 빠짐
"나는 안 되나봐..."
적응
패턴이 보이기 시작
"아, 이런 거였구나!"
성장
스스로 문제 해결
"내가 해냈다!"
💡
가장 힘든 5-6주차를 버티면 됩니다
모든 수강생이 비슷한 시기에 어려움을 겪습니다. 이 시기를 넘기면 급격히 성장합니다.
혼자가 아닙니다. 함께 가면 더 멀리 갑니다.
DEC[Digital Engineering Corporation]|200시간 과정
61
B+CD+P
BIM-IT 융합 과정
Chapter 4: BIM-IT 기술 융합 개요

생존 가이드

이 과정을 성공적으로 완수하기 위한 실전 팁입니다.

❓
01질문을 두려워하지 마세요
"바보 같은 질문은 없습니다"
모르는 것을 숨기면 더 늦게 배웁니다. 강사와 동료에게 적극적으로 질문하세요.
⏰
02매일 30분이라도 코드를 보세요
"꾸준함이 실력입니다"
하루에 8시간보다 매일 30분이 더 효과적입니다. 습관이 실력을 만듭니다.
🔍
03에러 메시지를 읽으세요
"에러는 선생님입니다"
에러 메시지에 해결책이 있습니다. 빨간 글씨를 두려워하지 말고 읽어보세요.
👥
04동료와 함께하세요
"혼자보다 함께가 빠릅니다"
스터디 그룹을 만들고, 서로의 코드를 리뷰하세요. 설명하면서 더 배웁니다.
📝 우리의 약속
과정 중 포기하고 싶은 순간이 올 것입니다.
그때 이 페이지를 다시 펼쳐보세요.
🎯
끝까지 완주하겠습니다
🤝
동료와 함께하겠습니다
💪
포기하지 않겠습니다
"200시간 후, 당신은 완전히 다른 사람이 됩니다"
DEC[Digital Engineering Corporation]|200시간 과정
62
B+CD+P
BIM-IT 융합 과정
Chapter 4: BIM-IT 기술 융합 개요

건설산업 생산성 위기

22년간 건설산업의 생산성은 거의 제자리입니다.

* 출처: McKinsey Global Institute
산업별 생산성 증가율 (1995-2017, 22년간)
제조업
+90%
자동화·로봇·AI 도입
전체 평균
+50%
서비스·금융 포함
건설업
+10%
수작업 중심 유지
⚠️
22년간 단 10% 성장
제조업 대비 9배 격차
디지털화가 가장 늦은 산업
📉생산성 격차
9배
건설업 +10% vs 제조업 +90%
같은 22년, 압도적 격차 발생
연평균 0.45% vs 4.1% 성장률
💰IT 투자 비율
1%
건설업의 연간 매출 대비 IT 투자
타 산업 평균 3.5% 대비 현저히 낮음
금융 7% / 제조 4% / 건설 1%
🏗️디지털화 수준
최하위
전 산업 중 디지털 전환 지수
농업 다음으로 가장 낮은 수준
자산 디지털화율 5% 미만
DEC[Digital Engineering Corporation]|200시간 과정
63
B+CD+P
BIM-IT 융합 과정
Chapter 4: BIM-IT 기술 융합 개요

건설산업 구조적 비효율

왜 건설업의 생산성이 낮을까요? 구조적인 문제들이 있습니다.

* 출처: McKinsey, Reinventing Construction (2017)
🔄
12-20%재작업
전체 공사비 중 재작업 비용
설계 변경, 시공 오류로 인한 재시공
🗑️
10-15%자재 폐기
구매 자재 중 폐기 비율
과다 발주, 설계 변경으로 인한 손실
📋
80%설계 오류
설계 단계에서 발생하는 오류
시공 전 발견 실패 → 현장에서 수정
⏱️
30%대기 시간
작업자의 비생산적 시간
정보 부족, 자재 대기, 의사결정 지연
비효율의 악순환
📊
정보 단절
→
💬
소통 부재
→
✋
수작업 의존
→
❌
오류 발생
→
🔄
재작업
↻
결과: 프로젝트 비용 초과, 공기 지연, 품질 저하
DEC[Digital Engineering Corporation]|200시간 과정
64
B+CD+P
BIM-IT 융합 과정
Chapter 4: BIM-IT 기술 융합 개요

BIM-IT가 해답입니다

BIM과 IT 기술의 융합이 건설산업의 비효율을 해결합니다.

* 출처: Stanford CIFE, McGraw Hill Construction
비효율 → BIM-IT 솔루션
📊
정보 단절
통합 BIM 모델
🤖
수작업 의존
API 자동화
🔍
설계 오류
충돌 검토
💬
소통 부재
실시간 협업
16-1654%
ROI
투자 대비 수익률
34-68%
RFI 감소
정보 요청 감소
최대 50%
비용 절감
재작업 비용 절감
7-15%
공기 단축
프로젝트 기간 단축
💡
BIM + 자동화 = 경쟁력
BIM은 데이터입니다. 데이터는 코드로 제어합니다.
수작업을 자동화로 바꾸면 1시간 → 1분60배 효율 향상!
DEC[Digital Engineering Corporation]|200시간 과정
65
B+CD+P
BIM-IT 융합 과정
Chapter 4: BIM-IT 기술 융합 개요

한국의 대응: BIM 의무화

정부 정책과 시장 성장이 BIM 인력 수요를 폭발시키고 있습니다.

* 출처: 국토교통부, MarketsandMarkets
한국 BIM 정책 로드맵
10
조달청 BIM 시범사업
16
공공건축 BIM 지침
23
500억 이상 의무화
25
전면 의무화
30
스마트건설 완성
글로벌 BIM 시장
$29.9B
CAGR +13.2%
2032년 전망
글로벌 디지털트윈
$20.2B
CAGR +23.7%
2028년 전망
2025년, BIM은 선택이 아닌 필수입니다
📋
법적 의무화
공공 발주 필수
📈
시장 폭발
연 13%+ 성장
👨‍💻
인력 부족
전문가 희소
DEC[Digital Engineering Corporation]|200시간 과정
66
B+CD+P
BIM-IT 융합 과정
Chapter 4: BIM-IT 기술 융합 개요

AI 시대의 팀 변화

대규모 팀에서 소규모 고효율 팀으로 패러다임이 전환되고 있습니다.

* 출처: TechCrunch, Bloomberg
🚀 소규모 팀의 압도적 성과
Telegram
30명
직원 수
$30B
10억+
Instagram
13명
직원 수
$1B
매각 당시
WhatsApp
50명
직원 수
500억
일일 메시지
❌ 전통 모델
• 매출 증가 = 인력 증가
• 계층적 조직 구조
• 물리적 사무실 필수
• 관리 오버헤드
→
✅ AI 시대 모델
• 자동화가 확장 담당
• 플랫 조직 구조
• 원격 근무 기본
• AI가 관리 자동화
"성장 = 인력 증가" 공식이 무너졌습니다
AI와 자동화를 활용하면, 소수의 인재가 수천 명의 조직보다 더 큰 가치를 만듭니다.
핵심은 "AI를 활용하는 사람"이 되느냐, "AI에 대체되는 사람"이 되느냐입니다.
DEC[Digital Engineering Corporation]|200시간 과정
67
B+CD+P
BIM-IT 융합 과정
Chapter 4: BIM-IT 기술 융합 개요

새로운 역할: 도구 제작자

도구 사용자에서 도구 제작자로, 생산성 격차가 극대화됩니다.

* 출처: WEF 2025, GitHub 2023-2024
41%
인력 감축 계획
향후 5년 내 AI로 인한 감축
출처: WEF 2025
26%
개발자 생산성 증가
AI 도구 사용 시 향상
출처: GitHub 2024
55.8%
작업 속도 향상
Copilot 사용자
출처: GitHub 2023
46%
AI 코드 생성 비율
전체 코드 중
출처: GitHub 2023
🖱️
도구 사용자
Tool User
❌ Revit 수동 작업
❌ 반복 클릭 의존
❌ 속도 한계 존재
❌ AI에 대체 위험
⚙️
도구 제작자
Tool Maker
✅ API로 자동화 개발
✅ 코드로 반복 제거
✅ 생산성 무한 확장
✅ AI와 협업
생산성 격차가 곧 연봉 격차입니다
AI 도구를 사용하면 55% 더 빠르게 작업을 완료합니다.
같은 시간에 더 많은 가치를 만드는 사람이 선택받습니다.
DEC[Digital Engineering Corporation]|200시간 과정
68
B+CD+P
BIM-IT 융합 과정
Chapter 4: BIM-IT 기술 융합 개요

인재상의 변화

과거의 성공 공식은 더 이상 작동하지 않습니다.

❌ 과거 (2020년 이전)
📊
I자형 인재
한 분야만 깊게
🎓
학력/자격증
스펙이 경쟁력
⏱️
5년+ 경력
시간이 실력
🖱️
수동 작업
Revit만 잘하면 OK
✅ 현재 (2025년)
🔱
π자형 인재
2개 이상 전문 융합
💼
포트폴리오
실제 결과물이 스펙
🤖
AI 협업
생산성이 경력 대체
⚡
자동화
1시간 → 1분
BIM
코딩
π자형 인재 = 대체 불가능한 경쟁력
BIM 전문성 + 프로그래밍 능력의 융합
한 분야만 잘하는 I자형은 대체 가능하지만, 두 분야를 융합하는 π자형은 대체 불가능합니다.
DEC[Digital Engineering Corporation]|200시간 과정
69
B+CD+P
BIM-IT 융합 과정
Chapter 4: BIM-IT 기술 융합 개요

4가지 핵심 역량

기업이 원하는 인재가 되기 위해 갖춰야 할 역량입니다.

🤖
01AI 활용 능력
ChatGPT, Copilot으로 생산성 3배 향상
프롬프트 엔지니어링AI 코드 생성문서 자동화
💻
02자동화 개발
Revit API로 반복 업무 자동화
C#/Python 스크립트Excel 연동일괄 처리
🧩
03문제 해결
복잡한 BIM 문제를 체계적으로 해결
알고리즘적 사고디버깅 능력최적화 설계
📊
04데이터 리터러시
BIM 데이터 추출, 분석, 활용
데이터 추출분석 리포트의사결정 지원
🎯 이 과정의 목표
"10명이 하던 일을 혼자서 할 수 있는 능력"
단순히 기술을 배우는 것이 아니라, 기업이 찾는 희소성 높은 인재가 되는 것입니다.
200시간
체계적 학습
3배
생산성 향상
π자형
융합 인재
희소성
경쟁력 확보
DEC[Digital Engineering Corporation]|200시간 과정
70
05
Chapter

BIM-IT 융합기술 기본

그래픽 코딩 입문 (Grasshopper & Rhino Inside)

35
HOURS
4
SECTIONS
5.1Grasshopper 소개
5.2Rhino Inside 환경 설정
5.3Grasshopper 기본 개념
5.4파라메트릭 디자인 기초
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Visual Programming 입문

텍스트 코딩 없이 컴포넌트(노드)를 연결하여
복잡한 형상 생성과 BIM 자동화를 구현합니다
핵심 개념
Node-Based Programming
Visual Programming의 데이터 흐름
Dataflow Paradigm
Input
데이터 입력
숫자, 점, 커브, Revit 요소 등
>
Process
연산 처리
변환, 분석, 생성 로직
>
Output
결과 출력
지오메트리, BIM 요소
Grasshopper에서 각 컴포넌트는 특정 기능을 수행하며, 입력(Input)과 출력(Output) 포트를 통해 데이터가 좌에서 우로 흐릅니다. 이 데이터 흐름(Dataflow)을 설계하는 것이 Visual Programming의 핵심입니다.
Grasshopper
Visual Programming Environment
Rhino 기반의 노드 편집기로, 복잡한 알고리즘을 시각적으로 구성
Rhino.Inside.Revit
BIM Integration Platform
Grasshopper 알고리즘을 Revit에서 직접 실행하여 BIM 요소 생성
Parametric Design
Data-Driven Modeling
파라미터 변경으로 설계안을 즉시 업데이트하는 유연한 모델링 기법
학습 목표
1.Grasshopper 인터페이스와 컴포넌트 구조 이해
2.Input/Process/Output 데이터 흐름 설계
3.Rhino.Inside를 통한 Revit 요소 생성
4.파라미터 기반의 유연한 BIM 모델링
DEC[Digital Engineering Corporation]|200시간 과정
72
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

BIM-IT 융합기술 기본

강의계획서 - 그래픽 코딩 입문 (Grasshopper & Rhino Inside)

1. 강의 개요

과목명
BIM-IT 융합기술 기본
교육시간
35시간 (이론 10H + 실습 25H)
대상
BIM 실무자 및 자동화에 관심 있는 학습자
선수학습
Chapter 3. BIM-IT 데이터 이해
실습환경
Rhino 8 + Grasshopper, Revit 2025

2. 지도목표

Grasshopper의 Visual Programming 개념을 이해하고, Rhino Inside 환경에서 BIM 자동화의 기초 역량을 습득한다.
1Visual Programming의 개념과 장점 이해
2Rhino Inside 환경 설치 및 설정
3알고리즘적 사고를 통한 문제 분해
4Grasshopper 기본 데이터 구조 이해
5간단한 파라메트릭 모델 생성

3. 사용교재 (자료)

주교재
본 교육자료
참고
Rhino/GH 문서
실습
강사 제공

4. 주요 내용 (학습활동)

5.1Grasshopper 소개이론4H
Visual Coding 개념 / 인터페이스 구성 / 컴포넌트 원리
5.2Rhino Inside 환경 설정이론+실습6H
Rhino Inside 소개 / 설치 및 설정 / 실무 활용 사례
5.3Grasshopper 기본 개념이론+실습15H
알고리즘적 사고 / Domain / Data Tree / Vector 기초
5.4파라메트릭 디자인 기초실습10H
기본 형상 생성 / 패턴 및 배열 / 파사드 패널 시스템
평가 기준
이론평가20%
실습평가80%
파라메트릭 디자인 결과물 중심 평가
DEC[Digital Engineering Corporation]|200시간 과정
73
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Visual Programming이란?

코드 대신 노드를 연결하여 프로그래밍하는 방식입니다.

Visual Programming 개념
데이터 흐름의 핵심 원리
📐
Input
데이터 입력
⚙️
Process
연산 처리
🏗️
Output
결과 출력
노드(Node)를 와이어(Wire)로 연결하여 데이터 흐름을 정의
DEC[Digital Engineering Corporation]|200시간 과정
74
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

텍스트 코딩 vs Visual Coding

두 가지 프로그래밍 방식의 특징을 비교합니다.

구분
텍스트 코딩 (C#)
Visual Coding (Grasshopper)
작성 방식
텍스트 코드 입력
컴포넌트 드래그 & 연결
학습 곡선
문법 학습 필요
직관적, 빠른 학습
데이터 흐름
코드에서 추적
선(Wire)으로 시각화
디버깅
로그, 디버거 사용
실시간 결과 확인
유연성
매우 높음
컴포넌트 제한 있음
반복 작업
루프 코드 작성
데이터 트리 자동 처리
Grasshopper는 누구나 쉽게 접근할 수 있는 비주얼 프로그래밍 도구입니다. 이 도구는 알고리즘 기반의 디자인과 파라메트릭 모델링을 지원합니다. Grasshopper에서는 Input, Function, Output으로 구성된 Component들을 연결하여 결과물을 만들어갑니다. 이 과정은 시각적으로 표현되며, 변경 사항이 즉각적으로 반영되어 사용자가 실시간으로 결과를 확인할 수 있습니다.
DEC[Digital Engineering Corporation]|200시간 과정
75
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Grasshopper의 특장점

파라메트릭 디자인을 위한 강력한 Visual Programming 도구

🎨파라메트릭 디자인
변수 변경으로 디자인 자동 갱신
• 슬라이더로 변수 제어
• 무한한 디자인 변형
• 빠른 옵션 비교
🧮알고리즘 디자인
규칙 정의로 복잡한 형상 생성
• 생성 디자인
• 구조 최적화
• 데이터 기반 설계
🦏Rhino 완벽 통합
Rhino 내장으로 완벽한 연동
• NURBS 완전 지원
• 실시간 뷰포트 표시
• Bake로 객체 변환
🧩플러그인 생태계
플러그인으로 기능 무한 확장
• Ladybug (환경분석)
• Kangaroo (물리 시뮬)
• Karamba3D (구조해석)
왜 많은 산업에서 Grasshopper를 선택하는가?
진입 장벽코딩 없이 복잡한 알고리즘 구현
생산성실시간 피드백으로 빠른 디자인 반복
확장성500개+ 플러그인으로 무한 기능 확장
호환성Revit, AutoCAD 등 BIM 도구 연동
전 세계 산업계 표준 도구
🏛️
건축
Zaha Hadid, Foster+Partners
🚗
제품 디자인
자동차, 가구
🔧
구조 엔지니어링
복잡한 구조 시스템
🏙️
도시 계획
대규모 모델링
🖨️
디지털 패브리케이션
CNC, 3D 프린팅
DEC[Digital Engineering Corporation]|200시간 과정
76
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Rhino Inside Revit 소개

Revit 내에서 Rhino와 Grasshopper를 사용할 수 있는 통합 환경입니다.

🏗️
Revit
BIM 플랫폼
+
Rhino Inside
🦏
Rhino
🦗
Grasshopper
=
🚀
파라메트릭 BIM
무한한 가능성
🔗
통합 환경
Revit 내에서 Rhino/GH 직접 실행
🔄
실시간 연동
Revit 요소 ↔ GH 데이터 변환
🎨
자유 형상
Revit 한계를 넘는 복잡한 형상
⚡
자동화
GH 정의로 반복 작업 제거
실무 활용 사례
🏢
복잡한 파사드
곡면 패널 자동 생성
🔧
구조 최적화
형상 기반 구조 해석
📐
일괄 배치
요소 대량 생성/수정
DEC[Digital Engineering Corporation]|200시간 과정
77
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Rhino Inside 설치 및 환경 설정

Revit에서 Grasshopper를 사용하기 위한 설치 과정입니다.

시스템 요구사항
Rhino 7 또는 8
필수
라이센스 필요
Revit 2019+
필수
2022 이상 권장
Windows 10/11
필수
64bit
RAM 16GB+
권장
32GB 권장
공식 다운로드 페이지
Rhino Inside Revit 공식 웹사이트
rhino3d.com/en/inside/revit/1.0/
다운로드 및 설치
1
웹사이트 접속
rhino3d.com/inside/revit
🌐
2
Download 클릭
최신 버전 다운로드
📥
3
설치 파일 실행
RhinoInside.Revit.msi 실행
⚙️
4
Revit 재시작
Rhinoceros 탭 확인
✅
무료 다운로드 (Rhino 라이센스 필요)
DEC[Digital Engineering Corporation]|200시간 과정
78
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Rhino.Inside.Revit 인터페이스

Rhino.Inside.Revit는 Revit 내부에 임베드 되어서 실행 됩니다. 플러그인을 설치하면 아래와 같은 Tab이 생성됩니다.

Revit 내 Rhino.Inside 탭
Rhinoceros Tab
Rhino : 플러그 인을 실행시킵니다.
Import 3dm : Rhino 3dm 파일을 Revit으로 가져오기
Open Viewport : 독립된 Rhino의 Window를 실행시킵니다.
Toggle Preview : Rhino객체를 보여줍니다.
Grasshopper Tab
Grasshopper : Grasshopper 플러그 인을 실행시킵니다.
Off, Wire, Shaded : Revit내의 Rhino객체의 디스플레이를 지정합니다.
Disable Solver : Grasshopper의 Solver를 비활성화 합니다. 비활성화 상태에서는 Grasshopper가 작동하지 않습니다.
Recompute : 활성화된 Grasshopper를 로직을 강제적으로 다시 계산합니다.
Release Elements : Revit과 Rhino의 객체의 연결을 종료하여 완전한 Revit객체로 변환시킵니다.
Player : 미리 정의된 Grasshopper의 로직을 실행시킵니다.
DEC[Digital Engineering Corporation]|200시간 과정
79

Grasshopper Basic

Visual Programming for Design

B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

알고리즘적 사고

복잡한 문제를 단계별로 분해하고 해결하는 사고 방식입니다.

알고리즘(Algorithm)이란?
문제를 해결하기 위한 명확하고 순서화된 단계의 집합입니다. 컴퓨터 프로그래밍뿐 아니라 일상생활의 모든 문제 해결에 적용할 수 있는 논리적 사고 방식입니다.
Grasshopper에서는 이 알고리즘적 사고를 컴포넌트 연결로 시각화합니다. 복잡한 문제도 작은 단위로 분해하여 순차적으로 해결할 수 있습니다.
🎯
문제 정의
무엇을 해결할 것인가?
🧩
분해
작은 단위로 나누기
🔍
패턴 인식
반복되는 규칙 찾기
💡
추상화
핵심 요소만 추출
📝
알고리즘 설계
단계별 해결 방법
문제 예시
🏢
10층 건물에 창문을 규칙적으로 배치
알고리즘적 해결
분해층별 → 베이별 → 개별 창문
패턴각 층 동일한 간격, 층간 반복
추상화Number Slider로 크기, 간격 파라미터화
알고리즘Series → Grid → Rectangle 컴포넌트 연결
DEC[Digital Engineering Corporation]|200시간 과정
81
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

파라메트릭 디자인이란?

변수(Parameter)를 통해 형태를 정의하고 제어하는 설계 방식입니다.

📐전통적 설계
고정된 치수로 도면 작성
변경 시: 수정 시 전체 재작업
🔧파라메트릭 설계
변수로 형상 정의
변경 시: 변수만 수정하면 자동 갱신
파라메트릭 설계 워크플로우
📝
변수 정의
폭, 높이, 개수 등
🔗
관계 설정
수식과 로직 연결
🏗️
형상 생성
자동으로 형태 생성
🔄
변형 탐색
변수 조절로 대안 탐색
파라메트릭 디자인의 장점
⚡
빠른 수정
변수 변경만으로 갱신
🔍
대안 탐색
다양한 옵션 비교
✅
일관성
규칙 기반 정확성
🤖
자동화
반복 작업 제거
DEC[Digital Engineering Corporation]|200시간 과정
82
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

List(리스트) 이해하기

Grasshopper 데이터의 기본 구조

List란?
여러 개의 데이터를 순서대로 저장하는 구조입니다. 배열(Array)과 유사하며, 각 데이터는 인덱스(Index)를 통해 접근할 수 있습니다.
Grasshopper에서 모든 데이터는 List로 처리됩니다. 단일 값도 1개의 아이템을 가진 List이며, 컴포넌트 간 데이터 전달의 기본 단위입니다.
1️⃣
단일 값
500
하나의 숫자, 점, 선 등
📋
List (리스트)
[0, 100, 200, 300]
여러 값의 순서있는 집합
🌳
Tree (트리)
{0;0} [a,b] {0;1} [c,d]
리스트들의 구조화된 집합

Index (인덱스)

List = [A, B, C, D]
A
[0]
B
[1]
C
[2]
D
[3]
인덱스는 0부터 시작합니다

List 생성 컴포넌트

Number Slider 1개→단일 값: 500
Series (0, 100, 5)→[0, 100, 200, 300, 400]
Range (0 to 10, 3)→[0, 5, 10]
💡

Tip: Panel에 연결하면 List의 모든 항목과 인덱스를 확인할 수 있습니다.

DEC[Digital Engineering Corporation]|200시간 과정
83
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Tree(트리) 구조가 필요한 이유

List만으로는 왜 부족할까?

실제 상황: 여러 곡선에서 점 추출하기
〰️
곡선 A
10개의 점 추출
〰️
곡선 B
10개의 점 추출
〰️
곡선 C
10개의 점 추출
List로 저장하면?
30개의 점이 하나의 리스트에 섞임
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
B0
B1
B2
B3
B4
B5
B6
B7
B8
B9
C0
C1
C2
C3
C4
C5
C6
C7
C8
C9
문제점:
  • 어떤 점이 어느 곡선에서 왔는지 알 수 없음
  • 곡선별로 다른 작업을 할 수 없음
  • 데이터 관계가 완전히 소실됨
Tree로 저장하면?
경로(Path)별로 그룹 유지
{0}
A0, A1, A2, A3, A4, A5, A6, A7, A8, A9
{1}
B0, B1, B2, B3, B4, B5, B6, B7, B8, B9
{2}
C0, C1, C2, C3, C4, C5, C6, C7, C8, C9
장점:
  • 곡선별 점의 그룹이 유지됨
  • 곡선별로 개별 작업 가능
  • 데이터 출처를 항상 추적 가능
〰️
곡선 분할
🔲
면 분해
🏢
층별 요소
📊
그리드 데이터
Tree는 데이터의 관계와 그룹을 유지하면서 저장하는 구조입니다.
DEC[Digital Engineering Corporation]|200시간 과정
84
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

List vs Data Tree 구조

1차원 vs 2차원 데이터 구조 비교

List (1차원)
index543210index →
모든 데이터가 단일 인덱스(0)에 일렬로 나열
Data Tree (2차원)
index54321path →{0}{1}{2}{3}{3}[3]
Path별로 데이터가 그룹화되어 2차원 구조 형성
Path (경로)
Branch의 주소 (X축)
{0}{1}{2}{0;0}
Index (인덱스)
Branch 내 위치 (Y축)
[0][1][2][3]
데이터 접근
Path + Index로 특정
{path}[index]
예: {3}[3] = 특정 데이터
List
index만 존재 (1D)
vs
Data Tree
path × index (2D)
DEC[Digital Engineering Corporation]|200시간 과정
85
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Tree 조작 컴포넌트

Flatten, Graft, Simplify, Flip Matrix

Tree 구조를 변환하는 4가지 핵심 컴포넌트를 익히면 복잡한 데이터도 자유자재로 제어!
Flatten
Tree → List
모든 Branch를 하나로 병합
Before
{0}[A, B]
{1}[C, D]
→
After
{0}[A, B, C, D]
Graft
개별 처리 시
각 item을 개별 Branch로
Before
{0}[A, B, C]
→
After
{0;0}[A]
{0;1}[B]
{0;2}[C]
Simplify
경로 단순화
불필요한 Path 깊이 제거
Before
{0;0;0}[A]
{0;0;1}[B]
→
After
{0}[A]
{1}[B]
Flip Matrix
행↔열 전환
행과 열을 교환
Before
{0}[A1, A2]
{1}[B1, B2]
→
After
{0}[A1, B1]
{1}[A2, B2]
빠른 사용법: 입력 단자 우클릭
입력 단자 우클릭 → Flatten/Graft/Simplify 선택 → 단자 옆 아이콘 표시
▼Flatten
⇅Graft
→Simplify
Flatten
Tree → List
Graft
item → Branch
Simplify
Path 단순화
Flip Matrix
행↔열 교환
DEC[Digital Engineering Corporation]|200시간 과정
86
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Grasshopper 핵심 원리

1 Branch = 1 객체 생성

1 Branch = 1 객체
Grasshopper의 모든 컴포넌트는 Branch(가지) 단위로 작업을 수행합니다
Branch를 "방"으로 이해하기
{0}{1}{2}3개 데이터2개 데이터4개 데이터각 방(Branch)은 독립적인 작업 공간
Branch = 방 (Room)
데이터를 담는 독립적인 공간입니다. 각 방에는 여러 데이터가 들어갈 수 있습니다.
컴포넌트 = 방별로 작업
Polyline, Circle 등의 컴포넌트는 방 단위로 객체를 만듭니다.
3개 방 = 3개 객체
3개의 Branch가 있으면, 컴포넌트는 3번 작업하여 3개의 결과물을 만듭니다.
Branch 개수
N개
=
컴포넌트 실행
N번
=
생성 객체
N개
DEC[Digital Engineering Corporation]|200시간 과정
87
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Flatten이 필요한 상황

여러 방의 데이터를 하나로 모아 1개의 객체 만들기

Flatten이란?
Tree 구조의 모든 Branch를 제거하고 단일 List로 평탄화하는 작업입니다. 여러 방에 분산된 데이터를 하나의 방({0})으로 모읍니다.
여러 Branch의 데이터를 하나로 합쳐서 1개의 객체(Polyline, Surface 등)를 만들어야 할 때 필수적으로 사용합니다.
문제: 3개의 점으로 1개의 폴리라인을 만들고 싶은데...
{0}{1}{2}P1P2P33개 방에 점이 1개씩
→
Polyline
컴포넌트
→
✗폴리라인 생성 실패!각 방에 점이 1개뿐(최소 2개 필요)
해결: Flatten으로 모든 점을 하나의 방으로!
{0}{1}{2}Before
Flatten
→
{0}After
→
Polyline
→
1개의 폴리라인!
Flatten 사용 시점
여러 Branch의 데이터를 하나로 합쳐 1개의 객체를 만들 때
대표적인 예시
여러 곡선의 점들 → 1개의 Polyline/Surface
DEC[Digital Engineering Corporation]|200시간 과정
88
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Graft가 필요한 상황

각 데이터마다 개별 객체를 만들기

Graft란?
각 데이터 항목을 개별 Branch로 분리하는 작업입니다. 하나의 List에 있는 데이터를 각각 독립된 방으로 나눕니다.
각 데이터마다 개별 객체(Circle, Sphere 등)를 만들어야 할 때 필수적으로 사용합니다.
문제: 3개의 점에 각각 원을 그리고 싶은데...
{0}P1P2P31개 방에 점 3개
→
Circle
컴포넌트
→
원이 1개만 생성!(1 Branch = 1 객체)
해결: Graft로 각 점을 개별 방으로 분리!
{0}Before
Graft
→
{0;0}{0;1}{0;2}After
→
Circle
→
3개의 원!
Graft 사용 시점
각 데이터마다 개별 객체를 만들고 싶을 때
대표적인 예시
점 리스트 → 각 점마다 Circle/Sphere
DEC[Digital Engineering Corporation]|200시간 과정
89
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Function(함수) 이해하기

컴포넌트 = 함수, 입력 → 처리 → 출력

Function(함수)이란?
📥
Input
입력값
→
⚙️
Process
처리 로직
→
📤
Output
결과값
🧩
Grasshopper 컴포넌트 = 함수
모든 컴포넌트는 입력(Input)을 받아 처리(Process)하고 출력(Output)을 반환하는 함수입니다.
Addition
Input
• A: 10
• B: 5
Process
A + B
Output
15
Construct Point
Input
• X: 100
• Y: 200
• Z: 0
Process
Point(X,Y,Z)
Output
{100,200,0}
Move
Input
• Geometry
• Vector
Process
G + V
Output
Moved Geo
✅

핵심: 컴포넌트를 연결한다 = 함수의 출력을 다른 함수의 입력으로 전달한다

DEC[Digital Engineering Corporation]|200시간 과정
90
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

List + Function 통합

함수가 리스트를 만나면 어떻게 될까?

함수에 List를 입력하면?
함수는 List의 각 항목에 대해 자동으로 반복 실행됩니다. 이것이 Grasshopper의 강력한 힘입니다!
단일 값 입력
X = 5
→
× 2
→
10
1개 입력 → 1개 출력
List 입력
[1,2,3,4]
→
× 2
→
[2,4,6,8]
N개 입력 → N개 출력 (자동 반복!)
실제 활용: 10개의 점을 한 번에 생성
X 입력
Series(0,100,10)
[0,100,200...900]
+
Y 입력
0 (단일값)
→
Construct Point
Point(X,Y,Z)
→
결과
10개의 점!
📋
List = 데이터 집합
🧩
Component = 함수
🔄
List + 함수 = 자동 반복
DEC[Digital Engineering Corporation]|200시간 과정
91
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Rhino 기하학 객체

차원별 기본 객체 이해

Rhino는 NURBS (Non-Uniform Rational B-Splines) 기반으로 정밀한 형상을 표현합니다
0차원
Point
(x, y, z)
3D 공간의 위치
좌표로 표현
1차원
Curve
선형/곡선 경로
Line, Arc, Polyline
NURBS Curve
2차원
Surface
단일 연속 곡면
단일 NURBS 면
UV 파라미터
3차원
Solid (Brep)
닫힌 볼륨
PolySurface/Brep
닫힌 경계 표현
객체설명예시Grasshopper
Point3D 공간의 위치 (0차원)기준점, 삽입점Pt, Point
Curve선형 또는 곡선 경로 (1차원)Line, Arc, Circle, PolylineCrv, Curve
Surface단일 연속 곡면 (2차원)Plane, Loft, SweepSrf, Surface
Brep경계로 형상을 표현 (Surface + PolySurface)Box, Sphere, 복합 형상Brep, Geo
DEC[Digital Engineering Corporation]|200시간 과정
92
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Surface와 Brep

면 객체의 종류와 관계

Surface
단일 NURBS 면
단일 연속 면
UV 파라미터로 정의
예: Plane, Loft 결과
PolySurface
여러 면이 결합
여러 Surface 결합
Edge로 연결된 면들
예: Box, Boolean 결과
Brep (B-Rep)
BrepFacesEdgesVertices경계 표현 (Boundary Rep)
포괄적 객체 타입
Surface + PolySurface 포함
Grasshopper 기본 타입
Brep 객체의 포함 관계
Brep
PolySurface
Srf
Srf
Srf
Surface
Brep은 Surface와 PolySurface를 모두 포함하는 상위 타입입니다
Extrusion
메모리 효율적인 직선 압출 객체
Curve를 직선으로 밀어서 생성
Brep으로 변환 가능
💡
Grasshopper 팁
Brep 타입으로 받으면 Surface, PolySurface,
Extrusion 모두 처리할 수 있습니다!
DEC[Digital Engineering Corporation]|200시간 과정
93
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

NURBS와 차수(Degree)

곡선/곡면의 부드러움을 결정하는 핵심 개념

NURBS = Non-Uniform Rational B-Splines
제어점(Control Points)과 차수(Degree)로 정의되는 수학적 곡선/곡면
Degree 1 (1차)
직선 연결 (Polyline)
직선 세그먼트
제어점을 직접 통과
꺾임이 있음
Degree 2 (2차)
RArc (호)
원호 세그먼트
반지름 기반 곡선
Arc, Circle 표현
Degree 3 (3차) ⭐
S자 곡선 가능
가장 부드러운 곡선
S자 형태 표현 가능
Rhino 기본값
제어점과 차수의 관계
제어점 수 ≥ Degree + 1
Degree 3 곡선 → 최소 4개의 제어점 필요
• Degree 높음 → 더 부드럽지만 더 많은 제어점 필요
• Degree 낮음 → 날카로운 전환 가능
NURBS의 구성 요소
Control Points: 곡선 형태를 조절하는 점
Degree: 곡선의 부드러움 (1~5)
Weights: 제어점의 영향력 (Rational)
Knots: 곡선 분할 위치 (Non-Uniform)
💡
실무 팁: 대부분의 경우 Degree 3이 최적의 선택입니다. 더 높은 차수는 계산이 복잡해지고, 낮은 차수는 부드러움이 부족합니다.
DEC[Digital Engineering Corporation]|200시간 과정
94
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Mesh vs NURBS

두 가지 표현 방식의 이해

NURBS (수학적 곡면)
수학적 정의로 무한히 부드러움
✓무한 확대해도 부드러운 곡면
✓적은 데이터로 복잡한 형상 표현
✓정밀 제조/가공에 적합
✗렌더링 시 메시로 변환 필요
Mesh (다각형 근사)
삼각형/사각형 면의 조합
✓빠른 렌더링 및 시각화
✓게임/VR/AR에 최적화
✓3D 프린팅 표준 형식 (STL)
✗확대 시 각진 면이 보임
Mesh의 구성 요소
Vertices
정점 (좌표)
+
Edges
변 (연결)
+
Faces
면 (폴리곤)
=
Mesh
완성된 형상
구분
NURBS
Mesh
정밀도
●●●●● 수학적 정밀
●●●○○ 근사값
파일 크기
●●●●○ 작음
●●○○○ 큼 (고밀도 시)
렌더링 속도
●●●○○ 변환 필요
●●●●● 매우 빠름
주 사용처
CAD, 제조, BIM, 건축 설계
게임, VR/AR, 3D 프린팅, 시각화
DEC[Digital Engineering Corporation]|200시간 과정
95
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

벡터(Vector)란?

방향과 크기를 가진 화살표

벡터 = 화살표
벡터는 어디로(방향) + 얼마나(크기) 를 알려주는 화살표입니다!
🌬️
바람
동쪽으로 10m/s
방향: 동쪽
크기: 10m/s
🚶
이동
앞으로 5걸음
방향: 앞쪽
크기: 5걸음
💪
밀기
오른쪽으로 밀기
방향: 오른쪽
크기: 센 힘
💡
기억하세요!
벡터는 "어디로"와 "얼마나"를 한 번에 알려주는 똑똑한 화살표입니다. Grasshopper에서는 이 화살표로 물체를 원하는 방향으로 이동시킬 수 있어요!
DEC[Digital Engineering Corporation]|200시간 과정
96
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

벡터의 구성요소

X, Y, Z 세 가지 숫자로 방향과 크기를 표현

벡터는 X(좌우), Y(앞뒤), Z(위아래) 세 숫자로 표현됩니다
X
좌우 방향
+ 오른쪽으로 이동
- 왼쪽으로 이동
Y
앞뒤 방향
+ 앞쪽으로 이동
- 뒤쪽으로 이동
Z
위아래 방향
+ 위쪽으로 이동
- 아래쪽으로 이동
예시: 벡터 (100, 0, 50)의 의미
X = 100
오른쪽으로 100
Y = 0
앞뒤 이동 없음
Z = 50
위로 50
결과: 물체가 오른쪽 100, 위쪽 50 위치로 이동!
DEC[Digital Engineering Corporation]|200시간 과정
97
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Grasshopper에서 벡터 만들기

Unit Vector와 Vector XYZ 컴포넌트

방법 1
Unit Vector
미리 만들어진 방향
vs
방법 2
Vector XYZ
직접 숫자 입력
Unit Vector (단위 벡터)
크기가 1인 기본 방향 벡터들
X
Unit X
좌우 방향
(1, 0, 0)
Y
Unit Y
앞뒤 방향
(0, 1, 0)
Z
Unit Z
위아래 방향
(0, 0, 1)
Vector XYZ
X, Y, Z 값을 직접 입력해서 만들기
입력값
X
100
Y
0
Z
50
↓
생성된 벡터
(100, 0, 50)
오른쪽 100, 위쪽 50 방향의 벡터
💡
언제 무엇을 쓸까요?
Unit Vector: 정확히 X, Y, Z 방향으로만 이동할 때 (간단!)   |  Vector XYZ: 대각선 등 자유로운 방향으로 이동할 때
DEC[Digital Engineering Corporation]|200시간 과정
98
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

벡터로 물체 이동하기

Move 컴포넌트로 Geometry 이동

Geometry
물체
+
Vector
방향+거리
=
Result
이동된 물체
Move 컴포넌트 사용법
입력
Point
(0, 0, 0)
Vector
(100, 0, 50)
→
Move
이동하기
→
출력
Moved Point
(100, 0, 50)
예시 1: 오른쪽으로 100 이동
시작
→ X +100 →
끝
Vector: (100, 0, 0)
예시 2: 위로 50 이동
시작
↑ Z +50 ↑
끝
Vector: (0, 0, 50)
✨
핵심: Move 컴포넌트에 물체와 벡터를 연결하면, 벡터가 가리키는 방향과 거리만큼 물체가 이동합니다!
DEC[Digital Engineering Corporation]|200시간 과정
99
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

데이터 매칭

Shortest, Longest, Cross Reference

데이터 매칭이란?
두 개 이상의 리스트를 연결할 때 각 항목을 어떻게 짝지을지 결정하는 방식입니다.
변경 방법
컴포넌트 우클릭 → 메뉴에서 Shortest / Longest / Cross Reference 선택
Data Matching Components
Shortest(Trim End)
1
2
3
a
b
짧은 리스트 기준→ 2개
Longest(Repeat Last)
1
2
3
a
b
마지막 값 반복→ 3개
Cross Ref(Holistic)
1
2
3
a
b
모든 조합 생성→ 6개
DEC[Digital Engineering Corporation]|200시간 과정
100
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Grasshopper 시작하기

Point 생성 - 첫 번째 Definition

🎚️Number Slider- 숫자 값을 슬라이더로 조절
📍Construct Point- X, Y, Z 좌표로 점 생성
📋Panel- 데이터 값 확인 및 표시
Grasshopper Point Definition

작업 단계

1
Number Slider 3개 배치 (X, Y, Z용)
2
Construct Point 컴포넌트 배치
3
Slider → Point의 X, Y, Z 입력에 연결
4
Panel로 결과 확인

입력 (Input)

Number Slider로 X, Y, Z 좌표값 입력

처리 (Process)

Construct Point가 3개 좌표를 조합

출력 (Output)

Panel에서 {500, 500, 500} 좌표 확인

💡

Tip: Slider 더블클릭으로 범위 설정. 연결은 왼쪽 출력 → 오른쪽 입력으로 드래그.

DEC[Digital Engineering Corporation]|200시간 과정
101
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Grasshopper 인터페이스 구성

화면 구성 요소와 캔버스 조작법

🦗
Rhino 명령어 입력:
Grasshopper
Grasshopper 전체 화면
1
2
3
1
메뉴바
File, Edit, View, Display, Solution
2
컴포넌트 팔레트
Params, Maths, Sets, Vector, Curve
3
캔버스
컴포넌트 배치 및 연결 작업 공간
캔버스 조작법
우클릭 + 드래그
캔버스 이동
마우스 휠
줌 인/아웃
DEC[Digital Engineering Corporation]|200시간 과정
102
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

컴포넌트 추가하기

두 가지 방법으로 컴포넌트를 캔버스에 배치

방법 1
탭에서 드래그
컴포넌트 팔레트
1
원하는 탭 선택 (Params, Maths 등)
2
컴포넌트를 클릭하거나 드래그
방법 2
더블클릭 검색
추천
더블클릭 검색창
1
캔버스 빈 공간을 더블클릭
2
컴포넌트 이름 입력하여 빠르게 검색
컴포넌트 조작
클릭 + 드래그
이동
Ctrl + C / V
복사/붙여넣기
Alt + 드래그
복제
Delete
삭제
DEC[Digital Engineering Corporation]|200시간 과정
103
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

와이어 연결과 컴포넌트 상태

컴포넌트 연결 방법과 상태별 색상 의미

와이어 연결 방법
와이어 연결 예시
드래그
출력 → 입력 연결
Shift + 드래그
기존 연결 유지 + 추가
Ctrl + 드래그
연결 해제
컴포넌트 상태별 색상
회색
정상 작동
문제 없음!
주황색
입력값 누락
연결 필요!
빨간색
오류 발생
입력값 확인!
필수 단축키
Ctrl + G
그룹 생성
Ctrl + Z
실행 취소
Space
라디얼 메뉴
Ctrl + A
전체 선택
DEC[Digital Engineering Corporation]|200시간 과정
104
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Line 생성하기

두 점을 연결하여 선 만들기

📏
핵심 개념:
Point A + Point B → Line
Line Definition - Rhino와 Grasshopper
1
Slider + Pt
X, Y coordinate → Construct Point
2
Line (Ln)
Point A → A, Point B → B 연결
3
Rhino Preview
(100,100) → (30,30) 선 확인
작업 단계
1
X, Y 슬라이더 배치
→
2
Pt 2개 + Ln 배치
→
3
와이어 연결
→
4
Rhino 미리보기
💡

Tip: Line 컴포넌트는 Curve → Primitive 탭에서 찾을 수 있습니다. 더블클릭 후 "Line" 검색이 더 빠릅니다.

DEC[Digital Engineering Corporation]|200시간 과정
105
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Multi-Line 생성하기

Line 분할을 통한 다중 선 생성

📐
핵심 개념:
Line Divide → Multi-Line 연결
Multi-Line Definition - Divide와 다중 연결
1
Line (Ln)
좌/우 수직선 생성
2
Divide
선을 N등분 분할
3
Count
분할 개수 (10)
4
Line (Ln)
분할점 연결 → 다중 선
작업 흐름
1
좌/우 Line 생성
→
2
Divide (10등분)
→
3
분할점 → Line 연결
→
Result
수평선 10개
💡

Tip: Divide 컴포넌트는 Curve → Division 탭에서 찾을 수 있습니다. 분할점(P)과 파라미터(t)가 리스트로 출력됩니다.

DEC[Digital Engineering Corporation]|200시간 과정
106
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Rhino 객체 레퍼런스

Rhino 객체를 Grasshopper에서 참조하기

🔗
핵심 개념:
Rhino 객체 → Grasshopper 연결
Rhino 객체 레퍼런스 - Crv, Srf, Brep
Crv
Curve
커브, 라인, 폴리라인 참조
Line, Arc, Circle, Polyline
Srf
Surface
단일 서피스 참조
Plane, Loft, Sweep
Brep
Brep
솔리드, 폴리서피스 참조
Box, Sphere, Extrusion
레퍼런스 방법
1
컴포넌트 우클릭
→
2
Set One Curve/Surface/Brep
→
3
Rhino에서 객체 선택
→
완료
참조 연결됨
💡

Tip: 레퍼런스 컴포넌트는 Params → Geometry 탭에서 찾을 수 있습니다. 여러 객체를 선택하려면 Set Multiple을 사용하세요.

DEC[Digital Engineering Corporation]|200시간 과정
107
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

우클릭 메뉴 기능

컴포넌트 우클릭 메뉴의 전체 기능

Grasshopper 컴포넌트 우클릭 메뉴
전체 메뉴 항목
1.Preview미리보기 ON/OFF
2.Enabled컴포넌트 활성화
3.BakeRhino로 내보내기
4.Wire Display와이어 표시 방식
5.Reverse데이터 순서 반전
6.Flatten트리 → 단일 리스트
7.Graft아이템 → 개별 브랜치
8.Simplify불필요 브랜치 제거
9.Reparameterize파라미터 0~1 재설정
10.Set one Curve단일 객체 참조
11.Set Multiple다중 객체 참조
12.Manage collection참조 컬렉션 관리
13.Clear values모든 값 초기화
14.Internalise data데이터 내부 저장
15.Extract parameter파라미터 추출
16.Help도움말 열기
Bake
가상 객체를 실제 Rhino 객체로 변환
Flatten
모든 브랜치를 단일 리스트로 병합
Graft
각 아이템을 개별 브랜치로 분리
Internalise
참조 데이터를 컴포넌트 내부에 저장
💡

Tip: 입력/출력 포트를 우클릭하면 Flatten(⊞), Graft(⊟), Simplify, Reverse 등을 직접 적용할 수 있습니다. 적용된 옵션은 포트 옆에 기호로 표시됩니다.

DEC[Digital Engineering Corporation]|200시간 과정
108
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

라디얼 메뉴 (Pie Menu)

마우스 가운데 버튼으로 빠른 접근

마우스 가운데 버튼
→ 라디얼 메뉴 활성화 → 원하는 방향으로 드래그
Grasshopper 라디얼 메뉴
라디얼 메뉴 아이콘 (시계방향)
⚙️Settings컴포넌트 설정
🔗Cluster클러스터 생성
📦Group그룹 생성
👁️Preview미리보기 토글
✅Enable컴포넌트 활성화
📋Wireframe와이어프레임 뷰
🍳BakeRhino로 내보내기
📌Lock컴포넌트 잠금
▶️Recompute솔루션 재계산
🔍Zoom선택 객체로 확대
🗺️Select연결 컴포넌트 선택
Bake
Grasshopper 객체를 실제 Rhino 객체로 변환
Group
선택한 컴포넌트를 그룹으로 묶기
Cluster
재사용 가능한 컴포넌트로 패키징
Preview
Rhino 뷰포트에 미리보기 ON/OFF
💡

Tip: 라디얼 메뉴는 컴포넌트 선택 여부에 따라 다른 옵션을 표시합니다. 빈 캔버스에서는 일반 메뉴가, 컴포넌트 선택 시에는 해당 컴포넌트 관련 메뉴가 나타납니다.

DEC[Digital Engineering Corporation]|200시간 과정
109

RhinoInside Basic

기본모델 생성

B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

구조 보(Beam) 생성

Grasshopper로 Revit 구조 보를 생성하는 기본 데피니션

Grasshopper 데피니션
S-Beam Grasshopper Definition
데이터 흐름
1Curve → 보의 경로 정의
2Types → 보 타입 선택 (1B1)
3Level → 기준 레벨 선택
4S-Beam → 구조 보 생성
CurveParams
보의 경로가 될 커브 입력
TypesRevit
보 타입(패밀리) 선택
S-BeamStructure
구조 보 생성 컴포넌트
S-Beam 컴포넌트 입력 파라미터
CCurve
보의 중심선 커브
TType
보 타입 (예: 1B1)
RLReference Level
기준 레벨 (지상1층 등)
💡Level 선택: G.L, 지상1층, 지상2층, RF 등 프로젝트에 정의된 레벨 중 선택
DEC[Digital Engineering Corporation]|200시간 과정
111
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

구조 기둥(Column) 생성

닫힌 커브의 중심점에서 Z방향 선을 생성하여 기둥 배치

Grasshopper 데피니션
S-Column Grasshopper Definition
데이터 흐름
1
Curve닫힌 커브 입력
2
Area중심점(Centroid) 추출
3
Z + LineZ방향 선 생성 (길이: 3500)
4
S-Column구조 기둥 생성
Area
닫힌 커브의 면적과 중심점 계산
Z
Z축 단위 벡터 생성
Line
시작점, 방향, 길이로 선 생성
S-Column
구조 기둥 생성
S-Column 컴포넌트 입력 파라미터
CCurve
기둥 중심선 (Line)
TType
기둥 타입 (예: C1)
BLBase Level
하단 레벨 (지상1층)
TLTop Level
상단 레벨 (지상2층)
💡핵심: 닫힌 커브 → Area (중심점) → Z방향 Line → S-Column으로 기둥 위치 자동 배치
DEC[Digital Engineering Corporation]|200시간 과정
112
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

구조 슬라브(Floor) 생성

Rectangle로 경계선을 정의하고 Floor 컴포넌트로 슬라브 생성

Grasshopper 데피니션
Floor Grasshopper Definition
데이터 흐름
1
X/Y Size슬라브 크기 입력 (3000×3000)
2
Rectangle경계선 사각형 생성
3
Types + Level슬라브 타입(S1), 레벨 선택
4
Floor구조 슬라브 생성
Rectangle
원점, X/Y 크기로 사각형 생성
Types
슬라브 타입(패밀리) 선택
Level
슬라브 배치 레벨 선택
Floor
구조 슬라브 생성
Floor 컴포넌트 입력 파라미터
BBoundary
슬라브 경계선 (Rectangle)
TType
슬라브 타입 (예: S1)
LLevel
배치 레벨 (레벨 1)
SStructural
구조 여부 (Toggle: True)
💡Structural 옵션: Toggle을 True로 설정하면 구조 슬라브로 생성됩니다 (구조 해석 가능)
DEC[Digital Engineering Corporation]|200시간 과정
113
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

커튼월/벽(C-Wall) 생성

Curve 경로를 따라 C-Wall 컴포넌트로 벽 생성

Grasshopper 데피니션
C-Wall Grasshopper Definition
데이터 흐름
1
Curve벽 경로 커브 입력
2
Types + Level벽 타입(일반-200mm), 레벨
3
Height + Options높이(3000), Toggle 설정
4
C-Wall벽 생성
Crv
벽 경로 커브 입력
Types
벽 타입(패밀리) 선택
Level
벽 배치 레벨 선택
C-Wall
커튼월/벽 생성
C-Wall 컴포넌트 입력 파라미터
CCurve
벽 경로 커브
TType
벽 타입 (일반-200mm)
LLevel
배치 레벨 (레벨 1)
HHeight
벽 높이 (3000)
FFlip뒤집기 (False)
JJoin결합 (True)
SStructural구조 여부 (True)
DEC[Digital Engineering Corporation]|200시간 과정
114
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

기초 슬라브(S-Foundation) 생성

2개의 커브로 중공(오픈) 기초 슬라브 생성

Grasshopper 데피니션
S-Foundation Grasshopper Definition
데이터 흐름
1
Crv + Distance커브와 오프셋 거리(300) 입력
2
Offset + Boundary내부 커브 생성, 바운더리 변환
3
DeBrep + Join경계 커브 추출 및 조인
4
Types + LevelFS1 타입, 레벨 1 선택
5
S-Foundation구조 기초 생성
Offset
커브 오프셋 생성
Boundary
커브를 바운더리로 변환
DeBrep
Brep 분해 (경계 추출)
Join
커브 조인
S-Foundation
구조 기초 생성
S-Foundation 컴포넌트 입력 파라미터
BBoundary
기초 경계선 (조인된 커브)
TType
기초 타입 (FS1)
LLevel
배치 레벨 (레벨 1)
SStructural
구조 여부 (True)
중공 기초: 외부/내부 2개 커브를 Boundary로 변환하면 가운데가 오픈된 기초 슬라브 생성 가능
DEC[Digital Engineering Corporation]|200시간 과정
115
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

독립 기초(I-Foundation) 생성

Area 컴포넌트로 중심점을 구해 독립 기초 배치

Grasshopper 데피니션
I-Foundation Grasshopper Definition
데이터 흐름
1
Crv기초 위치용 커브 입력
2
Area커브의 중심점(Centroid) 추출
3
Types + Level기초 타입, 레벨 1 선택
4
I-Foundation독립 기초 생성
Curve
Revit 커브 참조
Area
면적/중심점 계산
Types
패밀리 타입 선택
I-Foundation
독립 기초 생성
I-Foundation 컴포넌트 입력 파라미터
LLocation
기초 배치 위치 (Point)
TType
기초 타입 (1800×1200×450mm)
LLevel
배치 레벨 (레벨 1)
핵심: Area 컴포넌트의 Centroid(C) 출력이 독립 기초의 배치 위치(Location)로 사용됨
DEC[Digital Engineering Corporation]|200시간 과정
116
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

천장(Ceiling) 생성

Boundary 커브로 천장 요소 생성

Grasshopper 데피니션
Ceiling Grasshopper Definition
데이터 흐름
1
Crv천장 경계 커브 입력
2
Types + Level천장 타입, 레벨 선택
3
Ceiling천장 생성
Curve
Revit 커브 참조
Types
패밀리 타입 선택
Ceiling
천장 요소 생성
Ceiling 컴포넌트 입력 파라미터
BBoundary
천장 경계선 (Curve)
TType
천장 타입 (600×600mm 그리드)
LLevel
배치 레벨 (레벨 1)
천장 타입: 600×600mm 그리드 타입 사용 시 T-bar 천장 시스템이 자동으로 적용됨
DEC[Digital Engineering Corporation]|200시간 과정
117
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

난간(Railing) 생성

커브 경로를 따라 난간 요소 생성

Grasshopper 데피니션
Railing Grasshopper Definition
데이터 흐름
1
Crv난간 경로 커브 입력
2
Types + Level난간 타입, 레벨 선택
3
ToggleFlip 방향 설정 (False)
4
Railing난간 생성
Curve
Revit 커브 참조
Types
패밀리 타입 선택
Toggle
Boolean 값 토글
Railing
난간 요소 생성
Railing 컴포넌트 입력 파라미터
CCurve
난간 경로 커브
TType
난간 타입 (900mm 배관)
LLevel
배치 레벨 (레벨 1)
HHeight
난간 높이
FFlip
방향 뒤집기 (False)
Flip: Toggle 컴포넌트로 난간의 좌/우 방향을 제어 (True: 반대 방향)
DEC[Digital Engineering Corporation]|200시간 과정
118
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

지붕(Roof) 생성

Boundary 커브로 지붕 요소 생성

Grasshopper 데피니션
Roof Grasshopper Definition
데이터 흐름
1
Crv지붕 경계 커브 입력
2
Types + Level지붕 타입, 레벨 선택
3
Roof지붕 생성
Curve
Revit 커브 참조
Types
패밀리 타입 선택
Roof
지붕 요소 생성
Roof 컴포넌트 입력 파라미터
BBoundary
지붕 경계선 (Curve)
TType
지붕 타입 (일반 - 400mm)
LLevel
배치 레벨
지붕 타입: 일반 - 400mm 타입 사용 시 평지붕이 생성됨. 경사 지붕은 별도 타입 선택 필요
DEC[Digital Engineering Corporation]|200시간 과정
119
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

DirectShape(G-Shape) 생성

Brep 지오메트리와 재질로 DirectShape 요소 생성

Grasshopper 데피니션
G-Shape Grasshopper Definition
데이터 흐름
1
Name이름 입력 (다이렉트쉐입)
2
Categories카테고리 선택 (일반모델)
3
Brep + Materials지오메트리와 재질 설정
4
G-ShapeDirectShape 생성
Categories
Revit 카테고리 선택
Brep
Grasshopper Brep 참조
Materials
재질 선택/생성
G-Shape
DirectShape 요소 생성
G-Shape 컴포넌트 입력 파라미터
NName
요소 이름 (다이렉트쉐입)
CCategory
카테고리 (일반 모델)
GGeometry
Brep 지오메트리
MMaterial
재질 (기본 벽 등)
DirectShape: Revit 패밀리 없이 Grasshopper Brep을 직접 Revit 요소로 변환. 복잡한 형상 표현에 유용
DEC[Digital Engineering Corporation]|200시간 과정
120

RhinoInside Basic

객체 필터링

B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

카테고리/타입 필터로 요소 수집

CatFltr, TypeFltr로 원하는 요소만 필터링하여 수집

Grasshopper 데피니션
Object Filtering Grasshopper Definition
데이터 흐름
1
Categories카테고리 선택 (wall/window)
2
CatFltr / TypeFltr필터 컴포넌트 연결
3
Elements필터된 요소 수집
Categories
Revit 카테고리 선택
CatFltr
카테고리로 요소 필터링
TypeFltr
타입으로 요소 필터링
Elements
필터된 요소 수집
필터 컴포넌트 주요 파라미터
CCategory
필터할 카테고리 (CatFltr)
TType
필터할 타입 (TypeFltr)
FFilter
요소 필터 (Elements 입력)
EElements
필터된 요소들 (출력)
필터링 방식: CatFltr는 카테고리(벽, 창 등) 전체를, TypeFltr는 특정 타입(고정됨 0406x1220mm 등)만 수집
DEC[Digital Engineering Corporation]|200시간 과정
122
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

그래픽 요소 필터링 및 선별

Graphical Element와 Cull로 뷰포트 요소 필터링

Grasshopper 데피니션
Graphical Element Filtering
데이터 흐름
1
Graphical Element뷰포트 그래픽 요소
2
CatFltr → FiltElem필터 적용 후 요소 수집
3
Cull조건에 맞는 요소만 선별
Graphical Element
뷰포트의 그래픽 요소
FiltElem
필터로 요소 수집
Cull
패턴으로 요소 선별
CatFltr
카테고리 필터
주요 파라미터
EElements
FiltElem 입력 요소
FFilter
FiltElem 필터 조건
LList
Cull 입력 리스트
PPattern
Cull 선별 패턴
Cull: FiltElem으로 필터링 후 Cull Pattern으로 최종 선별. Graphical Element는 현재 뷰의 요소만 대상
DEC[Digital Engineering Corporation]|200시간 과정
123
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

복합 필터 조합 (AND/OR)

AndFltr, OrFltr로 여러 필터 조건 조합

Grasshopper 데피니션
Complex Filter Combination
데이터 흐름
1
CatFltr + LevelFltr개별 필터 생성
2
AndFltr / OrFltr필터 조합 (AND/OR)
3
FiltElem → Cull필터 적용 후 선별
LevelFltr
레벨로 필터링
AndFltr
AND 필터 조합
OrFltr
OR 필터 조합
FiltElem
필터로 요소 수집
주요 파라미터
LLevel
LevelFltr 레벨 입력
A/BFilter A/B
AndFltr, OrFltr 입력
FFilter
조합된 필터 출력
PPattern
Cull 선별 패턴
AND vs OR: AndFltr는 모든 조건 만족, OrFltr는 하나라도 만족하면 통과. 복잡한 조건은 중첩 가능
DEC[Digital Engineering Corporation]|200시간 과정
124
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

파라미터 기반 필터링

Parameters와 ParaFltr로 속성값 기반 요소 필터링

Grasshopper 데피니션
Parameter Based Filtering
데이터 흐름
1
ParametersBuilt-In 파라미터 선택 (레벨)
2
Equals값 비교 조건 설정
3
ParaFltr → Elements파라미터 필터 적용
Parameters
Revit 파라미터 선택
Equals
값 비교 (같음)
ParaFltr
파라미터로 필터링
Elements
필터된 요소 수집
주요 파라미터
PParameter
Built-In 파라미터
VValue
비교할 값 (Equals)
RRule
필터 규칙 (ParaFltr)
EElements
필터된 요소들
ParaFltr: Built-In Parameter(레벨 등)로 요소 필터링. Equals 외에도 Contains, Greater 등 다양한 비교 규칙 사용 가능
DEC[Digital Engineering Corporation]|200시간 과정
125

RhinoInside Basic

알고리즘 기획/구현

B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

기둥 타입 결정 - 가장 가까운 텍스트 찾기

기둥 중심점에서 가장 가까운 텍스트를 찾아 타입 정보 매칭

Grasshopper 데피니션
Column Type Matching Grasshopper Definition
알고리즘 흐름
1
Curve 중심점기둥 Curve의 중심점 추출
2
Find Text텍스트 위치/내용 수집
3
Closest Point가장 가까운 텍스트 매칭
Curve
Revit 기둥의 중심선
Evaluate
Curve 중심점(t=0.5) 추출
Find Text
텍스트 위치/내용 수집 (C#)
Closest Pt
가장 가까운 점 찾기
핵심 데이터 구조
CCurve
기둥의 중심선 커브
PPoint
기둥 중심점 (t=0.5)
TText Pts
텍스트 위치 포인트들
SStrings
텍스트 내용 (타입명)
Find Text 컴포넌트: C#으로 제작된 커스텀 컴포넌트로, 뷰에서 텍스트의 위치(Point)와 내용(String)을 추출하여 기둥-텍스트 매칭에 활용
DEC[Digital Engineering Corporation]|200시간 과정
127
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

사각 기둥 가로세로 크기 추출

기둥 Curve 길이를 분석하여 가로/세로 치수 산출

Grasshopper 데피니션
Column Size Extraction Grasshopper Definition
알고리즘 흐름
1
Explode기둥 Curve를 개별 선분으로 분해
2
Length각 선분의 길이 측정
3
Sort / Cull정렬 후 가로/세로 분리
Explode
Curve를 선분으로 분해
Length
선분/커브 길이 측정
Sort List
값 기준으로 정렬
Cull Index
인덱스로 항목 제거
핵심 데이터 구조
CCurve
기둥 외곽 폴리커브
SSegments
분해된 4개 선분
LLengths
각 선분 길이 값
W/HWidth/Height
가로/세로 치수
사각 기둥 가정: 4개 선분 중 동일한 길이끼리 짝지어 가로/세로로 분류. 정렬 후 짝수/홀수 인덱스로 분리하면 Width와 Height 추출 가능
DEC[Digital Engineering Corporation]|200시간 과정
128
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

타입 복제하기

기존 Revit 타입을 복제하여 새로운 타입 생성

Grasshopper Definition
Type Duplication Grasshopper Definition
알고리즘 흐름
1
Type 선택복제할 기존 타입 선택
2
Duplicate타입 복제 실행
3
Rename새 타입 이름 지정
Element Type
복제할 원본 타입 입력
Duplicate Type
Revit 타입 복제 컴포넌트
Text / Panel
새 타입 이름 입력
New Type
생성된 새 타입 출력
핵심 데이터 구조
TType
원본 Element Type
NName
새 타입 이름
DDuplicate
복제된 타입
RResult
적용된 Element
타입 복제 활용: 기존 타입의 속성을 유지하면서 새로운 이름과 파라미터 값을 가진 타입 생성. 파라메트릭 설계에서 다양한 사이즈 변형 시 필수 기법
DEC[Digital Engineering Corporation]|200시간 과정
129
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

내부 사각형 찾기

큰 사각형 내부에 포함된 작은 사각형 필터링

Grasshopper Definition
Find Inner Rectangle Grasshopper Definition
알고리즘 흐름
1
Centroid작은 사각형의 중심점 추출
2
Point In Curve중심점이 큰 사각형 내부인지 판별
3
Cull Pattern내부에 있는 사각형만 필터링
Area
커브의 면적과 중심점(Centroid) 계산
Point In Curve
점이 닫힌 커브 내부에 있는지 판별
Cull Pattern
Boolean 패턴으로 항목 필터링
Dispatch
Boolean 값으로 리스트 분리
핵심 데이터 구조
BBig Curve
큰 사각형 (경계)
SSmall Curves
작은 사각형들
CCentroids
각 사각형 중심점
RResult
내부 사각형만
Point In Curve: 중심점 기준 판별. 결과값 0=외부, 1=일치, 2=내부. Coincident(1)와 Inside(2)를 True로 처리하여 경계선 위 객체도 포함
DEC[Digital Engineering Corporation]|200시간 과정
130
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

면 분할하기

Surface를 U/V 방향으로 균등 분할

Grasshopper Definition
Surface Split Grasshopper Definition
알고리즘 흐름
1
DomainSurface의 U/V 도메인 추출
2
Divide도메인을 지정 개수로 분할
3
Isotrim분할된 서브서피스 추출
Surface Domain
Surface의 U/V 파라미터 범위 추출
Divide Domain²
2D 도메인을 U/V 개수로 분할
Isotrim
도메인 영역의 서브서피스 추출
Deconstruct Domain²
2D 도메인을 U/V 구간으로 분해
핵심 데이터 구조
SSurface
원본 서피스
UU Count
U 방향 분할 수
VV Count
V 방향 분할 수
RResult
분할된 서피스들
Isotrim (SubSrf): 원본 서피스의 일부 영역을 추출. Domain²로 정의된 U/V 범위에 해당하는 서브서피스를 잘라냄. 패널 시스템, 파사드 분할에 필수
DEC[Digital Engineering Corporation]|200시간 과정
131
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Domain(도메인)이란?

Grasshopper의 핵심 개념을 쉽게 이해하기

💡한 문장 정의
Domain = 객체를 비율 기반으로 제어하기 위한 좌표계
숫자의 범위(시작~끝)로 표현 → 0~1 사이 값으로 커브/서피스의 위치를 지정
📏 비유: 30cm 자
• 자의 시작점 = 0
• 자의 끝점 = 30
• 이 자의 Domain = 0 to 30
• 15cm 위치 = Domain의 중간점
🦗 Grasshopper에서
• 커브의 시작점 = 0
• 커브의 끝점 = 1
• 기본 Domain = 0 to 1
• 0.5 위치 = 커브의 정중앙
왜 0부터 1까지인가요?
0
시작 (0%)
0.25
1/4 (25%)
0.5
중간 (50%)
1
끝 (100%)
정규화(Normalize): 어떤 길이의 커브든 0~1 사이로 표현하면 "비율"로 다룰 수 있어 편리합니다.
실제 활용 예시: 커브 위에 점 배치하기
Step 1
커브를 준비합니다
(Domain: 0 to 1)
Step 2
원하는 위치 지정
(예: 0.3 = 30% 지점)
Step 3
Evaluate Curve로
해당 위치의 점 추출
DEC[Digital Engineering Corporation]|200시간 과정
132
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

2D Domain(Domain²) 이해하기

Surface를 다루는 핵심: U방향과 V방향

1DDomain (커브)
한 방향만 있음
시작(0) → 끝(1)
2DDomain² (서피스)
U ↔ / V ↕
두 방향이 있음
U방향(가로) + V방향(세로)
U방향과 V방향이란?
4×3 분할된 Surface
U 방향 (가로) →
Surface의 "가로" 방향. Domain: 0(왼쪽) ~ 1(오른쪽)
V 방향 (세로) ↓
Surface의 "세로" 방향. Domain: 0(아래) ~ 1(위)
Surface 분할 과정 (3단계)
1Surface Domain
Surface의 U/V 범위 추출
→ Domain²(0~1, 0~1)
2Divide Domain²
U=4, V=3으로 분할
→ 12개의 작은 Domain²
3Isotrim
각 Domain² 영역의
서브서피스 추출
핵심 포인트: Domain²는 "어디서 어디까지"를 정의합니다. U(0.25~0.5), V(0.33~0.66)이면 Surface의 특정 영역을 지정하는 것입니다.
DEC[Digital Engineering Corporation]|200시간 과정
133
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

커브 교점 추출하기

여러 커브의 교차점을 찾아 활용하기

Grasshopper Definition
Curve Intersection Grasshopper Definition
알고리즘 흐름
1
Curves교차 대상 커브들 준비
2
CCX/MCX커브 간 교점 찾기
3
Points교차점 좌표 추출
Curve | Curve (CCX)
두 커브의 교차점/교차구간 찾기
Multiple Curves (MCX)
여러 커브 간 모든 교점 찾기
핵심 데이터 구조
ACurve A
첫 번째 커브
BCurve B
두 번째 커브
PPoints
교차점 좌표
tParameter
교차 위치 파라미터
CCX vs MCX: CCX는 두 커브 간 교점, MCX는 여러 커브 간 모든 교점을 찾습니다. 그리드 패턴이나 복잡한 커브 네트워크에서 MCX가 효율적입니다.
DEC[Digital Engineering Corporation]|200시간 과정
134
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

교점으로 커브 자르기

교차점을 찾아 커브를 분할하는 알고리즘

Grasshopper Definition
Curve Shatter Grasshopper Definition
알고리즘 흐름
1
CCX/MCX커브 교차점 찾기
2
Parameter교차 위치 파라미터 추출
3
Shatter파라미터 위치에서 커브 분할
Curve | Curve (CCX)
두 커브의 교차점과 파라미터 추출
Multiple Curves (MCX)
여러 커브 간 모든 교점 찾기
Shatter
파라미터 위치에서 커브 분할
핵심 데이터 구조
CCurves
분할할 커브들
tParameters
분할 위치 (0~1)
SSegments
분할된 커브 조각들
Shatter: CCX/MCX에서 출력되는 tA, tB 파라미터를 Shatter의 t 입력에 연결하면 교차점에서 커브가 분할됩니다. 분할된 세그먼트는 Tree 구조로 출력됩니다.
DEC[Digital Engineering Corporation]|200시간 과정
135
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

커브로 서피스 자르기

커브를 이용한 서피스 분할 알고리즘

Grasshopper Definition
Surface Split Grasshopper Definition
알고리즘 흐름
1
Surface분할할 서피스 준비
2
Curve분할 기준 커브 배치
3
Split커브로 서피스 분할
Surface Split
커브로 서피스를 여러 조각으로 분할
Brep | Curve
Brep과 커브의 교차점/교차선 찾기
핵심 데이터 구조
SSurface
분할할 서피스
CCurves
분할 기준 커브들
FFragments
분할된 서피스 조각들
Surface Split: 커브가 서피스 위에 있어야 분할이 가능합니다. 커브를 서피스에 Project 하거나, Pull to Surface로 서피스 위에 배치한 후 사용하세요.
DEC[Digital Engineering Corporation]|200시간 과정
136
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Contour로 등고선 생성

형상에서 일정 간격의 단면선(등고선)을 추출하는 알고리즘

Grasshopper Definition
Contour Grasshopper Definition
알고리즘 흐름
1
ShapeBrep/Surface 준비
2
Direction단면 방향과 간격 설정
3
Contour등고선(단면선) 생성
Contour
형상을 일정 간격으로 잘라 단면선 생성
Unit Z
Z축 방향 단위벡터 (수직 방향)
핵심 데이터 구조
SShape
단면을 생성할 형상
PPoint
시작점 (기준점)
NNormal
단면 방향 벡터
DDistance
단면 간격
Contour: Distance 값으로 등고선 간격을 조절합니다. 지형 분석, 3D 프린팅 슬라이싱, 단면도 생성 등에 활용됩니다.
DEC[Digital Engineering Corporation]|200시간 과정
137
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Solid Boolean 연산

교집합, 합집합, 차집합을 이용한 형상 조작

Grasshopper Definition
Solid Boolean Grasshopper Definition
알고리즘 흐름
1
Brep A, B연산할 두 형상 준비
2
Boolean연산 유형 선택
3
Result결과 형상 출력
Solid Difference
A에서 B를 뺀 차집합 (A - B)
Solid Union
A와 B를 합친 합집합 (A + B)
Solid Intersection
A와 B의 겹치는 교집합 (A ∩ B)
핵심 데이터 구조
ABrep A
첫 번째 형상
BBrep B
두 번째 형상
RResult
연산 결과 형상
Boolean 연산: 두 형상이 서로 교차해야 연산이 가능합니다. 닫힌 Brep(Solid)에서만 작동하며, 열린 Surface는 Cap Holes로 닫아주세요.
DEC[Digital Engineering Corporation]|200시간 과정
138

RhinoInside Basic

리스트

B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

리스트 검색 및 삽입

리스트에서 값 찾기와 항목 삽입 알고리즘

Grasshopper Definition
List Search Insert Grasshopper Definition
알고리즘 흐름
1
List원본 리스트 준비
2
Search/Insert값 검색 또는 삽입 위치 지정
3
Result인덱스 또는 수정된 리스트
Member Index
리스트에서 특정 값의 인덱스 찾기
Insert Items
지정 위치에 새 항목 삽입
핵심 데이터 구조
SSearch List
검색 대상 리스트
MMember
찾을 값
IIndex
삽입/검색 위치
LList
결과 리스트
Member Index: 값이 여러 개 있으면 모든 인덱스를 반환합니다. Insert Items의 W(Wrap) 옵션으로 삽입 방식을 제어할 수 있습니다.
DEC[Digital Engineering Corporation]|200시간 과정
140
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

리스트 분할 및 추출

Series, Item, Partition을 활용한 리스트 조작

Grasshopper Definition
List Partition Grasshopper Definition
알고리즘 흐름
1
Series숫자 시리즈 생성
2
Item특정 인덱스 항목 추출
3
Partition리스트를 그룹으로 분할
Series
시작값, 간격, 개수로 숫자 시리즈 생성
List Item
인덱스로 리스트에서 항목 추출
Partition List
지정 크기로 리스트를 그룹 분할
핵심 데이터 구조
SStart
시리즈 시작값
NStep
증가 간격
CCount
항목 개수
iIndex
추출할 위치
Partition: Size로 그룹 크기를 지정합니다. 10개 리스트를 Size=2로 분할하면 5개 그룹이 됩니다. Tree 구조로 출력됩니다.
DEC[Digital Engineering Corporation]|200시간 과정
141
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

리스트 길이 및 항목 교체

List Length와 Replace Items를 활용한 리스트 조작

Grasshopper Definition
List Replace Grasshopper Definition
알고리즘 흐름
1
List원본 리스트 준비
2
Length리스트 길이 확인
3
Replace특정 인덱스 항목 교체
List Length
리스트의 항목 개수 반환
Replace Items
지정 인덱스의 항목을 새 값으로 교체
핵심 데이터 구조
LList
입력 리스트
LngLength
리스트 길이
IItem
교체할 새 값
iIndex
교체 위치
Replace: W(Wrap) 옵션이 True면 인덱스가 리스트 범위를 넘어도 순환하여 교체합니다. False면 범위를 벗어난 인덱스는 무시됩니다.
DEC[Digital Engineering Corporation]|200시간 과정
142
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

리스트 분리 및 정렬

Split, Sort, Dispatch를 활용한 리스트 조작

Grasshopper Definition
List Split Sort Grasshopper Definition
알고리즘 흐름
1
List원본 리스트 준비
2
Split/Sort분할 또는 정렬 수행
3
Dispatch패턴 기반 분리
Split List
인덱스 기준으로 리스트를 두 부분으로 분할
Sort List
키 값 기준으로 리스트 정렬
Dispatch
Boolean 패턴으로 리스트를 A/B로 분리
핵심 데이터 구조
LList
입력 리스트
iIndex
분할 위치
KKeys
정렬 기준 값
PPattern
Boolean 분리 패턴
Split vs Dispatch: Split은 인덱스로 분할, Dispatch는 True/False 패턴으로 분리합니다. Sort는 Keys 값의 오름차순으로 정렬합니다.
DEC[Digital Engineering Corporation]|200시간 과정
143

RhinoInside Basic

데이터 추출

B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Brep/Surface 분해

DeBrep를 활용한 지오메트리 데이터 추출

Grasshopper Definition
DeBrep Grasshopper Definition
데이터 추출 흐름
1
Brep/Srf입력 지오메트리 준비
2
DeBrepBrep 분해 수행
3
F/E/VFace, Edge, Vertex 추출
Brep
Brep 지오메트리 입력 (Boundary Representation)
Surface
Surface 지오메트리 입력
Deconstruct Brep
Brep를 Face, Edge, Vertex로 분해
핵심 데이터 구조
BBrep
입력 Brep 지오메트리
FFaces
분해된 면 리스트
EEdges
분해된 모서리 리스트
VVertices
분해된 꼭짓점 리스트
DeBrep: Brep를 구성하는 Face(면), Edge(모서리), Vertex(꼭짓점)를 개별 리스트로 추출합니다. Surface도 Brep로 변환 후 분해됩니다.
DEC[Digital Engineering Corporation]|200시간 과정
144
B+CD+P
BIM-IT 융합 과정
Chapter 5: BIM-IT 융합기술 기본

Curve 점 추출

Mid Point, End Points, Explode를 활용한 점 데이터 추출

Grasshopper Definition
Curve Point Extraction Grasshopper Definition
데이터 추출 흐름
1
Curve입력 커브 준비
2
Analysis점 추출 컴포넌트 적용
3
Points중점/끝점/정점 추출
Mid Point
커브의 중간점 반환
End Points
커브의 시작점과 끝점 반환
Explode
폴리커브를 선분과 꼭짓점으로 분해
Evaluate Curve
파라미터 위치의 점 반환
핵심 데이터 구조
CCurve
입력 커브
MMid
중간점
S/EStart/End
시작점/끝점
VVertices
꼭짓점 리스트
Evaluate Curve: t=0은 시작점, t=0.5는 중간점, t=1은 끝점입니다. Mid Point는 t=0.5와 동일한 결과를 반환합니다.
DEC[Digital Engineering Corporation]|200시간 과정
145
06
Chapter

BIM-IT 융합기술 모델링

파라메트릭 모델링 및 데이터 전송

35
HOURS
5
SECTIONS
6.1.5모델링 및 데이터 전송
6.1.6기본 파라메트릭 모델링
6.1.7커스터마이징 및 자동화
6.1.8복잡한 데이터 처리
6.1.9프로젝트 기반 학습
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

BIM-IT 융합기술 모델링

35시간

강의계획서 - 파라메트릭 모델링 및 데이터 전송

1. 강의 개요

과목명
BIM-IT 융합기술 모델링
교육시간
35시간 (이론 5H + 실습 30H)
대상
BIM-IT 융합기술 기본 이수자
선수학습
Chapter 5. BIM-IT 융합기술 기본
실습환경
Rhino 8 + Grasshopper, Revit 2025

2. 지도목표

Grasshopper를 활용한 파라메트릭 모델링과 Rhino-Revit 간 데이터 전송 역량을 습득한다.
1Rhino-Revit 간 모델 데이터 전송
2Grasshopper 기반 파라메트릭 모델링
3커스텀 도구 및 스크립트 작성
4복잡한 데이터 변환 및 처리
5실제 프로젝트 기반 문제 해결

3. 사용교재 (자료)

주교재
본 교육자료
참고
RhinoInside 문서
실습
강사 제공

4. 주요 내용 (학습활동)

6.1.5모델링 및 데이터 전송실습5H
Rhino 모델 가져오기 / Revit 모델 내보내기
6.1.6기본 파라메트릭 모델링실습8H
Grasshopper 기반 모델링 / 기본 파라메트릭 요소 생성
6.1.7커스터마이징 및 자동화이론+실습8H
사용자 정의 도구 및 스크립트 / API 활용 커스터마이징
6.1.8복잡한 데이터 처리실습7H
데이터 변환 및 처리 / 고급 파라메트릭 디자인 및 분석
6.1.9프로젝트 기반 학습실습7H
실제 프로젝트 사례 분석 / 문제 해결 방법
평가 기준
이론평가10%
실습평가90%
파라메트릭 모델링 결과물 중심 평가
DEC[Digital Engineering Corporation]|200시간 과정
146

Shape File to Site

국토정보지리원 Shape 파일로 대지 및 주변 맵 생성

B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

Shapefile 소개

국토정보플랫폼을 통한 GIS 데이터 활용

국토정보플랫폼 (map.ngii.go.kr)
국토정보플랫폼 홈페이지
제공 서비스
1
수치지도지형/지물 벡터 데이터
2
항공사진고해상도 항공 이미지
3
국가기준점측량 기준점 정보
4
국토위성영상위성 촬영 이미지
Shapefile이란?
Shapefile은 ESRI에서 개발한 GIS(지리정보시스템) 벡터 데이터 포맷입니다. 점(Point), 선(Line), 면(Polygon) 형태의 공간 데이터와 속성 정보를 함께 저장하며, 건설/토목 분야에서 대지 경계, 도로, 건물 등의 지형 정보를 표현하는 데 널리 사용됩니다.
.SHP
도형 정보 (점, 선, 면)
.DBF
속성 데이터 (테이블)
.SHX
도형 인덱스 파일
.PRJ
좌표계 정보
BIM-IT 융합에서의 활용
대지 경계 생성
Shapefile의 필지 데이터를 Grasshopper로 가져와 Revit 대지 경계 자동 생성
주변 환경 모델링
도로, 하천, 인접 건물 정보를 활용한 컨텍스트 모델 생성
지형 분석
등고선, 표고점 데이터로 지형 서피스 및 토공량 분석
DEC[Digital Engineering Corporation]|200시간 과정
148
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

Shapefile 다운로드

국토정보플랫폼에서 GIS 데이터 다운로드 방법

영역 선택 및 다운로드 화면
Shapefile 다운로드 화면
다운로드 절차
1
회원가입 및 로그인
국토정보플랫폼 회원가입 후 로그인
2
수치지도 선택
국토정보맵 > 수치지도 메뉴 접속
3
영역 선택
다운로드할 지역을 지도에서 드래그하여 선택
4
데이터 다운로드
Shapefile 포맷 선택 후 다운로드
연속수치지형도
전국 지형/지물 데이터
SHP
수치지형도 2.0
고정밀 지형도 데이터
SHP
지적도
필지 경계 및 지번 정보
SHP
DEM
수치표고모델 (지형 높이)
GeoTIFF
DEC[Digital Engineering Corporation]|200시간 과정
149
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

Shapefile 활용 가이드

좌표계 이해와 Grasshopper 연동 방법

국내 GIS 좌표계 (Korea 2000)
EPSG:5186
Korea 2000 중부원점
서울, 경기 등 중부지역
EPSG:5185
Korea 2000 서부원점
전라, 충남 서부지역
EPSG:5187
Korea 2000 동부원점
강원, 경북 동부지역
EPSG:5188
Korea 2000 동해원점
울릉도, 독도 지역
@it
GIS 데이터 가져오기 및 지형 생성
Shapefile 읽기OSM 데이터지형 메쉬
Elk
OpenStreetMap 기반 도시 데이터
OSM 건물도로 네트워크지형 등고선
Shapefile 활용 팁
1영역 선택
프로젝트 대지 주변 500m~1km 범위 선택 권장
2좌표 변환
Grasshopper에서 좌표 원점 조정 필요 (대규모 좌표값)
3레이어 분리
건물, 도로, 필지 등 레이어별 별도 다운로드
4파일 관리
SHP, DBF, SHX, PRJ 4개 파일을 같은 폴더에 보관
국토정보플랫폼→Shapefile 다운로드→Grasshopper (@it/Elk)→Revit 대지 생성
DEC[Digital Engineering Corporation]|200시간 과정
150
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

Shapefile to Site 워크플로우

GIS 데이터를 활용한 사이트 모델링 전체 과정

Grasshopper Definition 전체 구조
Shapefile to Site Grasshopper Definition
입력 데이터 및 생성 결과
수치지형도
등고선, 표고점
↓지형 서피스
지적도
필지 경계, 지번
↓대지 경계
건물 레이어
건물 폴리곤
↓주변 건물
도로 레이어
도로 중심선
↓도로 면
DEC[Digital Engineering Corporation]|200시간 과정
151
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

@it 애드인 설치

Food for Rhino에서 다운로드 및 Grasshopper 설치 방법

1Food for Rhino 접속
→
2파일 다운로드
→
3컴포넌트 폴더에 설치
1
Food for Rhino 접속
•food4rhino.com 웹사이트 접속
•검색창에 "@it" 입력하여 검색
•@it (by elcinertugrul) 플러그인 선택
2
파일 다운로드
•Rhino 버전에 맞는 파일 선택 (Rhino 7/8)
•Download 버튼 클릭
•ZIP 파일 다운로드 완료
3
컴포넌트 폴더에 설치
•Grasshopper 실행 → File → Special Folders
•Components Folder 클릭하여 폴더 열기
•ZIP 파일 압축 해제 후 폴더에 붙여넣기
•Rhino 재시작
@it 주요 컴포넌트
Input
Import SHP
Shapefile 가져오기
Input
Import DEM
DEM 지형 데이터
Geometry
Create Terrain
지형 서피스 생성
Geometry
Building Mass
건물 매스 생성
Geometry
Road Surface
도로 면 생성
Utility
Coord Transform
좌표계 변환
DEC[Digital Engineering Corporation]|200시간 과정
152
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

수치지도 불러오기 및 좌표 변환

@it 애드인을 활용한 Shapefile Import 워크플로우

Path
SHP 파일 경로 지정
→
Imp@it
Shapefile 불러오기 (WGS84)
→
DataVis@it
지형 데이터 추출
→
Orient
원점(0,0,0)으로 이동
→
Scale
m → mm 변환 (×1000)
Grasshopper Definition
수치지도 불러오기 Grasshopper Definition
좌표계 변환
WGS84 → 프로젝트 좌표계
원점 이동
Orient 컴포넌트로 (0,0,0) 배치
단위 변환
Factor 1000 (m → mm)
DEC[Digital Engineering Corporation]|200시간 과정
153
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

지형(Toposolid) 생성

포인트 그리드 기반 Revit 지형 모델링 워크플로우

Divide
커브를 포인트로 분할
→
CullPt
중복 포인트 제거
→
InCurve
경계 내부 포인트 추출
→
Dispatch
데이터 분리
→
Toposolid
Revit 지형 생성
Grasshopper Definition
지형 생성 Grasshopper Definition
포인트 그리드 생성
Divide로 커브를 N등분하여 포인트 생성
경계 필터링
InCurve로 경계 내부 포인트만 추출
Revit 지형 생성
Toposolid로 Revit 지형 요소 생성
DEC[Digital Engineering Corporation]|200시간 과정
154
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

균일한 포인트 그리드로 지형 생성

Delaunay 메쉬 기반 균일한 포인트 추출 워크플로우

Del
Delaunay 메쉬 생성
→
Boundary
경계 서피스 추출
→
SDivide
균일한 UV 분할
→
MeshRay
높이값 추출
→
Toposolid
Revit 지형 생성
Grasshopper Definition
균일한 포인트 그리드 지형 생성 Grasshopper Definition
Delaunay 메쉬
불규칙 포인트를 삼각형 메쉬로 변환
균일한 그리드
SDivide로 U×V (30×30) 균일 분할
높이값 추출
MeshRay로 메쉬 표면 Z값 획득
DEC[Digital Engineering Corporation]|200시간 과정
155
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

건물 매스 생성 (층수 기반)

풋프린트 층수 속성을 활용한 건물 높이 자동 생성

Imp@it
건물 SHP 불러오기
→
DataVis@it
층수 속성 추출
→
A×B
층수 × 3000mm
→
Extr
건물 높이 생성
Grasshopper Definition
건물 매스 생성 Grasshopper Definition
층수 속성 추출
DataVis@it의 GetValofFeat으로 층수 추출
높이 계산
층수 × 3000mm (1층당 3m)
건물 매스 생성
Extrude로 Z방향 돌출
DEC[Digital Engineering Corporation]|200시간 과정
156
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

경계 내 건물 매스 필터링

특정 영역 내부의 건물만 선택적으로 매스 생성

Area
풋프린트 중심점
→
InCurve
경계 내부 판별
→
Dispatch
건물/층수 필터
→
A×B
층수 × 3m
→
Extr
건물 매스 생성
Grasshopper Definition
경계 내 건물 매스 필터링 Grasshopper Definition
중심점 기반 필터링
Area로 풋프린트 중심점(C) 추출
경계 내부 판별
InCurve로 경계 커브 내부 여부 확인
동기화 필터링
Dispatch로 건물과 층수 동시 필터
DEC[Digital Engineering Corporation]|200시간 과정
157
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

지형 위 건물 매스 배치

지형 표면 높이에 맞춰 건물을 배치하고 3D 형상 생성

MeshRay
지형 높이 측정
→
Dist
이동 거리 계산
→
Move
지표면으로 이동
→
Extr
건물 높이 돌출
→
Cap
닫힌 형상 생성
Grasshopper Definition
지형 위 건물 매스 배치 Grasshopper Definition
지형 높이 측정
MeshRay로 건물 위치의 지형 높이 측정
수직 이동
Dist + Move로 지표면까지 이동
닫힌 형상 생성
Cap으로 Brep 상하단 닫기
DEC[Digital Engineering Corporation]|200시간 과정
158
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

주변 건물 DirectShape 생성

건물 매스를 Revit DirectShape로 배치하여 주변 환경 구성

Categories
일반 모델 선택
→
Extr
건물 형상 돌출
→
Cap
닫힌 형상 생성
→
G-Shape
DirectShape 생성
Grasshopper Definition
주변 건물 DirectShape 생성 Grasshopper Definition
카테고리 선택
Categories에서 "일반 모델" 선택
3D 형상 생성
Extrude + Cap으로 닫힌 Brep 생성
DirectShape 배치
G-Shape로 Revit에 주변건물 배치
DEC[Digital Engineering Corporation]|200시간 과정
159
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

도로 종단면 생성

도로 선형을 따라 지형 높이를 추출하여 종단면 프로파일 생성

DivLength
도로 선형 분할
→
MeshRay
지형 높이 추출
→
pDecon
XYZ 분해
→
Move
높이 적용
→
IntCrv
종단면 생성
Grasshopper Definition
도로 종단면 생성 Grasshopper Definition
도로 선형 분할
DivLength로 일정 간격(10m)으로 분할
높이값 추출
MeshRay + pDecon으로 지형 Z값 추출
종단면 커브 생성
IntCrv로 원지반 높이라인 생성
DEC[Digital Engineering Corporation]|200시간 과정
160
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

계획 선형 적용

계획된 도로 선형을 원지반에 적용하여 계획 종단면 생성

DivLength
계획 선형 분할
→
pDecon
Y값 추출
→
A-B
높이 차이 계산
→
Move
계획선형 적용
→
IntCrv
계획 종단면 생성
Grasshopper Definition
계획 선형 적용 Grasshopper Definition
기준점 Y값 추출
pDecon으로 종단 기준점 높이 추출
높이 차이 계산
A-B로 계획 높이와 원지반 높이 차이
계획 선형 생성
Move + IntCrv로 계획 종단면 생성
DEC[Digital Engineering Corporation]|200시간 과정
161
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

도로면 생성

종단면 커브를 기반으로 도로면(Surface) 생성

IntCrv
종단면 커브
→
PFrames
수직면 생성
→
Line
X축 라인 생성
→
Loft
도로면 생성
Grasshopper Definition
도로면 생성 Grasshopper Definition
수직 프레임 생성
PFrames로 커브 따라 수직면 생성
도로 폭 라인 생성
X축 기준 ±9m 라인 생성
도로면 서피스 생성
Loft로 라인들을 연결하여 면 생성
DEC[Digital Engineering Corporation]|200시간 과정
162
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

지형 서브디비전 생성

Toposolid 지형을 커브로 분할하여 서브디비전 생성

Crv
경계 커브
→
Toposolid
지형 생성
→
Crv
분할 커브
→
T-Subdivision
서브디비전 생성
Grasshopper Definition
지형 서브디비전 생성 Grasshopper Definition
Toposolid 지형
균일한 포인트로 Revit 지형 생성
분할 커브
서브디비전 경계를 위한 커브 입력
서브디비전 생성
T-Subdivision으로 지형 분할
DEC[Digital Engineering Corporation]|200시간 과정
163
PRACTICE

연습문제

배운 내용을 바탕으로 실습 문제를 풀어봅니다

Grasshopper
RhinoInside
Revit
Site Modeling
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

연습문제

Shapefile to Site 실습 종합 문제

01
도로 및 인도 모델링
1.Shapefile에서 도로/인도 레이어 검색 및 폴리라인 추출
2.기존 Toposolid 지형에 폴리라인 연결
3.T-Subdivision으로 도로/인도 영역 분할 생성
Hint: @it Shapefile, T-Subdivision
02
지하층 구성 (B4F)
1.주변 매스 1개 삭제 후 지하 4층 터파기 영역 생성
2.CIP(Cast-In-Place Pile) 흙막이 벽체 모델링
3.오픈컷 공법 적용 시 법면 경사(1:0.5) 표현
Hint: Extrusion, Boolean Difference
03
수인한도 분석
1.20층 규모(층고 3.5m, 총 70m) 건물 Mass 생성
2.SunVector Analysis 컴포넌트 연결 및 설정
3.동지(12/22) 기준 인접 대지 일영 영향 분석
Hint: Date, Time, Location 설정
04
3D 주상도 작성
1.제공된 시추공 위치 포인트 데이터 불러오기
2.지층별 깊이/토질 정보로 색상 구분 Cylinder 생성
3.주상도 라벨 및 범례 추가
Hint: Cylinder, Series, Color
제출:Grasshopper Definition (.gh) + Revit Project (.rvt) + 결과 캡처
3시간
DEC[Digital Engineering Corporation]|200시간 과정
165

SpaceFrame 생성

Surface를 이용한 SpaceFrame 생성 알고리즘

B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

SpaceFrame 생성

Surface 분할 기반 입체 트러스 구조 생성 알고리즘

Divide
서피스 분할
→
SubSrf
면 추출
→
EvalSrf
Normal 추출
→
DeBrep
절점 연결
→
Line SDL
프레임 높이
SpaceFrame Grasshopper Definition
서피스 면 분할
U/V Count로 서피스를 균등 분할하여 그리드 포인트 생성
Normal 방향 추출
Area 중심점에서 EvalSrf로 법선 벡터 획득
프레임 부재 생성
DeBrep으로 절점 연결 후 Line SDL로 높이 지정
DEC[Digital Engineering Corporation]|200시간 과정
167
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

중복선 선분 제거

중복포인트를 활용해서 중복선을 제거하는 알고리즘

Crv
상부프레임 커브
→
Flatten
리스트 평탄화
→
CullPt
중복점 제거
→
Item
선분 추출
Grasshopper Definition
중복선 선분 제거 Grasshopper Definition
Flatten 평탄화
데이터 트리를 단일 리스트로 변환하여 중복 검사 준비
CullPt 중복 제거
Tolerance(0.5) 내 중복 포인트를 하나만 남기고 제거
Item 선분 추출
중복 제거된 인덱스로 해당하는 선분만 추출
DEC[Digital Engineering Corporation]|200시간 과정
168
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

하단 부재 작성

가로분할 갯수만큼 파티션으로 나누고 폴리라인 생성

End
끝점 추출
→
Partition
리스트 분할
→
Flip
배열 순서 변경
→
PLine
폴리라인 생성
Grasshopper Definition
하단 부재 작성 Grasshopper Definition
End Points 추출
서페이스 높이 지정선에서 끝점(S/E)을 추출
Partition 분할
가로분할 갯수만큼 리스트를 그룹으로 분할하여 정리
Flip + Polyline
배열 순서를 변경(Matrix 전치)하고 폴리라인으로 연결
DEC[Digital Engineering Corporation]|200시간 과정
169
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

SpaceFrame 보 생성

폴리라인을 단일선분으로 분해하여 구조 보 생성

Crv
중복 제거된 선분
→
Explode
단일선분 분해
→
Types
타입 선택
→
S-Beam
구조 보 생성
Grasshopper Definition
SpaceFrame 보 생성 Grasshopper Definition
Explode 분해
폴리라인을 보 생성을 위해 단일선분으로 분해
Types 타입 선택
원형강관 등 구조 보 패밀리 타입 선택
S-Beam 보 생성
선분과 레벨 정보로 Revit 구조 보 생성
DEC[Digital Engineering Corporation]|200시간 과정
170

램프 생성

Grasshopper를 이용한 램프 생성 알고리즘

B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

원형램프 기준면

Arc와 Offset으로 기준곡선을 만들고 Sweep2로 기준면 생성

Arc
내측 기준곡선
→
Offset
외측 기준곡선
→
Geodesic
기준선 생성
→
Swp2
기준면 생성
Grasshopper Definition
원형램프 기준면 Grasshopper Definition
Arc + Offset 곡선
램프 반경과 폭으로 내측/외측 기준곡선 생성
Geodesic 기준선
Extrude 면에서 엣지를 추출하여 램프 경사 기준선 생성
Sweep2 기준면
두 레일(내/외측 곡선)과 단면으로 램프 기준면 생성
DEC[Digital Engineering Corporation]|200시간 과정
172
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

연석 및 마감면 생성

Offset과 SrfSplit으로 연석 및 마감면 분할 생성

Offset
연석 기준선
→
Extr
절단면 생성
→
BBX
절단 커브 추출
→
SrfSplit
연석/마감면 분할
Grasshopper Definition
연석 및 마감면 생성 Grasshopper Definition
Offset 기준선
내/외측 기준선에서 연석 폭(300)만큼 오프셋하여 연석 작성 기준선 생성
BBX 절단 커브
Extrude 면의 Bounding Box에서 절단용 커브 추출
SrfSplit 면 분할
램프 기준면을 절단 커브로 분할하여 내측연석, 마감면, 외측연석 생성
DEC[Digital Engineering Corporation]|200시간 과정
173
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

램프 Solid 생성

기준면에서 Solid 생성 후 G-Shape로 Revit DirectShape 변환

Move
면 이동
→
Extr
두께 돌출
→
Cap
Solid 생성
→
G-Shape
DirectShape
Grasshopper Definition
램프 Solid 생성 Grasshopper Definition
Move + Extrude
기준면을 Z방향으로 이동 후 두께만큼 돌출하여 3D 형상 생성
Cap Holes
열린 Brep의 구멍을 막아 닫힌 Solid(Closed Brep)로 변환
G-Shape 변환
램프골조, 마감면, 연석을 Revit DirectShape 요소로 생성
DEC[Digital Engineering Corporation]|200시간 과정
174
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

램프 경사도 추출

램프 길이와 높이를 측정하여 경사도(%) 계산

Len
램프길이 추출
→
Line
기준선 생성
→
A/B
높이/길이 비율
→
A×B
경사도(%) 계산
Grasshopper Definition
램프 경사도 추출 Grasshopper Definition
BBX + Length
Bounding Box에서 램프 기준선을 추출하고 Length로 길이 측정
전개 기준선 생성
Line + End + Move로 램프 높이를 측정할 수직 기준선 생성
경사도(%) 계산
(램프높이 ÷ 램프길이) × 100 으로 경사도 백분율 계산
DEC[Digital Engineering Corporation]|200시간 과정
175
/
PRACTICE

램프 연습문제

직선 램프 생성과 곡선+직선 램프 결합 실습

직선 램프
곡선 램프
Solid 생성
경사도 검증
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

곡선+직선 램프 결합

복합 경로의 연속적인 램프 구조 설계 실습

01
복합 경로 설계
1.Arc로 곡선 구간 (반지름 6500mm, 90도) 생성
2.Line으로 직선 구간 (길이 12000mm) 생성
3.Join Curves로 곡선+직선 연결 (G1 연속성)
Hint: Arc, Line, Join
02
기준면 연속 생성
1.Offset으로 램프 폭(6000mm) 양쪽 생성
2.Geodesic으로 곡선 구간 측지선 연결
3.Loft/Sweep2로 전체 기준면 생성
Hint: Offset, Geodesic, Sweep2
03
결합부 처리
1.곡선/직선 각각 Solid 생성
2.G-Shape로 Revit DirectShape 변환
Hint: Extrude, Cap, G-Shape
04
전체 경사도 검증
1.곡선 구간: 호 길이 기준 경사도 계산
2.직선 구간: 수평 길이 기준 경사도 계산
3.전체 평균 경사도 및 최대 경사도 검증
Hint: Length, Arc Length, A/B × 100
제출:Grasshopper Definition (.gh) + Revit Project (.rvt) + 경사도 검증 결과
2시간
DEC[Digital Engineering Corporation]|200시간 과정
177
⚙
TYPE GENERATOR

Revit 유형 자동 생성기

구조부재 유형 자동생성 알고리즘

Family Type
Parameter
Beam
Column
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

커브 정렬 및 사이즈 분할

Type Generator

폴리라인을 분해하고 길이별로 정렬하여 가로/세로 치수 추출

Explode
폴리라인 분해
→
Len
길이 측정
→
Sort
길이순 정렬
→
Split
리스트 분할
Grasshopper Definition
커브 정렬 및 분할 알고리즘
커브 분해 + 길이 측정
Explode로 폴리라인을 개별 선분으로 분해하고 Length로 각 선분의 길이를 측정
길이순 정렬
Sort List로 길이 기준 정렬하여 짧은 것(가로)과 긴 것(세로)을 구분
가로/세로 사이즈 분할
Split List로 Index 기준 분할하여 기둥의 가로(Width)와 세로(Depth) 사이즈 추출
DEC[Digital Engineering Corporation]|200시간 과정
179
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

타입 복제 및 파라미터 적용

Type Generator

기존 타입을 복제하고 치수 파라미터(b, h)에 값을 적용

Types
타입 선택
→
Duplicate
타입 복제
→
Inspect
파라미터 확인
→
Set Param
값 적용
Grasshopper Definition
타입 복제 및 파라미터 적용 알고리즘
타입 복제
Types로 기존 Family Type(BasicColumn) 선택 후 Duplicate로 새 이름의 타입 생성
파라미터 확인
Inspect로 복제된 타입의 파라미터 목록 확인 (Dimensions: b, h 등)
치수 값 적용
Number로 가로/세로 사이즈 입력 후 Set Parameter로 b, h 파라미터에 값 적용
DEC[Digital Engineering Corporation]|200시간 과정
180
↔
GRASSHOPPER + REVIT

디멘젼 생성하기

Grasshopper를 활용한 Revit 치수 자동 생성
Grasshopper
Dimension
Revit API
Automation
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

디멘젼 생성 기본

Dimension

벽체 2개를 선택하여 Linear Dimension 생성

Element
벽체 선택
→
Reference
참조 추출
→
Move
위치 이동
→
L-Dim
치수 생성
Grasshopper Definition
디멘젼 생성 기본 정의
요소 선택
Graphical Element로 뷰에서 벽체 2개 선택 후 Location으로 위치 커브 추출
참조 추출
E-References로 참조점 추출 후 List Item으로 Index 3, 5 선택 (벽체 양쪽 면)
치수 생성
Unit Y × 1500으로 치수선 오프셋 후 L-Dim으로 Linear Dimension 생성
DEC[Digital Engineering Corporation]|200시간 과정
181
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

디멘젼 생성 알고리즘

Dimension

Revit 요소의 참조점을 추출하여 Linear Dimension 자동 생성

Element
요소 선택
→
Reference
참조 추출
→
Location
위치 분석
→
LDim
치수 생성
Grasshopper Definition
디멘젼 생성 알고리즘
요소 참조 추출
Graphical Element로 Revit 요소 선택 후 E-Reference로 치수 기준점 참조 추출
위치 분석
Location과 Geometry로 요소 위치 추출, Surface 분석으로 치수선 배치 위치 계산
Linear Dimension 생성
Move로 치수선 위치 조정 후 LDim 컴포넌트로 Revit 치수 자동 생성
DEC[Digital Engineering Corporation]|200시간 과정
182
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

디멘젼 생성 상세 구현

Dimension

핵심 컴포넌트와 데이터 흐름 분석

핵심 컴포넌트
Graphical ElementRhinoInside
Revit 뷰에서 그래픽 요소 선택
E-ReferenceRhinoInside
요소의 치수 참조점 추출
LocationRhinoInside
요소의 위치 커브/포인트 추출
LDimRhinoInside
Linear Dimension 치수 생성
파라미터 설정
Amplitude: 치수선 오프셋 거리 (예: 1500mm)
Angle: 치수선 배치 각도 조절
데이터 흐름
1
요소 선택
Graphical Element로 벽/기둥 등 선택
2
참조 추출
E-Reference로 치수 기준점 참조 획득
3
위치 분석
Location → End로 끝점 추출, Srf CP로 표면 분석
4
위치 조정
Amplitude 값으로 치수선 오프셋 거리 설정
5
치수 생성
LDim으로 참조점 기반 Linear Dimension 생성
출력 결과
Revit 뷰에 Linear Dimension이 자동 생성되며, 요소 간 거리가 정확하게 표기됩니다.
DEC[Digital Engineering Corporation]|200시간 과정
183
▦
GRASSHOPPER + REVIT

외벽마감(돌마감) 생성하기

Grasshopper를 활용한 외벽 돌마감 패널 자동 생성
Grasshopper
Wall Finish
Stone Panel
Automation
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

외벽마감(돌마감) 생성 알고리즘

Wall Finish

페이스 선택으로 프로필 벽체 자동 생성

Face
면 선택
→
DeBrep
엣지 분해
→
DivLength
길이 분할
→
SrfSplit
면 분할
→
P-Wall
벽 생성
Grasshopper Definition
외벽마감 생성 정의
면 선택 및 분해
Face로 Revit 요소의 면 선택 후 DeBrep으로 엣지 추출, Offset(85mm)으로 내부 영역 설정
분할선 생성
DivLength(1200, 600)로 패널 분할점 생성, Vec2Pt + Unit Z로 수직 분할선(8000mm) 생성
벽체 생성
SrfSplit으로 면 분할 후 Join+Offset(5mm)으로 프로필 생성, P-Wall로 돌마감 벽체 생성
DEC[Digital Engineering Corporation]|200시간 과정
184
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

외벽마감(돌마감) 상세 구현

Wall Finish

핵심 컴포넌트와 데이터 흐름 분석

핵심 컴포넌트
FaceRhinoInside
Revit 요소에서 면(Face) 선택
DeBrepGrasshopper
Brep을 Face/Edge/Vertex로 분해
OffsetGrasshopper
커브를 지정 거리만큼 오프셋
DivLengthGrasshopper
커브를 지정 길이로 분할
FlipGrasshopper
커브 방향 뒤집기
SrfSplitGrasshopper
커브로 서피스 분할
P-WallRhinoInside
프로필 기반 벽체 생성
파라미터 설정
Offset: 85mm (테두리), 5mm (프로필)
DivLength: 가로 1200mm, 세로 600mm
Line: 수직 분할선 8000mm
데이터 흐름
1
면 선택
Face로 Revit 요소의 외벽 면 선택
2
엣지 추출
DeBrep으로 면의 엣지 커브 추출
3
내부 오프셋
Offset(85mm)으로 마감 영역 설정
4
분할점 생성
DivLength로 가로(1200), 세로(600) 분할
5
분할선 생성
Vec2Pt + Line으로 수직 분할선(8000mm)
6
면 분할
SrfSplit으로 패널 단위로 면 분할
7
프로필 생성
Join + Offset(5mm)으로 벽 프로필
8
벽체 생성
P-Wall + Types(돌마감)로 벽체 생성
출력 결과
Revit에 Profile Wall(돌마감 타입)이 자동 생성되며, 패널 분할 패턴이 적용됩니다.
DEC[Digital Engineering Corporation]|200시간 과정
185
▤
GRASSHOPPER + REVIT

보 일람표 생성하기

Grasshopper를 활용한 보 일람표 자동 생성
Grasshopper
Schedule
Beam
Automation
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

보 일람표 생성하기

알고리즘 개요 및 데이터 흐름

1
일람표 참조
텍스트 추출
2
데이터 분리
Dispatch
3
좌표 파싱
pDecon
4
타입 필터
Types
5
타입 생성
Duplicate
Grasshopper Definition
보 일람표 생성 Grasshopper 정의
입력 데이터
1Revit 보 일람표 뷰
2텍스트 위치(Point) + 내용
3보 타입 크기 문자열 (400x800mm)
처리 과정
1Point Name으로 텍스트 추출
2Dispatch로 행/열 데이터 분리
3Sort + Item으로 데이터 정렬/추출
출력 결과
1기존 보 타입 복제
2새 보 타입 자동 생성
3파라미터 값 확인 (Inspect)
DEC[Digital Engineering Corporation]|200시간 과정
186
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

데이터 추출 및 분리

일람표 텍스트 추출과 행/열 데이터 분리

핵심 컴포넌트
Boolean ToggleParams
실행 여부 True/False 토글
StartCustom
워크플로우 실행 트리거
Point NameRhinoInside
일람표 텍스트 위치/내용 추출
InCurveGrasshopper
커브 내 포인트 관계 판별
DispatchGrasshopper
패턴으로 데이터 분리
실행 순서
Toggle → Start → Point Name → InCurve → Dispatch
데이터 흐름
1
실행 트리거
Toggle(True) → Start 컴포넌트
2
텍스트 추출
Point Name으로 일람표 셀 데이터
3
영역 판별
InCurve로 행/열 구분
4
데이터 분리
Dispatch로 A(True)/B(False) 분리
5
좌표 분해
pDecon으로 X, Y, Z 추출
6
정렬
Sort로 X/Y 기준 데이터 정렬
중간 결과
X/Y 좌표로 정렬된 일람표 셀 데이터 리스트
DEC[Digital Engineering Corporation]|200시간 과정
187
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

타입 필터링 및 생성

보 타입 선택과 새 타입 자동 생성

핵심 컴포넌트
ItemGrasshopper
인덱스로 리스트 항목 추출
PanelGrasshopper
데이터 시각화 (400x800mm)
TypesRhinoInside
보 타입 필터링 및 선택
DuplicateRhinoInside
기존 타입 복제하여 새 타입 생성
InspectRhinoInside
요소 파라미터 검사
ParamRhinoInside
파라미터 값 출력
데이터 흐름
1
항목 추출
Item으로 보 크기(W, H) 값 추출
2
크기 문자열
Panel에 "400 x 800mm" 형식 조합
3
타입 필터
Types로 구조 보 타입 필터링
4
타입 복제
Duplicate로 새 타입명으로 복제
5
파라미터 확인
Inspect로 생성된 타입 검증
최종 출력
Revit에 새로운 보 타입이 생성됩니다. Inspect 컴포넌트로 Dimensions, Identity Data, IFC Parameters 등의 파라미터 값을 확인할 수 있습니다.
주요 파라미터
Dimensions: b, hIdentity Data: 설명Structural: 단면 모양IFC Parameters
DEC[Digital Engineering Corporation]|200시간 과정
188
◈
GRASSHOPPER + REVIT

Adaptive Component

Grasshopper를 활용한 적응형 컴포넌트 생성
Adaptive
Component
Parametric
Family
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

Adaptive Component 배치

8포인트 적응형 컴포넌트 자동 배치

1
Surface 분할
Divide
2
Box 생성
SBox
3
형상 분해
DeBrep
4
조건 필터
Dispatch
5
포인트 추출
Points
6
AC 배치
A-Component
Grasshopper Definition
Adaptive Component Grasshopper 정의
입력 데이터
1Revit Surface (Srf)
2U/V Count (분할 수)
3Height, Size (크기 파라미터)
처리 과정
1Divide로 Surface U/V 분할
2SBox로 각 셀에 Box 생성
3DeBrep로 8개 꼭지점 추출
출력 결과
1Types로 Adaptive 8points 선택
2A-Component로 자동 배치
3패널 형태 자동 생성 완료
DEC[Digital Engineering Corporation]|200시간 과정
189
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

Surface 분할 및 Box 생성

Divide와 SBox를 이용한 격자 셀 생성

핵심 컴포넌트
SrfParams
Surface 데이터 컨테이너
DivideSurface
U/V 방향 Surface 분할
SBoxSurface
Surface 도메인에서 Box 생성
FlattenSets
트리 구조 평탄화
LngSets
리스트 길이(개수) 반환
입력 파라미터
U Count: 10 / V Count: 15 / Height: 100
데이터 흐름
1
Surface 입력
Revit에서 곡면 Surface 선택
2
U/V 분할
U Count(10), V Count(15)로 격자 분할
3
Height 설정
Height(100)로 Box 높이 지정
4
Box 생성
SBox로 각 셀에 3D Box 생성
5
데이터 평탄화
Flatten으로 리스트 구조 정리
6
개수 확인
Lng로 생성된 Box 개수 확인
중간 결과
150개 (10 x 15) Box 형상 리스트 생성
DEC[Digital Engineering Corporation]|200시간 과정
190
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

포인트 추출 및 AC 배치

8개 꼭지점으로 Adaptive Component 생성

핵심 컴포넌트
DeBrepSurface
Brep을 Face/Edge/Vertex 분해
SmallerMath
A < B 비교 연산자
DispatchSets
패턴 기반 데이터 분리
ItemSets
인덱스로 리스트 항목 추출
TypesRhinoInside
Revit 타입 필터링
A-ComponentRhinoInside
Adaptive Component 배치
데이터 흐름
1
형상 분해
DeBrep으로 Box의 꼭지점 추출
2
길이 비교
Lng + Smaller로 조건 필터링
3
데이터 분리
Dispatch로 유효한 Brep 선택
4
포인트 추출
DeBrep → Item으로 8개 꼭지점
5
타입 선택
Types로 Adaptive 8points 선택
최종 출력
A-Component로 Revit에 Adaptive Component가 자동 배치됩니다. 8개 포인트가 각 Box 꼭지점에 정확히 일치하여 패널이 생성됩니다.
핵심 포인트
P: 8개 포인트 리스트T: Adaptive 8points 타입Size: 54 (크기 파라미터)C: 생성된 Component
DEC[Digital Engineering Corporation]|200시간 과정
191
☰
GRASSHOPPER + REVIT

Compound Structure

Grasshopper를 활용한 복합 구조 레이어 생성
Compound
Structure
Layer
Wall Type
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

Compound Structure 생성

벽 타입의 복합 구조 레이어 자동 정의

1
타입 선택
Types
2
타입 복제
Duplicate
3
레이어 정의
CStructLayer
4
구조 조합
CStruct
5
구조 적용
CompStruct
Grasshopper Definition
Compound Structure Grasshopper 정의
입력 데이터
1Types (기존 벽 타입)
2Type Name (새 타입 이름)
3Thickness (레이어 두께)
처리 과정
1Duplicate로 기존 타입 복제
2CStructLayer로 레이어 정의
3CStruct로 구조 조합
출력 결과
1CompStruct로 구조 적용
2새 벽 타입 자동 생성
3복합 구조 레이어 완료
DEC[Digital Engineering Corporation]|200시간 과정
192
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

레이어 정의 및 조합

CStructLayer와 CStruct로 복합 구조 생성

핵심 컴포넌트
TypesRevit > Input
Revit 패밀리 타입 선택
DuplicateRhinoInside
기존 타입을 복제하여 새 타입 생성
CStructLayerRhinoInside
복합 구조 레이어 정의
CStructRhinoInside
Exterior/Core/Interior 레이어 조합
CompStructRhinoInside
타입에 복합 구조 적용
입력 파라미터
기존 타입: 일반 - 200mm / 새 이름: 123 / 두께: 30mm × 4
데이터 흐름
1
타입 선택
기존 벽 타입 "일반 - 200mm" 선택
2
타입 복제
Type Name(123)으로 새 타입 복제
3
두께 설정
Thickness(30mm) × 4개 레이어
4
레이어 생성
CStructLayer로 F/M/T/W 설정
5
구조 조합
CStruct로 EL/CL/IL 조합
CStructLayer 입력
F: Function (기능)M: Material (재질)T: Thickness (두께)W: Wrap (래핑)
CStruct 입력
EL: Exterior LayerCL: Core LayerIL: Interior Layer
DEC[Digital Engineering Corporation]|200시간 과정
193
B+CD+P
BIM-IT 융합 과정
Chapter 6: BIM-IT 융합기술 모델링

복합 구조 적용 및 결과

CompStruct로 새 벽 타입에 구조 적용

복합 구조 레이어
Exterior Layer
기능: 외부 마감
예: 외장재, 단열재
Core Layer
기능: 구조층
예: 콘크리트, 벽돌
Interior Layer
기능: 내부 마감
예: 석고보드, 도장
CompStruct 입력
T: 복제된 타입 (Duplicate 출력) | S: 복합 구조 (CStruct 출력)
자동화 효과
자동화
수동 작업 없이 복합 구조 자동 생성
일관성
표준화된 레이어 구성 보장
유연성
파라미터 조절로 다양한 구성 가능
재사용
생성된 타입을 다른 프로젝트에 적용
최종 출력
CompStruct를 통해 새 벽 타입에 복합 구조가 적용됩니다. Revit에서 해당 타입을 선택하면 정의된 레이어 구조로 벽이 생성됩니다.
활용 팁
여러 레이어 두께를 리스트로 전달하면 다양한 복합 구조를 한 번에 생성할 수 있습니다.
DEC[Digital Engineering Corporation]|200시간 과정
194
07
Chapter

BIM-IT 융합기술 활용

Revit API 개발 기초

35
HOURS
1
SECTIONS
7.1.1Revit/Rhino API 개발 기초
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

API 코딩 입문

C# 코드로 Revit을 제어하고 플러그인을 개발합니다
Text Programming 개발 사이클
{ }
Code
C# 코드 작성
→
⚙
Build
컴파일 빌드
→
▶
Execute
Revit 실행
Grasshopper vs Revit API
GHAPI
작성 방식노드 연결텍스트 코드
학습 난이도낮음중간~높음
유연성제한적무제한
배포.gh 파일.dll 플러그인
성능보통최적화 가능
#
C# 언어 기초
1변수와 데이터 타입
2조건문과 반복문
3클래스와 메서드
4컬렉션 (List, Dictionary)
5LINQ 쿼리 기초
6예외 처리 (try-catch)
R
Revit API
1Document 구조 이해
2Element 접근 및 수정
3Transaction 처리
4FilteredElementCollector
5Parameter 읽기/쓰기
6Geometry 추출
🔌
플러그인 개발
1VS 프로젝트 설정
2IExternalCommand 구현
3Ribbon UI 구성
4addin 매니페스트
5디버깅 및 테스트
6배포 및 설치
📝C# 문법 이해
🔧API 구조 학습
🔌플러그인 개발
🤖실무 자동화
35시간
DEC[Digital Engineering Corporation]|200시간 과정
196
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

BIM-IT 융합기술 활용

강의계획서 - Revit API 개발 기초 (C# & Plugin Development)

1. 강의 개요

과목명
BIM-IT 융합기술 활용
교육시간
35시간 (이론 12H + 실습 23H)
대상
Grasshopper 기초 이수자 및 API 개발 희망자
선수학습
Chapter 5~6. BIM-IT 융합기술 기본/모델링
실습환경
Visual Studio 2026, Revit 2025, Rhino 8

2. 지도목표

C# 프로그래밍과 Revit API를 이해하고, 플러그인 개발을 통한 BIM 자동화 역량을 습득한다.
1C# 프로그래밍 언어 기초 문법 이해
2Revit API 기본 구조 및 활용법 습득
3Revit API와 Rhino API의 차이점 이해
4Revit 플러그인(Add-in) 개발 기초
5API를 활용한 BIM 자동화 구현

3. 사용교재 (자료)

주교재
본 교육자료
참고
Revit API Docs
실습
예제 프로젝트

4. 주요 내용 (학습활동)

7.1Revit API 개발 기초이론+실습15H
C# 언어 기초 / Revit API 구조 / Rhino API 연계
7.2플러그인 개발 실습실습10H
프로젝트 설정 / UI 구성 / 명령어 구현
7.3API 활용 자동화실습10H
요소 생성/수정 / 파라미터 제어 / 배치 작업
7.1.1 Revit/Rhino API 개발 기초 상세
1C# 언어 기초[문법]
2Revit API 기본 구조 및 활용법
3Revit/Rhino API 차이점 및 연계
4Revit 플러그인 개발 기초
평가 기준
이론평가30%
실습평가70%
플러그인 개발 결과물 중심 평가
DEC[Digital Engineering Corporation]|200시간 과정
197
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

Revit API 개념

Revit을 프로그래밍으로 제어하는 인터페이스

Revit API란?
Application Programming Interface의 약자로, C# 코드를 통해 Revit의 모든 기능을 제어할 수 있는 프로그래밍 인터페이스입니다.
Grasshopper 노드가 내부적으로 API를 호출하는 것처럼, 직접 코드로 Revit을 제어합니다.
주요 활용 분야
⚡
자동화
반복 작업 자동 처리
📊
데이터 추출
BIM 정보 추출/분석
🔧
커스텀 기능
사용자 정의 도구
🔗
외부 연동
타 시스템 연계
✅
품질 검증
모델 검토 자동화
Revit API 계층 구조
1
UIApplication
Revit 응용 프로그램 전체
💡 건물 전체 (빌딩)
2
UIDocument
UI와 연결된 문서 (활성 뷰)
💡 현재 보고 있는 층
3
Document
프로젝트 파일 (.rvt)
💡 도면 세트 전체
4
Element
모든 BIM 요소 (벽, 문, 창 등)
💡 개별 부품들
Application → Document → Element 순으로 접근합니다
💡
핵심 포인트: 모든 API 작업은 Document를 통해 Element에 접근하고, 변경 사항은 반드시 Transaction 내에서 수행해야 합니다.
DEC[Digital Engineering Corporation]|200시간 과정
198
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

Element 개념

Revit의 모든 BIM 요소의 기본 클래스

Element란?
Revit 프로젝트의 모든 구성 요소의 기본 클래스입니다. 벽, 문, 창, 기둥은 물론 Level, Grid, View까지 모두 Element를 상속받습니다.
📌모든 Element는 고유한 ElementId를 가지며, 이를 통해 접근합니다.
주요 속성 (Properties)
속성타입
IdElementId
Namestring
CategoryCategory
ParametersParameterSet
LocationLocation
DocumentDocument
주요 Element 종류
🧱
Wall
Wall
🚪
Door
FamilyInstance
🪟
Window
FamilyInstance
🏛️
Column
FamilyInstance
📏
Beam
FamilyInstance
⬜
Floor
Floor
🔲
Ceiling
Ceiling
🏠
Roof
RoofBase
🪜
Stair
Stairs
Model Elements
3D 형상을 가진 물리적 요소
• Wall
• Floor
• Ceiling
• Column
• Beam
Family Instance
패밀리에서 배치된 인스턴스
• Door
• Window
• Furniture
• Equipment
Datum Elements
참조 기준 요소
• Level
• Grid
• ReferencePlane
View Elements
뷰 관련 요소
• View
• ViewSheet
• Viewport
DEC[Digital Engineering Corporation]|200시간 과정
199
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

Transaction 개념

Revit 모델 변경의 필수 안전장치

Transaction이란?
Revit 모델을 변경할 때 반드시 필요한 안전장치입니다. 은행에서 돈을 입출금할 때 거래 기록이 남는 것처럼, 모든 변경 사항을 추적하고 관리합니다.
🏦
은행 거래 = Transaction
Transaction 3단계 프로세스
1
Start
Transaction 시작
변경 작업 준비
trans.Start("작업명")
💡 은행 창구 방문
→
2
Work
요소 수정/생성
Element 변경 작업 수행
wall.Location.Move(...)
💡 입출금 작업
→
3
Commit
Transaction 완료
변경사항 확정 저장
trans.Commit()
💡 거래 완료 확인
Transaction 규칙
✅모든 모델 변경은 Transaction 내에서만 가능
🔄Commit 전까지 Undo로 변경 취소 가능
⚠️예외 발생 시 RollBack()으로 복구
📝작업명은 Undo 메뉴에 표시됨
DEC[Digital Engineering Corporation]|200시간 과정
200
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

Parameter 개념

Element의 속성 정보를 읽고 쓰는 방법

Parameter란?
Element에 저장된 속성 정보입니다. 벽의 높이, 문의 폭, 재질 정보 등 모든 BIM 데이터가 Parameter로 저장됩니다.
단위 주의
Revit 내부 = feet
mm → feet 변환 필요
Instance
개별 인스턴스의 고유 값
위치 (X, Y, Z)레벨호스트코멘트
Type
같은 타입이 공유하는 값
폭높이재질가격
🧱Wall 파라미터 예시
파라미터값타입
Base ConstraintLevel 1Instance
Top ConstraintLevel 2Instance
Height3000Instance
Width200Type
FunctionInteriorType
MaterialConcreteType
🏷️BuiltInParameter
Revit 기본 제공 파라미터
element.get_Parameter(BuiltInParameter.WALL_HEIGHT)
🔤Parameter Name
이름으로 파라미터 검색
element.LookupParameter("파라미터명")
🔗Shared Parameter
프로젝트 간 공유 파라미터
element.get_Parameter(sharedParamGuid)
⚠️단위 변환: 1 foot = 304.8mm
읽기: param.AsDouble() / AsString() / AsInteger()
쓰기: param.Set(value) (Transaction 필요)
DEC[Digital Engineering Corporation]|200시간 과정
201
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

개발 환경 설정

Revit API 플러그인 개발을 위한 준비

플러그인 개발 환경
Revit API 플러그인을 개발하기 위해서는 Visual Studio와 Revit API DLL이 필요합니다. 올바른 버전 선택이 중요합니다.
필요한 도구
💻
Visual Studio
2022 / 2026
C# 개발 IDE
Community 무료
🏗️
Revit
2021 ~ 2025
대상 BIM 소프트웨어
API DLL 포함
⚙️
.NET Framework
4.8 / .NET 8.0
런타임 환경
Revit 버전별 상이
📝
C# 지식
기초 수준
프로그래밍 언어
Chapter 7.1 참조
플러그인 개발 5단계 프로세스
1
VS 프로젝트
Class Library 생성
→
2
DLL 참조
Revit API 연결
→
3
명령 작성
IExternalCommand
→
4
.addin 파일
매니페스트 작성
→
5
빌드 & 테스트
디버깅 실행
Revit 버전별 .NET
Revit.NET
2021~2024.NET Framework 4.8
2025~.NET 8.0
개발 시 주의사항
⚠️Revit 버전과 .NET 버전 일치 필수
📁DLL의 Copy Local = False 설정
🔧플랫폼 대상: x64 설정
📍.addin 파일 위치 정확히 지정
DEC[Digital Engineering Corporation]|200시간 과정
202
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

VS 프로젝트 & DLL 참조

Visual Studio 프로젝트 생성 및 Revit API 연결

1
프로젝트 생성
1
새 프로젝트 만들기
File → New → Project
2
Class Library 선택
C# Class Library (.NET Framework)
3
프로젝트명 입력
예: MyRevitAddin
4
.NET 버전 선택
Revit 2021~2024: 4.8 / 2025: 8.0
2
DLL 참조 추가
1
참조 추가
프로젝트 우클릭 → Add → Reference
2
Browse 선택
Browse 탭 클릭
3
DLL 경로 이동
Revit 설치 폴더로 이동
4
DLL 선택
RevitAPI.dll, RevitAPIUI.dll
필수 DLL 파일
📁 경로: C:\Program Files\Autodesk\Revit 2025\
RevitAPI.dll필수
핵심 API (Document, Element, Transaction 등)
RevitAPIUI.dll필수
UI 관련 API (Ribbon, Dialog, Selection 등)
AdWindows.dll
고급 UI 커스터마이징 (선택)
⚠️중요: Copy Local = False 설정
설정 방법
1. Solution Explorer에서 References 확장
2. RevitAPI.dll 선택
3. Properties 창에서 Copy Local = False
4. RevitAPIUI.dll도 동일하게 설정
설정 이유
• Revit이 이미 해당 DLL을 로드함
• 중복 복사 시 버전 충돌 발생
• 빌드 출력 폴더 크기 감소
• 배포 시 DLL 포함 불필요
DEC[Digital Engineering Corporation]|200시간 과정
203
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

IExternalCommand 구현

첫 번째 Revit 명령 클래스 작성

IExternalCommand 인터페이스
Revit에서 실행 가능한 명령(Command)을 만들기 위한 인터페이스입니다. Execute 메서드를 구현하면 Revit 리본에서 버튼 클릭 시 실행됩니다.
HelloWorld.cs
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
namespace MyRevitAddin
{
    [Transaction(TransactionMode.Manual)]
    public class HelloWorld : IExternalCommand
    {
        public Result Execute(
            ExternalCommandData commandData,
            ref string message,
            ElementSet elements)
        {
            UIDocument uidoc = commandData.Application.ActiveUIDocument;
            Document doc = uidoc.Document;
            TaskDialog.Show("Hello", "Hello, Revit API!");
            return Result.Succeeded;
        }
    }
}
[Transaction] 속성
Manual: 직접 Transaction 관리
Automatic: 자동 (권장하지 않음)
ReadOnly: 읽기 전용
Execute 파라미터
commandData
Revit 응용프로그램 접근 (UIApplication, Document)
message
실패 시 사용자에게 표시할 메시지
elements
실패 시 강조할 요소들
반환값 (Result)
Succeeded
명령 성공
Failed
명령 실패 (message 표시)
Cancelled
사용자가 취소
💡
Document 접근: commandData.Application.ActiveUIDocument.Document로 현재 프로젝트에 접근합니다.
DEC[Digital Engineering Corporation]|200시간 과정
204
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

.addin 파일 & 디버깅

매니페스트 작성 및 Visual Studio 디버깅

.addin 매니페스트 파일이란?
Revit이 플러그인을 인식하고 로드하기 위한 XML 설정 파일입니다. DLL 위치, 클래스명 등을 정의하여 Revit 시작 시 Add-Ins 탭에 등록됩니다.
MyRevitAddin.addin
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
  <AddIn Type="Command">
    <Name>Hello World</Name>
    <FullClassName>MyRevitAddin.HelloWorld</FullClassName>
    <Assembly>C:\path\to\MyRevitAddin.dll</Assembly>
    <AddInId>GUID-HERE</AddInId>
    <VendorId>YOUR_ID</VendorId>
  </AddIn>
</RevitAddIns>
주요 요소 설명
Name명령 표시 이름
FullClassName네임스페이스.클래스명
AssemblyDLL 파일 전체 경로
AddInId고유 GUID (VS에서 생성)
VendorId개발자/회사 ID
📁 저장 위치: %ProgramData%\Autodesk\Revit\Addins\2025\
Visual Studio 디버깅 설정
프로젝트 속성 설정
1. 프로젝트 속성 → Debug 탭
2. Start external program 선택
3. Revit.exe 경로 입력
예: C:\Program Files\Autodesk\Revit 2025\Revit.exe
빌드 설정
Platform: x64
Configuration: Debug
Output path: bin\x64\Debug\
Copy Local: False
✓ DLL 빌드 완료✓ .addin 파일 저장✓ Revit 재시작✓ Add-Ins 탭 확인
F5로 테스트!
DEC[Digital Engineering Corporation]|200시간 과정
205
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

요소 조회(Lookup) 개념

ElementId, UniqueId, 이름, Parameter를 이용한 요소 찾기

Lookup이 필요한 이유
🔍
ID로 조회
ElementId나 UniqueId로 특정 요소 찾기
📝
이름으로 검색
요소나 타입의 이름으로 찾기
🏷️
Parameter 기준
특정 Parameter 값을 가진 요소 찾기
🔗
링크 문서
링크된 모델의 요소 조회하기
ElementId
정수형 ID로 빠른 조회
현재 세션 내 요소 참조
UniqueId
GUID 형식의 고유 식별자
외부 DB 연동, 영구 참조
이름(Name)
요소/타입의 이름으로 검색
Level, FamilySymbol 찾기
Parameter
속성 값 기준 필터링
마크, 주석 값으로 검색
ElementId vs UniqueId 비교
항목ElementIdUniqueId
형식정수 (int)GUID 문자열
지속성세션별 변경영구 유지
조회 속도빠름상대적 느림
용도내부 참조외부 연동
예시123456e52e1b58-...-00012345
ElementId 세션 내 참조UniqueId 영구 참조doc.GetElement() 기본 조회
Lookup
DEC[Digital Engineering Corporation]|200시간 과정
206
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

Revit Lookup 도구 활용

요소의 모든 정보를 확인할 수 있는 개발자 필수 도구

Revit Lookup 설치
1
다운로드
GitHub 또는 Autodesk App Store
→
2
설치
Revit 버전에 맞는 설치 파일 실행
→
3
확인
Add-Ins 탭에서 Lookup 메뉴 확인
주요 사용 방법
🎯
Snoop Current Selection
선택한 요소 분석
👁️
Snoop Active View
현재 뷰 정보 확인
🏠
Snoop Application
Revit 앱 전체 분석
📂
Snoop DB
문서 전체 탐색
확인 가능한 정보
ID 정보
ElementId, UniqueId, Category
Parameter
Built-in, Shared, Family
Geometry
Location, BoundingBox, Solid
타입 정보
FamilyName, TypeName, Class
Revit Lookup 활용 팁
🔍
개발 전 요소 구조 파악에 필수
📋
Parameter 이름/값 확인 후 코딩
⚡
API로 접근 가능한 속성 미리 확인
🐛
디버깅 시 요소 상태 확인에 활용
Revit Lookup 필수 설치Snoop Selection 요소 분석개발 전 구조 파악
개발 도구
DEC[Digital Engineering Corporation]|200시간 과정
207
#
C# PROGRAMMING

C# Basic

Revit API 개발을 위한 C# 프로그래밍 기초

Variables
Class
Method
OOP
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

C# Basic

Revit API 개발을 위한 C# 프로그래밍 기초 문법과 객체지향 개념
C# 프로그래밍 흐름
📝
Write
코드 작성
→
⚙
Compile
컴파일
→
▶
Run
실행
Python vs C#
PythonC#
타입동적 타입정적 타입
문법들여쓰기{ } 블록
실행인터프리터컴파일러
성능느림빠름
API 개발제한적네이티브
{ }
기본 문법
1변수와 데이터 타입
2연산자와 표현식
3조건문 (if, switch)
4반복문 (for, while)
5배열과 문자열
6메서드 정의
◆
객체지향
1클래스와 객체
2생성자와 소멸자
3속성과 필드
4상속과 다형성
5인터페이스
6접근 제한자
⚡
고급 기능
1컬렉션 (List, Dictionary)
2LINQ 쿼리 기초
3예외 처리 (try-catch)
4제네릭 기초
5람다 표현식
6using 문
📊변수와 타입
🔀제어문
📦클래스
🔌API 연동
C# 기초
DEC[Digital Engineering Corporation]|200시간 과정
209
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

.NET Framework

C# 프로그래밍의 기초 토대

Framework란?
프로그램을 만들기 위한 기초 토대이자 도구 상자입니다. .NET Framework는 Microsoft가 만든 C# 개발 환경으로, 개발에 필요한 모든 기본 기능을 제공합니다. 프레임워크 덕분에 개발자는 비즈니스 로직에만 집중할 수 있습니다. List 구현, 파일 입출력, 메모리 관리 등 복잡한 저수준 작업은 프레임워크가 알아서 처리합니다!
🔧
프레임워크 없이
모든 도구를 직접 만들어야 함
(매우 힘들고 시간 소모)
→
✨
프레임워크 있으면
완비된 부엌에서 바로 요리!
(필요한 도구 모두 준비됨)
.NET Framework 구성 요소
📚클래스 라이브러리
List, Dictionary, File 등 미리 만들어진 수천 개의 클래스
⚙CLR (런타임)
메모리 관리, 가비지 컬렉션, 보안 등 코드 실행 환경
🔨개발 도구
컴파일러, 디버거, 프로파일러 등 개발 지원 도구
💡 핵심 개념
1프레임워크 = 프로그램 개발을 위한 기초 도구 모음
2.NET Framework = Microsoft가 만든 C# 프레임워크
3기본 기능들이 이미 구현되어 있음
4바퀴를 다시 발명할 필요 없음
📦클래스 라이브러리
⚙CLR 런타임
🔨개발 도구
🛡보안/메모리 관리
Framework 기초
DEC[Digital Engineering Corporation]|200시간 과정
210
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

.NET Framework 버전

Revit 버전별 .NET 버전과 계층 구조

.NET Framework 4.8
Revit 2024 이하
Windows 전용가장 안정적데스크톱 앱
.NET 8.0+
Revit 2025 이상
크로스 플랫폼최신 기능성능 향상
Revit 플러그인 개발 계층 구조
내가 만든 Revit 플러그인
↓
Revit API (RevitAPI.dll)
↓
.NET Framework 4.8 / .NET 8.0+
↓
Windows 운영체제
.NET Framework 사용 장점
⚡
생산성 향상
기본 기능이 구현되어 개발 속도 빠름
🛡
안정성
검증된 코드 사용으로 버그 적음
🌍
호환성
표준을 따라 협업 용이
📚
풍부한 자료
문서, 튜토리얼, 커뮤니티
💡Revit 2024 이하는 .NET Framework 4.8, Revit 2025 이상은 .NET 8.0 이상을 사용합니다.
버전 선택
DEC[Digital Engineering Corporation]|200시간 과정
211
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

DLL (Dynamic Link Library)

재사용 가능한 코드 라이브러리

DLL이란?
Dynamic Link Library는 여러 프로그램이 공유할 수 있는 코드 라이브러리 파일(.dll)입니다. Revit API 개발에서는 RevitAPI.dll을 참조하여 Revit 기능에 접근합니다.
DLL = 레고 블록처럼 조립해서 사용하는 코드 부품
📦
레고 블록 세트
미리 만들어진 부품
→
🔧
조립하기
필요한 블록만 선택
→
🏠
완성품
나만의 프로그램
DLL의 장점과 예시
장점설명예시 DLL
♻️ 코드 재사용한 번 만든 기능을 여러 프로젝트에서 반복 사용RevitAPI.dll
🤝 코드 공유검증된 코드를 가져다 사용 (NuGet 패키지 등)Newtonsoft.Json.dll
🔒 코드 보호소스 코드 노출 없이 컴파일된 DLL만 배포System.dll
DLL = 코드 라이브러리.dll 확장자참조 추가로 사용
DLL 기초
DEC[Digital Engineering Corporation]|200시간 과정
212
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

Revit API와 DLL

RevitAPI.dll 참조 및 사용 방법

📘RevitAPI.dll
Revit의 데이터 모델에 접근하는 핵심 라이브러리. 문서, 요소, 파라미터 등 모든 BIM 데이터를 다룹니다.
Document
Element
Wall, Floor, Column
Transaction
FilteredElementCollector
Parameter
📗RevitAPIUI.dll
Revit의 UI와 상호작용하는 라이브러리. 대화상자, 선택, 명령 인터페이스를 제공합니다.
UIApplication
UIDocument
TaskDialog
Selection
IExternalCommand
ExternalEvent
DLL 참조 흐름
1
DLL 참조
RevitAPI.dll 추가
→
2
네임스페이스
using 선언
→
3
클래스 사용
Document, Wall 등
→
4
컴파일
내 DLL 생성
Visual Studio에서 DLL 참조 추가
1솔루션 탐색기 → "참조" 우클릭 → "참조 추가"
2"찾아보기" 클릭 → Revit 설치 폴더 이동
3RevitAPI.dll, RevitAPIUI.dll 선택 → "확인"
4Copy Local = False 설정 (중요!)
⚠Copy Local = False 설정 필수! DLL이 출력 폴더에 복사되지 않아 Revit이 자체 DLL을 사용합니다.
DLL 참조
DEC[Digital Engineering Corporation]|200시간 과정
213
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

Namespace (네임스페이스)

코드를 분류하고 정리하는 체계

네임스페이스란?
코드를 분류하고 정리하는 폴더 시스템입니다. 마치 도서관의 분류 체계처럼, 관련된 클래스들을 그룹으로 묶어서 관리합니다.
네임스페이스 = 도서관의 분류 체계
📗
과학 섹션
물리학, 화학, 생물학
📘
역사 섹션
한국사, 세계사, 고대사
📙
문학 섹션
소설, 시, 수필
📋 핵심 요약
1네임스페이스는 관련 클래스를 그룹으로 묶는 논리적 분류 체계
2using 키워드로 네임스페이스를 가져와 간단하게 사용
3점(.)으로 계층 구조를 만듦 (예: Autodesk.Revit.DB)
4같은 이름의 클래스 충돌 방지
5DLL-네임스페이스-클래스: 물리적 파일 - 논리적 분류 - 실제 코드 관계
💡 초보자를 위한 팁
DLL 참조
"이 라이브러리를 사용할 거야"
→
using 선언
"이 네임스페이스의 클래스를 쉽게 쓸 거야"
→
클래스 사용
"이제 간단하게 클래스 이름만 쓰면 돼"
✨점(.)으로 계층 구조를 만듭니다. 예: Autodesk.Revit.DB
Namespace
DEC[Digital Engineering Corporation]|200시간 과정
214
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

using 선언

네임스페이스 가져오기와 Revit API

using 없이 (불편함)
System.Console.WriteLine();
System.Collections.Generic.List<string>
→ 매번 전체 경로를 써야 함
using 사용 (간편함)
using System;
Console.WriteLine();
List<string>
→ 클래스명만 간단하게
Revit API 핵심 네임스페이스
네임스페이스역할주요 클래스
Autodesk.Revit.DB데이터베이스Document, Wall, Transaction, FilteredElementCollector
Autodesk.Revit.UIUI 기능UIApplication, TaskDialog, IExternalCommand
Autodesk.Revit.Attributes특성 정의[Transaction], [Regeneration]
DLL → 네임스페이스 → 클래스 관계
1. DLL 파일 = 물리적 파일 (RevitAPI.dll)
2. 네임스페이스 = DLL 안의 논리적 분류 (Autodesk.Revit.DB)
3. 클래스 = 실제 코드 (Document, Wall, Transaction)
💡DLL 참조 → using 선언 → 클래스 사용 순서!
using
DEC[Digital Engineering Corporation]|200시간 과정
215
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

Data Type (데이터 타입)

값의 종류를 정의하는 자료형

데이터 타입이란?
변수에 저장할 수 있는 값의 종류를 정의합니다. 숫자, 문자, 참/거짓 등 데이터의 형태를 미리 지정하여 프로그램이 올바르게 동작하도록 합니다.
데이터 타입 = 서랍장의 칸 🗄
🧦
양말 칸
양말만 넣음
👔
셔츠 칸
셔츠만 넣음
👖
바지 칸
바지만 넣음
🎩
모자 칸
모자만 넣음
각 칸에는 정해진 것만 넣을 수 있듯이, 데이터 타입에 맞는 값만 저장할 수 있습니다.
C# 기본 데이터 타입
타입설명예시용도
int정수1, 42, -100, 2024개수, 인덱스, ID
double실수3.14, 0.5, -2.7좌표, 길이, 면적
string문자열"Hello", "벽", "A-101"이름, 설명, 텍스트
bool참/거짓true, false조건, 상태, 플래그
char단일문자'A', 'B', '가'문자 하나, 구분자
decimal고정밀실수99.99m, 1000.50m금액, 정밀 계산
int 정수double 실수string 문자열bool 참/거짓char 문자decimal 정밀실수
기본 타입
DEC[Digital Engineering Corporation]|200시간 과정
216
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

Revit API 데이터 타입

Revit에서 사용하는 클래스 타입

XYZ
3D 좌표 (X, Y, Z)
new XYZ(0, 0, 0)
ElementId
요소 고유 ID
wall.Id
Document
Revit 문서
uidoc.Document
Wall, Floor
BIM 요소
벽, 바닥 객체
C# 기본 타입 vs Revit API 타입
C# 기본 타입Revit API 타입용도
intElementId요소 식별
doubleXYZ좌표, 거리
stringParameter속성 값
boolIsValid상태 확인
타입 선언 예시
int count = 10;   double height = 3.5;   string name = "벽";
XYZ point = new XYZ(0, 0, 0);   Document doc = uidoc.Document;
💡var 키워드로 타입 자동 추론 가능
Revit 타입
DEC[Digital Engineering Corporation]|200시간 과정
217
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

변수와 상수

값을 저장하는 메모리 공간

변수(Variable)란?
값을 저장하는 이름 붙은 메모리 공간입니다. 마치 이름표가 붙은 상자처럼, 데이터를 넣고 빼고 바꿀 수 있습니다.
📦
변수 (Variable)
값을 바꿀 수 있음
int count = 10;
count = 20; // OK! 변경 가능
예: 벽 개수, 현재 높이, 사용자 입력 값
🔒
상수 (Constant)
값을 바꿀 수 없음
const double PI = 3.14159;
// PI = 3.0; → 오류! 변경 불가
예: 원주율, 단위 변환 계수 (304.8)
변수 선언 구조
int
데이터 타입
count
변수 이름
=
=
10
초기값
;
;
int wallCount = 5;정수 변수 (벽 개수)
double height = 3000.0;실수 변수 (높이 mm)
string wallName = "외벽";문자열 변수 (벽 이름)
bool isValid = true;불린 변수 (유효 여부)
변수 = 값 변경 가능상수 = 값 변경 불가 (const)선언 = 타입 + 이름 + 값
변수/상수
DEC[Digital Engineering Corporation]|200시간 과정
218
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

값 타입 vs 참조 타입

메모리 저장 방식의 차이

값 타입 (Value Type)
📦 → 📦
값 자체를 복사 (독립적인 복사본)
intdoubleboolchar
참조 타입 (Reference Type)
🔗 → 📦
주소(참조)를 복사 (같은 객체를 가리킴)
stringList<T>WallDocument
값 타입 예시
int a = 10;
int b = a; // b = 10 (복사)
a = 20; // a만 변경됨
// a = 20, b = 10 (독립적)
참조 타입 예시
List<int> list1 = new();
List<int> list2 = list1; // 참조
list1.Add(5); // list2도 영향받음
// 둘 다 같은 객체를 가리킴
Revit API에서의 활용
// 값 타입: 좌표 계산
double height = 3000; // mm
double heightInFeet = height / 304.8;

// 참조 타입: Revit 요소
Wall wall = GetWall(); // 참조 타입
wall.get_Parameter(...).Set(value); // 실제 벽이 변경됨
💡Revit의 Element들은 모두 참조 타입이므로 수정 시 실제 모델이 변경됩니다.
타입 이해
DEC[Digital Engineering Corporation]|200시간 과정
219
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

연산자 (Operators)

값을 계산하고 비교하는 기호

연산자란?
값을 계산(산술), 비교, 논리 판단하는 기호입니다. 수학의 + - * / 와 같은 역할을 합니다.
산술 연산자 (Arithmetic)
+
더하기
5 + 3 = 8
-
빼기
10 - 4 = 6
*
곱하기
3 * 4 = 12
/
나누기
15 / 3 = 5
%
나머지
10 % 3 = 1
비교 연산자 (Comparison) → 결과: true / false
==같음a == b
!=다름a != b
>크다a > b
<작다a < b
>=크거나 같다a >= b
<=작거나 같다a <= b
💡== (등호 2개) = 같음 비교, = (등호 1개) = 대입. a = 5는 대입, a == 5는 비교입니다.
연산자
DEC[Digital Engineering Corporation]|200시간 과정
220
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

논리 연산자와 활용

조건 결합과 Revit API 실전 예시

&&
AND (그리고)
둘 다 true면 true
a && b
||
OR (또는)
하나라도 true면 true
a || b
!
NOT (부정)
true↔false 반전
!a
대입 연산자 (Assignment)
=
대입
a = 10
+=
더해서 대입
a += 5 → a = a + 5
-=
빼서 대입
a -= 3 → a = a - 3
++
1 증가
a++ → a = a + 1
--
1 감소
a-- → a = a - 1
Revit API 활용 예시
// 높이 3m 이상이고 외벽인 벽 필터링
double height = wall.get_Parameter(...).AsDouble() * 304.8;
bool isExterior = wall.Name.Contains("외벽");
if (height >= 3000 && isExterior)
{
  // 조건을 만족하는 벽 처리
  count++;
}
&& = AND|| = OR! = NOT++/-- = 증감+=/-= = 복합대입
연산자
DEC[Digital Engineering Corporation]|200시간 과정
221
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

조건문 (if/else)

상황에 따라 다른 코드를 실행

조건문이란? 조건에 따라 다른 코드를 실행하는 구조입니다. "만약 ~라면 A를 하고, 아니면 B를 해라"와 같은 분기 처리를 담당합니다.
조건문 실행 흐름
조건 검사
→
?
true →
if 블록 실행
false →
else 블록 실행
if 문
if (조건)
{
  // true일 때
}
// 예시
if (height > 3000)
  Console.WriteLine("높은 벽");
if-else 문
if (조건)
{ // true }
else
{ // false }
// 예시
if (isExterior)
  ProcessExterior();
else
  ProcessInterior();
else if 문
if (조건1) { }
else if (조건2) { }
else { }
// 벽 높이 분류
if (h > 4000) "고층"
else if (h > 2500) "표준"
else "저층"
if = 조건이 참이면else = 그렇지 않으면else if = 또 다른 조건
조건문
DEC[Digital Engineering Corporation]|200시간 과정
222
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

switch 문과 활용

여러 값 중 하나를 선택

switch 문 구조
switch (변수) {
  case 값1: // 실행 break;
  case 값2: // 실행 break;
  default: // 그 외 break;
}
if vs switch 비교
if-else
범위/복잡한 조건
switch
특정 값 비교
삼항 연산자
조건 ? 참값 : 거짓값
Revit API 활용 예시 - 카테고리별 처리
string category = element.Category.Name;
switch (category) {
  case "Walls": CalculateWallQuantity(e); break;
  case "Floors": CalculateFloorArea(e); break;
  case "Columns": CheckColumnRebar(e); break;
  default: ProcessOther(e); break;
}
Walls
→ 벽체 물량
Floors
→ 바닥 면적
Columns
→ 배근 체크
default
→ 기타 처리
삼항 연산자 (간단한 조건)
string result = (height > 3000) ? "높음" : "낮음";
if-else와 동일
if (h > 3000) result = "높음"; else result = "낮음";
switch = 값 비교case = 각 경우break = 탈출? : = 삼항연산자
조건문
DEC[Digital Engineering Corporation]|200시간 과정
223
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

반복문 for

정해진 횟수만큼 반복 실행

반복문이란? 같은 코드를 여러 번 실행할 때 사용합니다. for 문은 횟수가 정해진 반복에 적합합니다.
for 문 구조
int i = 0
초기화
;
i < 10
조건
;
i++
증감
for (int i = 0; i < 10; i++) { Console.WriteLine(i); } // 0~9 출력
for 문 실행 흐름
초기화
→
조건 검사
→
코드 실행
→
증감
↺
조건이 false가 될 때까지 2→3→4 반복
Revit API 활용 예시
벽 10개 생성
for (int i = 0; i < 10; i++) {
  XYZ start = new(i*5, 0, 0);
  XYZ end = new(i*5, 10, 0);
  Wall.Create(doc, ...); }
층별 레벨 생성
for (int floor = 1; floor <= 20; floor++) {
  double elev = floor * 3.5;
  Level.Create(doc, elev); }
for = 횟수 반복i = 0 = 초기화i < n = 조건i++ = 증감
반복문
DEC[Digital Engineering Corporation]|200시간 과정
224
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

foreach 반복문

컬렉션의 모든 요소를 순회

foreach는 컬렉션(배열, 리스트 등)의 모든 요소를 처음부터 끝까지 순회합니다. 인덱스 관리 없이 각 요소에 직접 접근하여 코드가 간결해집니다.
foreach 문 구조
foreach
(
타입 변수
in
컬렉션
)
foreach (Wall wall in walls) { /* 각 wall 처리 */ }
for 문 (인덱스 사용)
for (int i = 0; i < walls.Count; i++)
{ Wall wall = walls[i]; }
인덱스로 접근, 코드가 복잡함
foreach 문 (직접 접근)
foreach (Wall wall in walls)
{ /* wall 직접 사용 */ }
요소에 직접 접근, 코드가 간결함
Revit API 활용 - FilteredElementCollector + foreach
// 모든 벽 수집 후 순회
var walls = new FilteredElementCollector(doc)
  .OfClass(typeof(Wall)).Cast<Wall>();
foreach (Wall wall in walls) {
  double height = wall.get_Parameter(BuiltInParameter.WALL_USER_HEIGHT_PARAM).AsDouble();
  // 벽 처리... }
foreach = 컬렉션 순회in = ~안의 각 요소인덱스 불필요 = 간결한 코드
반복문
DEC[Digital Engineering Corporation]|200시간 과정
225
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

while 반복문

조건이 참인 동안 반복 실행

while은 조건이 참(true)인 동안 계속 반복합니다. 반복 횟수가 정해지지 않고 특정 조건을 만족할 때까지 실행해야 할 때 사용합니다.
while 문 실행 흐름
조건 검사
→
true?
→
코드 실행
↺
조건이 false가 되면 반복 종료 (먼저 조건 검사 → 실행)
while (조건 먼저 검사)
while (height < 3000) {
  height += 100;
}
조건이 처음부터 false면 실행 안함
do-while (실행 먼저)
do {
  height += 100;
} while (height < 3000);
최소 1회는 반드시 실행
반복문 선택 가이드
for
횟수 정해짐
10개 생성
foreach
컬렉션 순회
모든 벽 검사
while
조건 만족까지
높이 도달시
반복 제어 키워드
break반복문 즉시 탈출
continue현재 회차 건너뛰기
while = 조건 반복do-while = 최소 1회break = 탈출continue = 건너뛰기
반복문
DEC[Digital Engineering Corporation]|200시간 과정
226
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

배열 (Array)

같은 타입의 데이터를 연속 저장

배열이란?
같은 타입의 데이터를 연속으로 저장하는 자료구조입니다. 마치 번호가 붙은 사물함처럼 순서대로 데이터를 보관합니다.
배열 구조 시각화
10
[0]
20
[1]
30
[2]
40
[3]
50
[4]
numbers[0] = 10, numbers[1] = 20, ... (인덱스는 0부터 시작)
배열 선언
// 크기 지정
int[] numbers = new int[5];
// 값과 함께 초기화
int[] nums = { 10, 20, 30 };
요소 접근과 수정
// 읽기
int first = numbers[0];
// 쓰기
numbers[0] = 100;
// 길이
int len = numbers.Length;
배열과 반복문 활용
for 반복문
for (int i = 0; i < arr.Length; i++)
{ Console.WriteLine(arr[i]); }
foreach 반복문
foreach (int num in arr)
{ Console.WriteLine(num); }
타입[] = 배열 선언[index] = 요소 접근.Length = 배열 길이인덱스 0부터 시작
배열
DEC[Digital Engineering Corporation]|200시간 과정
227
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

다차원 배열과 활용

2차원 배열과 Revit API 활용

2차원 배열 (행렬)
1
2
3
4
5
6
7
8
9
matrix[행, 열] - matrix[1, 2] = 6
선언과 접근
// 2차원 배열 선언
int[,] matrix = new int[3, 3];

// 값 할당
matrix[0, 0] = 1;
matrix[1, 2] = 6;
배열 유용한 메서드
Array.Sort()오름차순 정렬
Array.Reverse()역순 배치
Array.IndexOf()값 위치 찾기
Array.Copy()배열 복사
Revit API 활용 예시
XYZ 좌표 배열 (그리드 생성)
XYZ[] gridPoints = new XYZ[10];
for (int i = 0; i < 10; i++)
{
  gridPoints[i] = new XYZ(i * 5, 0, 0);
}
ElementId 배열 (요소 선택)
ElementId[] selectedIds =
  selection.GetElementIds()
  .ToArray();

// 선택된 요소 처리
foreach (id in selectedIds) ...
[,] = 2차원 배열[행, 열] = 접근XYZ[] = 좌표 배열ElementId[] = ID 배열
배열
DEC[Digital Engineering Corporation]|200시간 과정
228
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

List 컬렉션

크기가 동적으로 변하는 배열

List란?
크기가 자동으로 변하는 동적 배열입니다. 배열과 달리 Add, Remove 등 편리한 메서드를 제공합니다.
배열 (Array) - 이전 방식
int[] arr = new int[5];
// 크기 고정 - 5개만 저장 가능
// 추가/삭제 불편
List<T> (권장)
List<int> list = new();
// 크기 자동 조절
// Add, Remove 등 편리한 메서드
List 주요 메서드
Add(item)끝에 추가
Remove(item)항목 삭제
Count개수 반환
Clear()전체 삭제
Contains()포함 여부
List 사용 예시
// List 생성
List<string> names = new();

// 추가
names.Add("외벽");
names.Add("내벽");

// 개수: names.Count → 2
Revit API 활용 - 벽 목록 관리
List<Wall> highWalls = new();

foreach (Wall wall in allWalls)
{
  if (wall.Height > 3000)
    highWalls.Add(wall);
}
List<T> = 동적 배열Add() = 추가Count = 개수foreach = 순회
컬렉션
DEC[Digital Engineering Corporation]|200시간 과정
229
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

Dictionary 컬렉션

키-값 쌍으로 데이터 저장

Dictionary란?
키(Key)로 값(Value)을 찾는 자료구조입니다. 마치 사전에서 단어로 뜻을 찾듯이 빠르게 검색할 수 있습니다.
Dictionary 구조
"W-001"
→외벽 A
"W-002"
→내벽 B
"W-003"
→커튼월
Key (고유) → Value (데이터)
선언과 사용
// 선언
Dictionary<string, string> walls = new();
// 추가 walls["W-001"] = "외벽 A";
// 조회 string name = walls["W-001"];
주요 메서드
Add(key, value)추가
[key]값 접근
ContainsKey()키 존재 확인
TryGetValue()안전한 값 조회
Revit API 활용 - ElementId 매핑
var map = new Dictionary<ElementId, Wall> ();
// Add(키, 값)
map.Add(wall.Id, wall);
// 키로 조회 Wall w = map[wall.Id];
컬렉션 선택 가이드
List<T>
접근: 인덱스 (숫자)
용도: 순서대로 저장
Dictionary
접근: 키 (문자열 등)
용도: 빠른 검색
Dictionary = 키-값[key] = 값 접근TryGetValue = 안전 조회
컬렉션
DEC[Digital Engineering Corporation]|200시간 과정
230
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

메서드 (Method)

재사용 가능한 코드 블록

메서드란?
메서드는 특정 작업을 수행하는 코드 블록입니다. 마치 레시피처럼 한 번 작성하면 여러 번 사용할 수 있습니다.
메서드 구조
public
접근제한자
int
반환타입
Calculate
메서드명
(
int a, int b
매개변수
)
{ return a+b; }
본문
반환값이 있는 메서드
double GetHeight(Wall wall)
{ return wall.Height; }
// 호출: double h = GetHeight(myWall);
반환값이 없는 메서드 (void)
void PrintInfo(string msg)
{ Console.WriteLine(msg); } // return 없음
// 호출: PrintInfo("Hello");
메서드 호출 흐름
호출
Calculate(5,3)
→
실행
a=5, b=3
→
연산
5 + 3
→
반환
return 8
void = 반환값 없음return = 값 반환매개변수 = 입력값
메서드
DEC[Digital Engineering Corporation]|200시간 과정
231
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

메서드 활용

매개변수 옵션과 Revit API

선택적 매개변수 (기본값)
void CreateWall(double height = 3000)
{ // height 생략시 3000 사용 }
CreateWall(); // 3000 | CreateWall(4000); // 4000
메서드 오버로딩 (같은 이름)
// 같은 이름, 다른 매개변수
int Add(int a, int b)
double Add(double a, double b)
int Add(int a, int b, int c)
Revit API 주요 메서드
Wall.Create()벽 생성
element.get_Parameter()매개변수 조회
FilteredElementCollector요소 검색
doc.Delete()요소 삭제
// 벽 높이를 가져오는 커스텀 메서드
public double GetWallHeight(Wall wall) {
  Parameter param = wall.get_Parameter(BuiltInParameter.WALL_USER_HEIGHT_PARAM);
  return param.AsDouble() * 304.8; // feet → mm
}
좋은 메서드 작성 원칙
단일 책임
한 가지 일만 하도록
명확한 이름
GetHeight, Calculate 등
짧게 유지
20줄 이내 권장
기본값 = param = 값오버로딩 = 같은 이름단일책임 = 한 가지 일
메서드
DEC[Digital Engineering Corporation]|200시간 과정
232
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

클래스 (Class)

객체를 만드는 설계도

클래스란?
클래스는 데이터(필드)와 기능(메서드)을 묶은 설계도입니다. 마치 건물 도면처럼, 클래스로부터 여러 객체(인스턴스)를 생성합니다.
클래스 (Class) = 설계도
class Wall
{
  // 필드 (데이터)
  double Height; string Name;
  // 메서드 (기능)
  void SetHeight() { }
}
객체 (Object) = 실제 인스턴스
// 객체 생성 (new)
Wall wall1 = new Wall(); Wall wall2 = new Wall();
// 각각 다른 데이터
wall1.Height = 3000; wall2.Height = 4000;
클래스 구성요소
필드 (Field)
데이터 저장
double Height;
속성 (Property)
안전한 접근
public int Count { get; set; }
메서드 (Method)
기능 수행
void Calculate()
클래스
= 설계도 (1개)
→
객체들
= 실제 건물 (여러 개)
class = 설계도new = 객체 생성필드 = 데이터메서드 = 기능
클래스
DEC[Digital Engineering Corporation]|200시간 과정
233
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

생성자와 Revit 클래스

객체 초기화와 API 활용

생성자 (Constructor) - 객체 생성 시 자동 호출
class WallInfo
{
  public double Height;
  public string Name;
  // 생성자 (클래스명과 동일)
  public WallInfo(double h, string n)
  { Height = h; Name = n; }
}
// 사용
WallInfo wall = new WallInfo(3000, "외벽");
// wall.Height = 3000
// wall.Name = "외벽"
접근 제한자 (Access Modifiers)
public어디서든 접근 가능
private클래스 내부에서만
protected상속 클래스까지
internal같은 어셈블리에서
Revit API 주요 클래스
DocumentRevit 문서
Wall벽 요소
Element모든 요소의 부모
XYZ3D 좌표점
// Revit 클래스 사용
Document doc = app.ActiveUIDocument.Document;
XYZ point = new XYZ(0, 0, 0);
Revit API 클래스 계층 구조
Element
부모 클래스
→
Wall / Floor / Column
자식 클래스들
생성자 = 초기화public = 공개private = 비공개Element = 부모클래스
클래스
DEC[Digital Engineering Corporation]|200시간 과정
234
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

예외 처리 (Exception Handling)

오류 상황 안전하게 관리하기

예외 처리란?
프로그램 실행 중 발생하는 오류를 안전하게 처리하는 방법입니다. try-catch 구문으로 예외를 잡아 프로그램 중단을 방지합니다.
try-catch-finally 구조
try { int result = 10 / divisor; }
catch (DivideByZeroException ex) {
  TaskDialog.Show("오류", ex.Message); }
finally { // 항상 실행 }
try예외 발생 가능 코드 실행
catch예외 발생 시 처리 로직
finally예외 여부와 관계없이 항상 실행
주요 예외 타입
NullReferenceExceptionnull 객체 접근
IndexOutOfRangeException배열 인덱스 초과
ArgumentException잘못된 인수
InvalidOperationException잘못된 작업
Revit API 예외 처리 패턴
using (Transaction tx = new Transaction(doc, "작업")) {
  try {
    tx.Start();
    // 요소 수정 작업
    tx.Commit();
  }
  catch (Exception ex) { if (tx.HasStarted()) tx.RollBack(); TaskDialog.Show("오류", ex.Message); }
}
try = 시도catch = 잡기finally = 정리RollBack = 되돌리기
예외 처리
DEC[Digital Engineering Corporation]|200시간 과정
235
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

Delegate (델리게이트)

메서드를 변수처럼 다루기

Delegate란?
메서드를 참조하는 타입입니다. 변수에 숫자를 담듯이, 메서드 자체를 변수에 담아 저장하고 나중에 호출할 수 있습니다.
쉬운 비유: 리모컨
리모컨 버튼 → TV 켜짐
delegate 호출 → 연결된 메서드 실행
Delegate 사용 3단계
1타입 선언
delegate int Calculator(int a, int b);
"int 2개 받아 int 반환" 형식
2메서드 연결
Calculator calc = Add;
같은 시그니처 메서드 할당
3호출
int result = calc(5, 3);
메서드처럼 괄호로 호출
전체 코드 예시
// 1. 델리게이트 타입 선언
delegate int Calculator(int a, int b);

// 2. 메서드 정의
int Add(int x, int y)
{ return x + y; }
int Multiply(int x, int y)
{ return x * y; }
// 3. 메서드 할당 및 호출
Calculator calc = Add;
Console.WriteLine(calc(5, 3));
// 출력: 8

calc = Multiply; // 변경
Console.WriteLine(calc(5, 3));
// 출력: 15
delegate 메서드 참조 타입같은 시그니처 필수괄호()로 호출
Delegate 기초
DEC[Digital Engineering Corporation]|200시간 과정
236
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

Func와 Action

미리 정의된 델리게이트 타입

매번 delegate int Calculator(...); 처럼 타입을 선언하는 것은 번거롭습니다. Func와 Action은 C#이 제공하는 범용 델리게이트입니다.
Func<입력, ..., 출력>
// 반환값이 있는 메서드용
Func<int, int> square;
// int 받아 int 반환 (마지막=반환)
// 매개변수 1개
Func<int, int> sq = x => x * x;
int r = sq(5); // 25

// 매개변수 2개
Func<int, int, int> add = (a, b) => a + b;
int sum = add(3, 4); // 7

// 매개변수 없음 (반환만)
Func<DateTime> now = () => DateTime.Now;
Action<입력, ...>
// 반환값 없는 메서드용 (void)
Action<string> print;
// string 받아 void
// 매개변수 1개
Action<string> log = s => Console.WriteLine(s);
log("Hello"); // Hello 출력

// 매개변수 2개
Action<string, int> repeat = (s, n) =>
  Console.WriteLine(s + n);

// 매개변수 없음
Action run = () => Console.WriteLine("Run!");
요약 비교
구분
직접 선언
Func
Action
반환값
자유
있음 (필수)
없음 (void)
매개변수
자유
최대 16개
최대 16개
선언
필요
불필요
불필요
Func = 반환값 있음Action = 반환값 없음마지막 타입 = 반환 타입
내장 델리게이트
DEC[Digital Engineering Corporation]|200시간 과정
237
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

무명 메서드 (Anonymous Method)

이름 없이 메서드 작성하기

이름 없이 inline으로 작성하는 메서드입니다. 델리게이트에 할당할 때 별도의 메서드를 정의하지 않고 바로 코드를 작성할 수 있습니다. C# 2.0에서 도입되었으며, 이후 Lambda 표현식으로 더 간결해졌습니다.
일반 메서드 vs 무명 메서드
일반 방식 (메서드 정의 필요)
// 1. 메서드 정의
int Double(int x) { return x * 2; }
// 2. 델리게이트에 할당
Func<int, int> fn = Double;
→
무명 메서드 (inline 작성)
Func<int, int> fn =
  delegate(int x) {
    return x * 2;
  };
별도 메서드 정의 불필요!
무명 메서드 문법
// 반환값 있는 경우 (Func)
Func<int, int, int> add =
  delegate(int a, int b)
  { return a + b; };
// 반환값 없는 경우 (Action)
Action<string> print =
  delegate(string msg)
  { Console.WriteLine(msg); };
진화: 무명 메서드 → Lambda 표현식
일반 메서드
int Sq(int x)
{ return x*x; }
→
무명 메서드
delegate(int x)
{ return x*x; }
→
Lambda (C# 3.0+)
x => x * x
delegate 키워드와 return 생략 → 화살표(=>) 하나로 표현
delegate() 무명 메서드=> Lambda로 간결화inline 작성 가능
무명 메서드
DEC[Digital Engineering Corporation]|200시간 과정
238
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

Lambda 표현식

간결한 익명 함수 작성하기

Lambda는 이름 없는 간단한 함수입니다. 일반 메서드를 => (화살표) 연산자로 한 줄로 줄여 쓸 수 있습니다. LINQ와 함께 사용하면 데이터 처리가 매우 간결해집니다.
일반 메서드 vs Lambda 비교
일반 메서드 (4줄)
int Square(int x)
{ return x * x; }
→
Lambda (1줄)
x => x * x
입력 => 출력
기본 문법
// 매개변수 1개   x => x * x
// 매개변수 2개   (a, b) => a + b
// 매개변수 없음   () => Console.WriteLine("Hi")
블록 본문 (여러 줄 필요 시)
// 중괄호와 return 사용
x => { int temp = x * 2; return temp + 1; };
Lambda를 담는 두 가지 타입
Func<입력, 출력> - 반환값이 있는 Lambda
Func<int, int> square = x => x * x; // square(5) = 25
Action<입력> - 반환값이 없는 Lambda
Action<string> print = s => Console.WriteLine(s);
=> 화살표 연산자Func = 반환값 있음Action = 반환값 없음
Lambda
DEC[Digital Engineering Corporation]|200시간 과정
239
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

LINQ (Language Integrated Query)

컬렉션 데이터 쿼리하기

컬렉션 데이터를 쿼리하는 통합 문법입니다. Lambda와 결합하여 SQL처럼 데이터를 필터링, 정렬, 변환할 수 있습니다.
LINQ 주요 메서드
Where()조건 필터링
.Where(x => x > 10)
Select()데이터 변환
.Select(x => x.Name)
OrderBy()오름차순 정렬
.OrderBy(x => x.Age)
FirstOrDefault()첫 번째 요소
.FirstOrDefault()
Count()개수 반환
.Count()
Any()존재 여부
.Any(x => x > 0)
메서드 체이닝 - LINQ의 핵심
// 단계별 체이닝
numbers
  .Where(x => x > 10)
  .OrderBy(x => x)
  .Select(x => x * 2)
  .ToList();
1. Where조건에 맞는 요소만 필터링
2. OrderBy필터된 결과를 정렬
3. Select각 요소를 변환
4. ToListList로 변환하여 실행
Revit API + LINQ 활용
// 벽 요소 필터링 및 정렬
var walls = new FilteredElementCollector(doc)
  .OfClass(typeof(Wall))
  .Cast<Wall>()
  .Where(w => w.Width > 0.3) // 300mm 이상
  .OrderBy(w => w.Width)
  .ToList();
Where = 필터Select = 변환OrderBy = 정렬ToList = 실행
LINQ
DEC[Digital Engineering Corporation]|200시간 과정
240
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

상속 (Inheritance)

코드 재사용과 계층 구조

부모 클래스의 속성과 메서드를 자식 클래스가 물려받는 개념입니다. 코드 재사용과 계층 구조를 통해 확장 가능한 설계가 가능합니다.
클래스 상속 기본
// 부모 클래스 (Base Class)
class BIMElement
{
  public string Name { get; set; }
  public virtual void Draw()
  { Console.WriteLine("그리기"); }
}
// 자식 클래스 (Derived Class)
class WallElement : BIMElement
{
  public double Height { get; set; }
  public override void Draw()
  { base.Draw(); Console.WriteLine("벽 그리기"); }
}
상속 키워드
:
상속 선언
virtual
재정의 가능
override
재정의
base
부모 참조
protected
자식만 접근
Revit API 클래스 계층 구조
Element
최상위
→
Wall / Floor / Column
파생 클래스
// 모든 Revit 요소는 Element를 상속
Wall wall = element as Wall; // 형변환
: 상속virtual = 재정의가능override = 재정의base = 부모호출
상속
DEC[Digital Engineering Corporation]|200시간 과정
241
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

인터페이스 (Interface)

계약과 다형성의 핵심

클래스가 반드시 구현해야 할 메서드를 정의하는 계약입니다. 다중 구현이 가능하며, I 접두사를 붙여 명명합니다.
인터페이스 정의와 구현
// 인터페이스 정의
interface IDrawable {
  void Draw();  string Name { get; }
}
interface IExportable {
  void Export(string path);
}
// 구현 (다중 인터페이스)
class WallElement : IDrawable, IExportable {
  public string Name => "Wall";
  public void Draw() { ... }
  public void Export(string p) { ... }
}
Interface vs Abstract Class
Interface
다중 구현 가능 / 구현 없음 / 계약 정의
Abstract Class
단일 상속 / 부분 구현 / 공통 로직 공유
Revit API - IExternalCommand 인터페이스
// Revit Add-in 필수 인터페이스
public class MyCommand : IExternalCommand {
  public Result Execute(ExternalCommandData cmdData, ref string msg, ElementSet el)
  { // 명령 로직
    return Result.Succeeded;
  }
}
interface = 계약I접두사 = 명명규칙다중구현 = 가능IExternalCommand = Revit
Interface
DEC[Digital Engineering Corporation]|200시간 과정
242
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

이벤트 (Event)

발행-구독 패턴으로 통신하기

객체 간 통신을 위한 발행-구독 패턴입니다. event 키워드로 선언하고, += / -=로 구독/해제합니다.
이벤트 선언과 발생
// 발행자 (Publisher)
class Button {
  public event EventHandler Clicked;
  public void OnClick() {
    Clicked?.Invoke(this, EventArgs.Empty);
  }
}
// 구독자 (Subscriber)
Button btn = new Button();
// 구독 (+= 연산자)
btn.Clicked += (sender, e) => {
  Console.WriteLine("클릭됨!");
};
btn.Clicked -= handler; // 해제
Revit API 주요 이벤트
DocumentChanged문서 변경
DocumentOpened문서 열림
ViewActivated뷰 활성화
Idling유휴 상태
Revit 이벤트 구독 패턴
// Application 이벤트 구독
app.DocumentChanged += OnDocumentChanged;
private void OnDocumentChanged(object sender, DocumentChangedEventArgs e) {
  var addedIds = e.GetAddedElementIds();
  var deletedIds = e.GetDeletedElementIds(); // 변경 처리
}
event = 선언+= 구독-= 해제Invoke = 발생
Event
DEC[Digital Engineering Corporation]|200시간 과정
243
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

동기와 비동기

async/await로 효율적인 처리

동기(Synchronous)는 작업이 순서대로 실행되어 앞 작업이 끝날 때까지 기다립니다. 비동기(Asynchronous)는 작업을 동시에 처리하여 대기 시간을 줄입니다.
동기 (Synchronous)
// 순차 실행 - 블로킹
string data = File.ReadAllText(path);
Process(data); // 읽기 완료 후 실행
UI 멈춤 / 대기 시간 발생
비동기 (Asynchronous)
// 논블로킹
string data = await File.ReadAllTextAsync(path);
Process(data); // 대기 중 다른 작업 가능
UI 응답성 유지 / 효율적
async/await 문법
// 비동기 메서드 정의
async Task<List<Element>> LoadDataAsync()
{
  var data = await ReadFileAsync();
  return ParseElements(data);
}
// 병렬 실행
var task1 = LoadWallsAsync();
var task2 = LoadFloorsAsync();

await Task.WhenAll(task1, task2);
// 두 작업 동시 완료 대기
Revit API + 비동기 주의사항
async void 사용 금지
예외 처리 불가 / 항상 Task 반환
Transaction + await
트랜잭션 내부에서 await 불가
해결책
데이터 수집 후 비동기 처리
async = 비동기선언await = 대기Task = 반환WhenAll = 병렬
Async
DEC[Digital Engineering Corporation]|200시간 과정
244
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

Static 메서드

인스턴스 없이 호출하는 메서드

인스턴스 생성 없이 클래스명으로 직접 호출하는 메서드입니다. 일반 메서드는 객체를 먼저 생성해야 하지만, Static 메서드는 Math.Abs()처럼 바로 사용합니다.
static 키워드로 선언하며, 단위 변환이나 계산 등 유틸리티 함수에 적합합니다.
인스턴스 메서드
Wall wall = new Wall();
wall.Draw(); // 객체 필요
객체의 상태(필드)에 접근 가능
Static 메서드
double result = Math.Abs(-5);
// 클래스명으로 직접 호출
유틸리티 함수에 적합
Revit 유틸리티 클래스 예시
static class UnitUtils {
  public static double MmToFeet(double mm) => mm / 304.8;
  public static double FeetToMm(double feet) => feet * 304.8;
}
// 사용: UnitUtils.MmToFeet(3000);
.NET 내장 Static 클래스
Math
Abs, Max, Min, Round
String
IsNullOrEmpty, Format
File
ReadAllText, WriteAllText
Convert
ToInt32, ToDouble
static = 정적클래스.메서드() = 호출유틸리티 = 도구함수
Static
DEC[Digital Engineering Corporation]|200시간 과정
245
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

Extension Method

기존 클래스에 메서드 추가하기

기존 클래스를 수정하지 않고 새로운 메서드를 추가하는 기법입니다. static 클래스에서 this 키워드로 확장 대상을 지정합니다.
String, Element 등 sealed 클래스도 확장 가능하며, LINQ 메서드들도 모두 확장 메서드입니다.
확장 메서드 문법
// 정의: static 클래스 + this 키워드
static class StringExtensions {
  public static bool IsEmpty(this string str)
  { return string.IsNullOrEmpty(str); }
}
// 사용: 마치 원래 메서드처럼
string name = "";
if (name.IsEmpty()) { // 확장 메서드 호출
  Console.WriteLine("비어있음");
}
name.Trim().IsEmpty(); // 체이닝 가능
Revit Element 확장 메서드
static class ElementExtensions {
  public static string GetParamValue(this Element elem, string paramName)
  { var param = elem.LookupParameter(paramName); return param?.AsString() ?? ""; }
}
// 사용: string mark = wall.GetParamValue("Mark");
LINQ 메서드도 확장 메서드!
Where()
IEnumerable<T>
Select()
IEnumerable<T>
OrderBy()
IEnumerable<T>
ToList()
IEnumerable<T>
this = 확장대상static class = 필수체이닝 = 연속호출
Extension
DEC[Digital Engineering Corporation]|200시간 과정
246
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

Thread (쓰레드)

멀티스레딩 기초

프로그램 내에서 독립적으로 실행되는 작업 단위입니다. Thread 클래스로 생성하고, Start()로 실행합니다.
lock으로 동기화하며, Revit API는 메인 스레드에서만 호출 가능합니다.
Thread 생성과 실행
// Thread 생성
Thread thread = new Thread(() => {
  Console.WriteLine("작업 중...");
});
thread.Start(); // 시작
// 매개변수 전달
Thread thread = new Thread((obj) => {
  Console.WriteLine((string)obj);
});
thread.Start("Hello"); thread.Join();
Thread 주요 속성
Name
스레드 이름
IsBackground
백그라운드 여부
Priority
우선순위
IsAlive
실행 중 여부
스레드 안전성 (Thread Safety)
// lock으로 동기화
private object _lock = new object();
lock (_lock) {
  _count++; // 한 번에 하나의 스레드만
}
Revit API 주의사항
Revit API는 메인 스레드에서만 호출 가능
백그라운드에서 데이터 처리 후 메인 스레드에서 Revit 작업 수행
Thread = 실행단위Start = 시작Join = 대기lock = 동기화
Thread
DEC[Digital Engineering Corporation]|200시간 과정
247
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

BackgroundWorker

진행률 보고가 쉬운 백그라운드 처리

UI를 멈추지 않고 백그라운드에서 작업을 실행하는 컴포넌트입니다. DoWork에서 작업 수행, ReportProgress로 진행률 보고합니다.
ProgressChanged에서 UI 업데이트하며, CancelAsync로 작업 취소가 가능합니다.
BackgroundWorker 설정
BackgroundWorker worker = new BackgroundWorker();
worker.WorkerReportsProgress = true; worker.WorkerSupportsCancellation = true;
worker.DoWork += Worker_DoWork; worker.ProgressChanged += Worker_ProgressChanged;
worker.RunWorkerCompleted += Worker_Completed; worker.RunWorkerAsync(data); // 시작
핵심 이벤트
DoWork
백그라운드 작업
ProgressChanged
진행률 업데이트
RunWorkerCompleted
작업 완료
진행률 보고 패턴
// DoWork에서
void Worker_DoWork(object sender, DoWorkEventArgs e) {
  var items = (List<Element>)e.Argument;
  for (int i = 0; i < items.Count; i++) {
    Process(items[i]); worker.ReportProgress(i * 100 / items.Count);
  }
}
// ProgressChanged에서 UI 업데이트
void Worker_ProgressChanged(object sender, ProgressChangedEventArgs e) {
  progressBar.Value = e.ProgressPercentage;
}
// 취소: worker.CancelAsync();
DoWork = 작업ReportProgress = 진행률CancelAsync = 취소
BGWorker
DEC[Digital Engineering Corporation]|200시간 과정
248
B+CD+P
BIM-IT 융합 과정
Chapter 7: BIM-IT 융합기술 활용

Task

현대적인 비동기 패턴

비동기 작업을 표현하는 현대적인 패턴입니다. Task.Run으로 백그라운드 작업을 시작하고, await로 완료를 대기합니다.
CancellationToken으로 취소하고, IProgress로 진행률을 보고할 수 있습니다.
Task 생성과 실행
// 반환값 없는 Task
Task task = Task.Run(() => {
  ProcessData(); // 백그라운드 작업
});
await task; // 완료 대기
// 반환값 있는 Task<T>
Task<int> countTask = Task.Run(() => {
  return elements.Count();
});
int count = await countTask;
주요 Task 메서드
Task.Run
새 작업 시작
Task.WhenAll
모두 완료 대기
Task.WhenAny
하나 완료 대기
ContinueWith
연속 작업
취소 & 진행률 보고
// CancellationToken 사용
var cts = new CancellationTokenSource();
Task.Run(() => {
  while (!cts.Token.IsCancellationRequested) { DoWork(); }
}, cts.Token);
cts.Cancel(); // 취소 요청
// IProgress<T> 사용
var progress = new Progress<int>(p => {
  progressBar.Value = p;
});
await ProcessAsync(progress);
// 메서드 내부: progress.Report(50);
Task.Run = 실행await = 대기WhenAll = 병렬Cancel = 취소
Task
DEC[Digital Engineering Corporation]|200시간 과정
249
08
Chapter

BIM-IT 융합기술 심화

API 개발 실습

35
HOURS
1
SECTIONS
8.1.2API 개발 실습
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

API 개발 실습

Revit API를 활용한 자동화 프로세스 구현 및 데이터 관리 자동화
API 개발 프로세스
📋
Plan
요구분석
→
💻
Code
API 개발
→
🔍
Debug
디버깅
→
🚀
Deploy
배포
주요 API 기능
요소 생성Wall.Create, Floor.Create
데이터 추출FilteredElementCollector
파라미터 수정Parameter.Set/Get
Excel 연동EPPlus, ClosedXML
⚙
자동화 프로세스
1반복 작업 자동화
2스크립트 작성
3워크플로우 최적화
4배치 처리
🗃
데이터 관리
1BIM 데이터 추출
2데이터 분석
3외부 DB 연동
4Excel 연계
🐛
디버깅 & 오류처리
1오류 유형 이해
2Try-Catch 패턴
3로그 분석
4예외 처리
⚙자동화
📊데이터 추출
🔍디버깅
🗄DB 연동
API 실습
DEC[Digital Engineering Corporation]|200시간 과정
251
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

BIM-IT 융합기술 심화

강의계획서 - API 개발 실습 (자동화 및 데이터 관리)

1. 강의 개요

과목명
BIM-IT 융합기술 심화
교육시간
35시간 (이론 5H + 실습 30H)
대상
C# 기초를 이수한 학습자
선수학습
Chapter 7. BIM-IT 융합기술 활용 (C# 기초)
실습환경
Visual Studio 2022, Revit 2025

2. 지도목표

Revit API를 활용한 자동화 프로세스를 구현하고, BIM 데이터를 추출/분석하여 외부 시스템과 연동하는 역량을 습득한다.
1Revit API를 활용한 자동화 프로세스 구현
2반복 작업 자동화 스크립트 작성 능력 습득
3오류 유형 이해 및 디버깅 방법 습득
4BIM 데이터 추출 및 분석 역량 강화
5외부 데이터베이스와의 연동 방법 이해

3. 사용교재 (자료)

주교재
본 교육자료
참고
RevitAPIDocs
실습
강사 제공

4. 주요 내용 (학습활동)

8.1자동화 프로세스 구현실습10H
반복 작업 자동화 / 스크립트 작성 / 배치 처리
8.2오류 유형 및 디버깅이론+실습5H
일반적인 오류 유형 / Try-Catch 패턴 / 로그 분석
8.3데이터 관리 자동화실습10H
BIM 데이터 추출 / 데이터 분석 / Excel 연동
8.4외부 DB 연동실습10H
DB 기초 개념 / SQL 쿼리 / Revit-DB 연동 실습
평가 기준
이론평가15%
실습평가85%
자동화 프로세스 및 데이터 연동 결과물 중심 평가
DEC[Digital Engineering Corporation]|200시간 과정
252
</>
REVIT API

API 개발 실습

Revit API를 활용한 자동화 및 데이터 관리

Automation
Data Management
Debugging
Database
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

Transaction

Revit 문서 변경의 핵심 메커니즘

Transaction이란?
Revit 문서를 수정하려면 반드시 Transaction 안에서 작업해야 합니다. 데이터베이스의 트랜잭션처럼 원자성을 보장하며, 실패 시 RollBack으로 되돌릴 수 있습니다.
Transaction 기본 흐름
Start()
트랜잭션 시작
→
작업 수행
Element 수정
→
Commit()
변경 확정
기본 코드 패턴
using (Transaction trans = new Transaction(doc, "작업 이름"))
{
  trans.Start(); // 트랜잭션 시작

  // Revit 요소 수정 작업
  wall.get_Parameter(BuiltInParameter.ALL_MODEL_MARK)
    .Set("W-001");

  trans.Commit(); // 변경 확정
}
Start() = 시작Commit() = 확정RollBack() = 취소using = 자동 정리
Transaction 1/2
DEC[Digital Engineering Corporation]|200시간 과정
254
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

Transaction 고급

TransactionGroup과 SubTransaction

Transaction 종류
Transaction
기본 단일 작업
개별 요소 수정
TransactionGroup
여러 Transaction 묶음
Undo 히스토리 통합
SubTransaction
중첩 트랜잭션
부분 RollBack 가능
TransactionGroup - Undo 통합
using (TransactionGroup tg = new TransactionGroup(doc, "벽 일괄 생성")) {
  tg.Start();
  foreach (var line in lines) { // 여러 Transaction을 하나로
    using (Transaction t = new Transaction(doc, "벽 생성")) {
      t.Start(); Wall.Create(...); t.Commit();
    }
  }
  tg.Assimilate(); // Undo 히스토리에서 하나로 표시
}
에러 처리 패턴
using (Transaction trans = new Transaction(doc, "작업")) {
  try {
    trans.Start(); // 위험한 작업... trans.Commit();
  }
  catch (Exception ex) {
    if (trans.HasStarted() && !trans.HasEnded()) trans.RollBack(); // 실패 시 되돌리기
    TaskDialog.Show("오류", ex.Message);
  }
}
Group = Undo 통합Assimilate = 병합try-catch = 안전
Transaction 2/2
DEC[Digital Engineering Corporation]|200시간 과정
255
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

Selection

사용자 선택 입력 받기

Selection 메서드
PickObject
단일 요소 선택
→ Reference
PickObjects
여러 요소 선택
→ IList<Reference>
PickPoint
3D 점 선택
→ XYZ
PickBox
영역 선택
→ PickedBox
PickObject - 단일 요소 선택
UIDocument uidoc = commandData.Application.ActiveUIDocument;
Document doc = uidoc.Document;
// 요소 선택 요청
Reference reference = uidoc.Selection.PickObject(ObjectType.Element, "벽을 선택하세요");
// Reference에서 Element 가져오기
Element element = doc.GetElement(reference);
ObjectType 종류
Element일반 요소
PointOnElement요소 위 점
Edge모서리
Face면
PickObjects - 여러 요소 선택
// Element 선택
IList<Reference> refs = uidoc.Selection.PickObjects(ObjectType.Element, "요소 선택");
// Face 선택
Reference faceRef = uidoc.Selection.PickObject(ObjectType.Face, "면 선택");
Face face = doc.GetElement(faceRef).GetGeometryObjectFromReference(faceRef) as Face;
// Edge 선택
Reference edgeRef = uidoc.Selection.PickObject(ObjectType.Edge, "모서리 선택");
Edge edge = doc.GetElement(edgeRef).GetGeometryObjectFromReference(edgeRef) as Edge;
PickObject = 단일PickObjects = 다중GetElement = 변환
Selection 1/2
DEC[Digital Engineering Corporation]|200시간 과정
256
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

ISelectionFilter

선택 가능한 요소 제한하기

ISelectionFilter란?
사용자가 특정 조건의 요소만 선택할 수 있도록 제한합니다. 예: 벽만 선택, 구조 기둥만 선택, 특정 패밀리만 선택 등
구현해야 할 메서드
AllowElement(Element elem)
요소 허용 여부 → bool 반환
AllowReference(Reference ref, XYZ pos)
Reference 허용 → bool 반환
WallSelectionFilter 클래스 (public class WallSelectionFilter : ISelectionFilter)
// 요소 허용 여부
public bool AllowElement(Element elem)
{
  return elem is Wall; // Wall만 허용
}
// Reference 허용 여부
public bool AllowReference(Reference r, XYZ pos)
{
  return false; // Reference 선택 불허
}
필터 적용하기
// 단일 요소 선택 (PickObject)
WallSelectionFilter filter = new WallSelectionFilter();
Reference reference = uidoc.Selection.PickObject(
  ObjectType.Element, filter, "벽 선택");

// Reference에서 Element 가져오기
Wall wall = doc.GetElement(reference) as Wall;
double height = wall.get_Parameter(
  BuiltInParameter.WALL_USER_HEIGHT_PARAM).AsDouble();
TIP: 필터 + 메시지로 사용자 안내
// 여러 요소 선택 (PickObjects)
IList<Reference> refs = uidoc.Selection.PickObjects(
  ObjectType.Element, filter, "벽들 선택");

// 선택된 요소들 순회
foreach (Reference r in refs) {
  Wall w = doc.GetElement(r) as Wall;
  // 각 벽에 대한 작업...
}
주의: ESC 누르면 예외 발생
ISelectionFilter = 인터페이스AllowElement = 조건true/false = 허용
Selection 2/2
DEC[Digital Engineering Corporation]|200시간 과정
257
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

FilteredElementCollector

문서에서 요소 검색하기

FilteredElementCollector란?
Revit 문서에서 조건에 맞는 요소를 검색합니다. LINQ와 함께 사용하면 강력한 필터링이 가능합니다.
주요 필터 메서드
OfClass
클래스 타입으로
typeof(Wall)
OfCategory
카테고리로
OST_Walls
WhereElementIsNotElementType
인스턴스만
타입 제외
WhereElementIsElementType
타입만
인스턴스 제외
기본 사용법 - 모든 벽 가져오기
// Collector 생성 (Document 필요)
FilteredElementCollector collector = new FilteredElementCollector(doc);
// 모든 Wall 인스턴스 가져오기
IList<Element> walls = collector.OfClass(typeof(Wall)).WhereElementIsNotElementType().ToElements();
OfCategory - 카테고리로 검색
// 구조 기둥 가져오기
var columns = new FilteredElementCollector(doc)
  .OfCategory(BuiltInCategory.OST_StructuralColumns)
  .WhereElementIsNotElementType()
  .Cast<FamilyInstance>() // LINQ 캐스팅
  .ToList();
TIP: Cast<T>로 타입 변환
// 문 가져오기 + LINQ 필터
var doors = new FilteredElementCollector(doc)
  .OfCategory(BuiltInCategory.OST_Doors)
  .WhereElementIsNotElementType()
  .Where(e => e.Name.Contains("Single"))
  .ToList();
LINQ: Where로 추가 필터링
OfClass = 타입OfCategory = 카테고리ToElements = 결과
Filtering 1/2
DEC[Digital Engineering Corporation]|200시간 과정
258
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

고급 필터링

LINQ와 복합 필터 활용

성능 최적화 팁
⚡
Collector 필터 우선
LINQ보다 빠름
👁️
뷰 범위 제한
new Collector(doc, viewId)
🚀
Quick 필터
OfClass, OfCategory 먼저
LINQ 필터링
// 높이 3m 이상 + 이름 정렬
var walls = new FilteredElementCollector(doc)
  .OfClass(typeof(Wall)).WhereElementIsNotElementType()
  .Cast<Wall>().Where(w => GetHeight(w) >= 3000)
  .OrderBy(w => w.Name).ToList();
LogicalFilter (OR/AND)
// 벽 또는 바닥
var orFilter = new LogicalOrFilter(
  new ElementCategoryFilter(BuiltInCategory.OST_Walls),
  new ElementCategoryFilter(BuiltInCategory.OST_Floors));
var elems = collector.WherePasses(orFilter);
다양한 필터 종류
ParameterFilter - 파라미터 값
var pvp = new ParameterValueProvider(
  new ElementId(BuiltInParameter.WALL_USER_HEIGHT_PARAM));
var rule = new FilterDoubleRule(pvp, new FilterNumericGreater(), 3000);
var filter = new ElementParameterFilter(rule);
ElementLevelFilter - 레벨로 필터
Level level = doc.GetElement(levelId) as Level;
var filter = new ElementLevelFilter(level.Id);
var elems = collector.WherePasses(filter)
  .WhereElementIsNotElementType().ToElements();
BoundingBoxFilter - 영역 내 요소
Outline outline = new Outline(minPt, maxPt);
var filter = new BoundingBoxIntersectsFilter(outline);
var elems = collector.WherePasses(filter)
  .WhereElementIsNotElementType().ToElements();
IntersectsFilter - 교차 요소
var solid = GetElementSolid(element);
var filter = new ElementIntersectsSolidFilter(solid);
var intersecting = collector.WherePasses(filter)
  .WhereElementIsNotElementType().ToElements();
Where = LINQWherePasses = 복합Parameter = 값BBox = 영역
Filtering 2/2
DEC[Digital Engineering Corporation]|200시간 과정
259
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

Parameter 읽기

요소의 매개변수 값 가져오기

Parameter란?
BuiltInParameter (내장)
시스템 정의 매개변수 (높이, 너비 등)
공유/프로젝트 매개변수
사용자 정의 매개변수 (Mark, Comments 등)
Parameter 접근 방법
get_Parameter(BuiltInParameter)
시스템 매개변수 (내장)
예: WALL_USER_HEIGHT_PARAM
LookupParameter(name)
이름으로 검색 (공유/프로젝트)
예: "Mark", "Comments"
StorageType별 읽기 메서드
Double
AsDouble()
길이, 면적
Integer
AsInteger()
개수, 인덱스
String
AsString()
이름, 설명
ElementId
AsElementId()
레벨, 타입
매개변수 읽기 예제
// 벽 높이 가져오기 (BuiltInParameter)
Parameter heightParam = wall.get_Parameter(
  BuiltInParameter.WALL_USER_HEIGHT_PARAM);
double heightFeet = heightParam.AsDouble();
double heightMM = heightFeet * 304.8; // mm 변환

// Mark 매개변수 (이름으로)
Parameter markParam = wall.LookupParameter("Mark");
string mark = markParam?.AsString() ?? "";
get_Parameter = 내장LookupParameter = 이름×304.8 = mm변환
Parameter 1/2
DEC[Digital Engineering Corporation]|200시간 과정
260
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

Parameter 쓰기

요소의 매개변수 값 설정하기

Parameter 수정은 반드시 Transaction 안에서!
또한 IsReadOnly 속성이 false인 매개변수만 수정 가능합니다.
StorageType별 Set 메서드
Double
Set(double)
feet 단위 필수
Integer
Set(int)
정수 값
String
Set(string)
텍스트 값
ElementId
Set(ElementId)
참조 요소
매개변수 쓰기 예제
// Mark + 높이 설정
using (Transaction t = new Transaction(doc)) {
  t.Start("설정");
  wall.LookupParameter("Mark").Set("W-001");
  double ft = 3000 / 304.8; // mm→feet
  wall.get_Parameter(BIP.WALL_USER_HEIGHT_PARAM).Set(ft);
  t.Commit(); }
// Level 변경 (ElementId)
using (Transaction t = new Transaction(doc)) {
  t.Start("레벨 변경");
  Level newLevel = GetLevelByName("2F");
  wall.get_Parameter(BIP.WALL_BASE_CONSTRAINT)
    .Set(newLevel.Id);
  t.Commit(); }
// Integer 매개변수 설정
Parameter countParam = elem.LookupParameter("개수");
if (countParam != null && !countParam.IsReadOnly)
{
  countParam.Set(5); // 정수 값 직접 설정
}
// 안전한 매개변수 설정 패턴
Parameter p = wall.LookupParameter("Comments");
if (p != null && p.HasValue && !p.IsReadOnly)
{
  p.Set("수정됨"); // 안전하게 설정
}
Set() = 값 설정÷304.8 = feet변환Transaction = 필수
Parameter 2/2
DEC[Digital Engineering Corporation]|200시간 과정
261
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

Location

요소의 위치 정보 가져오기

Location이란?
•
LocationPoint
점 하나로 정의 | 기둥, 가구, 문, 조명
━
LocationCurve
선/곡선으로 정의 | 벽, 보, 파이프, 덕트
위치 읽기 예제
// LocationPoint - 기둥 위치
if (column.Location is LocationPoint locPt) {
  XYZ point = locPt.Point;
  double x = point.X * 304.8; // mm
  double y = point.Y * 304.8;
}
// LocationCurve - 벽 중심선
if (wall.Location is LocationCurve locCurve) {
  Curve curve = locCurve.Curve;
  XYZ start = curve.GetEndPoint(0);
  double len = curve.Length * 304.8;
}
위치 이동/수정 (Transaction 필요)
// Move - 기둥 이동
XYZ trans = new XYZ(1000/304.8, 0, 0);
if (col.Location is LocationPoint lp)
  lp.Move(trans); // X방향 1m 이동
// Curve 변경 - 벽 위치 수정
if (wall.Location is LocationCurve lc) {
  Line newLine = Line.CreateBound(p1, p2);
  lc.Curve = newLine; // 새 위치 적용
}
// Rotate - 요소 회전
XYZ center = (locPt as LocationPoint).Point;
Line axis = Line.CreateBound(center, center + XYZ.BasisZ);
locPt.Rotate(axis, Math.PI/4); // 45도 회전
// ElementTransformUtils - 복사
XYZ offset = new XYZ(2000/304.8, 0, 0);
ElementTransformUtils.CopyElement(
  doc, elem.Id, offset); // 2m 복사
LocationPoint = 점LocationCurve = 선Move = 이동×304.8 = mm
Location 1/2
DEC[Digital Engineering Corporation]|200시간 과정
262
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

Location 이동/회전

Move, Rotate, BoundingBox

Location 변환 메서드
Location.Move()
XYZ 벡터만큼 요소 이동
Transaction 필수
Location.Rotate()
Line 축 기준 회전
라디안 단위
Move(XYZ)
벡터만큼 이동
Rotate(Line, angle)
축 기준 회전
BoundingBox
요소 범위(Min/Max)
Move - 요소 이동
using (Transaction t = new Transaction(doc)) {
  t.Start("이동");
  XYZ vec = new XYZ(3000/304.8, 0, 0);
  elem.Location.Move(vec); // X 3m
  t.Commit(); }
Rotate - 요소 회전
XYZ pt = ((LocationPoint)elem.Location).Point;
Line axis = Line.CreateBound(pt, pt + XYZ.BasisZ);
double rad = 45 * Math.PI / 180;
elem.Location.Rotate(axis, rad); // 45°
BoundingBox - 요소 범위
BoundingBoxXYZ bbox = elem.get_BoundingBox(null);
XYZ min = bbox.Min; // 최소점
XYZ max = bbox.Max; // 최대점
XYZ center = (min + max) / 2;
double w = (max.X - min.X) * 304.8; // 폭
ElementTransformUtils - 복사/미러
// 요소 복사
XYZ offset = new XYZ(2000/304.8, 0, 0);
ElementTransformUtils.CopyElement(doc, elem.Id, offset);
// 미러 (대칭)
ElementTransformUtils.MirrorElement(doc, elem.Id, plane);
Move = 이동Rotate = 회전BBox = 범위Transaction = 필수
Location 2/2
DEC[Digital Engineering Corporation]|200시간 과정
263
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

벽 생성

Wall.Create 메서드

Wall.Create 파라미터
document
Document
curve
중심선 (Line)
wallTypeId
벽 타입 ID
levelId
기준 레벨 ID
height
높이 (feet)
offset
오프셋
flip
방향 반전
structural
구조벽 여부
기본 벽 생성
// 1. 레벨과 벽 타입 가져오기
Level level = new FilteredElementCollector(doc)
  .OfClass(typeof(Level)).FirstElement() as Level;
// 2. 중심선 생성 (0,0 → 10m,0)
XYZ start = new XYZ(0, 0, 0);
XYZ end = new XYZ(10000/304.8, 0, 0); // 10m
Line line = Line.CreateBound(start, end);
Wall.Create 호출
using (Transaction t = new Transaction(doc, "벽 생성")) {
  t.Start();
  Wall wall = Wall.Create(doc, line, level.Id, false);
  // doc, line(중심선), level.Id(레벨), false(구조벽 여부)
  t.Commit();
}
Wall.Create = 생성Line = 중심선Level.Id = 레벨
Create Wall
DEC[Digital Engineering Corporation]|200시간 과정
264
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

바닥 생성

Floor.Create와 CurveLoop

CurveLoop 필수 규칙
🔄
닫힌 경로
시작점 = 끝점
↺
반시계 방향
내부가 바닥 영역
📐
평면 곡선
모든 점이 같은 Z
CurveLoop 생성 (사각형)
// 사각형 꼭짓점 (5m × 4m)
double w = 5000/304.8, h = 4000/304.8;
XYZ p0 = new XYZ(0,0,0), p1 = new XYZ(w,0,0); XYZ p2 = new XYZ(w,h,0), p3 = new XYZ(0,h,0);
// 반시계 방향 CurveLoop
CurveLoop loop = new CurveLoop();
loop.Append(Line.CreateBound(p0, p1)); loop.Append(Line.CreateBound(p1, p2));
loop.Append(Line.CreateBound(p2, p3)); loop.Append(Line.CreateBound(p3, p0));
Floor.Create 호출
using (Transaction t = new Transaction(doc, "바닥 생성")) {
  t.Start();
  IList<CurveLoop> loops = new List<CurveLoop> { loop };
  Floor floor = Floor.Create(doc, loops, floorTypeId, levelId);
  // doc, loops(CurveLoop 목록), floorTypeId(바닥 타입), levelId(레벨)
  t.Commit();
}
CurveLoop = 경계반시계 = 방향Floor.Create = 생성
Create Floor
DEC[Digital Engineering Corporation]|200시간 과정
265
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

천장 생성

Ceiling.Create와 CurveLoop

CurveLoop 필수 규칙
🔄
닫힌 경로
시작점 = 끝점
↺
반시계 방향
내부가 천장 영역
📐
평면 곡선
모든 점이 같은 Z
CurveLoop 생성 (사각형)
// 사각형 꼭짓점 (5m × 4m)
double w = 5000/304.8, h = 4000/304.8;
XYZ p0 = new XYZ(0,0,0), p1 = new XYZ(w,0,0); XYZ p2 = new XYZ(w,h,0), p3 = new XYZ(0,h,0);
// 반시계 방향 CurveLoop
CurveLoop loop = new CurveLoop();
loop.Append(Line.CreateBound(p0, p1)); loop.Append(Line.CreateBound(p1, p2));
loop.Append(Line.CreateBound(p2, p3)); loop.Append(Line.CreateBound(p3, p0));
Ceiling.Create 호출
using (Transaction t = new Transaction(doc, "천장 생성")) {
  t.Start();
  IList<CurveLoop> loops = new List<CurveLoop> { loop };
  Ceiling ceiling = Ceiling.Create(doc, loops, ceilingTypeId, levelId);
  // doc, loops(CurveLoop 목록), ceilingTypeId(천장 타입), levelId(레벨)
  t.Commit();
}
CurveLoop = 경계반시계 = 방향Ceiling.Create = 생성
Create Ceiling
DEC[Digital Engineering Corporation]|200시간 과정
266
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

기초 생성

WallFoundation.Create와 연속기초

연속기초 생성 규칙
🧱
벽 필수
기준이 되는 벽 필요
📋
기초 타입
WallFoundationType 지정
⬇️
자동 배치
벽 하단에 자동 생성
기초 타입 가져오기
// 연속기초 타입 필터링
FilteredElementCollector collector = new FilteredElementCollector(doc);
WallFoundationType foundationType = collector
  .OfClass(typeof(WallFoundationType))
  .FirstOrDefault() as WallFoundationType;
// 기준 벽 선택
Wall wall = doc.GetElement(wallId) as Wall;
WallFoundation.Create 호출
using (Transaction t = new Transaction(doc, "기초 생성")) {
  t.Start();
  WallFoundation foundation = WallFoundation.Create(
    doc, wall.Id, foundationType.Id);
  // doc, wallId(벽 ID), foundationTypeId(기초 타입 ID)
  t.Commit();
}
Wall = 기준 벽WallFoundationType = 타입WallFoundation.Create = 생성
Create Foundation
DEC[Digital Engineering Corporation]|200시간 과정
267
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

독립기초 생성

NewFamilyInstance와 StructuralType

독립기초 생성 규칙
📍
배치 점
XYZ 좌표 지정
📦
패밀리 심볼
독립기초 타입 선택
🏗️
구조 타입
StructuralType.Footing
독립기초 패밀리 심볼 가져오기
// 독립기초 패밀리 심볼 필터링
FilteredElementCollector collector = new FilteredElementCollector(doc);
FamilySymbol symbol = collector
  .OfCategory(BuiltInCategory.OST_StructuralFoundation)
  .OfClass(typeof(FamilySymbol)).FirstOrDefault() as FamilySymbol;
// 배치 위치 및 레벨 설정
XYZ point = new XYZ(0, 0, 0);
NewFamilyInstance 호출
using (Transaction t = new Transaction(doc, "독립기초 생성")) {
  t.Start();
  if (!symbol.IsActive) symbol.Activate();
  FamilyInstance footing = doc.Create.NewFamilyInstance(
    point, symbol, level, StructuralType.Footing);
  t.Commit();
}
XYZ = 배치점FamilySymbol = 타입StructuralType.Footing = 구조
Create Footing
DEC[Digital Engineering Corporation]|200시간 과정
268
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

디테일 라인 생성

NewDetailCurve와 DetailCurve

디테일 라인 생성 규칙
👁️
뷰 기반
특정 뷰에서만 표시
✏️
2D 요소
모델이 아닌 주석
📐
Curve 필요
Line, Arc 등 곡선
Line 객체 생성
// 시작점과 끝점 정의
XYZ startPoint = new XYZ(0, 0, 0);
XYZ endPoint = new XYZ(10, 0, 0);
// Line 객체 생성
Line line = Line.CreateBound(startPoint, endPoint);
// 현재 활성 뷰 가져오기
View activeView = doc.ActiveView;
NewDetailCurve 호출
using (Transaction t = new Transaction(doc, "디테일 라인")) {
  t.Start();
  DetailCurve detailLine = doc.Create.NewDetailCurve(
    activeView, line);
  // activeView(뷰), line(Curve 객체)
  t.Commit();
}
View = 대상 뷰Line = 곡선 객체NewDetailCurve = 생성
Create DetailLine
DEC[Digital Engineering Corporation]|200시간 과정
269
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

TextNote 생성

TextNote.Create와 TextNoteOptions

TextNote 생성 규칙
👁️
뷰 기반
특정 뷰에서만 표시
📍
위치 지정
XYZ 좌표로 배치
🔤
타입 옵션
TextNoteType 스타일
TextNoteOptions 설정
// TextNote 타입 가져오기
FilteredElementCollector collector = new FilteredElementCollector(doc);
TextNoteType textType = collector.OfClass(typeof(TextNoteType))
  .FirstOrDefault() as TextNoteType;
// 옵션 설정
TextNoteOptions options = new TextNoteOptions();
options.TypeId = textType.Id;
TextNote.Create 호출
using (Transaction t = new Transaction(doc, "텍스트 생성")) {
  t.Start();
  XYZ point = new XYZ(0, 0, 0);
  TextNote note = TextNote.Create(doc, view.Id, point,
    "텍스트 내용", options);
  t.Commit();
}
XYZ = 배치 위치Options = 스타일 설정TextNote.Create = 생성
Create TextNote
DEC[Digital Engineering Corporation]|200시간 과정
270
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

룸 생성

NewRoom과 Room Boundary

룸 생성 규칙
🔲
닫힌 경계
벽으로 둘러싸인 영역
📏
레벨 기반
특정 레벨에 배치
📍
UV 좌표
배치점 지정 필요
레벨과 배치점 설정
// 레벨 가져오기
FilteredElementCollector collector = new FilteredElementCollector(doc);
Level level = collector.OfClass(typeof(Level))
  .FirstOrDefault() as Level;
// 룸 배치점 (UV 좌표)
UV point = new UV(5, 5);
NewRoom 호출
using (Transaction t = new Transaction(doc, "룸 생성")) {
  t.Start();
  Room room = doc.Create.NewRoom(level, point);
  room.Name = "거실";
  // level(레벨), point(UV 배치점)
  t.Commit();
}
Level = 레벨UV = 배치점NewRoom = 생성
Create Room
DEC[Digital Engineering Corporation]|200시간 과정
271
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

모델 라인 생성

NewModelCurve와 SketchPlane

모델 라인 생성 규칙
🌐
3D 요소
모든 뷰에서 표시
📐
SketchPlane
작업 평면 필요
〰️
Curve 필요
Line, Arc 등 곡선
SketchPlane과 Line 생성
// 작업 평면 생성 (XY 평면)
Plane plane = Plane.CreateByNormalAndOrigin(XYZ.BasisZ, XYZ.Zero);
SketchPlane sketchPlane = SketchPlane.Create(doc, plane);
// Line 객체 생성
XYZ start = new XYZ(0, 0, 0), end = new XYZ(10, 10, 0);
Line line = Line.CreateBound(start, end);
NewModelCurve 호출
using (Transaction t = new Transaction(doc, "모델 라인")) {
  t.Start();
  ModelCurve modelLine = doc.Create.NewModelCurve(
    line, sketchPlane);
  // line(Curve 객체), sketchPlane(작업 평면)
  t.Commit();
}
SketchPlane = 평면Line = 곡선NewModelCurve = 생성
Create ModelLine
DEC[Digital Engineering Corporation]|200시간 과정
272
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

도어 생성

NewFamilyInstance와 Host Wall

도어 생성 규칙
🚪
호스트 벽
벽에 삽입되는 요소
📦
패밀리 심볼
Door 타입 선택
📍
배치점
벽 위의 XYZ 좌표
도어 패밀리 심볼 가져오기
// 도어 패밀리 심볼 필터링
FilteredElementCollector collector = new FilteredElementCollector(doc);
FamilySymbol doorSymbol = collector
  .OfCategory(BuiltInCategory.OST_Doors)
  .OfClass(typeof(FamilySymbol)).FirstOrDefault() as FamilySymbol;
// 호스트 벽과 배치점
XYZ point = new XYZ(5, 0, 0);
NewFamilyInstance 호출
using (Transaction t = new Transaction(doc, "도어 생성")) {
  t.Start();
  if (!doorSymbol.IsActive) doorSymbol.Activate();
  FamilyInstance door = doc.Create.NewFamilyInstance(
    point, doorSymbol, wall, level, StructuralType.NonStructural);
  t.Commit();
}
Wall = 호스트FamilySymbol = 타입NewFamilyInstance = 생성
Create Door
DEC[Digital Engineering Corporation]|200시간 과정
273
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

창호 생성

NewFamilyInstance와 Host Wall

창호 생성 규칙
🪟
호스트 벽
벽에 삽입되는 요소
📦
패밀리 심볼
Window 타입 선택
📏
높이 설정
Sill Height 파라미터
창호 패밀리 심볼 가져오기
// 창호 패밀리 심볼 필터링
FilteredElementCollector collector = new FilteredElementCollector(doc);
FamilySymbol windowSymbol = collector
  .OfCategory(BuiltInCategory.OST_Windows)
  .OfClass(typeof(FamilySymbol)).FirstOrDefault() as FamilySymbol;
// 호스트 벽과 배치점
XYZ point = new XYZ(5, 0, 0);
NewFamilyInstance 호출
using (Transaction t = new Transaction(doc, "창호 생성")) {
  t.Start();
  if (!windowSymbol.IsActive) windowSymbol.Activate();
  FamilyInstance window = doc.Create.NewFamilyInstance(
    point, windowSymbol, wall, level, StructuralType.NonStructural);
  t.Commit();
}
Wall = 호스트FamilySymbol = 타입NewFamilyInstance = 생성
Create Window
DEC[Digital Engineering Corporation]|200시간 과정
274
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

쉬트 생성

ViewSheet.Create와 TitleBlock

쉬트 생성 규칙
📋
타이틀블록
TitleBlock 타입 지정
🔢
쉬트 번호
SheetNumber 설정
📝
쉬트 이름
Name 프로퍼티
타이틀블록 타입 가져오기
// 타이틀블록 패밀리 심볼 필터링
FilteredElementCollector collector = new FilteredElementCollector(doc);
FamilySymbol titleBlock = collector
  .OfCategory(BuiltInCategory.OST_TitleBlocks)
  .OfClass(typeof(FamilySymbol)).FirstOrDefault() as FamilySymbol;
// 타이틀블록 ID 가져오기
ElementId titleBlockId = titleBlock.Id;
ViewSheet.Create 호출
using (Transaction t = new Transaction(doc, "쉬트 생성")) {
  t.Start();
  ViewSheet sheet = ViewSheet.Create(doc, titleBlockId);
  sheet.SheetNumber = "A-101";
  sheet.Name = "1층 평면도";
  t.Commit();
}
TitleBlock = 도면틀SheetNumber = 번호ViewSheet.Create = 생성
Create Sheet
DEC[Digital Engineering Corporation]|200시간 과정
275
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

레벨 생성

Level.Create 메서드

Level 주요 속성
Elevation
높이 (feet)
double
Name
레벨 이름
string
Id
요소 ID
ElementId
단일 레벨 생성
using (Transaction t = new Transaction(doc, "레벨 생성")) {
  t.Start();
  double elevation = 3000 / 304.8; // 높이 3000mm → feet
  Level level = Level.Create(doc, elevation); level.Name = "2F";
  t.Commit();
}
여러 레벨 일괄 생성
// 층고 3m로 5개 층 생성
double floorHeight = 3000 / 304.8; // 3m
for (int i = 1; i <= 5; i++) {
  double elev = floorHeight * i;
  Level level = Level.Create(doc, elev); level.Name = $"{i + 1}F";
}
Level.Create = 생성Elevation = 높이(feet)Name = 이름
Create Level
DEC[Digital Engineering Corporation]|200시간 과정
276
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

그리드 생성

Grid.Create 메서드

Grid 유형
━
Linear
직선 그리드
◠
Arc
호형 그리드
┃┃
Multi-Segment
다중 세그먼트
직선 그리드 생성
using (Transaction t = new Transaction(doc, "그리드 생성")) {
  t.Start();
  XYZ p1 = new XYZ(0, 0, 0), p2 = new XYZ(0, 20000/304.8, 0); // 20m
  Line line = Line.CreateBound(p1, p2);
  Grid grid = Grid.Create(doc, line); grid.Name = "A";
  t.Commit();
}
그리드 시스템 일괄 생성
// X방향 그리드 (A~E) - 간격 6m
for (int i = 0; i < 5; i++) {
  double x = i * 6000 / 304.8;
  Line line = Line.CreateBound(new XYZ(x,0,0), new XYZ(x,20000/304.8,0));
  Grid grid = Grid.Create(doc, line); grid.Name = ((char)('A'+i)).ToString();
}
Grid.Create = 생성Line = 그리드 선Name = 이름
Create Grid
DEC[Digital Engineering Corporation]|200시간 과정
277
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

Excel 연동 (1/2)

EPPlus로 Excel 읽기/쓰기

실무 활용 사례
물량 산출 - Revit 요소 → Excel 물량표
대량 입력 - Excel 데이터 → Revit 생성
파라미터 수정 - Excel에서 일괄 편집
라이브러리 비교
이름
장점
단점
추천
EPPlus
Excel 불필요, 빠름
xlsx만
추천
ClosedXML
Excel 불필요, 쉬움
xlsx만
추천
Interop
모든 기능
Excel 필수, 느림
비추
EPPlus 설치 및 라이선스
NuGet 설치
Install-Package EPPlus
라이선스 설정 (필수)
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
Excel 읽기
using (ExcelPackage pkg = new ExcelPackage(new FileInfo(@"C:\data.xlsx"))) {
  ExcelWorksheet ws = pkg.Workbook.Worksheets[0];
  // 셀 읽기: ws.Cells[행, 열].Text 또는 ws.Cells["A1"].Text
  string name = ws.Cells[2, 1].Text; double val = ws.Cells[2, 2].GetValue<double>();
}
Excel 쓰기
using (ExcelPackage pkg = new ExcelPackage(new FileInfo(@"C:\output.xlsx"))) {
  ExcelWorksheet ws = pkg.Workbook.Worksheets.Add("Sheet1");
  ws.Cells[1, 1].Value = "이름"; ws.Cells[2, 1].Value = room.Name;
  ws.Cells.AutoFitColumns(); pkg.Save();
}
EPPlus = 라이브러리Cells[r,c] = 셀접근Save() = 저장
Excel 1/2
DEC[Digital Engineering Corporation]|200시간 과정
278
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

Excel 연동 (2/2)

파라미터 Export/Import

파라미터 일괄 수정 워크플로우
Export
Revit → Excel
→
수정
Excel에서 편집
→
Import
Excel → Revit
Export - Room 파라미터 내보내기
// Element ID는 Import 시 매칭 키 (필수!)
ws.Cells[row, 1].Value = room.Id.IntegerValue;
ws.Cells[row, 2].Value = room.Number;
ws.Cells[row, 3].Value = room.Name;
ws.Cells[row, 4].Value = room.LookupParameter("부서")?.AsString() ?? "";
Import - 파라미터 불러오기
// Element ID로 요소 찾기
int elemId = ws.Cells[row, 1].GetValue<int>();
Element elem = doc.GetElement(new ElementId(elemId));
// 파라미터 업데이트
Parameter param = elem.LookupParameter("부서");
if (param != null && !param.IsReadOnly)
  param.Set(ws.Cells[row, 4].Text);
주의사항
Export 시
- Element ID 열 숨김 처리
- LookupParameter null 체크
- 읽기전용 파라미터 제외
Import 시
- Element ID로 정확히 매칭
- IsReadOnly 체크 필수
- 빈 값은 업데이트 안함
Element ID = 매칭키LookupParameter = 읽기param.Set() = 쓰기
Excel 2/2
DEC[Digital Engineering Corporation]|200시간 과정
279
⚙
REVIT API

API 개발 실습 심화

Revit API를 활용한 자동화 및 데이터 관리 프로젝트 실습
Project Practice
Automation
Data Management
Integration
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

그리드 교점 기둥 생성

알고리즘 계획 및 워크플로우

알고리즘 목표
선택한 그리드들의 교차점을 자동으로 계산하고, 각 교점 위치에 구조 기둥을 일괄 생성하는 자동화 워크플로우
알고리즘 워크플로우 (6단계)
🎯
1. 그리드 선택
→
📐
2. 커브 추출
→
✖
3. 교점 계산
→
🔄
4. 중복 제거
→
📏
5. 라인 생성
→
🏛
6. 기둥 생성
입력 (Input)
선택된 Grid 요소들
Grid.Curve 속성
처리 (Process)
커브 교점 계산
XYZ 중복 제거
Z축 이동 라인
출력 (Output)
구조 기둥 배치
FamilyInstance 생성
Grid.Curve커브 추출
IntersectionResultArray교점 계산
NewFamilyInstance기둥 생성
Step 1/4
DEC[Digital Engineering Corporation]|200시간 과정
281
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

그리드 선택 및 커브 추출

Step 1-2: Selection & Curve Extraction

🎯그리드 선택
→
📐커브 추출
→
✖교점 계산
→
🏛기둥 생성
1
그리드 선택
PickObjects를 사용하여 사용자가 그리드를 다중 선택할 수 있도록 합니다.
// 그리드 다중 선택
UIDocument uidoc = this.ActiveUIDocument;
IList<Reference> refs = uidoc.Selection
  .PickObjects(
    ObjectType.Element,
    "그리드를 선택하세요");

// Reference를 Grid로 변환
List<Grid> grids = new List<Grid>();
foreach (Reference r in refs) {
  grids.Add(doc.GetElement(r) as Grid);
}
2
커브 추출
Grid.Curve 속성으로 그리드의 기하학적 라인(Curve) 정보를 추출합니다.
// 그리드에서 커브 추출
List<Curve> curves = new List<Curve>();

foreach (Grid grid in grids) {
  // Grid.Curve = 그리드 라인
  Curve curve = grid.Curve;
  curves.Add(curve);
}

// 결과: curves 리스트에
// 모든 그리드 라인 저장
PickObjects다중 선택
Grid.Curve라인 추출
List<Curve>커브 저장
Step 2/4
DEC[Digital Engineering Corporation]|200시간 과정
282
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

교점 추출 및 중복 제거

Step 3-4: Intersection & Duplicate Removal

🎯그리드 선택
→
📐커브 추출
→
✖교점 계산
→
🔄중복 제거
→
📏라인 생성
→
🏛기둥 생성
3
교점 계산
Curve.Intersect 메서드로 두 커브의 교차점을 계산합니다.
// 모든 커브 쌍의 교점 계산
List<XYZ> points = new List<XYZ>();
for (int i = 0; i < curves.Count; i++) {
  for (int j = i + 1; j < curves.Count; j++) {
    IntersectionResultArray results;
    curves[i].Intersect(
      curves[j], out results);
    if (results != null) {
      foreach (IntersectionResult r
        in results)
        points.Add(r.XYZPoint);
    }
  }
}
4
중복 제거
XYZ.IsAlmostEqualTo로 허용 오차 내 동일 좌표를 필터링합니다.
// 중복 점 제거 함수
List<XYZ> RemoveDuplicates(
  List<XYZ> pts, double tol) {
  List<XYZ> unique = new List<XYZ>();
  foreach (XYZ pt in pts) {
    bool isDup = false;
    foreach (XYZ u in unique)
      if (pt.IsAlmostEqualTo(u, tol))
        isDup = true;
    if (!isDup) unique.Add(pt);
  }
  return unique;
}
Curve.Intersect교점 계산
IntersectionResultXYZPoint
IsAlmostEqualTo중복 판단
Step 3/4
DEC[Digital Engineering Corporation]|200시간 과정
283
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

라인 생성 및 기둥 배치

Step 5-6: Line Creation & Column Placement

🎯그리드 선택
→
📐커브 추출
→
✖교점 계산
→
🔄중복 제거
→
📏라인 생성
→
🏛기둥 생성
5
Z축 이동 라인 생성
교점에서 Z축으로 3000 이동한 점을 생성하고 Line.CreateBound로 연결합니다.
// 기둥 높이 (3000mm = 3m)
double height = 3000 / 304.8; // feet

List<Line> lines = new List<Line>();
foreach (XYZ pt in uniquePoints) {
  // 시작점: 교점
  XYZ start = pt;
  // 끝점: Z축으로 이동
  XYZ end = new XYZ(
    pt.X, pt.Y, pt.Z + height);
  // 라인 생성
  Line line = Line.CreateBound(
    start, end);
  lines.Add(line);
}
6
구조 기둥 생성
NewFamilyInstance로 라인을 기반으로 구조 기둥을 생성합니다.
// 기둥 패밀리 심볼 가져오기
FamilySymbol colSymbol = new
  FilteredElementCollector(doc)
  .OfCategory(BuiltInCategory
    .OST_StructuralColumns)
  .OfClass(typeof(FamilySymbol))
  .FirstOrDefault() as FamilySymbol;

// 기둥 일괄 생성
foreach (Line line in lines) {
  doc.Create.NewFamilyInstance(
    line, colSymbol, level,
    StructuralType.Column);
}
Line.CreateBound라인 생성
StructuralType.Column구조 기둥
NewFamilyInstance배치
Step 4/4
DEC[Digital Engineering Corporation]|200시간 과정
284
🏠
REVIT API

Room 객체를 이용한
실내재료 마감모델 작성

Room의 경계 정보를 활용하여 바닥, 벽, 천장 마감재를 자동 생성하는 알고리즘
Room Object
Finish Material
Interior Model
Automation
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

Room 실내재료 마감모델

알고리즘 계획 및 워크플로우

알고리즘 목표
Room의 경계 정보(Boundary)를 활용하여 바닥, 벽, 천장 마감재를 자동 생성하고 기존 요소와의 간섭을 방지
알고리즘 워크플로우 (5단계)
🏠
1. 룸 선택
→
📐
2. CurveLoop 추출
→
⬛
3. 바닥 생성
→
🧱
4. 벽 생성
→
⬜
5. 천장 생성
입력 (Input)
Room 객체 선택
GetBoundarySegments
처리 (Process)
내측 CurveLoop 추출
벽두께 옵셋 계산
간섭 방지 처리
출력 (Output)
바닥/벽/천장 마감재
Floor, Wall, Ceiling
GetBoundarySegments경계 추출
CurveLoop.CreateViaOffset옵셋 처리
Floor/Wall/Ceiling.Create요소 생성
Step 1/5
DEC[Digital Engineering Corporation]|200시간 과정
286
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

룸 선택 및 CurveLoop 추출

Step 1-2: Room Selection & Boundary Extraction

🏠룸 선택
→
📐CurveLoop 추출
→
⬛바닥 생성
→
🧱벽 생성
→
⬜천장 생성
1
룸 객체 선택
PickObject로 Room 요소를 선택하고 Room 객체로 변환합니다.
// Room 선택
Reference roomRef = uidoc.Selection
  .PickObject(
    ObjectType.Element,
    "Room을 선택하세요");

Room room = doc.GetElement(roomRef)
  as Room;
2
내측 CurveLoop 추출
GetBoundarySegments로 내측(Finish) 경계를 추출하여 CurveLoop를 생성합니다.
// 내측 경계 옵션 (Finish)
SpatialElementBoundaryOptions opt =
  new SpatialElementBoundaryOptions();
opt.SpatialElementBoundaryLocation =
  SpatialElementBoundaryLocation.Finish;

// CurveLoop 생성
IList<BoundarySegment> segs =
  room.GetBoundarySegments(opt)[0];
CurveLoop loop = new CurveLoop();
foreach (BoundarySegment seg in segs)
  loop.Append(seg.GetCurve());
Room.GetBoundarySegments경계 추출
Finish (내측)마감면 기준
CurveLoop폐곡선 생성
Step 2/5
DEC[Digital Engineering Corporation]|200시간 과정
287
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

바닥 마감재 생성

Step 3: Floor Finish Creation

🏠룸 선택
→
📐CurveLoop 추출
→
⬛바닥 생성
→
🧱벽 생성
→
⬜천장 생성
3
바닥 마감재 생성 원리
추출된 CurveLoop는 Room의 내측 경계(Finish)이므로, 별도 옵셋 없이 Floor.Create로 바닥을 생성하면 기존 벽체 마감면과 정확히 맞닿는 바닥 마감재가 생성됩니다.
A
타입 및 레벨 준비
// 바닥 타입 가져오기
FloorType floorType = new
  FilteredElementCollector(doc)
  .OfClass(typeof(FloorType))
  .FirstOrDefault() as FloorType;

// 레벨 가져오기
Level level = doc.GetElement(
  room.LevelId) as Level;

// CurveLoop 리스트 생성
IList<CurveLoop> loops =
  new List<CurveLoop> { loop };
B
Floor.Create
옵셋 없이 내측 경계 CurveLoop를 그대로 사용하여 바닥을 생성합니다.
// 바닥 생성 (옵셋 불필요)
Floor floor = Floor.Create(
  doc,           // Document
  loops,         // CurveLoop 리스트
  floorType.Id,  // FloorType Id
  level.Id       // Level Id
);
Floor.Create바닥 생성
CurveLoop (Finish)내측 경계
옵셋 불필요그대로 사용
Step 3/5
DEC[Digital Engineering Corporation]|200시간 과정
288
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

벽 마감재 생성

Step 4: Wall Finish Creation with Offset

🏠룸 선택
→
📐CurveLoop 추출
→
⬛바닥 생성
→
🧱벽 생성
→
⬜천장 생성
4
벽 마감재 생성 원리 (옵셋 필요)
벽 마감재는 기존 벽체와 충돌을 방지하기 위해 CurveLoop.CreateViaOffset으로 벽 두께만큼 내측으로 옵셋한 후 생성합니다.
A
CurveLoop 옵셋
벽 두께의 절반만큼 내측으로 옵셋하여 기존 벽체와 겹치지 않도록 합니다.
// 벽 타입 및 두께 가져오기
WallType wallType = new
  FilteredElementCollector(doc)
  .OfClass(typeof(WallType))
  .FirstOrDefault() as WallType;

double offset = wallType.Width / 2;

// 내측으로 옵셋 (음수)
CurveLoop offsetLoop =
  CurveLoop.CreateViaOffset(
    loop, -offset, XYZ.BasisZ);
B
Wall.Create
옵셋된 CurveLoop의 각 Curve로 벽을 생성합니다.
// 벽 높이 설정
double height = 3000 / 304.8;

// 각 커브로 벽 생성
foreach (Curve c in offsetLoop) {
  Wall wall = Wall.Create(
    doc,
    c,             // 옵셋 커브
    wallType.Id,
    level.Id,
    height,        // 높이
    0,             // 옵셋
    false,         // flip
    false);        // structural
}
CreateViaOffset내측 옵셋
WallType.Width / 2벽 두께 절반
Wall.Create벽 생성
Step 4/5
DEC[Digital Engineering Corporation]|200시간 과정
289
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

천장 마감재 생성

Step 5: Ceiling Finish Creation with Offset

🏠룸 선택
→
📐CurveLoop 추출
→
⬛바닥 생성
→
🧱벽 생성
→
⬜천장 생성
5
천장 마감재 생성 원리 (마감벽 두께 옵셋)
천장은 마감벽체의 두께만큼 CurveLoop를 옵셋하여 마감벽과의 간섭을 방지하고 Ceiling.Create로 생성합니다.
A
마감벽 두께 옵셋
마감벽 전체 두께만큼 내측으로 옵셋하여 마감벽 위에 천장이 올라가도록 합니다.
// 마감벽 두께 가져오기
double finishWallWidth =
  wallType.Width; // 전체 두께

// 천장용 옵셋 (마감벽 두께만큼)
CurveLoop ceilingLoop =
  CurveLoop.CreateViaOffset(
    loop,
    -finishWallWidth,
    XYZ.BasisZ);

// CurveLoop 리스트 생성
IList<CurveLoop> loops =
  new List<CurveLoop> { ceilingLoop };
B
Ceiling.Create
옵셋된 CurveLoop로 천장 레벨에 천장을 생성합니다.
// 천장 타입 가져오기
CeilingType ceilingType = new
  FilteredElementCollector(doc)
  .OfClass(typeof(CeilingType))
  .FirstOrDefault() as CeilingType;

// 천장 생성
Ceiling ceiling = Ceiling.Create(
  doc,
  loops,          // 옵셋된 CurveLoop
  ceilingType.Id,
  level.Id);     // 천장 레벨
CreateViaOffset마감벽 두께
Ceiling.Create천장 생성
간섭 방지마감벽 위 배치
Step 5/5
DEC[Digital Engineering Corporation]|200시간 과정
290
📄
REVIT API

Text File을 이용한 모델 생성

텍스트 파일의 좌표 데이터를 파싱하여 모델 요소를 자동 생성
Text File
Data Parsing
Model Creation
Automation
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

Text File 모델 생성

알고리즘 계획 및 워크플로우

알고리즘 목표
외부 텍스트 파일의 좌표 데이터를 파싱하여 구조 보(Beam)를 자동 생성하는 워크플로우
알고리즘 워크플로우 (5단계)
📂
1. 파일 선택
→
📖
2. 파일 읽기
→
🔍
3. 데이터 파싱
→
📏
4. 라인 생성
→
🏗️
5. 보 생성
텍스트 파일 데이터 구조
G1,0,0,0,1000,0,0
■ Beam 타입명■ 시작점 (X,Y,Z)■ 끝점 (X,Y,Z)
입력 (Input)
OpenFileDialog
Text File 선택
파일 경로 획득
처리 (Process)
ReadAllLines
쉼표(,) 파싱
XYZ 좌표 생성
Line 생성
출력 (Output)
Beam 타입 매칭
NewFamilyInstance
구조 보 생성
OpenFileDialog파일 선택
File.ReadAllLines파일 읽기
Line.CreateBound라인 생성
NewFamilyInstance보 생성
Step 1/4
DEC[Digital Engineering Corporation]|200시간 과정
292
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

파일 선택 및 읽기

Step 1-2: File Selection & Reading

📂파일 선택
→
📖파일 읽기
→
🔍데이터 파싱
→
📏라인 생성
→
🏗️보 생성
1
OpenFileDialog
OpenFileDialog를 사용하여 사용자가 텍스트 파일을 선택하도록 합니다.
// 파일 다이얼로그 생성
OpenFileDialog dlg = new
  OpenFileDialog();

// 필터 설정
dlg.Filter = "Text files|*.txt";
dlg.Title = "좌표 파일 선택";

// 다이얼로그 표시
if (dlg.ShowDialog() ==
  DialogResult.OK) {
  string filePath = dlg.FileName;
}
2
File.ReadAllLines
File.ReadAllLines로 파일의 모든 줄을 문자열 배열로 읽어옵니다.
// System.IO 네임스페이스
using System.IO;

// 파일의 모든 줄 읽기
string[] lines = File.
  ReadAllLines(filePath);

// 각 줄 처리
foreach (string line in lines)
{
  // 데이터 파싱 진행
}
OpenFileDialog파일 선택 UI
DialogResult.OK확인 버튼
ReadAllLines전체 읽기
Step 2/4
DEC[Digital Engineering Corporation]|200시간 과정
293
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

데이터 파싱

Step 3: Data Parsing & Coordinate Extraction

📂파일 선택
→
📖파일 읽기
→
🔍데이터 파싱
→
📏라인 생성
→
🏗️보 생성
3
데이터 구조 및 파싱 원리
G1,0,0,0,1000,0,0
■ [0] Beam 타입■ [1-3] 시작점 X,Y,Z■ [4-6] 끝점 X,Y,Z
A
String.Split 파싱
// 각 줄을 쉼표로 분리
foreach (string line in lines)
{
  string[] parts = line.Split(',');

  // 배열 인덱스로 접근
  string typeName = parts[0];
  double x1 = double.Parse(parts[1]);
  double y1 = double.Parse(parts[2]);
  double z1 = double.Parse(parts[3]);
  double x2 = double.Parse(parts[4]);
  double y2 = double.Parse(parts[5]);
  double z2 = double.Parse(parts[6]);
}
B
XYZ 점 생성 (mm → feet 변환)
시작점
XYZ startPt = new XYZ(
  x1 * mmToFeet,
  y1 * mmToFeet,
  z1 * mmToFeet);
끝점
XYZ endPt = new XYZ(
  x2 * mmToFeet,
  y2 * mmToFeet,
  z2 * mmToFeet);
String.Split쉼표 분리
double.Parse숫자 변환
mm → feet단위 변환
Step 3/4
DEC[Digital Engineering Corporation]|200시간 과정
294
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

라인 생성 및 보 배치

Step 4-5: Line Creation & Beam Placement

📂파일 선택
→
📖파일 읽기
→
🔍데이터 파싱
→
📏라인 생성
→
🏗️보 생성
4
Line.CreateBound
시작점과 끝점을 연결하는 Line을 생성합니다. 이 라인이 보의 경로가 됩니다.
// 두 점을 연결하는 라인 생성
Line beamLine = Line.CreateBound(
  startPt,  // 시작점
  endPt     // 끝점
);

// 라인 길이 확인 (선택사항)
double length = beamLine.Length;
// feet 단위로 반환됨
5
NewFamilyInstance (Beam)
파싱된 타입명으로 FamilySymbol을 찾고 구조 보를 생성합니다.
// 타입명으로 보 패밀리 찾기
FamilySymbol beamSymbol = new
  FilteredElementCollector(doc)
  .OfCategory(BuiltInCategory
    .OST_StructuralFraming)
  .OfClass(typeof(FamilySymbol))
  .First(s => s.Name == typeName)
  as FamilySymbol;

// 보 생성
doc.Create.NewFamilyInstance(
  beamLine, beamSymbol, level,
  StructuralType.Beam);
Line.CreateBound라인 생성
OST_StructuralFraming구조 프레임
StructuralType.Beam보 타입
Step 4/4
DEC[Digital Engineering Corporation]|200시간 과정
295
🏛️
REVIT API

링크된 캐드 객체를 이용한
기둥 모델링

링크된 CAD 파일의 지오메트리를 분석하여 기둥 요소를 자동 생성
Linked CAD
Column Modeling
Geometry Parsing
Automation
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

링크된 캐드 기둥 모델링

알고리즘 계획 및 워크플로우

알고리즘 목표
링크된 CAD 파일의 폴리라인 지오메트리를 분석하여 중심점을 추출하고, 해당 위치에 구조 기둥을 자동 생성하는 워크플로우
알고리즘 워크플로우 (4단계)
🔗
1. 캐드 링크 선택
→
📐
2. 폴리라인 추출
→
🎯
3. 중심점 계산
→
🏛️
4. 기둥 생성
CAD Link 데이터 구조
ImportInstance → GeometryElement → PolyLine → Centroid (XYZ)
■ CAD 링크 객체■ 지오메트리 요소■ 폴리라인 곡선■ 중심점 좌표
입력 (Input)
PickObject
CAD Link 선택
ImportInstance 획득
처리 (Process)
GeometryElement 추출
PolyLine 필터링
Centroid 계산
출력 (Output)
기둥 타입 매칭
NewFamilyInstance
구조 기둥 생성
PickObject객체 선택
GeometryElement지오메트리
PolyLine폴리라인
NewFamilyInstance기둥 생성
Step 1/4
DEC[Digital Engineering Corporation]|200시간 과정
297
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

CAD 링크 객체 선택

Step 1: Pick CAD Link Instance

🔗캐드 링크 선택
→
📐폴리라인 추출
→
🎯중심점 계산
→
🏛️기둥 생성
PickObject 메서드
뷰에서 요소 선택, ObjectType.Element 사용
ImportInstance 클래스
링크된 CAD 파일 (DWG, DXF) 객체
ISelectionFilter
CAD 링크만 선택 가능하도록 필터링
A
SelectionFilter 구현
// CAD 링크 선택 필터
public class CadLinkFilter :
  ISelectionFilter
{
  public bool AllowElement(
    Element elem)
  {
    return elem is ImportInstance;
  }
}
B
PickObject 호출
// CAD 링크 선택
Reference cadRef = uidoc.Selection
  .PickObject(
    ObjectType.Element,
    new CadLinkFilter(),
    "CAD 링크를 선택하세요");

// ImportInstance로 변환
ImportInstance cadLink =
  doc.GetElement(cadRef)
  as ImportInstance;
ISelectionFilter선택 필터
PickObject객체 선택
ImportInstanceCAD 링크
Step 1/4
DEC[Digital Engineering Corporation]|200시간 과정
298
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

폴리라인 지오메트리 추출

Step 2: Extract PolyLine from GeometryElement

🔗캐드 링크 선택
→
📐폴리라인 추출
→
🎯중심점 계산
→
🏛️기둥 생성
CAD 구조:
ImportInstance→GeometryElement→GeometryInstance→PolyLine
A
Options 설정
● ComputeReferences = true
● DetailLevel = Fine
● IncludeNonVisibleObjects = false
B
폴리라인 추출 코드
// Options 설정
Options opt = new Options();
opt.ComputeReferences = true;
opt.DetailLevel = ViewDetailLevel.Fine;

// 지오메트리 추출
GeometryElement geoElem =
  cadLink.get_Geometry(opt);

// PolyLine 필터링
List<PolyLine> polylines =
  new List<PolyLine>();

foreach (GeometryObject geo in geoElem)
{
  if (geo is GeometryInstance gi)
    ProcessInstance(gi, polylines);
}
Options지오메트리 설정
get_Geometry추출 메서드
PolyLine폴리라인 객체
Step 2/4
DEC[Digital Engineering Corporation]|200시간 과정
299
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

폴리라인 중심점 계산

Step 3: Calculate PolyLine Centroid

🔗캐드 링크 선택
→
📐폴리라인 추출
→
🎯중심점 계산
→
🏛️기둥 생성
Centroid 계산:
정점 좌표 합산 → 개수로 나눔
X̄ = Σx/n, Ȳ = Σy/n, Z̄ = Σz/n
A
정점 좌표 추출
// PolyLine에서 정점 좌표 추출
IList<XYZ> coords =
  polyline.GetCoordinates();

// 좌표 개수 확인
int count = coords.Count;

// 각 정점 순회
foreach (XYZ pt in coords)
{
  // X, Y, Z 좌표 접근
  double x = pt.X;
  double y = pt.Y;
  double z = pt.Z;
}
B
중심점 계산
// 좌표 합산
double sumX = 0, sumY = 0, sumZ = 0;

foreach (XYZ pt in coords)
{
  sumX += pt.X;
  sumY += pt.Y;
  sumZ += pt.Z;
}

// 평균 계산 (중심점)
int n = coords.Count;
XYZ centroid = new XYZ(
  sumX / n,
  sumY / n,
  sumZ / n);
GetCoordinates정점 추출
XYZ3D 좌표
Centroid중심점
Step 3/4
DEC[Digital Engineering Corporation]|200시간 과정
300
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

Centroid 계산 함수 구현

Complete GetCentroid Method Implementation

Centroid (무게중심) 계산 원리
폴리라인의 모든 정점 좌표를 합산한 후 정점 개수로 나누어 평균 위치를 계산
수학 공식
C = (Σxi/n, Σyi/n, Σzi/n)
A
GetCentroid 메서드 (완전 구현)
/// PolyLine의 중심점(Centroid)을 계산합니다.
private XYZ GetCentroid(PolyLine polyline)
{
  // 1. 정점 좌표 추출
  IList<XYZ> coords = polyline.GetCoordinates();
  // 2. 좌표 합산 변수 초기화
  double sumX = 0, sumY = 0, sumZ = 0;
  // 3. 모든 정점 좌표 합산
  foreach (XYZ pt in coords)
  {
    sumX += pt.X; sumY += pt.Y; sumZ += pt.Z;
  }
  // 4. 평균 계산 (중심점)
  int n = coords.Count;
  return new XYZ(sumX / n, sumY / n, sumZ / n);
}
B
함수 호출
// 폴리라인 리스트 순회
List<XYZ> centroids = new List<XYZ>();
foreach (PolyLine pl in polylines)
{
  XYZ center = GetCentroid(pl);
  centroids.Add(center);
}
계산 예시 (사각형)
정점:(0,0), (10,0), (10,10), (0,10)
중심점:(5, 5, 0)
GetCoordinates()정점 추출
foreach 합산X,Y,Z 누적
new XYZ()중심점 반환
Step 3 Detail
DEC[Digital Engineering Corporation]|200시간 과정
301
B+CD+P
BIM-IT 융합 과정
Chapter 8: BIM-IT 융합기술 심화

구조 기둥 생성

Step 4: Create Structural Column

🔗캐드 링크 선택
→
📐폴리라인 추출
→
🎯중심점 계산
→
🏛️기둥 생성
A
FamilySymbol 검색
// 기둥 패밀리 심볼 찾기
FamilySymbol columnSymbol =
  new FilteredElementCollector(doc)
  .OfCategory(BuiltInCategory.OST_StructuralColumns)
  .OfClass(typeof(FamilySymbol))
  .Cast<FamilySymbol>().FirstOrDefault();

// 심볼 활성화 확인
if (!columnSymbol.IsActive) columnSymbol.Activate();
B
NewFamilyInstance
// 레벨 가져오기
Level level = new FilteredElementCollector(doc)
  .OfClass(typeof(Level)).First() as Level;

// 각 중심점에 기둥 생성
foreach (XYZ center in centroids)
{
  doc.Create.NewFamilyInstance(center, columnSymbol,
    level, StructuralType.Column);
}
프로세스:
🔗CAD 선택
→
📐폴리라인
→
🎯중심점
→
🏛️기둥 생성
OST_StructuralColumns기둥 카테고리
FamilySymbol패밀리 타입
StructuralType.Column구조 기둥
Step 4/4
DEC[Digital Engineering Corporation]|200시간 과정
302
09
Chapter

건축 + IT 융합 실무교육

실습수업 및 최종 평가

36
HOURS
4
SECTIONS
10.1.1텍스트 코딩(C#)+그래픽 코딩(Rhino Inside)
10.1.2프로젝트 기반 학습
10.2.1최종 모델 검토
10.2.2최종 프레젠테이션
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

건축 + IT 융합 실무교육

텍스트 코딩과 그래픽 코딩의 통합 활용 및 최종 프로젝트 수행
실무교육 프로세스
🔍
사례조사
실무 적용 가능
→
💻
개발
C# + Rhino Inside
→
🏗
프로젝트
팀 협업
→
📊
발표
최종 평가
평가 기준
BIM 모델 완성도30%
데이터 정확성25%
자동화 프로세스25%
프레젠테이션20%
⌨
텍스트 코딩 (C#)
1Revit API 활용
2자동화 프로세스
3UI 설계
4데이터 처리
🎨
그래픽 코딩 (Rhino Inside)
1파라메트릭 디자인
2복잡한 형상 생성
3데이터 시각화
4Revit 연동
🏆
최종 프로젝트
1실무 시나리오
2팀별 협업
3모델 검토
4프레젠테이션
⌨텍스트 코딩
🎨그래픽 코딩
👥팀 협업
🎯최종 발표
36시간 실습
DEC[Digital Engineering Corporation]|200시간 과정
304
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

건축 + IT 융합 실무교육

강의계획서 - 실습수업 및 최종 평가

1. 강의 개요

과목명
건축 + IT 융합 실무교육
교육시간
36시간 (실습 36H)
대상
Chapter 8까지 이수한 학습자
선수학습
Chapter 8. BIM-IT 융합기술 심화
실습환경
Visual Studio 2026, Revit 2025, Rhino 8

2. 지도목표

텍스트 코딩과 그래픽 코딩을 통합 활용하여 실무 프로젝트를 수행하고, 팀 협업으로 완성도 높은 결과물을 도출한다.
1텍스트 코딩(C#)과 그래픽 코딩(Rhino Inside) 통합 활용
2실무 프로젝트 기반 문제 해결 능력 습득
3자동화 프로세스 기획 및 개발 역량 강화
4팀 협업을 통한 프로젝트 수행 경험
5최종 프레젠테이션 및 결과물 완성

3. 사용교재 (자료)

주교재
본 교육자료
참고
API Docs
실습
강사 제공

4. 주요 내용 (학습활동)

9.1텍스트+그래픽 코딩 통합실습12H
사례조사 / 장단점 비교 / 하이브리드 접근법 / UI 설계
9.2프로젝트 기반 학습실습12H
실무 프로젝트 설정 / 팀 협업 / 자동화 적용 / 피드백
9.3최종 모델 검토평가6H
BIM 모델 완성도 / 데이터 정확성 / 자동화 적용 여부 확인
9.4최종 프레젠테이션평가6H
팀별 발표 준비 / 결과물 평가 / 개선 방향 논의
평가 기준
모델완성도30%
자동화적용25%
프레젠테이션45%
DEC[Digital Engineering Corporation]|200시간 과정
305
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

교육 프로세스 소개

교육 과정 리뷰

전체 개발 워크플로우

목표: 기획, 알고리즘 설계, PoC를 거쳐 최종 산출물 문서화에 이르는 전체 개발 과정을 완주하고, 실무와 동일한 협업 프로세스를 체득하는 것.
메인 강사: 실무 워크플로우로 지도, 맞춤형 학생 지도 및 실시간 Q&A
보조 강사: 실시간 질의 응답 및 학습 보조 역할 수행
💡
아이데이션 미팅
📋
개발 계획서 작성
✅
기능 분해 및 알고리즘 설계
🔍
*PoC 구현 및 검증
💻
상세 설계 및 개발
*PoC, Proof of Concept. 아이디어에 대한 기술적 타당성을 검증하는 단계.
🧪
테스트 시나리오
📄
산출물 문서화
🎯
최종 발표
BIM-IT 융합 실무 워크플로를
그대로 구현한 체계적인 프로세스
체계적인 지도를 바탕으로 BIM-IT 융합 전문성을 확보하고, 협업 능력을 갖춘 산업 현장 맞춤형 인재를 양성.
8단계 개발 프로세스PoC 검증 단계실무 워크플로우
프로세스
DEC[Digital Engineering Corporation]|200시간 과정
306
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

개발 계획 수립

체계적인 개발을 위한 필수 단계

왜 계획이 필요한가?
명확한 계획 없이 코딩을 시작하면 중간에 막히거나, 불필요한 시행착오를 겪게 됩니다. 체계적인 계획은 효율적인 개발의 첫걸음입니다.
계획 없이 개발할 때
🎯
방향 상실 - 무엇을 만들어야 하는지 불명확
⏰
API 탐색 시간 낭비 - 필요한 API를 찾지 못해 헤맴
🔄
잦은 재작업 - 설계 변경으로 처음부터 다시 작성
🚫
예상치 못한 제약 - 개발 후반부에 불가능한 기능 발견
계획의 이점
✅
명확한 방향 - 무엇을 언제까지 만들 것인지 분명
⚡
시간 절약 - 필요한 API를 미리 파악
🛡
위험 감소 - 불가능한 기능 사전 발견
💎
품질 향상 - 체계적 구조로 깨끗한 코드
개발 계획 수립 6단계
1
요구사항 분석
→
2
기능 분해
→
3
API 탐색
→
4
프로토타입
→
5
상세 설계
→
6
테스트 계획
프로세스 요약: 사용자 요구사항을 분석하고 → 기능을 작은 단위로 분해한 후 → 필요한 API를 탐색하고 → 프로토타입으로 검증한 다음 → 상세 설계를 하고 → 테스트 계획을 수립합니다.
계획 = 효율6단계 프로세스시행착오 최소화
개요
DEC[Digital Engineering Corporation]|200시간 과정
307
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

1단계: 요구사항 분석

Step 1

사용자가 원하는 것이 무엇인지 명확히 파악

핵심 질문 (5W1H)
누가
이 도구를 사용하나?
건축가, 구조 엔지니어, BIM 매니저
왜
필요한가?
반복 작업 자동화, 시간 절약, 오류 감소
무엇을
해야 하나?
구체적인 기능 목록 작성
언제
사용하나?
설계 단계, 도면 단계, 물량 산출 단계
어떻게
동작해야 하나?
UI, 입력 방식, 출력 형태
예시: 자동 번호 부여 도구
요구사항:
•평면도의 모든 방(Room)에 자동으로 번호를 부여
•번호는 왼쪽→오른쪽, 위→아래 순서로 매김
•번호 시작값을 사용자가 지정 가능
•기존 번호가 있는 방은 건너뛰기/덮어쓰기 선택
결과: 명확한 기능 정의로 개발 방향 확정
체크리스트
✓기능 목록 작성 완료
✓사용자 시나리오 정의 완료
✓입력과 출력 명확히 파악
✓예외 상황 고려 (빈 방, 중복 번호 등)
팁: 요구사항을 문서로 작성하면 나중에 참조하기 좋고, 팀원이나 고객과 공유할 때도 유용합니다. "무엇을 만들 것인가"를 명확히 정의하세요.
5W1H 질문기능 목록 작성예외 상황 고려
요구사항
DEC[Digital Engineering Corporation]|200시간 과정
308
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

2단계: 기능 분해

Step 2

큰 문제를 작은 단위로 나누기 (Decomposition)

Decomposition이란?
복잡한 기능을 한 번에 구현하려 하지 말고, 작은 단계로 분해합니다. 각 단계는 하나의 명확한 작업을 수행하며, 순차적으로 실행됩니다.
예시: "Room에 번호 자동 부여"
→ 5단계로 분해
1
현재 View의 모든 Room 가져오기
FilteredElementCollector
↓
2
Room을 X 좌표 기준으로 정렬
LocationPoint.Point.X
↓
3
Y 좌표로 2차 정렬 (같은 X일 때)
LINQ ThenBy()
↓
4
각 Room의 Number에 순번 할당
Room.Number
↓
5
Transaction으로 변경사항 저장
Transaction
분해의 장점
🧩
독립적 개발
각 단계를 따로 개발 및 테스트 가능
🔍
문제 추적 용이
어느 단계에서 문제인지 쉽게 파악
♻️
재사용 가능
함수로 모듈화하여 다른 프로젝트에 활용
👥
협업 용이
단계별로 역할 분담 가능
복잡한 기능 → 작은 단계단계별 개발/테스트모듈화 재사용
기능 분해
DEC[Digital Engineering Corporation]|200시간 과정
309
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

3단계: API 탐색

Step 3

Revit API로 구현 가능한지 사전 확인

API 탐색 리소스
Revit API Docs
공식 API 레퍼런스 문서
RevitAPI.chm
RevitLookup
요소의 속성 탐색 도구
GitHub 다운로드
The Building Coder
Jeremy Tammik 블로그
thebuildingcoder.typepad.com
Revit API Forum
Autodesk 공식 포럼
forums.autodesk.com
Stack Overflow
Q&A 커뮤니티
[revit-api] 태그
GitHub
오픈소스 예제 코드
revit-api 키워드
예시: Room 정렬 API 탐색
필요한 기능: "Room을 X, Y 좌표로 정렬"
탐색 과정:
1Revit API Docs에서 "Room" 클래스 검색
2Room.Location 속성 발견 → LocationPoint 반환
3LocationPoint.Point 속성 → XYZ 좌표
4C# LINQ의 OrderBy로 정렬 가능 확인
결론: ✅ 구현 가능!
불가능한 기능 발견 시
1.대안 방법 탐색 (다른 API 조합)
2.요구사항 조정 (일부 제약 추가)
3.외부 라이브러리 활용 고려
4.해당 기능 제외하고 다른 방법 제시
API 제약을 사전에 발견하면 설계 변경 비용을 최소화할 수 있습니다.
RevitLookup 필수 도구실현 가능성 사전 확인대안 준비
API 탐색
DEC[Digital Engineering Corporation]|200시간 과정
310
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

4단계: 프로토타입 개발

Step 4

핵심 기능을 먼저 간단하게 구현하여 검증

프로토타입의 목적
⚡
빠른 검증
핵심 로직이 동작하는지 확인
📚
API 이해
실제 사용하며 API 동작 학습
🔍
문제 발견
예상치 못한 제약이나 버그 조기 발견
💬
피드백 수렴
초기 버전을 보여주고 의견 수렴
프로토타입 코드 (간단 버전)
C#
[Transaction(TransactionMode.Manual)]
public class RoomNumberingPrototype : IExternalCommand
{
// 1. 모든 Room 가져오기
FilteredElementCollector collector = new FilteredElementCollector(doc);
List<Room> rooms = collector.OfCategory(BuiltInCategory.OST_Rooms)
.Cast<Room>().ToList();
 
// 2. X 좌표로 정렬
var sorted = rooms.OrderBy(r => ((LocationPoint)r.Location).Point.X);
 
// 3. 번호 부여
using (Transaction t = new Transaction(doc, "Room 번호"))
{ t.Start(); /* 번호 할당 */ t.Commit(); }
}
핵심: 프로토타입은 완벽하지 않아도 됩니다. 에러 처리, UI, 최적화는 나중에! 빠르게 만들고 테스트하는 것이 목적입니다. 핵심 로직이 동작하는지 확인 후 상세 설계로 넘어갑니다.
핵심 로직 먼저빠른 검증 우선완벽보다 동작
프로토타입
DEC[Digital Engineering Corporation]|200시간 과정
311
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

5단계: 상세 설계

Step 5

프로토타입을 바탕으로 완성 버전 설계

1
UI 설계
• TaskDialog로 간단한 입력
• WPF Form으로 복잡한 옵션
• 오류/성공 메시지 표시
2
예외 처리
• Room이 없을 때
• Location이 null일 때
• Transaction 실패 시
3
성능 최적화
• 대량 요소 처리 속도
• 불필요한 반복 제거
• 메모리 사용 최소화
4
유지보수성
• 코드 주석 작성
• 함수로 모듈화
• 의미 있는 변수명
5
확장성
• 기능 추가 용이하게
• 다른 프로젝트 재사용
• 설정 파일로 옵션 분리
개발 우선순위 정하기
우선순위기능이유
높음핵심 번호 부여 로직가장 중요한 기능
높음예외 처리안정성 확보
중간사용자 옵션 (시작 번호)사용성 향상
중간Y 좌표 2차 정렬정확도 향상
낮음진행률 표시 UIUX 개선
MVP
Minimum Viable Product (최소 기능 제품)
핵심 아이디어: 모든 기능을 한 번에 개발하지 않고, 핵심 기능만 먼저 완성하여 배포 후 피드백을 반영합니다.
적용 예시: Room 번호 부여 → 먼저 X좌표 정렬만 구현, 이후 Y좌표 정렬, UI 옵션 등을 점진적으로 추가합니다.
UI 설계예외 처리성능 최적화우선순위 정의
상세 설계
DEC[Digital Engineering Corporation]|200시간 과정
312
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

6단계: 테스트 계획

Step 6

개발과 함께 테스트 시나리오 준비

테스트 시나리오 예시
테스트 케이스입력예상 결과상태
정상 동작Room 10개1~10 번호 부여✅
빈 ViewRoom 0개오류 메시지 표시⚠️
기존 번호이미 번호 있음덮어쓰기/건너뛰기⚠️
시작 번호101 시작101, 102, 103...✅
대량 데이터Room 1000개10초 이내 완료⏱️
테스트 팁
📁
테스트 프로젝트 준비
다양한 상황의 Revit 파일 미리 준비
🧩
단계별 테스트
전체가 아닌 각 기능을 개별 테스트
📊
극단적 케이스
0개, 1개, 매우 많은 개수 테스트
👥
실무자 피드백
실제 사용자에게 베타 테스트 요청
시나리오 사전 작성극단적 케이스 포함베타 테스트 진행
테스트 계획
DEC[Digital Engineering Corporation]|200시간 과정
313
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

문서화 & 버전 관리

계획과 개발 과정을 기록하여 유지보수 용이하게

요구사항 명세서
• 기능 목록
• 사용자 시나리오
• 제약사항
기술 문서
• 사용된 API 목록
• 주요 클래스/메서드
• 알고리즘 설명
사용자 매뉴얼
• 설치 방법
• 사용 방법 (스크린샷)
• FAQ
코드 주석
• 각 함수의 목적
• 복잡한 로직 설명
• TODO 항목
Git 버전 관리의 이점
📜
이력 관리
모든 변경사항 추적
↩️
롤백
이전 버전으로 되돌리기
🌿
브랜치
새 기능 독립 개발
👥
협업
팀원과 코드 공유/병합
기본 Git 워크플로우
git init# 저장소 초기화
git add .# 파일 추가
git commit -m "메시지"# 커밋
git checkout -b feature/name# 브랜치 생성
git merge feature/name# 브랜치 병합
git push origin main# 원격 저장소 푸시
.gitignore 설정: bin/, obj/, .vs/ 폴더와 *.dll, *.pdb 파일은 Git에서 제외하세요.
문서화 = 유지보수Git 버전 관리코드 주석 필수
문서화
DEC[Digital Engineering Corporation]|200시간 과정
314
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

일정 관리 & 체크리스트

현실적인 일정과 단계별 점검

예시: Room 번호 부여 프로젝트 일정
총 22시간
1일차
요구사항 분석, 기능 분해
2H
2일차
API 탐색, 프로토타입
4H
3일차
핵심 기능 구현
6H
4일차
UI 개발, 예외 처리
4H
5일차
테스트, 버그 수정
4H
6일차
문서 작성, 배포 준비
2H
⏰버퍼 시간: 예상의 1.5배로 계획
🎯마일스톤: 주요 단계마다 점검
📋일일 목표: 달성 가능한 작은 목표
📝회고: 단계마다 배운 것 기록
개발 계획 체크리스트
✅ 요구사항
기능 목록 정의
사용자 시나리오
입출력 정의
✅ 기능 분해
작은 단계 분해
단계별 작업 정의
✅ API 탐색
필요 API 찾기
실현 가능성 검토
✅ 프로토타입
핵심 기능 구현
동작 확인
✅ 상세 설계
UI 설계
예외 처리 계획
✅ 테스트
시나리오 작성
테스트 프로젝트 준비
버퍼 시간 확보마일스톤 설정체크리스트 활용
일정 관리
DEC[Digital Engineering Corporation]|200시간 과정
315
📋
DEVELOPMENT PLAN

개발계획서 수립

체계적인 개발계획서 작성으로 프로젝트 성공의 기반 마련
Development Plan
Project Management
Documentation
Roadmap
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

개발계획서 작성

Development Plan Documentation

개발계획서란?
개발계획서는 프로젝트의 목표, 범위, 일정, 자원을 명확히 정의하고, 팀원 간 공통된 이해를 형성하는 핵심 문서입니다. 체계적인 계획서는 프로젝트 성공의 기반이 됩니다.
1
📋
프로젝트 개요
프로젝트명, 목적, 범위 정의
2
👥
조직 구성
팀 역할, 책임, 협업 방식
3
🎯
개발 배경과 목표
현황 분석, 기대 효과
4
✅
개발 적절성 검토
기술/자원/일정 타당성
5
🗺️
개발 로드맵
단계별 일정, 마일스톤
6
⚙️
핵심 기능 및 시나리오
주요 기능, 사용 시나리오
7
🔧
기술 구현 방안
아키텍처, API, 데이터 구조
8
🔄
사용자 워크플로우
UI/UX 흐름, 화면 설계
명확한 목표 설정체계적인 계획 수립팀 소통 도구
개발계획서
DEC[Digital Engineering Corporation]|200시간 과정
317
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

1. 프로젝트 개요

Section 1

Project Overview

프로젝트 개요의 역할
프로젝트의 정체성을 정의합니다. 무엇을, 왜, 언제까지 개발하는지 명확히 하여 모든 이해관계자가 같은 방향을 바라보게 합니다.
프로젝트명
예시
Revit Room 자동 번호 부여 Add-in
간결하고 명확하게핵심 기능 포함버전 표기 고려
프로젝트 목적
예시
Room 요소에 규칙 기반 번호를 자동 부여하여 설계 효율성 향상
해결할 문제 명시기대 효과 포함측정 가능한 목표
프로젝트 범위
예시
Revit 2022~2024 지원, Room 요소 대상, Windows 환경
포함/제외 항목 구분지원 환경 명시제약사항 기술
개발 기간
예시
2024.03.01 ~ 2024.04.30 (총 8주)
시작/종료일 명시주요 단계 구분여유 시간 확보
What 무엇을 만드는가Why 왜 필요한가When 언제까지 완성하는가
프로젝트 개요
DEC[Digital Engineering Corporation]|200시간 과정
318
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

2. 조직 구성

Section 2

Team Organization

조직 구성의 역할
프로젝트 팀원 구성과 역할 분담을 정의합니다. 명확한 R&R(Role & Responsibility)은 효율적인 협업과 책임 소재 파악의 기반입니다.
역할 및 책임 (R&R)
👔
PM (프로젝트 매니저)
일정 관리
리스크 관리
이해관계자 소통
의사결정
📝
기획자
요구사항 분석
기능 정의
사용자 시나리오
문서화
💻
개발자
설계 및 구현
코드 작성
단위 테스트
버그 수정
🔍
QA (품질 관리)
테스트 계획
통합 테스트
버그 리포트
품질 검증
협업 도구
📂
Git/GitHub
버전 관리, 코드 리뷰
📋
Notion/Confluence
문서 공유, 지식 관리
💬
Slack/Teams
실시간 소통, 알림
📊
Jira/Trello
작업 관리, 진행 추적
명확한 역할 분담책임 명시소통 채널 확립
조직 구성
DEC[Digital Engineering Corporation]|200시간 과정
319
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

3. 개발 배경과 목표

Section 3

Background & Objectives

개발 배경과 목표의 역할
현재 문제점을 분석하고 개선 목표를 설정합니다. 명확한 AS-IS/TO-BE 분석은 프로젝트의 필요성과 가치를 입증합니다.
⚠️
현황 및 문제점 분석 (AS-IS)
수동 번호 부여
시간 소요 많음
심각도: 높음
휴먼 에러 발생
중복/누락 번호
심각도: 높음
일관성 부족
규칙 적용 어려움
심각도: 중간
변경 시 재작업
설계 변경 비용 증가
심각도: 높음
🎯
개발 목표 및 기대 효과 (TO-BE)
⏱️
작업 시간 단축
90% 이상 절감
✅
오류율 감소
휴먼 에러 제거
📏
일관성 확보
규칙 기반 자동화
🔄
유지보수 용이
변경 시 자동 갱신
AS-IS 현재 문제점→TO-BE 개선 목표→효과 측정 가능한 지표
배경/목표
DEC[Digital Engineering Corporation]|200시간 과정
320
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

4. 개발 적절성 검토

Section 4

Feasibility Analysis

개발 적절성 검토의 역할
타당성 검토는 프로젝트 착수 전 실현 가능성을 평가하는 단계입니다. 기술, 자원, 일정 세 가지 관점에서 검토하여 리스크를 사전에 파악합니다.
🔧
기술적 타당성
검토 질문
•필요한 기술을 보유하고 있는가?
•API/라이브러리가 충분한가?
•기술적 제약이 있는가?
•프로토타입 검증이 가능한가?
체크리스트
Revit API 문서 확인
샘플 코드 테스트
기술 스택 결정
👥
자원 타당성
검토 질문
•충분한 인력이 있는가?
•필요한 도구/장비가 있는가?
•예산이 충분한가?
•외부 지원이 필요한가?
체크리스트
팀원 역량 평가
개발 환경 구축
라이선스 확보
📅
일정 타당성
검토 질문
•주어진 기간 내 완료 가능한가?
•마일스톤이 현실적인가?
•버퍼 시간이 충분한가?
•의존성/병목이 있는가?
체크리스트
작업 분해 (WBS)
일정 버퍼 20%
리스크 대응 계획
기술 구현 가능?자원 충분한가?일정 현실적인가?
적절성 검토
DEC[Digital Engineering Corporation]|200시간 과정
321
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

5. 개발 로드맵

Section 5

Development Roadmap

개발 로드맵의 역할
개발 로드맵은 프로젝트의 전체 일정을 단계별로 시각화한 계획입니다. 각 단계의 마일스톤을 설정하여 진행 상황을 점검합니다.
1단계
1~2주
기획/분석
요구사항 수집
기능 정의
타당성 검토
🏁 요구사항 명세서 완료
2단계
1~2주
설계
아키텍처 설계
UI/UX 설계
DB 설계
🏁 설계 문서 승인
3단계
3~4주
개발
핵심 기능 구현
UI 개발
단위 테스트
🏁 기능 구현 완료
4단계
1~2주
테스트/배포
통합 테스트
버그 수정
배포 준비
🏁 최종 릴리즈
일정 관리 팁
⏱️버퍼 20% 확보
✅마일스톤 점검
🔗의존성 파악
⚠️리스크 대응
단계 명확히 구분마일스톤 설정버퍼 시간 확보
개발 로드맵
DEC[Digital Engineering Corporation]|200시간 과정
322
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

6. 핵심 기능 및 시나리오

Section 6

Core Features & User Scenarios

핵심 기능 정의의 역할
핵심 기능은 개발할 소프트웨어의 주요 기능을 정의합니다. 각 기능의 우선순위와 인수조건을 명확히 합니다.
핵심 기능 정의
ID기능명우선순위설명인수 조건
F001Room 선택필수뷰에서 Room 요소를 선택하거나 전체 선택단일/다중/전체 선택 가능
F002번호 규칙 설정필수시작 번호, 접두사, 정렬 기준 설정사용자 정의 규칙 저장/불러오기
F003자동 번호 부여필수설정된 규칙에 따라 번호 자동 부여1000개 Room 10초 이내 처리
F004미리보기선택적용 전 결과 미리보기취소 시 원상 복구
사용자 시나리오
1
사용자
Action: Add-in 실행
Result: UI 다이얼로그 표시
2
사용자
Action: Room 선택 방식 지정
Result: 선택된 Room 목록 표시
3
사용자
Action: 번호 규칙 설정
Result: 미리보기 업데이트
4
사용자
Action: 적용 버튼 클릭
Result: 번호 부여 완료 메시지
기능 정의 팁
🎯SMART 원칙 적용
👤사용자 관점 기술
✅테스트 가능하게
🚀MVP 우선 정의
기능 ID 추적성우선순위 구분인수조건 명확화
핵심 기능
DEC[Digital Engineering Corporation]|200시간 과정
323
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

7. 기술 구현 방안

Section 7

Technical Implementation

기술 구현 방안의 역할
시스템 아키텍처와 기술 스택을 정의합니다. 사용할 API를 사전에 조사하여 기술적 실현 가능성을 확보합니다.
시스템 아키텍처
↓
UI Layer
WPF 다이얼로그, 사용자 입력 처리
↓
Business Logic
번호 규칙 처리, 유효성 검증
↓
Data Access
Revit 문서 접근, Room 데이터 처리
Revit API
Element 조작, Transaction 관리
기술 스택
💻
언어
C#
🏗️
프레임워크
.NET Framework 4.8
🔌
API
Revit API 2022+
🎨
UI
WPF / XAML
⚙️
IDE
Visual Studio 2022
📂
버전관리
Git / GitHub
주요 Revit API
FilteredElementCollector
Room 요소 수집
Transaction
변경사항 관리
Parameter.Set()
번호 값 설정
TaskDialog
사용자 알림
레이어 분리 설계기술 스택 명시API 사전 조사
기술 구현
DEC[Digital Engineering Corporation]|200시간 과정
324
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

8. 사용자 워크플로우

Section 8

User Workflow & UI/UX Design

사용자 워크플로우의 역할
사용자 워크플로우는 사용자가 소프트웨어를 사용하는 흐름을 정의합니다.UI/UX 설계를 통해 직관적인 사용 경험을 제공합니다.
사용자 워크플로우
🚀
시작
Revit 리본에서 Add-in 실행
→
👆
선택
Room 선택 방식 지정
→
⚙️
설정
번호 규칙 및 옵션 설정
→
👁️
미리보기
적용 전 결과 확인
→
✅
적용
번호 부여 실행
→
🎉
완료
결과 확인 및 종료
UI 구성요소
메인 다이얼로그
선택 영역설정 패널미리보기버튼
선택 패널
전체 선택뷰 선택수동 선택
설정 패널
시작 번호접두사정렬 기준
미리보기
번호 목록변경 사항 하이라이트
UX 설계 원칙
🎯
단순함
3클릭 내 완료
📊
피드백
진행 상황 표시
↩️
실행취소
언제든 취소 가능
🎨
일관성
Revit UI 스타일 준수
워크플로우 시각화UI 구조 정의UX 원칙 적용
워크플로우
DEC[Digital Engineering Corporation]|200시간 과정
325
</>
C# REVIT API

C# Revit API 예제 샘플

Revit API 활용 자동화 예제로 실무 적용 능력 향상
Revit API
C# Programming
Code Sample
Automation
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

IExternalCommand 템플릿

C# Revit API

Revit Add-in의 시작점

IExternalCommand 인터페이스
모든 Revit Command는 IExternalCommand를 구현해야 합니다. Execute 메서드가 진입점이며, Result를 반환합니다.
기본 Command 템플릿
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;

[Transaction(TransactionMode.Manual)]
public class MyCommand : IExternalCommand
{
  public Result Execute(
    ExternalCommandData commandData,
    ref string message,
    ElementSet elements)
  {
    // UIApplication 접근
    UIApplication uiapp = commandData.Application;
    UIDocument uidoc = uiapp.ActiveUIDocument;
    Document doc = uidoc.Document;

    // 작업 코드 작성

    return Result.Succeeded;
  }
}
예외 처리 패턴
public Result Execute(
  ExternalCommandData commandData,
  ref string message,
  ElementSet elements)
{
  try
  {
    Document doc = commandData.Application
      .ActiveUIDocument.Document;

    // 작업 수행
    TaskDialog.Show("성공", "작업 완료!");

    return Result.Succeeded;
  }
  catch (Exception ex)
  {
    message = ex.Message;
    return Result.Failed;
  }
}
IExternalCommand = 필수 인터페이스Execute = 진입점Result = Succeeded / Failed / Cancelled
Sample 1/7
DEC[Digital Engineering Corporation]|200시간 과정
327
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

FilteredElementCollector

C# Revit API

문서에서 요소 검색하기

요소 검색의 핵심 클래스
FilteredElementCollector는 Revit 문서에서 요소를 검색하는 가장 기본적인 방법입니다. OfClass, OfCategory로 필터링하고 LINQ와 함께 사용합니다.
기본 사용법 (OfClass, OfCategory)
// 모든 벽 인스턴스 가져오기
FilteredElementCollector collector =
  new FilteredElementCollector(doc);

IList<Element> walls = collector
  .OfClass(typeof(Wall))
  .WhereElementIsNotElementType()
  .ToElements();

// 카테고리로 검색 (문, 창문 등)
var doors = new FilteredElementCollector(doc)
  .OfCategory(BuiltInCategory.OST_Doors)
  .WhereElementIsNotElementType()
  .ToElements();

// 타입만 가져오기
var wallTypes = new FilteredElementCollector(doc)
  .OfClass(typeof(WallType))
  .ToElements();
LINQ와 함께 사용
// 특정 레벨의 벽만 필터링
var level1Walls = new FilteredElementCollector(doc)
  .OfClass(typeof(Wall))
  .WhereElementIsNotElementType()
  .Cast<Wall>()
  .Where(w => w.LevelId == level.Id)
  .ToList();

// 이름으로 필터링
var singleDoors = new FilteredElementCollector(doc)
  .OfCategory(BuiltInCategory.OST_Doors)
  .WhereElementIsNotElementType()
  .Where(e => e.Name.Contains("Single"))
  .ToList();

// 첫 번째 요소만
Level level = new FilteredElementCollector(doc)
  .OfClass(typeof(Level))
  .FirstElement() as Level;
OfClass = 타입으로OfCategory = 카테고리로Cast<T> = LINQ 사용FirstElement = 단일
Sample 2/7
DEC[Digital Engineering Corporation]|200시간 과정
328
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

Parameter 읽기/쓰기

C# Revit API

요소 속성 접근하기

Parameter 접근 방법
get_Parameter(BuiltInParameter)로 내장 파라미터에 접근하고, LookupParameter("이름")으로 사용자 파라미터에 접근합니다. 단위는 feet이므로 mm 변환이 필요합니다.
파라미터 읽기 (Get)
// 1. BuiltInParameter로 읽기
Parameter heightParam = wall.get_Parameter(
  BuiltInParameter.WALL_USER_HEIGHT_PARAM);
double heightFeet = heightParam.AsDouble();
double heightMM = heightFeet * 304.8;

// 2. 이름으로 읽기
Parameter markParam = wall.LookupParameter("Mark");
string mark = markParam?.AsString() ?? "";

// 3. StorageType 확인
StorageType type = markParam.StorageType;
// Double, Integer, String, ElementId

// 4. 다양한 As메서드
int intVal = param.AsInteger();
ElementId id = param.AsElementId();
string strVal = param.AsValueString();
파라미터 쓰기 (Set)
using (Transaction t =
  new Transaction(doc, "파라미터 수정"))
{
  t.Start();

  // 문자열 파라미터
  Parameter markParam =
    wall.LookupParameter("Mark");
  markParam.Set("W-001");

  // 숫자 파라미터 (feet 단위)
  Parameter heightParam = wall.get_Parameter(
    BuiltInParameter.WALL_USER_HEIGHT_PARAM);
  heightParam.Set(3000 / 304.8); // 3m

  t.Commit();
}
get_Parameter = 내장LookupParameter = 이름×304.8 = feet→mmTransaction = 필수
Sample 3/7
DEC[Digital Engineering Corporation]|200시간 과정
329
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

Transaction과 요소 생성

C# Revit API

벽, 바닥, 기둥 생성하기

요소 생성의 기본 패턴
모든 요소 생성은 Transaction 안에서 수행해야 합니다. Wall.Create, Floor.Create 등 정적 메서드를 사용합니다. 좌표는 feet 단위입니다.
벽 생성 (Wall.Create)
using (Transaction t =
  new Transaction(doc, "벽 생성"))
{
  t.Start();

  // 레벨 가져오기
  Level level = new FilteredElementCollector(doc)
    .OfClass(typeof(Level))
    .FirstElement() as Level;

  // 중심선 생성 (10m)
  XYZ start = new XYZ(0, 0, 0);
  XYZ end = new XYZ(10000/304.8, 0, 0);
  Line line = Line.CreateBound(start, end);

  // 벽 생성
  Wall wall = Wall.Create(
    doc, line, level.Id, false);

  t.Commit();
}
기둥 생성 (NewFamilyInstance)
using (Transaction t =
  new Transaction(doc, "기둥 생성"))
{
  t.Start();

  // 기둥 타입 찾기
  FamilySymbol colType =
    new FilteredElementCollector(doc)
    .OfClass(typeof(FamilySymbol))
    .OfCategory(BuiltInCategory.OST_Columns)
    .FirstElement() as FamilySymbol;

  // 타입 활성화
  if (!colType.IsActive) colType.Activate();

  // 기둥 생성
  XYZ point = new XYZ(0, 0, 0);
  doc.Create.NewFamilyInstance(
    point, colType, level,
    StructuralType.Column);

  t.Commit();
}
Transaction = 필수Wall.Create = 벽NewFamilyInstance = 패밀리/304.8 = mm→feet
Sample 4/7
DEC[Digital Engineering Corporation]|200시간 과정
330
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

Selection (1) 기본

C# Revit API

요소 및 점 선택받기

UIDocument.Selection
PickObject = 단일 요소, PickObjects = 다중 요소, PickPoint = 3D 점 선택. Reference를 받아 GetElement로 변환합니다.
요소 선택 (PickObject / PickObjects)
UIDocument uidoc = commandData.Application
  .ActiveUIDocument;
Document doc = uidoc.Document;

// 1. 단일 요소 선택
Reference reference = uidoc.Selection.PickObject(
  ObjectType.Element,
  "요소를 선택하세요");
Element element = doc.GetElement(reference);

// 2. 다중 요소 선택
IList<Reference> refs =
  uidoc.Selection.PickObjects(
    ObjectType.Element,
    "요소들을 선택하세요");

foreach (Reference r in refs)
{
  Element e = doc.GetElement(r);
  // 처리...
}
점/면 선택 (PickPoint / Face)
// 3. 3D 점 선택
XYZ point = uidoc.Selection.PickPoint(
  "점을 클릭하세요");
double x = point.X * 304.8; // mm
double y = point.Y * 304.8;

// 4. 면(Face) 선택
Reference faceRef = uidoc.Selection.PickObject(
  ObjectType.Face,
  "면을 선택하세요");
Element elem = doc.GetElement(faceRef);
Face face = elem
  .GetGeometryObjectFromReference(faceRef)
  as Face;

// 5. 엣지(Edge) 선택
Reference edgeRef = uidoc.Selection.PickObject(
  ObjectType.Edge,
  "엣지를 선택하세요");
PickObject = 단일PickObjects = 다중PickPoint = 점GetElement = Reference→Element
Sample 5/7
DEC[Digital Engineering Corporation]|200시간 과정
331
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

Selection (2) 고급

C# Revit API

ISelectionFilter와 선택 제어

선택 필터링과 제어
ISelectionFilter로 선택 가능한 요소를 제한하고, GetElementIds로 현재 선택된 요소를 가져옵니다.
ISelectionFilter 구현
// 벽만 선택 가능한 필터
public class WallSelectionFilter : ISelectionFilter
{
  public bool AllowElement(Element elem)
  { return elem is Wall; }
  public bool AllowReference(Reference r, XYZ p)
  { return false; }
}
// 필터 사용
Reference r = uidoc.Selection.PickObject(
  ObjectType.Element,
  new WallSelectionFilter(),
  "벽을 선택하세요");
현재 선택 요소 가져오기/설정하기
// 1. 현재 선택된 요소 가져오기
Selection sel = uidoc.Selection;
ICollection<ElementId> ids = sel.GetElementIds();
foreach (ElementId id in ids)
{
  Element e = doc.GetElement(id);
}
// 2. 프로그래밍으로 요소 선택
ICollection<ElementId> newSel =
  new List<ElementId>();
newSel.Add(wall.Id);
sel.SetElementIds(newSel);
ISelectionFilter = 필터링GetElementIds = 현재선택SetElementIds = 선택적용
Sample 6/7
DEC[Digital Engineering Corporation]|200시간 과정
332
B+CD+P
BIM-IT 융합 과정
Chapter 9: 건축 + IT 융합 실무교육

실전 종합 예제

C# Revit API

선택 요소의 파라미터 일괄 수정

종합 활용: Selection + Parameter + Transaction
사용자가 선택한 벽들의 Mark 파라미터를 일괄 수정하는 실전 예제입니다. 앞서 배운 개념들을 통합하여 적용합니다.
Execute 메서드 (전체 흐름)
public Result Execute(
  ExternalCommandData commandData,
  ref string message,
  ElementSet elements)
{
  UIDocument uidoc = commandData
    .Application.ActiveUIDocument;
  Document doc = uidoc.Document;

  // 1. 벽만 선택받기
  IList<Reference> refs =
    uidoc.Selection.PickObjects(
      ObjectType.Element,
      new WallSelectionFilter(),
      "벽들을 선택하세요");

  // 2. Transaction 내에서 수정
  using (Transaction t = new
    Transaction(doc, "Mark 수정"))
  {
    t.Start();
    // 오른쪽 코드 참조...
    t.Commit();
  }
  return Result.Succeeded;
}
Transaction 내부 (파라미터 수정)
// Transaction 내부 코드
int count = 0;
foreach (Reference r in refs)
{
  Wall wall = doc.GetElement(r)
    as Wall;

  // Mark 파라미터 가져오기
  Parameter markParam = wall
    .get_Parameter(BuiltInParameter
      .ALL_MODEL_MARK);

  // 새 값 설정
  if (markParam != null &&
    !markParam.IsReadOnly)
  {
    count++;
    markParam.Set(
      $"W-{count:D3}");
  }
}

TaskDialog.Show("완료",
  $"{count}개 벽 수정됨");
PickObjects = 다중선택Filter = 벽만Transaction = 수정Set = 값변경
Sample 7/7
DEC[Digital Engineering Corporation]|200시간 과정
333
APPENDIX

컴포넌트 레퍼런스

RhinoInside Grasshopper 컴포넌트 입력/출력 상세 가이드

B+CD+P
BIM-IT 융합 과정
Appendix

Grasshopper 기본 컴포넌트

Appendix

RhinoInside에서 자주 사용하는 Grasshopper 기본 컴포넌트

Curve
Curve
Params > Geometry
커브 데이터를 저장하고 전달하는 컨테이너
Input
-: 없음
Output
Crv: Curve
Area
Area
Surface > Analysis
닫힌 커브의 면적과 중심점 계산
Input
G: Geometry
Output
A: Area
C: Centroid
Unit Z
Unit Z
Vector > Vector
Z축 방향 단위 벡터 생성 (0, 0, 1)
Input
F: Factor
Output
V: Vector
Line
Line
Curve > Primitive
시작점, 방향, 길이로 직선 생성
Input
S: Start
D: Direction
L: Length
Output
L: Line
DEC[Digital Engineering Corporation]|200시간 과정
335
B+CD+P
BIM-IT 융합 과정
Appendix

Grasshopper 기본 컴포넌트

Appendix

RhinoInside에서 자주 사용하는 Grasshopper 기본 컴포넌트

Rectangle
Rectangle
Curve > Primitive
평면 위에 직사각형 커브 생성
Input
P: Plane
X: X Size
Y: Y Size
R: Radius
Output
R: Rectangle
L: Length
Types
Types
Revit > Input
Revit 패밀리 타입 선택 및 필터링
Input
K: Kind
C: Category
FN: Family Name
TN: Type Name
Output
T: Types
Level
Level
Revit > Input
Revit 프로젝트의 레벨 선택
Input
S: Search
Output
L: Level
S-Beam
S-Beam
RhinoInside > Structure
커브 경로를 따라 구조 보 생성
Input
C: Curve
T: Type
RL: Reference Level
Output
B: Beam
DEC[Digital Engineering Corporation]|200시간 과정
336
B+CD+P
BIM-IT 융합 과정
Appendix

Grasshopper 기본 컴포넌트

Appendix

RhinoInside에서 자주 사용하는 Grasshopper 기본 컴포넌트

S-Column
S-Column
RhinoInside > Structure
지정된 위치에 구조 기둥 생성
Input
P: Point
T: Type
BL: Base Level
TL: Top Level
Output
C: Column
Floor
Floor
RhinoInside > Architecture
경계 커브로 바닥/슬라브 생성
Input
B: Boundary
T: Type
L: Level
S: Structural
Output
F: Floor
C-Wall
C-Wall
RhinoInside > Architecture
커브 경로를 따라 벽 생성
Input
C: Curve
T: Type
L: Level
H: Height
F: Flip
J: Join
S: Structural
Output
W: Wall
S-Foundation
S-Foundation
RhinoInside > Structure
경계 커브로 구조 기초 생성
Input
B: Boundary
T: Type
L: Level
S: Structural
Output
F: Foundation
DEC[Digital Engineering Corporation]|200시간 과정
337
B+CD+P
BIM-IT 융합 과정
Appendix

Grasshopper 기본 컴포넌트

Appendix

RhinoInside에서 자주 사용하는 Grasshopper 기본 컴포넌트

Offset
Offset
Curve > Util
커브를 지정 거리만큼 오프셋
Input
C: Curve
D: Distance
P: Plane
Output
C: Curve
Boundary
Boundary
Surface > Freeform
커브들로 평면 서피스(바운더리) 생성
Input
E: Edges
Output
S: Surface
DeBrep
DeBrep
Surface > Analysis
Brep을 Face/Edge/Vertex로 분해
Input
B: Brep
Output
F: Faces
E: Edges
V: Vertices
Join
Join
Curve > Util
여러 커브를 하나로 조인
Input
C: Curves
P: Preserve
Output
C: Curves
DEC[Digital Engineering Corporation]|200시간 과정
338
B+CD+P
BIM-IT 융합 과정
Appendix

Grasshopper 기본 컴포넌트

Appendix

RhinoInside에서 자주 사용하는 Grasshopper 기본 컴포넌트

I-Foundation
I-Foundation
RhinoInside > Structure
지정 위치에 독립 기초 생성
Input
L: Location
T: Type
L: Level
Output
F: Foundation
Ceiling
Ceiling
RhinoInside > Architecture
경계 커브로 천장 요소 생성
Input
B: Boundary
T: Type
L: Level
Output
C: Ceiling
Railing
Railing
RhinoInside > Architecture
커브 경로를 따라 난간 생성
Input
C: Curve
T: Type
L: Level
H: Height
F: Flip
Output
R: Railing
Roof
Roof
RhinoInside > Architecture
경계 커브로 지붕 요소 생성
Input
B: Boundary
T: Type
L: Level
Output
R: Roof
DEC[Digital Engineering Corporation]|200시간 과정
339
B+CD+P
BIM-IT 융합 과정
Appendix

Grasshopper 기본 컴포넌트

Appendix

RhinoInside에서 자주 사용하는 Grasshopper 기본 컴포넌트

G-Shape
G-Shape
RhinoInside > Build
Brep을 DirectShape로 변환
Input
N: Name
C: Category
G: Geometry
M: Material
Output
DS: DirectShape
Materials
Materials
RhinoInside > Element
재질 선택 또는 생성
Input
C: Category
N: Name
F: Filter
Output
M: Material
Categories
Categories
RhinoInside > Category
Revit 카테고리 목록 선택
Input
-: (목록에서 선택)
Output
C: Category
Brep
Brep
Grasshopper > Geometry
경계 표현(B-Rep) 지오메트리
Input
-: (파라미터 참조)
Output
B: Brep
DEC[Digital Engineering Corporation]|200시간 과정
340
B+CD+P
BIM-IT 융합 과정
Appendix

Grasshopper 기본 컴포넌트

Appendix

RhinoInside에서 자주 사용하는 Grasshopper 기본 컴포넌트

CatFltr
CatFltr
RhinoInside > Filter
카테고리로 요소 필터링
Input
C: Category
I: Input
Output
F: Filter
TypeFltr
TypeFltr
RhinoInside > Filter
타입으로 요소 필터링
Input
T: Type
I: Input
Output
F: Filter
Elements
Elements
RhinoInside > Element
필터된 요소 수집
Input
F: Filter
L: Level
Output
E: Elements
C: Count
Categories
Categories
RhinoInside > Category
Revit 카테고리 목록 선택
Input
-: (목록에서 선택)
Output
C: Category
DEC[Digital Engineering Corporation]|200시간 과정
341
B+CD+P
BIM-IT 융합 과정
Appendix

Grasshopper 기본 컴포넌트

Appendix

RhinoInside에서 자주 사용하는 Grasshopper 기본 컴포넌트

Graphical Element
Graphical Element
RhinoInside > Element
뷰포트의 그래픽 요소
Input
-: (뷰 자동 참조)
Output
E: Elements
FiltElem
FiltElem
RhinoInside > Filter
필터로 요소 수집
Input
E: Elements
F: Filter
Output
P: Pass
Cull
Cull
Grasshopper > Sets
패턴으로 요소 선별
Input
L: List
P: Pattern
Output
L: List
LevelFltr
LevelFltr
RhinoInside > Filter
레벨로 요소 필터링
Input
L: Level
I: Input
Output
F: Filter
DEC[Digital Engineering Corporation]|200시간 과정
342
B+CD+P
BIM-IT 융합 과정
Appendix

Grasshopper 기본 컴포넌트

Appendix

RhinoInside에서 자주 사용하는 Grasshopper 기본 컴포넌트

AndFltr
AndFltr
RhinoInside > Filter
AND 필터 조합 (모두 만족)
Input
A: Filter A
B: Filter B
Output
F: Filter
OrFltr
OrFltr
RhinoInside > Filter
OR 필터 조합 (하나 만족)
Input
A: Filter A
B: Filter B
Output
F: Filter
Parameters
Parameters
RhinoInside > Parameter
Revit 파라미터 선택
Input
-: (목록에서 선택)
Output
P: Parameter
ParaFltr
ParaFltr
RhinoInside > Filter
파라미터로 요소 필터링
Input
R: Rule
I: Input
Output
F: Filter
DEC[Digital Engineering Corporation]|200시간 과정
343
B+CD+P
BIM-IT 융합 과정
Appendix

Grasshopper 기본 컴포넌트

Appendix

알고리즘 설계에서 자주 사용하는 Grasshopper 기본 컴포넌트

Find Text
Find Text
Custom C# Component
뷰에서 텍스트 위치/내용 추출
Input
V: View
Output
P: Points (위치)
T: Text (내용)
Evaluate Curve
Evaluate Curve
Grasshopper > Curve
커브 상의 특정 위치점 추출
Input
C: Curve
t: Parameter (0~1)
Output
P: Point
T: Tangent
Closest Point
Closest Point
Grasshopper > Vector
점 집합에서 가장 가까운 점 찾기
Input
P: Point
C: Cloud (점 집합)
Output
CP: Closest Point
i: Index
List Item
List Item
Grasshopper > Sets
인덱스로 리스트 항목 추출
Input
L: List
i: Index
Output
E: Element
DEC[Digital Engineering Corporation]|200시간 과정
344
B+CD+P
BIM-IT 융합 과정
Appendix

Grasshopper 기본 컴포넌트

Appendix

알고리즘 설계에서 자주 사용하는 Grasshopper 기본 컴포넌트

Explode
Explode
Grasshopper > Curve
폴리커브를 개별 선분으로 분해
Input
C: Curve
Output
S: Segments
V: Vertices
Length
Length
Grasshopper > Curve
커브의 길이 측정
Input
C: Curve
Output
L: Length
Sort List
Sort List
Grasshopper > Sets
값 기준으로 리스트 정렬
Input
K: Keys (정렬 기준)
A: Values (정렬 대상)
Output
K: Sorted Keys
A: Sorted Values
Cull Index
Cull Index
Grasshopper > Sets
특정 인덱스 항목 제거
Input
L: List
I: Indices (제거할)
Output
L: List (제거 후)
DEC[Digital Engineering Corporation]|200시간 과정
345
B+CD+P
BIM-IT 융합 과정
Appendix

Grasshopper 필터링 컴포넌트

Appendix

조건부 필터링 및 리스트 분리 컴포넌트

Point In Curve
Point In Curve
Grasshopper > Curve
점이 닫힌 커브 내부에 있는지 판별 (0=외부, 1=경계, 2=내부)
Input
P: Point
C: Curve (닫힌)
Output
R: Relationship
P: Point (투영)
Cull Pattern
Cull Pattern
Grasshopper > Sets
Boolean 패턴으로 리스트 항목 필터링
Input
L: List
P: Pattern (T/F)
Output
L: List (필터됨)
Dispatch
Dispatch
Grasshopper > Sets
Boolean 값으로 리스트를 두 그룹으로 분리
Input
L: List
P: Pattern (T/F)
Output
A: List A (True)
B: List B (False)
Partition List
Partition List
Grasshopper > Sets
리스트를 지정된 크기로 분할
Input
L: List
S: Size
Output
C: Chunks (분할된)
DEC[Digital Engineering Corporation]|200시간 과정
346
B+CD+P
BIM-IT 융합 과정
Appendix

Grasshopper Surface 분할 컴포넌트

Appendix

Surface 도메인 및 분할 컴포넌트

Duplicate Type
Duplicate Type
RhinoInside > Type
기존 타입을 복제하여 새 타입 생성. Family Type을 복제하여 다른 이름으로 새 타입을 만들 때 사용
Input
T: Type (원본)
N: Name (새 이름)
Output
T: Type (복제됨)
Divide Domain²
Divide Domain²
Grasshopper > Maths
2D 도메인을 U/V 개수로 균등 분할
Input
D: Domain²
U: U Count
V: V Count
Output
S: Segments
Isotrim
Isotrim
Grasshopper > Surface
Domain² 영역의 서브서피스 추출 (SubSrf)
Input
S: Surface
D: Domain²
Output
S: Surface (분할됨)
(빈 슬롯)
DEC[Digital Engineering Corporation]|200시간 과정
347
B+CD+P
BIM-IT 융합 과정
Appendix

Grasshopper 커브 교차 컴포넌트

Appendix

커브 교차 및 서피스 분할 컴포넌트

Curve | Curve (CCX)
Curve | Curve (CCX)
Grasshopper > Intersect
두 커브의 교차점과 교차구간 찾기
Input
A: Curve A
B: Curve B
Output
P: Points (교차점)
tA: Parameter on A
tB: Parameter on B
Multiple Curves (MCX)
Multiple Curves (MCX)
Grasshopper > Intersect
여러 커브 간 모든 교차점 찾기
Input
C: Curves (리스트)
Output
P: Points (교차점)
iA: Index A
iB: Index B
tA: Parameter A
tB: Parameter B
Shatter
Shatter
Grasshopper > Curve
지정된 파라미터 위치에서 커브 분할
Input
C: Curve
t: Parameters (분할점)
Output
S: Segments (분할된)
Surface Split
Surface Split
Grasshopper > Intersect
커브를 이용하여 서피스를 분할
Input
S: Surface
C: Curves (분할선)
Output
F: Fragments (조각)
DEC[Digital Engineering Corporation]|200시간 과정
348
B+CD+P
BIM-IT 융합 과정
Appendix

Grasshopper 분할 및 Boolean 컴포넌트

Appendix

교차 및 Solid Boolean 컴포넌트

Brep | Curve (BCX)
Brep | Curve (BCX)
Grasshopper > Intersect
Brep과 커브의 교차점/교차선 찾기
Input
B: Brep
C: Curve
Output
P: Points (교차점)
C: Curves (교차선)
t: Parameters
Contour
Contour
Grasshopper > Intersect
형상을 일정 간격으로 잘라 등고선 생성
Input
S: Shape (Brep)
P: Point (시작점)
N: Normal (방향)
D: Distance (간격)
Output
C: Curves (등고선)
Solid Difference (SDiff)
Solid Difference (SDiff)
Grasshopper > Intersect
A에서 B를 뺀 차집합 연산
Input
A: Brep A
B: Brep B
Output
R: Result (A - B)
Solid Union (SUnion)
Solid Union (SUnion)
Grasshopper > Intersect
여러 Brep을 하나로 합치는 합집합
Input
B: Breps (리스트)
Output
R: Result (합집합)
DEC[Digital Engineering Corporation]|200시간 과정
349
B+CD+P
BIM-IT 융합 과정
Appendix

Grasshopper Boolean 및 리스트 컴포넌트

Appendix

Solid Boolean 및 리스트 검색/삽입 컴포넌트

Solid Intersection (SInt)
Solid Intersection (SInt)
Grasshopper > Intersect
A와 B의 겹치는 부분만 추출
Input
A: Brep A
B: Brep B
Output
R: Result (A ∩ B)
Member Index (MIndex)
Member Index (MIndex)
Grasshopper > Sets > List
리스트에서 특정 값의 인덱스 찾기
Input
S: Search List
M: Member (찾을 값)
Output
I: Index (위치)
N: Count (개수)
Insert Items (Ins)
Insert Items (Ins)
Grasshopper > Sets > List
지정된 위치에 새 항목 삽입
Input
L: List (원본)
I: Item (삽입할 값)
i: Index (위치)
W: Wrap (감싸기)
Output
L: List (결과)
Series
Series
Grasshopper > Sets > Sequence
시작값, 간격, 개수로 숫자 시리즈 생성
Input
S: Start (시작값)
N: Step (간격)
C: Count (개수)
Output
S: Series (숫자열)
DEC[Digital Engineering Corporation]|200시간 과정
350
B+CD+P
BIM-IT 융합 과정
Appendix

Grasshopper 리스트 관리 컴포넌트

Appendix

리스트 관리 및 커브 점 추출 컴포넌트

List Length (Lng)
List Length (Lng)
Grasshopper > Sets > List
리스트의 항목 개수 반환
Input
L: List
Output
L: Length (개수)
Replace Items
Replace Items
Grasshopper > Sets > List
지정 인덱스의 항목을 새 값으로 교체
Input
L: List (원본)
I: Item (새 값)
i: Index (위치)
W: Wrap (순환)
Output
L: List (결과)
Split List
Split List
Grasshopper > Sets > List
지정 인덱스에서 리스트를 두 부분으로 분할
Input
L: List (원본)
i: Index (분할 위치)
Output
A: List A (앞)
B: List B (뒤)
Mid Point (MidPt)
Mid Point (MidPt)
Grasshopper > Curve > Analysis
커브의 중간점 반환
Input
C: Curve
Output
M: Mid Point
DEC[Digital Engineering Corporation]|200시간 과정
351
B+CD+P
BIM-IT 융합 과정
Appendix

Grasshopper 포인트 및 @it 컴포넌트

Appendix

커브 점 추출 및 GIS 데이터 컴포넌트

End Points (End)
End Points (End)
Grasshopper > Curve > Analysis
커브의 시작점과 끝점 반환
Input
C: Curve
Output
S: Start Point
E: End Point
Imp@it
Imp@it
@it > Input
Shapefile(.shp) 데이터를 읽어 폴리라인/폴리곤 생성
Input
C:/: Path (SHP 경로)
-->WGS84: 좌표계 변환
T|F: Toggle (활성화)
Output
S: Shape (지오메트리)
F: Feature (속성)
DataVis@it
DataVis@it
@it > Data
지형 데이터 시각화 및 피처별 필터링/추출
Input
S: Shape (입력 데이터)
T|F: Toggle (필터 활성화)
Output
P: PolyLine (폴리라인)
PLine: PLine (라인)
Pt: Point (포인트)
A: Attributes (속성)
Input
Output
DEC[Digital Engineering Corporation]|200시간 과정
352
B+CD+P
BIM-IT 융합 과정
Appendix

지형 및 메쉬 컴포넌트

Appendix

Toposolid, 메쉬 생성 및 서피스 분할 컴포넌트

Toposolid
Toposolid
RhinoInside > Site
포인트 그리드로 Revit Toposolid 지형 생성
Input
B: Boundary (경계)
P: Points (포인트)
C: Curves (등고선)
T: Type (유형)
BA: Base (기준면)
Output
T: Toposolid (지형)
Delaunay (Del)
Delaunay (Del)
Mesh > Triangulation
포인트 집합에서 Delaunay 삼각 메쉬 생성
Input
P: Points (포인트)
Pl: Plane (기준면)
Output
M: Mesh (삼각 메쉬)
MeshRay
MeshRay
Intersect > Physical
메쉬와 광선의 교차점 및 거리 계산
Input
M: Mesh (메쉬)
P: Point (시작점)
D: Direction (방향)
Output
X: Point (교차점)
H: Hit (교차 여부)
SDivide
SDivide
Surface > Util
서피스를 UV 방향으로 균일하게 분할
Input
S: Surface (서피스)
U: U Count (U 분할수)
V: V Count (V 분할수)
Output
P: Points (포인트)
N: Normals (법선)
uv: Parameters (UV좌표)
DEC[Digital Engineering Corporation]|200시간 과정
353
B+CD+P
BIM-IT 융합 과정
Appendix

리스트 및 형상 컴포넌트

Appendix

리스트 분리, 돌출, 수학 연산 및 거리 계산 컴포넌트

Dispatch
Dispatch
Sets > List
패턴에 따라 리스트를 두 그룹으로 분리
Input
L: List (리스트)
P: Pattern (패턴)
Output
A: List A (True 그룹)
B: List B (False 그룹)
Extrude (Extr)
Extrude (Extr)
Surface > Freeform
커브/서피스를 방향 벡터로 돌출
Input
B: Base (기준 형상)
D: Direction (방향)
Output
E: Extrusion (돌출 결과)
Multiply (A*B)
Multiply (A*B)
Maths > Operators
두 값을 곱셈 연산
Input
A: A (첫 번째 값)
B: B (두 번째 값)
Output
R: Result (곱셈 결과)
Distance (Dist)
Distance (Dist)
Vector > Point
두 점 사이의 거리 계산
Input
A: Point A (시작점)
B: Point B (끝점)
Output
D: Distance (거리)
DEC[Digital Engineering Corporation]|200시간 과정
354
B+CD+P
BIM-IT 융합 과정
Appendix

변환 컴포넌트

Appendix

이동, 형상 닫기, 커브 분할 및 포인트 분해 컴포넌트

Move
Move
Transform > Euclidean
지오메트리를 벡터 방향으로 이동
Input
G: Geometry (형상)
T: Translation (이동 벡터)
Output
G: Geometry (이동된 형상)
X: Transform (변환 행렬)
Cap Holes (Cap)
Cap Holes (Cap)
Surface > Util
Brep의 열린 부분을 평면으로 닫기
Input
B: Brep (열린 형상)
Output
B: Brep (닫힌 형상)
Divide Length (DivLength)
Divide Length (DivLength)
Curve > Division
커브를 지정된 길이로 분할하여 포인트 생성
Input
C: Curve (커브)
L: Length (분할 길이)
Output
P: Points (분할점)
T: Tangents (접선)
t: Parameters (파라미터)
Deconstruct (pDecon)
Deconstruct (pDecon)
Vector > Point
포인트를 X, Y, Z 좌표로 분해
Input
P: Point (포인트)
Output
X: X coordinate
Y: Y coordinate
Z: Z coordinate
DEC[Digital Engineering Corporation]|200시간 과정
355
B+CD+P
BIM-IT 융합 과정
Appendix

커브 분석 컴포넌트

Appendix

커브 보간, 수학 연산, 프레임 및 로프트 컴포넌트

Interpolate (IntCrv)
Interpolate (IntCrv)
Curve > Spline
포인트들을 통과하는 보간 커브 생성
Input
V: Vertices (포인트)
D: Degree (차수)
P: Periodic (닫힌 커브)
K: KnotStyle (매듭)
Output
C: Curve (보간 커브)
L: Length (길이)
D: Domain (도메인)
Subtraction (A-B)
Subtraction (A-B)
Maths > Operators
두 값의 뺄셈 연산 (A에서 B를 뺌)
Input
A: A (피감수)
B: B (감수)
Output
R: Result (결과)
Perp Frames (PFrames)
Perp Frames (PFrames)
Curve > Division
커브를 따라 수직 프레임(평면) 생성
Input
C: Curve (커브)
N: Count (분할 수)
A: Align (정렬)
Output
F: Frames (프레임)
t: Parameters (파라미터)
Loft
Loft
Surface > Freeform
여러 커브를 연결하여 서피스 생성
Input
C: Curves (커브들)
O: Options (옵션)
Output
L: Loft (서피스)
DEC[Digital Engineering Corporation]|200시간 과정
356
B+CD+P
BIM-IT 융합 과정
Appendix

서피스 생성 컴포넌트

Appendix

라인, 벡터, 지형 분할 및 서피스 분할 컴포넌트

Line SDL
Line SDL
Curve > Primitive
시작점, 방향, 길이로 라인 생성
Input
S: Start (시작점)
D: Direction (방향)
L: Length (길이)
Output
L: Line (라인)
Unit X
Unit X
Vector > Vector
X축 방향 단위 벡터 생성
Input
F: Factor (배율)
Output
V: Vector (벡터)
T-Subdivision
T-Subdivision
RhinoInside > Site
Toposolid 지형을 커브로 분할하여 서브디비전 생성
Input
T: Toposolid (지형)
B: Boundary (분할 커브)
Output
S: Subdivision (서브디비전)
Divide Surface (SDivide)
Divide Surface (SDivide)
Surface > Util
서피스를 UV 방향으로 균일하게 분할
Input
S: Surface (서피스)
U: U Count (U 분할수)
V: V Count (V 분할수)
Output
P: Points (포인트)
N: Normals (법선)
uv: Parameters (UV좌표)
DEC[Digital Engineering Corporation]|200시간 과정
357
B+CD+P
BIM-IT 융합 과정
Appendix

서피스 분석 컴포넌트

Appendix

Surface Analysis Components

Surface Closest Point (Srf CP)
Surface Closest Point (Srf CP)
Surface > Analysis
점에서 서피스에 가장 가까운 점의 UV 파라미터 반환
Input
P: Point (샘플 점)
S: Surface (기준 서피스)
Output
P: Closest Point (최근접 점)
uvP: UV Parameter (UV 좌표)
D: Distance (거리)
Evaluate Surface (EvalSrf)
Evaluate Surface (EvalSrf)
Surface > Analysis
UV 파라미터 위치에서 서피스의 점, 법선, 프레임 평가
Input
S: Surface (기준 서피스)
uv: UV Parameter (UV 좌표)
Output
P: Point (위치 점)
N: Normal (법선 벡터)
F: Frame (로컬 프레임)
Negative (Neg)
Negative (Neg)
Maths > Operators
입력 값의 부호를 반전 (양수↔음수)
Input
x: Value (입력 값, double)
Output
y: Negated (반전된 값)
Cull Duplicates (CullPt)
Cull Duplicates (CullPt)
Vector > Point
중복된 포인트를 제거하고 고유한 포인트만 남김
Input
P: Points (포인트 리스트)
T: Tolerance (허용 오차)
Output
P: Points (고유 포인트)
I: Indices (원본 인덱스)
V: Valence (중복 개수)
DEC[Digital Engineering Corporation]|200시간 과정
358
B+CD+P
BIM-IT 융합 과정
Appendix

폴리라인 및 램프 컴포넌트

Appendix

Polyline & Ramp Components

Polyline (PLine)
Polyline (PLine)
Curve > Spline
포인트 리스트를 연결하여 폴리라인(꺾은선) 생성. Closed 옵션으로 닫힌 형태 가능
Input
V: Vertices (꼭짓점 리스트)
C: Closed (닫힘 여부)
Output
Pl: Polyline (폴리라인)
Radians (Rad)
Radians (Rad)
Maths > Trig
각도(Degrees)를 라디안(Radians)으로 변환
Input
D: Degrees (각도, double)
Output
R: Radians (라디안)
Arc (Arc)
Arc (Arc)
Curve > Primitive
평면, 반경, 각도로 호(Arc) 생성
Input
P: Plane (기준 평면)
R: Radius (반경)
A: Angle (각도, 라디안)
Output
A: Arc (호 커브)
L: Length (호 길이)
Sweep2 (Swp2)
Sweep2 (Swp2)
Surface > Freeform
두 개의 레일 커브를 따라 단면을 스윕하여 서피스 생성
Input
R1: Rail 1 (레일 커브 1)
R2: Rail 2 (레일 커브 2)
S: Sections (단면 커브)
H: Same Height (동일 높이)
Output
S: Brep (결과 서피스)
DEC[Digital Engineering Corporation]|200시간 과정
359
B+CD+P
BIM-IT 융합 과정
Appendix

분석 및 수학 컴포넌트

Appendix

Analysis & Math Components

Bounding Box (BBX)
Bounding Box (BBX)
Surface > Analysis
지오메트리의 경계 박스를 생성하고 박스의 면, 엣지, 꼭짓점 추출
Input
C: Content (지오메트리)
P: Plane (기준면)
Output
B: Box (경계 박스)
Geodesic (Geo)
Geodesic (Geo)
Curve > Spline
서피스 위에서 두 점 사이의 최단 경로(측지선) 생성
Input
S: Surface (기준 서피스)
S: Start (시작점)
E: End (끝점)
Output
G: Geodesic (측지선 커브)
Division (A/B)
Division (A/B)
Maths > Operators
두 숫자를 나누어 몫 계산. 비율, 백분율 계산에 활용
Input
A: A (피제수, double)
B: B (제수, double)
Output
R: Result (결과)
Multiplication (AxB)
Multiplication (AxB)
Maths > Operators
두 숫자를 곱하여 결과 계산. 스케일, 백분율 변환에 활용
Input
A: A (인수, double)
B: B (인수, double)
Output
R: Result (결과)
DEC[Digital Engineering Corporation]|200시간 과정
360
B+CD+P
BIM-IT 융합 과정
Appendix

파라미터 관련 컴포넌트

Appendix

Parameter Components

Inspect (Elem)
Inspect (Elem)
RhinoInside > Element
Revit 요소의 파라미터 목록과 값을 검사
Input
E: Element (요소)
Output
N: Names (파라미터 이름)
V: Values (파라미터 값)
Number (Num)
Number (Num)
Params > Input
숫자 값을 입력하거나 슬라이더로 조절
Input
-: (직접 입력)
Output
N: Number (숫자)
Set Parameter
Set Parameter
RhinoInside > Parameter
Revit 요소의 파라미터 값을 설정
Input
E: Element (요소)
P: Parameter (파라미터)
V: Value (값)
Output
E: Element (수정된 요소)
Parameters
Parameters
RhinoInside > Parameter
Revit 파라미터 선택
Input
-: (목록에서 선택)
Output
P: Parameter
DEC[Digital Engineering Corporation]|200시간 과정
361
B+CD+P
BIM-IT 융합 과정
Appendix

RhinoInside Element & Annotation

Appendix

Element Reference / Dimension Components

Element References
Element References
RhinoInside > Element
Revit 요소에서 치수 기준점 참조 추출
Input
E: Element (요소)
F: Filter (필터)
Output
R: References (참조)
Element Location
Element Location
RhinoInside > Element
Revit 요소의 위치 정보(포인트/커브) 추출
Input
E: Element (요소)
Output
L: Location (위치)
C: Curve (커브)
Graphical Element
Graphical Element
RhinoInside > Element
Revit 뷰에서 그래픽 요소 쿼리
Input
V: View (뷰)
E: Element (요소)
Output
G: Graphical Element (그래픽 요소)
LDim (Linear Dimension)
LDim (Linear Dimension)
RhinoInside > Annotation
Revit 뷰에 선형 치수(Linear Dimension) 생성
Input
V: View (뷰)
L: Line (치수선)
R: References (참조)
Output
D: Dimension (치수)
DEC[Digital Engineering Corporation]|200시간 과정
362
B+CD+P
BIM-IT 융합 과정
Appendix

Grasshopper 유틸리티 컴포넌트

Appendix

Curve Analysis / Math / Input Components

End Points (End)
End Points (End)
Curve > Analysis
커브의 시작점과 끝점 추출
Input
C: Curve (커브)
Output
S: Start (시작점)
E: End (끝점)
Amplitude
Amplitude
Vector > Vector
벡터의 크기(길이)를 조절
Input
V: Vector (벡터)
A: Amplitude (크기)
Output
V: Vector (조절된 벡터)
Angle
Angle
Vector > Vector
두 벡터 사이의 각도 계산
Input
A: Vector A
B: Vector B
P: Plane (기준면)
Output
A: Angle (각도)
Boolean Toggle
Boolean Toggle
Params > Input
True/False 값을 토글로 입력
Input
-: (더블클릭으로 토글)
Output
B: Boolean (참/거짓)
DEC[Digital Engineering Corporation]|200시간 과정
363
B+CD+P
BIM-IT 융합 과정
Appendix

Vector / Plane 컴포넌트

Appendix

Plane Construction & Vector Components

Deconstruct Plane (DxPlane)
Deconstruct Plane (DxPlane)
Vector > Plane
평면을 원점, X축, Y축, Z축(법선)으로 분해
Input
P: Plane (평면)
Output
O: Origin (원점)
X: X-Axis
Y: Y-Axis
Z: Z-Axis (법선)
Construct Plane (Pl)
Construct Plane (Pl)
Vector > Plane
원점과 두 벡터로 평면 생성
Input
O: Origin (원점)
X: X Direction
Y: Y Direction
Output
P: Plane (평면)
Unit Y
Unit Y
Vector > Vector
Y축 방향 단위 벡터 생성 (0, 1, 0)
Input
F: Factor (배율)
Output
V: Vector (벡터)
Vector 2Pt
Vector 2Pt
Vector > Vector
두 점 사이의 방향 벡터 생성
Input
A: Point A (시작)
B: Point B (끝)
U: Unitize (단위화)
Output
V: Vector (벡터)
L: Length (길이)
DEC[Digital Engineering Corporation]|200시간 과정
364
B+CD+P
BIM-IT 융합 과정
Appendix

RhinoInside 면/벽 & 커브 유틸

Appendix

Face Selection / Profile Wall / Curve Utilities

Face
Face
RhinoInside > Element
Revit 요소에서 면(Face) 선택 및 추출
Input
-: (Revit 뷰에서 선택)
Output
F: Face (면)
Flip (Flip Curve)
Flip (Flip Curve)
Curve > Util
커브의 방향을 뒤집어 시작점과 끝점 교환
Input
C: Curve (커브)
G: Guide (기준 방향)
Output
C: Curve (뒤집힌 커브)
P-Wall (Profile Wall)
P-Wall (Profile Wall)
RhinoInside > Architecture
프로필 커브 기반으로 벽체 생성
Input
P: Profile (프로필 커브)
T: Type (벽 타입)
L: Level (레벨)
Output
W: Wall (벽체)
E-References
E-References
RhinoInside > Element
Revit 요소에서 치수 참조점 추출
Input
E: Element (요소)
Output
F: Face (면 참조)
E: Edge (모서리 참조)
L: Line (선 참조)
DEC[Digital Engineering Corporation]|200시간 과정
365
B+CD+P
BIM-IT 융합 과정
Appendix

컴포넌트 레퍼런스

Appendix

Adaptive Component 배치 관련 컴포넌트

Divide Surface
Divide Surface
Grasshopper > Surface
Surface를 U/V 방향으로 분할하여 격자 생성
Input
S: Surface
U: U Count
V: V Count
Output
P: Points (분할점)
N: Normals
U: U Params
Surface Box (SBox)
Surface Box (SBox)
Grasshopper > Surface
Surface 도메인에서 3D Box 생성
Input
S: Surface
D: Domain
H: Height
Output
B: Box (Brep)
Smaller
Smaller
Grasshopper > Math
A가 B보다 작은지 비교 (A < B)
Input
A: Value A
B: Value B
Output
<=: Result (Boolean)
A-Component
A-Component
RhinoInside > Build
Revit Adaptive Component를 포인트에 배치
Input
P: Points (배치점)
T: Type (AC 타입)
Output
C: Component
DEC[Digital Engineering Corporation]|200시간 과정
366
B+CD+P
BIM-IT 융합 과정
Appendix

컴포넌트 레퍼런스

Appendix

Compound Structure 관련 컴포넌트

CStructLayer
CStructLayer
RhinoInside > Type
Compound Structure의 개별 레이어 정의
Input
F: Function (기능)
M: Material (재질)
T: Thickness (두께)
W: Wrap (래핑)
Output
L: Layer (레이어)
CStruct
CStruct
RhinoInside > Type
Exterior/Core/Interior 레이어를 조합하여 복합 구조 생성
Input
EL: Exterior Layers
CL: Core Layers
IL: Interior Layers
Output
S: Structure (복합 구조)
CompStruct
CompStruct
RhinoInside > Type
복제된 타입에 Compound Structure 적용
Input
T: Type (벽 타입)
S: Structure (복합 구조)
Output
T: Type (수정된 타입)
S: Structure (적용된 구조)
Duplicate
Duplicate
RhinoInside > Type
기존 타입을 복제하여 새 타입 생성
Input
T: Type (원본 타입)
N: Name (새 이름)
Output
T: Type (복제된 타입)
DEC[Digital Engineering Corporation]|200시간 과정
367