--- status: stable page_id: B08_DesignDetail related_pages: ["[[B08_DesignDetail/B08_CAD_commands]]", "[[B08_DesignDetail/B08_cross_structure_sheets]]", "[[B08_DesignDetail/B08_drawing_masshaul_watershed]]"] last_updated: 2026-08-30 source: ["docs/raw/plans/2026-08-30_plan_B08_CAD_blocks_interaction_tables.md", "docs/raw/verification/2026-08-30_verify_B08_CAD_blocks_interaction_tables.md"] --- # B08 CAD TableEntity ## 모델 | 필드 | 역할 | |---|---| | `origin` | 표 좌측 상단 | | `columnWidths`·`rowHeights` | 비균일 열폭·행높이 | | `cells` | text·key·병합 span·정렬·색·글꼴·굵게·기울임 | 표는 격자 선과 문자를 따로 저장하지 않고 병합 경계까지 스스로 계산하는 단일 엔티티다. 회전·대칭은 지원하지 않으며 표를 선+문자로 분해할 수 있다. ## 기능 | 항목 | 위치 | 역할 | |---|---|---| | `TableEntity` | `openwebcad/src/entities/TableEntity.ts` | 렌더·직렬화·이동·크기 변경 | | `table-geometry.ts` | `openwebcad/src/helpers/table-geometry.ts` | 셀·병합·경계·클릭 판정 | | 표 명령 | `openwebcad/src/tools/annotate/table-tools.ts` | 생성·편집·행열·병합·해제 | | `extract_quantity_table()` | B08 backend | 셀 key 기반 수량 역추출, 구 Text-id 폴백 | ## 이관 범위 - 유역 정보표: 2열 20/26mm, 유역별 4행. - 횡단 수량표: 머리 8등분과 본문 11열을 합친 18열·8행 병합표. - 토적도·종단표는 측점 위치 그래픽과 곡선 표시가 섞여 있어 이관하지 않았다. ## 검증·후속 Vitest 31/31, 횡단표 18열·8행·108×40mm와 유역표 46×18mm 좌표·병합·값 왕복을 확인했다. DXF `ACAD_TABLE`/블록+속성/선+MTEXT 매핑 문서화는 결재·다운로드 작업에 남겼다.