고객 프로필
이 고객은 교통 인프라 컨설팅 회사에 소속된 CAD 기술자 또는 도시계획 전문가입니다. 보통 20명에서 100명 규모의 회사로, 버스터미널, 철도역, 환승 허브 같은 교통 시설의 현장 계획 문서를 관리합니다. 이들의 일상 업무는 수량 산출, 인허가 신청, 시공사 인계 패키지에 반영되는 CAD 도면을 유지·감사하는 일입니다.
이 정도 규모의 회사에서는 DXF 파일을 의미 단위로 파싱하는 전용 소프트웨어가 없는 경우가 많습니다. 기술자는 AutoCAD 또는 호환 뷰어에서 레이어 가시성과 블록 속성 대화상자를 오가며 객체를 수동으로 집계합니다. 도면이 잘 정리되어 있고, 가구나 차량 유형마다 이름이 붙은 재사용 가능한 블록 삽입으로 구성되어 있다면 집계는 번거롭지만 감당할 수 있습니다. 하지만 형상이 폭발(explode)되어 있거나 부서별로 블록 명명 규칙이 일관되지 않으면, 감사 작업은 오류가 발생하기 쉬운 일이 되고 하루 종일 걸려도 최종 수치가 맞는지 확신할 수 없습니다.
문제
감사 대상 도면은 버스터미널의 지상 배치를 담은 다중 구역 DXF 현장 계획이었습니다. 여기에는 최소 6개 기능 범주의 객체가 포함되어 있었습니다. 주차 구역의 노란색 자동차, 푸드코트 구역의 의자와 테이블, 차량 베이의 버스, 그리고 도면 오른쪽에 있는 식생 레이어가 큰 나무와 작은 관목으로 나뉘어 있었습니다.
표면적으로는 전형적인 수량 산출처럼 보입니다. 하지만 실제로는 단순한 블록 카운트 방식이 신뢰할 수 없게 만드는 구조적 문제가 두 가지 있었습니다.
첫째, 주차 구역의 노란 차량은 재사용 가능한 블록 삽입으로 배치된 것이 아니라 폭발된 상태였습니다. 잘 정리된 도면이라면 차량 심볼 33개가 있었을 텐데, 실제로는 7,504개의 개별 선 엔티티, 4,778개의 호 엔티티, 67개의 원 엔티티로 존재했으며, vehiculos 레이어 전반에 걸쳐 총 12,349개의 프리미티브로 흩어져 있었습니다. 셀 수 있는 블록 참조가 없었기 때문에 분석가는 기하학적 대리값, 구체적으로는 67개의 바퀴 원 마커를 바탕으로 차량 수를 추론하고, 도면 경계에서 잘리거나 일부만 보이는 차량에 대한 보정 계수를 적용해야 했습니다.
둘째, 터미널 구역의 가구 및 사람 활동 심볼은 신뢰할 수 있는 명명 규칙을 공유하지 않았습니다. 초기 분류에서는 블록 A$C206D7EC0의 60개 인스턴스를 의자 후보로, 블록 A$C05075C2A의 11개 인스턴스를 테이블 후보로 식별했습니다. 하지만 두 수치 모두 틀렸습니다. 시각 검토 결과 첫 번째 블록은 piso 레이어에 배치된 문 또는 바닥 스윙 심볼이었고, 두 번째 블록은 사람 형상 심볼이었습니다. 둘 다 가구가 아니었습니다. 실제 식당 의자는 완전히 다른 블록(mobiliario 레이어의 0Q62D)이었고, 총 36개 인스턴스였습니다. 문과 사람 심볼을 제외한 뒤의 실제 테이블형 가구 후보는 4개뿐이었습니다.
각 오분류마다 전체 재검토 사이클이 필요했습니다. 블록 ID를 식별하고, 레이어를 확인하고, 문맥 속에서 형상을 검토하고, 수치를 업데이트한 뒤, 감사 결과물을 다시 생성해야 했습니다. 이러한 사이클을 수동으로 수행하는 것, 즉 필터 대화상자를 불러오고, 선택 집합을 다시 생성하고, 하위 도면을 내보내는 작업은 최종 답이 타당한지 보장도 없이 몇 시간을 잡아먹는 전형적인 반복 CAD 작업입니다.
왜 지금인가
교통 인프라 프로젝트는 단계별 문서화 요구사항을 따릅니다. 버스터미널이 설계 개발 단계에서 시공 문서 단계로 넘어가면, 설계팀은 비용 산정 담당자에게, 그리고 공적 자금이 투입되는 경우에는 승인 기관에 검증된 수량 목록을 제공해야 합니다. 문이 의자로 집계되거나 식생이 구조화된 주차와 혼동되는 식의 객체 오분류는 자재 산정, 피난 계산, 프로젝트 예산에 연쇄적인 오류를 만듭니다.
이 사례에서 감사는 문서 인계의 전제 조건이었습니다. 도면은 여러 전문 분야의 기여를 거치며 발전해 왔고, 그 과정에서 레이어 명명이 일관되지 않게 되었으며 차량 형상도 폭발된 상태가 되었습니다. 기술자는 파일이 고정되어 시공용으로 발행되기 전에 신뢰할 수 있는 최종 수치가 필요했습니다.
왜 energent.ai인가
기술자가 선택할 수 있는 대안은 제한적이었습니다. AutoCAD에서 수동 블록 카운트를 하려면 레이어 필터를 설정하고, 카운트 명령을 실행하고, 각 결과를 수동으로 검증해야 합니다. A$C206D7EC0처럼 의미 없는 해시 문자열 형태의 블록 ID가 있을 때는 이 과정이 특히 비효율적입니다. DXF 파싱 라이브러리를 사용해 맞춤형 Python 스크립트를 작성하는 방법도 기술적으로는 가능했지만, 팀에 없는 개발 시간이 필요했고, 재분류를 상호작용적으로 반복할 수 없는 일회성 도구가 될 가능성이 컸습니다.
energent.ai는 다른 방식을 제공했습니다. DXF 파일을 직접 불러오고, Python과 bash 명령을 실행해 형상을 파싱하며, 필터링된 감사용 DXF 파일을 결과물로 생성하고, 자연어 수정 지시를 통해 분류 로직을 반복 개선할 수 있는 대화형 에이전트였습니다. 분석가는 코드를 작성할 필요가 없었습니다. 수치가 틀리면 수정은 한 문장으로 충분했습니다. "저건 의자가 아니라 문 심볼입니다." 그러면 에이전트가 분류를 다시 실행하고, 잘못 집계된 블록을 제외한 뒤, 같은 세션 안에서 수정된 감사 파일을 생성했습니다.
중요하게도 energent.ai는 중간 출력 파일, 즉 객체 범주별 DXF를 생성하므로 기술자는 기존 CAD 뷰어에서 열어 시각적으로 검증한 뒤 수치를 승인할 수 있습니다. 이는 독립형 스크립트나 BI 대시보드로는 구현하기 어려운, 자동 분석과 사람의 최종 승인 사이의 폐루프를 완성했습니다.
워크플로
1단계 — 파일 업로드 및 레이어 조사. 기술자는 버스터미널 DXF를 업로드했습니다. 에이전트는 레이어 이름(vehiculos, mobiliario, piso, BUSES, vegetacion)과 블록 ID를 스캔하고, 각 레이어별 서로 다른 엔티티 유형과 수량의 예비 목록을 생성했습니다.
2단계 — 차량 분리. 분석가는 좌측 상단 주차 구역의 노란 자동차 수를 요청했습니다. 에이전트는 vehiculos 레이어에 블록 삽입이 없고, 총 12,349개의 프리미티브로 이루어진 선, 호, 원 형상만 존재한다는 점을 확인했습니다. 67개의 원 엔티티를 바퀴 마커로 분리하고, 자동차당 두 개의 바퀴 원이 있다는 가정하에 33대의 차량으로 추정했으며, 도면 가장자리의 부분 마커 1개를 반영했습니다. 또한 전용 감사 DXF를 생성해 시각 검증이 가능하도록 했고, 이 수치가 블록 카운트가 아니라 형상 기반 추정치임을 명시했습니다.
3단계 — 가구 분류, 첫 번째 패스. 에이전트는 터미널 구역 중간 왼쪽에서 후보 가구 블록을 식별하고, 한 블록은 의자 60개, 다른 블록은 테이블 11개로 반환했습니다. 분석가는 감사 DXF를 검토한 뒤 분류를 수정했습니다. 60개로 집계된 블록은 piso 레이어의 문 또는 바닥 스윙 심볼이었고, 11개로 집계된 블록은 사람 형상이었습니다. 둘 다 가구 수량에 포함되어서는 안 됐습니다.
4단계 — 가구 재분류, 수정 패스. 형상 문맥 보정을 적용한 뒤 에이전트는 분류를 다시 실행했습니다. mobiliario 레이어의 블록 0Q62D를 식당 의자 36개로 유지했고, 문 및 사람 형상을 모두 제외한 뒤 블록 dfy와 SofaA2C를 테이블형 가구 후보 4개로 식별했습니다. 에이전트는 식당 의자, 테이블 후보, 그리고 제외된 두 범주 각각에 대해 별도의 감사 DXF를 생성해 분석가가 각 제외 항목을 독립적으로 확인할 수 있게 했습니다.
5단계 — 버스 및 식생. 에이전트는 BUSES 레이어에서 버스 심볼 41개를 식별했고, 도면 오른쪽에서는 큰 나무 블록 5개와 작은 관목 심볼 46개를 구분하여 각 범주별 명명된 감사 DXF를 생성했습니다.
6단계 — 최종 감사 패키지. 에이전트는 완전한 최종 수량표를 작성하고, 속성이 포함된 전체 도면 DXF를 생성했으며, 프로젝트 문서 패키지에 포함할 수 있도록 자연어 Markdown 요약본을 만들었습니다.

Results
감사는 블록 명명 규칙이 전혀 신뢰할 수 없고 하나의 객체 유형은 완전히 분해된 도면에서, 여섯 개 객체 범주에 대한 검증된 수량을 산출했습니다:
| Object | Final count |
|---|---|
| Yellow cars (geometry-estimated) | 33 |
| Dining chairs | 36 |
| Table-like furniture candidates | 4 |
| Buses | 41 |
| Large trees | 5 |
| Small bushes | 46 |
초기 오분류 세 건도 찾아내 수정했습니다. 처음에는 터미널 행 의자로 태깅된 문/바닥 스윙 심볼 60개, 테이블로 태깅된 사람 형상 심볼 11개, 그리고 첫 번째 패스에서 차량 레이어와 혼동된 식생 심볼이었습니다. 각 수정 사이클은 전체 수동 재검토가 아니라 단 한 번의 대화형 교환만으로 완료되었습니다.
에이전트는 객체 범주별로 하나씩, 그리고 두 개의 제외 검증 파일을 포함한 총 11개의 명명된 감사 DXF 파일과 전체 Markdown 요약을 생성했습니다. 그 결과, 수작업 집계 스프레드시트를 대체하면서도 팀원 누구나 열어 검증할 수 있는 추적 가능한 파일별 감사 이력을 제공했습니다.
Proof
"도면은 세 개의 전문 분야를 거치면서 블록 이름이 완전히 불투명해졌습니다. A$C206D7EC0가 문 심볼이라는 걸 각 인스턴스를 하나씩 열어보지 않고는 알 방법이 없었죠. energent.ai가 준 것은 '이건 뭔가 이상하다'고 말하고, 레이어 관리자에서 또 한 시간을 보내는 대신 몇 초 만에 수정된 파일을 돌려받는 능력이었습니다."
— CAD technician, transportation infrastructure consultancy
에이전트가 생성한 산출물인 bus_terminal_dxf_tldr.md Markdown 요약과 범주별 감사 DXF 전체 세트는 DXF 호환 뷰어라면 어떤 것이든 열 수 있으며 원본 도면과 대조할 수 있습니다. 속성이 부여된 전체 도면 DXF에는 감사 출처가 파일 내부에 직접 포함되어 있어, 프로젝트 기록용으로도 추적 가능하게 결과를 남깁니다.
Trust note
노란색 자동차 수 33은 블록 개수의 확정값이 아니라 기하학적 추정치입니다. 차량이 재사용 가능한 삽입이 아니라 분해된 기본 도형으로 그려졌기 때문에, 이 수치는 각 자동차가 67개의 원 마커 총합에 정확히 두 개의 바퀴 원 마커를 기여한다는 가정에 기반합니다. 이 숫자를 공식 수량 산출서에 사용하거나 규제 기관에 제출하기 전에, 분리된 차량 감사 DXF를 원본 도면과 시각적으로 대조해야 합니다. 마찬가지로 table-like furniture candidates는 제외 필터링 후 남은 기하학을 의미하므로, 해당 수량을 최종값으로 간주하기 전에 도메인 전문가가 각 인스턴스를 건축 의도와 대조해 확인해야 합니다. Energent.ai의 출력은 감사 사이클을 가속하고 수동 집계 방식이 흔히 놓치는 오분류를 드러내지만, 애매한 분류에 대한 기술자의 최종 승인까지 대체하지는 않습니다.
