BIM자동화데이터관리실무

사람 눈으로 수백 개 오류를 찾는다고? BIM 모델 검토 자동화

MADE IN WORKS·2025. 4. 12.·4분 읽기

개요

BIM 모델 검토(QA/QC)는 프로젝트 품질을 보장하는 핵심 프로세스지만, 수동으로 하면 엄청난 시간이 소요된다. "벽이 바닥 아래로 내려가 있다", "창문 레벨이 잘못되었다", "파라미터 값이 비어 있다" 같은 수백 개의 문제를 사람 눈으로 일일이 찾아내는 것은 비현실적이다. 모델 검토 자동화는 BIM의 "숨겨진 가치"를 끌어내는 최고의 방법이다.

모델 검토 자동화의 대상
  1. 형상 오류: 간섭(Clash), 중복 요소, 누락 요소
  2. 데이터 오류: 필수 파라미터 누락, 잘못된 값, 포맷 불일치
  3. 규칙 위반: 회사 표준·발주처 요구 사항 위반
  4. 일관성 오류: 객체 간 속성 불일치, 명명 규칙 위반

Solibri를 활용한 모델 검토 자동화

Solibri는 BIM 모델 검토의 강력한 도구다. 규칙(Rule) 기반으로 모델을 분석하고, 위반 사항을 리포트로 만들어준다.

주요 검토 규칙 예시:

  • 공간(Space)이 누락된 영역 찾기
  • 계단의 최소 너비·최대 높이 계산
  • 문/창문이 벽과 완전히 교차하는지 확인
  • 화재 구역 간 벽의 내화 성능 확인
  • IFC 속성이 필수로 채워져 있는지 확인
Solibri는 만능이 아니다
Solibri는 IFC 기반으로 동작하기 때문에, IFC 내보내기 설정이 잘못되면 검토 결과도 엉터리가 된다. IFC 내보내기 옵션에서 내보낼 속성과 형상 수준을 반드시 확인하라. "Garbage in, garbage out"은 여기서도 적용된다.

Revit API로 커스텀 검토 도구 만들기

Solibri 같은 외부 도구가 없어도 Revit API로 직접 검토 도구를 만들 수 있다. 파이썬 스크립트로 PM(Project Manager) 레벨에서 바로 실행할 수 있다.

검토 1: "모든 외벽에 단열재가 적용되었는가?"

"""외벽 단열재 속성 검토"""
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *

doc = __revit__.ActiveUIDocument.Document

# 모든 벽 수집
walls = FilteredElementCollector(doc)\
    .OfClass(typeof(Wall))\
    .ToElements()

issues = []
for wall in walls:
    # 외벽 판별 (기능 파라미터 확인)
    func_param = wall.get_Parameter(
        BuiltInParameter.FUNCTION_PARAM
    )
    if func_param and func_param.AsInteger() == 1:  # 1 = Exterior
        # 단열재 파라미터 확인
        insulation = wall.get_Parameter(
            BuiltInParameter.INSULATION_THICKNESS
        )
        if insulation and insulation.AsDouble() == 0:
            issues.append({
                'id': wall.Id,
                'name': wall.Name,
                'issue': '단열재 두께가 0입니다'
            })

# 결과 출력
print(f"=== 외벽 단열재 검토 결과 ===")
print(f"검토 대상 벽: {len(walls)}개")
print(f"문제 발견: {len(issues)}개")
for issue in issues:
    print(f"  - ID {issue['id']}: {issue['name']}{issue['issue']}")

검토 2: "필수 파라미터가 누락된 객체 찾기"

프로젝트에서 정의한 필수 파라미터가 누락된 모델 요소를 찾아내는 검토 도구다.

"""필수 파라미터 누락 검토"""
required_params = ['화재_등급', '자재_코드', '설치_일자']
target_categories = [
    BuiltInCategory.OST_Walls,
    BuiltInCategory.OST_Doors,
    BuiltInCategory.OST_Windows
]

for category in target_categories:
    elements = FilteredElementCollector(doc)\
        .OfCategory(category)\
        .WhereElementIsNotElementType()\
        .ToElements()
    
    for elem in elements:
        missing = []
        for param_name in required_params:
            param = elem.LookupParameter(param_name)
            if param is None or param.HasValue == False:
                missing.append(param_name)
        
        if missing:
            print(f"ID {elem.Id}: {missing} 파라미터 누락")

검토 3: "레벨 오류 검토 — 창문이 바닥 아래에 있음"

"""창문 레벨이 바닥보다 낮은지 검토"""
windows = FilteredElementCollector(doc)\
    .OfCategory(BuiltInCategory.OST_Windows)\
    .WhereElementIsNotElementType()\
    .ToElements()

floors = FilteredElementCollector(doc)\
    .OfCategory(BuiltInCategory.OST_Floors)\
    .WhereElementIsNotElementType()\
    .ToElements()

# 각 층의 높이 수집
floor_elevations = {}
for floor in floors:
    base_offset = floor.get_Parameter(
        BuiltInParameter.FLOOR_HEIGHTABOVELEVEL_PARAM
    )
    if base_offset:
        level = doc.GetElement(floor.LevelId)
        floor_elevations[floor.Id] = level.Elevation + base_offset.AsDouble()

# 창문 검토
for window in windows:
    window_level = doc.GetElement(window.LevelId)
    if window_level and window_level.Elevation < 0:
        print(f"창문 ID {window.Id}: 레벨이 바닥보다 낮음")

검토 결과 리포트 템플릿

검토 결과를 일관된 형식으로 출력하면 팀원들과 공유하기 쉽다.

# 모델 검토 리포트 — 2026-07-10

## 검토 요약
- 검토 일시: 2026-07-10 14:00
- 검토 범위: 전체 모델 (건축)
- 발견된 문제: 47개
- 심각: 5개 / 보통: 22개 / 경미: 20개

## 문제 목록
| ID | 객체 | 문제 유형 | 설명 | 심각도 |
|----|------|---------|------|-------|
| 12345 | 외벽_1층 | 단열재 누락 | 단열재 두께가 0mm | 심각 |
| 12346 | 창문_2층 | 레벨 오류 | 창문 하단이 바닥보다 낮음 | 심각 |
| ... | ... | ... | ... | ... |

## 권장 조치
1. 단열재 누락 문제: 가장 시급, 모델러 확인 필요
2. 레벨 오류: 구조팀과 협의 필요
3. 파라미터 누락: 다음 주간 검토에서 재확인
검토는 자동화해도 조치는 사람이 한다
아무리 좋은 검토 도구도 발견한 문제를 수정하는 것은 결국 사람의 몫이다. 검토 자동화를 도입할 때는 "발견 → 할당 → 수정 → 확인"의 워크플로우까지 함께 설계해야 한다. 검토 결과를 Excel이나 BIM Collaborate(ACC)의 이슈 트래킹과 연동하면 효과적이다.

자동 검토 주기와 프로세스

모델 검토는 정기적으로 수행해야 뒷공정에서 문제가 터지는 것을 방지할 수 있다.

시점검토 내용담당자
매일 (야간 배치)기본 형상 오류, 중복 요소시스템 자동
매주 (월요일)필수 파라미터 누락, 명명 규칙BIM 매니저
매월 (마감 후)전체 규칙 기반 검토, 간섭 체크BIM 매니저 + 분야별 모델러
마일스톤 (단계 완료)발주처 요구 사항 충족 여부전체 팀

마무리

모델 검토 자동화는 BIM 프로젝트의 품질을 보장하는 가장 확실한 방법이다. Solibri 같은 전문 도구와 Revit API 기반 커스텀 스크립트를 조합하면, 검토 시간을 90% 이상 절약하면서 발견되는 오류의 수는 오히려 증가한다. "모델 검토는 나중에 한 번에 하자" — 이 말은 BIM 프로젝트에서 가장 위험한 말 중 하나다. 작은 오류가 후공정에서 눈덩이처럼 불어나기 때문이다.

다음 글에서는 검토 자동화와 연결되는 Excel과 Revit 데이터 연동 자동화를 다룬다.