BIM독학기
[Revit] 도어 패밀리 제작기: IF와 NOR 조건을 활용한 개폐 가시성 제어
kai_lee
2026. 5. 12. 13:59

안녕하세요. B[BIM] Revit/Dynamo 독학 연구소입니다. 오늘은 BIM 라이브러리의 꽃이자 난도가 높은 '도어 패밀리' 제작 노하우를 공유합니다. 단순히 문을 그리는 것을 넘어, 개폐 상태에 따라 가시성이 유동적으로 변하는 '똑똑한 패밀리'를 만드는 법을 정리했습니다.
1. 문제 진단: 왜 도어 패밀리는 터지거나 꼬이는가?
도어 패밀리 제작 시 가장 흔히 겪는 문제는 구속조건의 충돌입니다.
- 기하학적 충돌: 문이 닫혔을 때(0°)와 열렸을 때(90°)의 참조선(Reference Line)이 동일 평면상에 놓이면서 구속이 깨지는 현상이 빈번합니다.
- 논리적 혼선: '열림'과 '닫힘' 상태가 공존할 때, 가시성 매개변수가 서로 독립적으로 작동하면 두 상태의 선이 겹쳐 보이는 무결성 오류가 발생합니다.
2. 해결 방법 (Revit): 공식 기반의 가시성 제어
다이너모 없이 Revit 패밀리 에디터 내에서 IF와 NOR 논리를 활용해 완벽한 가시성을 구현하는 워크플로우입니다.
- 참조선 및 각도 구속: 참조면(Plane)이 아닌 참조선(Line)을 사용해 회전축을 잡고 각도 매개변수를 부여합니다.
- 매개변수 설정:
- Is_Open (Yes/No): 사용자가 제어하는 주 매개변수.
- Is_Closed (Yes/No): 공식란에 not(Is_Open) 입력. (이것이 실질적인 NOR/NOT 로직입니다.)
- 가시성 연결:
- 문이 닫혔을 때 (은선 표현): 문 열림 방향 기호선을 선택하고 가시성(Visible) 항목을 Is_Closed에 연결합니다.
- 문이 열렸을 때 (패널 및 궤적): 실제 열린 문 패널과 궤적선을 Is_Open에 연결합니다.
- 결과: Is_Open 체크박스 하나만으로 닫힌 상태의 은선과 열린 상태의 실선이 서로 배타적으로 작동하게 됩니다.

3. 다이너모 설계 (Dynamo): 인스턴스 일괄 개폐 제어
프로젝트에 배치된 수많은 문을 한꺼번에 열거나 닫아야 할 때, 혹은 특정 조건(예: 소방 구획)에 따라 가시성을 조정할 때 유용한 자동화 로직입니다.
[노드 구성 단계]
- Categories (Doors) -> All Elements of Category: 프로젝트 내 모든 도어 요소를 수집합니다.
- Element.GetParameterValueByName: 현재 'Is_Open' 매개변수 상태를 가져옵니다.
- Code Block (Python Script): 논리 전환을 위한 간단한 코드입니다.
-
# IF/NOR 논리 적용 input_status = IN[0] output = [not status for status in input_status] OUT = output - Python
- Element.SetParameterByName: 계산된 결과(True/False)를 다시 'Is_Open' 매개변수에 주입하여 모든 문의 상태를 일제히 반전시킵니다.
4. 전문가 팁: 작업 효율을 높이는 한 끗
"참조선(Reference Line) 끝점을 '열쇠'로 잠그세요."
도어 패널이 회전할 때 패밀리가 터지는 것을 방지하려면, 참조선의 끝점을 프레임 모서리의 교차점에 **Align**한 뒤 반드시 자물쇠를 채워야 합니다. 이때 Tab 키를 눌러 참조선의 정확한 '끝점(Dot)'이 선택되었는지 확인하는 것이 포인트입니다. 이 작은 습관 하나가 패밀리의 안정성을 결정합니다.
자료가 필요하시면 댓글 주세요!