Files
Pier_v1/도면작성/QUALITY_REPORT.md
T
2026-11-04 13:34:51 +09:00

68 lines
8.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
> 최신 원본 양식 보강과 변경된 치수 스타일(문자 3mm, 점 기호)은 [REFERENCE_PARITY.md](REFERENCE_PARITY.md)를 우선 참조하세요. 아래는 이전 품질 개선 단계의 기록입니다.
# 교각 일반도 품질 개선 보고서 — 2026-11-03
## 기준 도면과 기존 결과의 차이
기준은 이 폴더의 `[교각-T 형] 01 일반도_20260619.dwg`이다. 첨부 원본과 SHA-256이 같은 파일이며 원본을 수정하지 않았다. 원본의 CXBLKA1 도곽/로고, 표제란 38개 속성, NOTE 21줄을 유지했다. 정면·측면 상단, 두부보·기초 평면 하단, 우측 상세·제원표·키플랜·NOTE 구성도 유지했다.
기존 결과는 고정 슬롯과 형상 경계 중심으로 축척을 정해, 문자와 치수선까지 고려한 점유 영역이 맞지 않았다. 전체·세부 치수가 같은 공간을 차지하고 출력용 문자가 작았으며, 긴 기둥 생략 표시와 실치수의 배치 관계도 미흡했다. 개선 순서는 점유 영역 측정, 치수 레인, 공통 축척·정렬, 출력 스타일, CAD 재읽기 검증이다.
원본 HS_050의 dimtxt=3, 화살표=1을 참고했다. 원본 레이어는 BYDEFAULT 선가중치를 사용하며 CTB가 없으므로 출력 선두께를 원본과 동일하다고 단정하지 않는다. 새 문서는 외형/숨은선/중심선/치수선/해치에 명시적인 선가중치를 지정한다.
## 구현 내용
- 실제 3D 모델 `PierModel`의 투영 형상을 유지한다. 기둥·말뚝 생략은 표시 변환이며 실제 길이·EL·모델 공간 치수는 유지한다.
- 문자 회전·한글 폭·화살표·보조선·기둥 생략을 포함한 점유 영역을 계산한다. 정면/측면은 공통 축척과 EL 정렬을 사용하고, 형상별 열 너비·행 높이와 평면도 축척을 산정한다.
- 짧은 세부 치수를 먼저 배치하고 전체 치수를 외측 레인으로 옮긴다. 짧은 치수의 화살표는 외부로 배치한다. 치수 보조선에는 간격과 연장 길이를 적용한다.
- 생성 치수 문자 2.8mm, EL 2.6mm, 표·일반 문자 최소 2.5mm를 용지 기준으로 관리한다. 원본 도곽 속성/NOTE 문자는 별도 편집값을 유지하므로 이 최소값의 대상이 아니다.
- 받침 12개 초과 시 표 행 간격을 4.2mm에서 3.5mm로 줄이되 2.5mm 문자와 셀 안쪽 여백을 유지한다. 표제란·NOTE 사이의 제한된 영역을 넘기지 않도록 한다.
- 번호가 많은 키플랜은 교각 번호·시종점·북향 문자를 함께 검사하고 필요시 간격과 리더를 조정한다. 상세 EL 문자는 실제 경계 상자로 간섭을 피한다.
- 원본 표제란 시작 경계(841×594 기준 y=537)를 보호한다. 치수표 하단 설명까지 포함해 y=527 이내에 배치한다. 원본 셀보다 긴 편집 속성과 NOTE 초과도 검사한다.
- `품질 검사`에서 문자/외형·문자/문자·도면 간·보호 영역 간섭을 확인하고 해당 위치를 강조하거나 결과 JSON을 저장한다. 의도된 중심 번호/단면 기호는 별도 취급한다. 수동 과대 축척은 임의 축소하지 않고 범위 초과를 보고한다.
문자 경계는 폰트 폭을 보수적으로 추정한 검사다. 실제 CAD 글꼴 대체까지 보장하는 완전한 간섭 해석은 아니며 선의 의도된 연결·표 격자·치수 끝점은 간섭으로 세지 않는다.
## DWG 출력 및 정확성
기존 브라우저 벡터/DXF 경로를 유지하고 로컬 서버의 `DWG 내보내기`를 추가했다. 기존 ground 가상환경과 동봉 LibreDWG를 재사용한다. 새 라이브러리·AI·외부 네트워크는 사용하지 않는다. 정적 파일 호스팅만으로는 Python 변환 경로가 실행되지 않는다.
DWG 2000(AC1015)으로 실제 변환한 후 다시 읽는다. R2004 변환 실험에서는 객체 유실이 확인되어 해당 경로를 사용하지 않는다. 변환기에서 수직 치수 각도를 잃는 문제는 중간 DXF의 AcDbRotatedDimension 그룹 50을 명시해 해결했다. 유효하지 않은 0.10mm 해치 선두께는 CAD 허용값 0.09mm로 수정했다.
다운로드 전에 다음 항목을 비교하며 불일치시 실패로 처리한다.
- Model/Paper별 객체 좌표·문자·해치 패턴과 경계 지문
- 원본 부재를 추적하는 PZ_GA XDATA
- 네이티브 치수 측정값(허용 오차 0.000001mm)
- 레이어 선가중치, 치수 스타일, 문자 폰트, 용지와 출력 설정
Model Space의 정면/측면/평면은 1:1 mm의 생략 없는 형상이다. Layout1은 화면과 공유하는 편집 가능한 용지 도면 객체이며 연동 뷰포트는 아니다. 생략된 Paper 치수 표시는 선/문자로 구성하고 Model에는 실제 네이티브 DIMENSION을 저장한다. 아이소메트릭은 제목에 표시한 생략 여부를 따른다.
R2000에서는 RGB가 ACI로 근사된다. 재읽기 도구가 재질 사전의 잘못된 ACDBPLACEHOLDER 3개를 정리하는 내용도 검증 JSON에 기록한다. 형상·문자·치수 일치와 이 메타데이터 정리를 구분한다. **실제 AutoCAD 직접 열기·출력 검증은 미실시**이며 설치된 AutoCAD 실행 환경이 없다.
## 검증 자료와 사용 방법
`output/quality-review/comparison.html`에서 보관된 개선 전 SVG, 개선 후 SVG, 기준 DWG 렌더링을 비교한다. 다른 교각인 기준 DWG와 픽셀 일치율을 만들지 않았다. 자동 결과의 `before`는 현재 입력의 새 배치 엔진 적용 직전 검사값이며, 보관된 과거 SVG의 간섭 개수와 동일한 의미가 아니다.
도면작성 화면에서 교각을 선택하고 자동 축척으로 생성한 뒤 `품질 검사`와 `DWG 내보내기`를 사용한다. 내보낸 파일 옆의 `.validation.json`은 해당 DWG의 SHA-256과 검증 결과를 담는다. 검증 데이터는 `.cache/`에, 검토 산출물은 `output/quality-review/`에 보존한다.
Chrome 1366×768와 1920×1080에서 페이지 오류와 가로 넘침 없이 도면 선택·팬/줌·레이어·용지 변경, 도곽 편집/JSON 저장·불러오기, DWG 다운로드를 확인했다. 기존 철근/재료표/형상 탭 전환과 500mm 코핑 길이 변경 후 모델 재생성에 따른 도면 갱신도 확인했다.
전체 테스트 538개 중 534개 통과, 기존 실패 4건은 `axis.test.ts`, `bearing-coordinate-frame.test.ts`, `integrated-block.test.ts`, `validate-and-foundation.test.ts`이다. 이들 코어 기능은 변경하지 않았으며 커밋하지 않았다. 타입 검사와 프로덕션 빌드는 통과했다(기존 번들 크기 경고 유지).
도면작성 테스트 14개는 모두 통과했다. 전체 프로젝트 키플랜을 포함한 실제 샘플 교각 63개에서 배치 엔진 적용 직전 검사 339건이 최종 0건으로 줄었고, 투영 형상 변경은 0건이다. 반복 입력의 배치 일치, 강제 과대 축척의 범위 초과 검출, 의도적으로 겹친 문자 검출, 치수표 하단의 실제 표제란 경계 내 배치도 확인했다. 이 0건은 정의된 보수적 간섭 검사의 결과이며 모든 CAD 글꼴·인쇄 조건에서의 무간섭 보증은 아니다.
최종 운곡교 P1 및 산외교 π형 DWG는 `output/quality-review/final/`에 있다. 각각 49개/54개의 네이티브 치수를 포함하며 재읽기 최대 치수 오차는 약 7.3×10⁻¹²mm, 감사 오류는 0건이다. 객체·출처·스타일·용지 설정 비교도 통과했다. 각 파일의 `.validation.json`에 개별 결과를 보존한다.
## 변경 파일과 범위
신규 핵심 모듈: `cad-style.ts`, `dimension-graphics.ts`, `occupancy.ts`, `quality-layout.ts`, `frame-quality.ts`, `quality-panel.ts`, `dwg_export.py`, `dwg-server.ts`.
연결/출력/표현 변경: `drawing.ts`, `types.ts`, `presentation.ts`, `project-views.ts`, `bearing-detail.ts`, `sheet.ts`, `svg.ts`, `dxf.ts`, `workspace.ts`, `workspace.css`, `drawing.test.ts`, `.gitignore`, `README.md`.
이번 품질 개선의 폴더 외 수정은 `vite.config.ts`의 DWG 경로 플러그인 등록이다. 기존 `index.html`/`src/main.ts` 탭 연결 변경은 이전 도면작성 구현이며 이번에는 수정하지 않았다. 기존 철근·재료표·형상 코어를 바꾸지 않았다.
## 남은 한계
현재 63개 실제 샘플은 받침 본체/솔플레이트 상세 제원이 없어 A/B/S 등은 미확인으로 남는다. 모델에 없는 변단면 기초·모따기·도로 선형·교대와 시공 조건은 복제하지 않는다. 완전한 부재 가림 판정, 다주 교각의 모든 개별 높이 연쇄 치수, 실제 CAD 폰트·CTB 출력 검토는 추가 확인이 필요하다. 이 결과를 설계 검토 없이 완성 납품 도면으로 판정하지 않는다.