2026-08-28 세션 — DWG 자재수집(matcollect) 신규 — 개요·구조
handoff.md 에서 원문 그대로 이관한 조각(26.10.20 캡 20,000자 정리). 아래 「논의·대안」 = 원문 무변경.
논의·대안
🆕 신규 — DWG 자재수집(matcollect) 26.8.28(목)
AutoCAD 도면 텍스트를 팔레트에서 페페가 직접 집어 pfs 「현장별 자재」 draft 로 보내는 툴. 자동 파서보다 먼저 만든다 — 페페 판단 이력(원문·좌표·수정)을 쌓아 추후 자동화 재료로 삼는 것이 목적. 계획페이지 = devplan
/matcollect.html(허브 카드 등록 완료) · 지시문 =C:/dev/acad-tread-plugin/matcollect/
- 🔴pfs 자재탭 프런트
normalize()가 데이터를 지운다 —cells[부위키]는 문자열이 아니면 삭제,parts에 없는 키도 삭제, location 은{id,name,drawingRef,cells}4키로 재조립(여분 필드 소멸). 그래서 원문·좌표를 셀에 넣으면 웹이 한 번 열리는 순간 사라진다. 실을 자리 = pool 아이템(colors/cores/edges)의 여분 키(Object.assign(기본값,항목)이라 보존) + 최상위doc.captureLog[](최상위는 통째 재조립 안 함). 검사 =matcollect/test_merge.py(웹 normalize 생존까지 확인, PASS 9/9). - 🔴팔레트는 결정론적 id 를 써야 한다 —
type:84㎡A·loc:kitchen:상부장·c:GY123 MT. 서버_merge_docs가 id 기준 병합이라 랜덤 id 면 재전송마다 같은 위치가 중복으로 쌓인다. - ⚠
_merge_docs함정 2개: ①merged=dict(old)얕은 복사라 old 를 in-place 로 고친다(서버는 매번 DB에서 새로 파싱해 무해, 한 객체 재사용하면 물림) ②captureLog를 병합 안 해서 new 쪽 이력이 통째로 버려졌다 → 26.8.28 append-only 누적 추가(material_spec_dao.py). - ✅MTEXT 순수 텍스트 =
MText.Text(서식코드 제거됨).Contents가 원본 코드. 정규식으로 벗기지 마라(분수\S·문단\P를 깨뜨린다). 파이썬 COM 의TextString은Contents쪽이라 서식이 섞여 나온다 — 그래서 덤프 JSON 에는 서식코드가 남아 있다. - ✅2024 참조 빌드가 AutoCAD 2016(R20.1)에서 실제로 돈다 — 사무실PC
tread_log.txt26.8.28 13:07:38AcadTread Terminate로드 실적 확인. 코덱스는 「공식 호환표상 불가」라 했으나 실측이 반박. 단 2016 에 없는 API 를 쓰면 런타임에 터진다 → 쓰는 API 는 구형으로만 고른다. - 도면 클릭 취득 경로 = 팔레트 버튼 →
doc.SendStringToExecute("MATPICKTEXT ")→[CommandMethod]안에서Editor.GetNestedEntity. 기존TREADSETHATCH가 이미 같은 패턴(모덜리스 팔레트 포커스 문제 해결됨).GetNestedEntity는 블록 안 텍스트까지 잡고 좌표는res.Transform으로 WCS 변환. - 도면 양식 2종 실측 — 에넥스(
(업체/컬러넘버)소괄호·전면 유사 P.P·레이어에넥스 주방) / 대조군([업체]컬러넘버대괄호·DOOR·BODY·CASING(S/R)).K=주방·F=일반가구(도면주방가구 사양서/일반가구 사양서, 도면번호-K10M) → pfskitchen/general.
결정
원문 안에 포함(이관 조각이라 별도 추가 없음).
산출물·커밋
원문 안에 포함.
다음
원문 안의 미결·후속 참조. 상태 = 종결.
관계
- 주제 그룹: acad-tread
- 관련 문서: acad-tread-handoff