acad-tread — 그룹 입력 트리 모달 + 통합툴 인스톨러 재생성 (2026-08-06)
페페 지시: "TREAD 툴에서 입력/탐지에서 그룹입력을 트리형태로 구성해서 모달로 뜨게 해줘. 항목별 파트 치수도 보이게 해서 내용을 파악한뒤 그룹이름 옆에 추가 버튼을 달아서 추가 버튼으로 목록에 들어가는 형태로 사용원한다. 통합툴 인스톨러 생성까지 작업 해."
무엇이 바뀌었나
전 = SampleGroupForm — 그룹명만 나열하는 리스트박스 1단. 치수가 안 보여 내용을 못 보고 골랐고, 하나 고르면 창이 닫혀 그룹마다 버튼을 다시 눌러야 했다.
후 = SampleTreeForm — 3단 트리 모달.
▾ 도어 (14)
▾ 손잡이도어 상하110/770 · 2품목 [+ 추가]
도어 | 18T | 396 × 2167 | 1개 | 엣지 3 | 상하110/770
손잡이판 | 4.5T | 70 × 2167 | 1개
▸ 하부도어 [446*638=1] 상하110 · 1품목 [+ 추가]
▾ EP (58) … ▾ 도장 (39) … ▾ 오픈장 (5) …
- 구분 =
poin_sample_group.group_div— 10=도어 / 20=EP / 30=도장 / 40=오픈장. 근거 =poincad/poincad/Form_Item_List.Designer.vb의 탭 버튼 텍스트(같은 코드로 조회).poin_common_code에는 SAMPLE_DIV 계열이 없다(찾다 시간 쓰지 말 것). 미지 코드는구분 <코드>로 폴백. - 그룹 라벨 = 이름 +
[규격]+ 비고 +· n품목. 규격(dimension)을 넣은 이유 = 동명 그룹이 규격으로만 갈린다(예:상부EP ㄱ자가25*768/100*768/25*828/100*768둘). - 품목 라벨 =
품명 | 두께T | 가로 × 세로 | 수량개 | 엣지 n | 비고(엣지 0·비고 없으면 생략). - [+ 추가] 칩 = 그룹 라벨 오른쪽에 직접 그린다. 누르면 그 그룹 품목이 즉시 입력 그리드로 들어가고 창은 안 닫힌다 → 여러 그룹 연속 추가, 하단에
추가됨: n그룹 m행. - 검색(그룹명·비고·규격 부분일치) ·
품목 펼치기토글 · Enter=선택 그룹 추가 · 삽입 후 그리드 맨 아래로 스크롤. - 삽입 규칙은 종전 그대로 —
InsertSampleRow(속성 이어받기, 엣지는 좌/우 컬럼에 안 넣음).
구현 함정 (재발 방지)
- 🔑
node.Bounds가 실제 그려진 글자보다 짧게 잡힌다 — 그 값으로 칩을 붙였더니 긴 라벨에서 칩이 글자를 덮었다(캡처로 2회 확인). 해결 =TextRenderer.MeasureText(node.Text, _tree.Font)로 직접 잰 폭과Bounds.Right중 큰 쪽 + 여백. 칩 x는ChipCol(330)바닥을 둬 대부분 세로로 정렬된다. - 오너드로우는 텍스트까지 그리지 않는다 —
DrawMode=OwnerDrawText+e.DrawDefault = true로 두면 텍스트·선택 하이라이트는 기본 렌더러가 그리고 칩만 얹으면 된다. 텍스트를 직접 그리면 선택색·클리핑을 전부 떠안는다. - 칩 클릭 판정 =
TreeView.GetNodeAt(x,y)는 라벨 오른쪽(TVHT_ONITEMRIGHT)에서도 노드를 돌려준다 → 별도 히트테스트 불필요. - DB 왕복은 2번 — 그룹 1회 +
LoadAllSampleItems()1회(전체 233행). 트리에 치수를 미리 펼치려면 그룹별 조회는 116회 왕복이라 폐기했다.
검증
- 자가검증 러너 신설
_verify/SampleTreeCheck.csproj(AutoCAD·DB 없이 도는 net48 콘솔) —dotnet run --project "_verify\SampleTreeCheck.csproj" -c Release - 기본 = 17항목 ALL PASS(구분 매핑·미지코드 폴백·그룹/품목 라벨 문자열·빈 그룹 표시·검색 3종·칩이 라벨 오른쪽·라벨 클릭은 추가 안 됨·칩 클릭 콜백·품목 전량 전달·상태 누적).
--live= 실 POIN MSSQL(192.168.0.41,64910) 조회로 트리 생성 → 116그룹 · 233품목 · 구분노드 4 LIVE PASS.--shot <png>= 창을 화면 밖(-2400,-2400)에 띄워 캡처(사용자 화면 무간섭). PrintWindow가 빈 화면이면DrawToBitmap폴백 — 이 PC에선 DrawToBitmap 쪽이 실제로 나온다. 칩 렌더·정렬은 이걸로 확인했다.- ⚠
_verify/*.cs는 플러그인 DLL에 들어가면 안 되므로AcadTread.csproj에<Compile Remove="_verify\**" />추가. - 빌드 0에러 ·
AcadTread.dll142,848B · 3곳 MD506C194D2일치(bin/Release ·tread installer·pcadtools installer) + 이 PC%LocalAppData%\MDCAD동기화.
통합툴 인스톨러
- 패키지 =
C:\dev\pcadtools-plugin\pcadtools installer\(런처 PcadTools + AcadTread + AcadPlotPlugin + DwgCompare + 설치 스크립트). - 배포본 =
C:\dev\pcadtools-plugin\pcadtools-installer-2026-08-06.zip(10항목 122,734B, 압축해제 왕복으로 한글 파일명 무결성 확인). - README에 [📋 그룹 입력] 절 추가 — 트리 사용법 + 사내 MSSQL 필요 + IP 변경 시
%LocalAppData%\pcadtools\poin_mssql.txt한 줄로 대응(재설치 불필요).PoinDb주석의 오버라이드 경로도 통합툴 기준으로 정정(DLL 옆 폴더 = pcadtools). - AcadPlotPlugin·DwgCompare·PcadTools 는 최신본과 MD5 동일 — AcadTread 만 갱신 대상이었다.
남은 것 (페페 몫)
- 사무실 PC 배포 — zip 복사 → AutoCAD 종료 →
install.bat→ 재시작 →PCADTOOLS메뉴 → [T] 가구패널탐지. - 육안 1회 — 입력/탐지 탭 → [📋 그룹 입력] → 트리에서 그룹 펼쳐 파트 치수 확인 → [+ 추가] → 입력 목록에 들어가는지, 연속으로 여러 그룹 추가되는지.