Visual Programming 입문
복잡한 형상 생성과 BIM 자동화를 구현합니다
그래픽 코딩 입문 (Grasshopper & Rhino Inside)
강의계획서 - 그래픽 코딩 입문 (Grasshopper & Rhino Inside)
코드 대신 노드를 연결하여 프로그래밍하는 방식입니다.
두 가지 프로그래밍 방식의 특징을 비교합니다.
파라메트릭 디자인을 위한 강력한 Visual Programming 도구
Revit 내에서 Rhino와 Grasshopper를 사용할 수 있는 통합 환경입니다.
Revit에서 Grasshopper를 사용하기 위한 설치 과정입니다.
Rhino.Inside.Revit는 Revit 내부에 임베드 되어서 실행 됩니다. 플러그인을 설치하면 아래와 같은 Tab이 생성됩니다.

Visual Programming for Design
복잡한 문제를 단계별로 분해하고 해결하는 사고 방식입니다.
변수(Parameter)를 통해 형태를 정의하고 제어하는 설계 방식입니다.
Grasshopper 데이터의 기본 구조
Tip: Panel에 연결하면 List의 모든 항목과 인덱스를 확인할 수 있습니다.
List만으로는 왜 부족할까?
1차원 vs 2차원 데이터 구조 비교
Flatten, Graft, Simplify, Flip Matrix
1 Branch = 1 객체 생성
여러 방의 데이터를 하나로 모아 1개의 객체 만들기
각 데이터마다 개별 객체를 만들기
컴포넌트 = 함수, 입력 → 처리 → 출력
핵심: 컴포넌트를 연결한다 = 함수의 출력을 다른 함수의 입력으로 전달한다
함수가 리스트를 만나면 어떻게 될까?
차원별 기본 객체 이해
면 객체의 종류와 관계
곡선/곡면의 부드러움을 결정하는 핵심 개념
두 가지 표현 방식의 이해
방향과 크기를 가진 화살표
X, Y, Z 세 가지 숫자로 방향과 크기를 표현
Unit Vector와 Vector XYZ 컴포넌트
Move 컴포넌트로 Geometry 이동
Shortest, Longest, Cross Reference

Point 생성 - 첫 번째 Definition

Number Slider로 X, Y, Z 좌표값 입력
Construct Point가 3개 좌표를 조합
Panel에서 {500, 500, 500} 좌표 확인
Tip: Slider 더블클릭으로 범위 설정. 연결은 왼쪽 출력 → 오른쪽 입력으로 드래그.
화면 구성 요소와 캔버스 조작법
두 가지 방법으로 컴포넌트를 캔버스에 배치
컴포넌트 연결 방법과 상태별 색상 의미
두 점을 연결하여 선 만들기
Tip: Line 컴포넌트는 Curve → Primitive 탭에서 찾을 수 있습니다. 더블클릭 후 "Line" 검색이 더 빠릅니다.
Line 분할을 통한 다중 선 생성
Tip: Divide 컴포넌트는 Curve → Division 탭에서 찾을 수 있습니다. 분할점(P)과 파라미터(t)가 리스트로 출력됩니다.
Rhino 객체를 Grasshopper에서 참조하기
Tip: 레퍼런스 컴포넌트는 Params → Geometry 탭에서 찾을 수 있습니다. 여러 객체를 선택하려면 Set Multiple을 사용하세요.
컴포넌트 우클릭 메뉴의 전체 기능
Tip: 입력/출력 포트를 우클릭하면 Flatten(⊞), Graft(⊟), Simplify, Reverse 등을 직접 적용할 수 있습니다. 적용된 옵션은 포트 옆에 기호로 표시됩니다.
마우스 가운데 버튼으로 빠른 접근
Tip: 라디얼 메뉴는 컴포넌트 선택 여부에 따라 다른 옵션을 표시합니다. 빈 캔버스에서는 일반 메뉴가, 컴포넌트 선택 시에는 해당 컴포넌트 관련 메뉴가 나타납니다.
기본모델 생성
Grasshopper로 Revit 구조 보를 생성하는 기본 데피니션

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

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

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

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

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

Boundary 커브로 천장 요소 생성

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

Boundary 커브로 지붕 요소 생성

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

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

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

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

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

알고리즘 기획/구현
기둥 중심점에서 가장 가까운 텍스트를 찾아 타입 정보 매칭

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

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

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

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

Grasshopper의 핵심 개념을 쉽게 이해하기
Surface를 다루는 핵심: U방향과 V방향
여러 커브의 교차점을 찾아 활용하기

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

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

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

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

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

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

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

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

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

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

파라메트릭 모델링 및 데이터 전송
강의계획서 - 파라메트릭 모델링 및 데이터 전송
국토정보지리원 Shape 파일로 대지 및 주변 맵 생성
국토정보플랫폼을 통한 GIS 데이터 활용

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

좌표계 이해와 Grasshopper 연동 방법
GIS 데이터를 활용한 사이트 모델링 전체 과정

Food for Rhino에서 다운로드 및 Grasshopper 설치 방법
@it 애드인을 활용한 Shapefile Import 워크플로우

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

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

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

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

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

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

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

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

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

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

배운 내용을 바탕으로 실습 문제를 풀어봅니다
Shapefile to Site 실습 종합 문제
Surface를 이용한 SpaceFrame 생성 알고리즘
Surface 분할 기반 입체 트러스 구조 생성 알고리즘
중복포인트를 활용해서 중복선을 제거하는 알고리즘

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

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

Grasshopper를 이용한 램프 생성 알고리즘
Arc와 Offset으로 기준곡선을 만들고 Sweep2로 기준면 생성

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

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

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

직선 램프 생성과 곡선+직선 램프 결합 실습
복합 경로의 연속적인 램프 구조 설계 실습
구조부재 유형 자동생성 알고리즘
폴리라인을 분해하고 길이별로 정렬하여 가로/세로 치수 추출

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

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

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

핵심 컴포넌트와 데이터 흐름 분석
페이스 선택으로 프로필 벽체 자동 생성

핵심 컴포넌트와 데이터 흐름 분석
알고리즘 개요 및 데이터 흐름

일람표 텍스트 추출과 행/열 데이터 분리
보 타입 선택과 새 타입 자동 생성
8포인트 적응형 컴포넌트 자동 배치

Divide와 SBox를 이용한 격자 셀 생성
8개 꼭지점으로 Adaptive Component 생성
벽 타입의 복합 구조 레이어 자동 정의

CStructLayer와 CStruct로 복합 구조 생성
CompStruct로 새 벽 타입에 구조 적용