Files
Aislo/docs/raw/요구_1009/조사_D_B07.md
T

18 KiB
Raw Blame History

조사 D — B07 평면도 관리 · 글자 겹침 · 축척 · 횡단면도 배치 (10-9 · 읽기 전용 조사 에이전트)

경로 = 프로젝트 루트 기준(B07/ = B07_DesignDetail/B07_DesignDetail_ · CAD/ = B07_DesignDetail/openwebcad/src/) · 「추정」 = 코드로 확인 못 한 판단 · 실측 = 검증 프로젝트 226fc805… 읽기만 · 글 폭 = 한글 1.0 · 그 밖 0.6 × 글 크기(추정).

1. 모달 오른쪽 = CAD 그림만(「Aislo CAD」 줄 · 객체 스냅 줄 걷기)

  • 현재: 오른쪽 = 공용 createCadHost iframe 한 벌(같은 CAD 앱) + 머리 줄(장 이름 · 확정 배지 · [확정 풀기] · [CAD 에서 열기]) (B07/UI_PlanManage.ts:62-66 · 119-155) · 싣기 곁값 readOnly · viewOnly · hostTitle · ribbonCollapsed · panelsCollapsed(:137-150) · 보기 전용(끌기 = 옮기기 · 두 번 = 맞춤 · 명령 막힘)은 이미 있음(CAD/inputController/input-controller.ts:169 · 314).
  • 남는 겉칸: 제목줄 「Aislo CAD · 평면도 미리보기」(CAD/components/QuickAccessBar.tsx:17-21 — 숨김은 hostSave 때만) · 접힌 리본 탭 줄 26 px · 패널 접기 단추(InspectorPanel.tsx:19-27) · 확대 막대(ViewControls.tsx) · 상태막대 객체 스냅 · 직교 · 극좌표 · 스냅 추적 · 그리드 · 명령행(StatusBar.tsx:27-77) — Toolbar.tsx:45-70 이 늘 그림 · viewOnly 는 입력만 막음 · 「기타 옵션」 = 화면 글 아님(grep 0) → 「그 밖에」로 읽음(추정).
  • 고칠 자리: 곁값 새 칸 bare(캔버스만) — ui_template/cad_host/cad_host.ts:65-83 · CAD/integration/aislo-drawing-bridge.ts:55-72 · 225-229 · CAD/state.ts(hostSave 꼴 뿌리 class :509-514) · Toolbar.tsx bare 면 겉칸 안 그림 + 높이 변수 0(인라인 :30-43 이 class 를 이겨 같은 effect 에서) · CAD/App.css:58-60 꼴 · UI_PlanManage.ts:143-149 에 bare: true · CAD npm run build.
  • 재사용: hostSave 제목줄 숨김 길(state.ts:510-514 · App.css:58-60).
  • 시험: resources/tester/test_130_b07_plan_manage.py:53-57(곁값 bare) + 헬퍼 · CAD vitest state.test.ts 한 줄.
  • 위험 · 이음매: viewOnly 를 넓히면 M02 미리보기도 바뀜(M02_MasterTemplete/M02_MasterTemplete_Drawing.ts:289 ← DataFlow/M02_DF_FuncPanel.ts:583 · M02_MasterTemplete_ItemCards.ts:392) → 새 칸 · B06 새 요구 「측구 행 모달 · 단순화된 CAD 화면」이 같은 칸을 쓸 수 있음 · iframe 밖 라이선스 한 줄은 그대로(MIT 표기).
  • 크기: 작음.
  • ⬜ 1-1 M02 미리보기도 같이 걷기 — 추천: B07 만(새 칸).
  • ⬜ 1-2 모달 [확정 풀기] — 「조작은 메인」이면 뺌(메인 [수정]과 같은 서버 길) — 추천: 뺌 · 확정 배지 · [CAD 에서 열기]는 둠.

2 · 5. 종류 드롭다운 → 상세 · 장 = 작은 단추 · 끌어 순서 · 종류 목록과 한 블록

  • 현재 왼쪽(UI_PlanManage.ts:166-171): ①「종류 목록」 줄 = 「이름 · n장」 + ×(:77-97) ②「종류」 폼 = 드롭다운(종류 + 새 종류) · 양식 · 축척 · 이름 · 조각 · 업데이트/추가 — 드롭다운 바꾸면 폼만 바뀜 · 미리보기 그대로(:74 · 113-122) ③ 대피소 · 사토장(:142-195) ④「평면도 장」 = 좌측과 같은 큰 단추(b07-drawing-button 폭 100 % · 높이 34 px B07/UI_Style.css:89-108 · UI_PlanManage.ts:99-111).
  • 자료: 종류 파일 plan_kinds/{id}.json = {name, pieces, order, layout, scale}(B07/Router_Support_Plan.py:105-113) · 목록 = order → id 차례(:177) · 순서 바꾸는 길 없음(업데이트는 order 그대로 :255) · 장 id plan_{종류}(·_{n})는 순서와 무관(:575-607) · 도면번호 = 서버 목록 차례(종단 → 횡단 → 평면 → 표지 · 표준 · 토적 B07/Router_Support.py:104-189) → 종류 순서 바꾸면 평면도 장 번호끼리만 바뀜 · 번호는 그릴 때 도각에 박힘(:395) → 확정 장은 옛 번호.
  • 제안 꼴: 맨 위 [종류 ▼] → 아래 상세(양식 · 축척 · 이름 · 조각 · [업데이트] · [지우기] — × 를 여기로) · 드롭다운 고르면 그 종류 첫 장 미리보기 + 줄 강조 / 「평면도 장」 한 블록(종류 목록 흡수) = 종류마다 한 줄 [≡ 손잡이] 이름 [1][2]…(작은 장 단추 · 한 장이면 이름만) · 줄 끌어 놓기 = 종류 순서 · 장 단추 누름 = 미리보기 + 드롭다운 따라감.
  • 고칠 자리: UI_PlanManage.ts(kindList · sheetList 합침 · 끌기) · UI_PlanKinds.ts(kindForm [지우기] · 드롭다운 바뀜 알림) · UI_Style.css(작은 단추) · 서버 reorder_kinds(root, ids)(Router_Support_Plan.py · _materialize 뒤 order 다시 씀 · 번호 바뀐 장 확정 풀기 = update_kind 꼴 :264-272) · 라우트는 /plan-kinds/{kind_id} 밖 새 길(예 PUT /{project}/plan-kinds-order — 「order」가 KIND_ID(:74) 꼴에 맞아 종류 업데이트로 빨려 감) · B07/Api_Fetch.ts:179-232 곁 함수 하나.
  • 재사용: 끌기 = ui_template/cad_host/cad_host_tabs.ts:245-268(draggable · 반 넘으면 뒤 · drop) 꼴(세로 clientY) · groupPlanSheets(UI_PlanKinds.ts:198-217) · run(:45-55).
  • 시험: test_130_b07_plan_manage.py + helper_130_b07_plan_manage.cjs(선택자 .b07-plan-manage__kinds · __sheets :263-268 · 306-338) 고침 · test_b07_plan_kinds.py 순서 시험 새로.
  • 위험 · 이음매: 좌측 패널 「평면도」(UI_PlanKinds.ts:220-247)도 같은 차례로 따라감(단추 크기 그대로) · 모달 고치기는 지금도 단추마다 서버 길 — 놓기 = 누름 한 번(디바운스 자동저장 아님) · 요구 1 과 같은 파일.
  • 크기: 중간(화면 약 100줄 · 서버 약 30줄).
  • ⬜ 2-1 끄는 단위 — 종류(장들 함께 · 장 안 차례 = 노선 차례) / 장 하나씩(종류 사이 섞기 · 축척 바꾸면 장 수 달라 꼬임) — 추천: 종류.
  • ⬜ 2-2 순서 저장 — 놓는 즉시 / [순서 저장] 단추 — 추천: 즉시(이 모달 다른 고치기와 같은 길).

3. 평면도 글자 서로 안 겹치게

  • 현재 글(종이 mm 고정 자리 B07/Engine_Cad_PlanKinds.py:393-506): IP 이름 = 원 밑 3 mm(:437) · R = 곡선 가운데에서 안쪽 4 m 실거리(:352 · 440) · 측점 NO = 5개마다 법선 쪽 8.1 mm(:460-467) · 시종점 = 법선 9 mm(:481) · 대피소 · 사토장 = 네모 오른쪽(:489) · 배수시설 = 마름모 오른쪽(:504-506) · 필지 상자(용지도) · IP 표(도곽 왼쪽 아래 · 밑 선 자름 B07/Engine_Cad_IpTable.py:174-201) · 등고선 값 글 없음.
  • 겹침 피하기: 필지 상자만 있음(후보 8방향 × 5고리 · 노선 버퍼 · 놓은 상자와 사각 겹침 B07/Router_Support_Landuse.py:127-190) · 나머지 없음.
  • 실측(장 1 조각 파일 · 1/1,200): 「지형」 기본 종류 글 112 · 겹친 쌍 40(IP–R 21 · R–R 8 · 배수–IP 3 · R–측점 3 · 배수–측점 3 · 배수–R 2 — R=12 곡선 44개가 붙어 있음) · 노선배치도 1(시점 – NO.0) · 대피소 1 · 같은 조각 1/2,500 이면 75쌍.
  • 고칠 자리: 새 파일 B07/Engine_Cad_PlanLabels.py(약 120줄 · PlanKinds 605줄이라 따로) — 글 사각(폭 = balloon_size 글자 규칙 B07/Engine_Cad_MassHaul.py:182-188) · 우선순위 차례로 후보 중 첫 빈 자리(못 찾으면 첫 후보 그대로 · ponytail: 한도) · 장애물 = IP 표 칸 · 필지 상자 · 제목 · _piece_entities 의 text()(:393-399)가 바로 그리지 않고 후보째 모음 → build_plan_kind_drawing(:529-544)이 자리 정한 뒤 그림.
    • 후보: IP = 원 밑 · 위 · 좌 · 우 / R = 안쪽 3 mm → 6 mm → 바깥 / 측점 = 법선 쪽 → 반대 → 접선 ± / 시종점 = 법선 → 반대 / 대피소 · 배수 = 오른쪽 → 왼 · 위 · 아래(멀면 지시선 _balloon_entities Engine_Cad_MassHaul.py:190-) · 우선순위(제안) 시종점 > 측점 NO > IP > R > 배수 > 대피소.
  • 재사용: 필지 상자 사각 겹침 식(Router_Support_Landuse.py:150-175) · balloon_size.
  • 시험: 새 시험(가까운 IP · R · 배수 둘 · NO.0 + 시점 → 사각 겹침 0 · 글 모두 남음) · test_b07_plan_kinds.py:192-202 · 265-269 · test_119_b07_plan_scale.py:101-(글 있음만 봄 → 그대로일 것 · 추정).
  • 위험: 서버 단독 계산(CLAUDE.md 5장 ③) · 확정 장은 옛 자리 · 유역도 양식 배지(B07/Engine_Cad_Basin.py:183-230)는 범위 밖 · 글 폭 추정이라 여유 둠 · R · 대피소 실거리 띄움(4 · 8 m)을 종이 mm 후보가 대신 → 4 의 축척 늘림과 함께.
  • 크기: 중간.

4. 축척 더 · 배수유역도 넣고 빼기

  • 현재: 목록 DRAWING_SCALE_PLAN_CHOICES = (600, 1000, 1200)(config/config_system.py:189) · 화면 목록 = 서버 scales 한 곳(B07/Router_PlanKinds.py:58-67 → UI_PlanKinds.ts:105-110) · 유역도 양식 1/6,000 잠금(:99-104 · Router_Support_Plan.py:98-102) · 배수유역도 = 종류 하나(양식 유역도 · 한 장) — × 로 빼고 「새 종류」 양식 유역도로 다시 넣기 이미 됨(109-1 · Engine_Cad_PlanKinds.py:79-105) · 평면도 양식 조각엔 유역 없음(:48-69).
  • 축척 근거(지식DB · 값 확정 아님): 1/1,200 법정(resources/knowledge/original/법률/산림자원의 조성 및 관리에 관한 법률 시행규칙/별표/별표2_산림관리기반시설의 설계 및 시설기준(제5조제1항 관련).md:60) · 1/1,000(original/산림과임업기술(임도)/2. 임도/5. 설계.md:205) · 1/600 용지도(같은 파일 :290) · 평면도 1/3001/600(original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/9-03_지형_및_토지측량.md:785) · 1/500 · 1/2,500(같은 파일 :48) · 1/3,000 · 1/6,000 측량원도(original/사방기술교본/1. 총론/4. 사방사업의 추진체계.md:178) · 1/5,000 지형도(original/산림과임업기술(임도)/2. 임도/3. 임도계획.md:67) · 관행 후보 5006,000(config_system.py:168-180 토적도용).
  • 고칠 자리: 축척 = config 한 줄(검사 _checked_scale :206-215 · 장 나눔 plan_kind_items :575-607 · 화면 자동) · 실거리 상수 축척화 — 비탈 눈금 2 m(Engine_Cad_PlanKinds.py:133 · 277 — 1/6,000 이면 0.33 mm 간격 = 검은 띠) · 대피소 8 m(Router_Support_Plan.py:80) · R 4 m(PlanKinds.py:352) · 필지 버퍼 5 m · 틈 2 m(Router_Support_Landuse.py:34-35) → 종이 mm × 축척(scale 은 build_pieces :430-438 에 있음).
  • 배수유역(⬜ 4-2): (A) 평면도 조각 「배수유역 경계」 · 「유역 번호」 추가 — watershed_source basins(B07/Router_Support_Basin.py:491-553)를 장 범위로 잘라 · 그림은 유역도 해치 · 배지 재사용(Engine_Cad_Basin.py:161-230) / (B) 모달에 「배수유역도 넣기」 체크(지금 × · 새 종류와 같은 일).
  • 시험: test_119_b07_plan_scale.py:38-64 · test_b07_plan_kinds.py(조각 목록 통째 비교 :245-250 · 373-394 — 조각 늘면 고침) · test_b07_landuse_parcel_info.py.
  • 위험: 1/5,000 · 1/6,000 평면도 = 범위 3.5~4.2 km — 받은 도엽 밖은 빈칸 · 엔티티 많음(유역도 메모리 흠 기록 docs/raw/사용자요구/2026-10-05_수정요구.md:350) · 1/500 은 장 늘어남(검증 노선 1,196 m: 1/500 3장 · 1/600 2장 · 1/1,000 이상 1장).
  • 크기: 축척만 작음 · 상수 축척화 작음 · (A) 중간 · (B) 작음.
  • ⬜ 4-1 축척 목록 — 추천(근거 있는 것만): 1/500 · 1/600 · 1/1,000 · 1/1,200(기본) · 1/2,500 · 1/3,000 · 1/5,000 · 1/6,000.
  • ⬜ 4-2 「배수유역도 옵션선택으로 넣고 빼기」 뜻 — (A) 어느 평면도에나 유역 경계를 체크로 / (B) 배수유역도 한 장 넣고 빼기 — 추천: (A)(「옵션 선택」 = 조각 체크 꼴 · B 는 지금도 됨).

6. 축척 따라 평면도 여러 장 — 제안

  • 현재: 이미 됨(119) — 종류 축척으로 plan_chunks(B07/Engine_Cad_Plan.py:96-134) · 노선 차례로 그림칸(약 701 × 477 mm :81-87)에 드는 데까지 · 경계 측점 하나 겹침(:133) · 장 범위 = 구간 가운데 둔 그림칸 크기(Router_Support_Basin.py:381-395) · 목록 「지형 1장 · 2장」.
  • 빠진 것: 장 이음 표시(맞춤선 · 「→ 2장」) 없음 · 이웃 구간 노선은 범위 안이어도 안 그림(Router_Support_Basin.py:408-412) · 장 색인 없음 · 흠: fits 가 돌린 방향도 든다고 봄(Engine_Cad_Plan.py:114-118)인데 그림은 안 돌림 → 남북 800 m 노선을 1/1,200 한 장으로 보고 종이 701 × 667 mm(그림칸 높이 477 넘침 · 합성 노선 확인 · 실자료 미확인).
  • 안: ① 노선 따라 자르기 유지 + 다듬기 — 돌린 맞춤 빼기(한 줄) · 경계 측점에 맞춤선(노선 직각 점선 + 「MATCH LINE NO.x · n장 이어짐」) · 이웃 구간 노선 흐리게 · 도면명 「n/N장」 — 작음~중간 / ② 장마다 구간 주방향을 가로로 돌린 띠 — 장 수 최소 · 방위표 · 배경 · 지적 함께 돎 — 큼 / ③ 격자 타일(도곽 크기 격자 · 노선 지나는 칸만) — 색인 쉬움 · 굽은 노선이면 장 늘음 — 중간.
  • 재사용: plan_chunks · route_frame(Engine_Cad_PlanKinds.py:148-158) · clip_line_to_box(Router_Support_Basin.py:143).
  • 시험: test_119_b07_plan_scale.py:66-75(장 수) · 맞춤선 새 시험.
  • 위험: 장 수 바뀌면 장 id · 도면번호 바뀜(119 받아들임) · 종류마다 장 수 다름 → 2 의 작은 장 단추가 받음.
  • ⬜ 6-1 안 — 추천: ①(② 는 장 수가 문제 될 때).

7. 횡단면도 장 배치 — 4 × 4 기본 · 장마다 사용자 · 그림칸 꽉 · 축척 그대로

  • 현재(B07/Engine_Cad_Sheet.py): 블록 = 단면 + 수량표(폭 108 · 높이 40 + 틈 8 mm) 1/100 자기 크기(:61-95) · 좌하단부터 위로 쌓고 넘치면 오른쪽 열(:98-109 · 159-176) · 장 수 최소로 경계 고름(:131-156) · 도각 = 내용 bbox 가운데(:248-256 · B07/Engine_Template.py:478-525 fit=False) → 내용 작으면 그림칸 가운데 뭉침 · 장마다 측점 수 다름 · 장 id = 첫 측점(:179-204) · 배치 판 CROSS_SHEET_LAYOUT = 2(Router_Support.py:101 · 옛 판 확정 장 「옛 배치」 :409).
  • 그림칸 = 양식 칸 drawing_area [42, 47, 812, 567](resources/master_template/drawing/00_template_A1.json · 프로젝트 양식 우선 Engine_Template.py:120-134) − 여백 2 %(usable_area :353-360) = 739.2 × 499.2 mm → 4 × 4 칸 184.8 × 124.8 mm(표 빼면 단면 높이 약 7.4 m 까지).
  • 실측(기본 설계로 잰 값 · 실제 B06 설계는 DB 라 추정): 73 측점 · 지금 22장(장당 114) · 블록 폭 110797 · 높이 83~690 mm · 60개가 칸보다 큼 → 4 × 4 면 5장 · 겹침 많음(사용자 「일단 무시」).
  • 고칠 자리: Engine_Cad_Sheet.py — _stack_columns · _fits · _max_take · _sheet_breaks · _slots(약 80줄) 지우고 grid_slots(n, cols, rows) = 칸 가운데(차례 그대로 좌하단 → 위 → 오른쪽 · 근거 「좌측횡단에서 상단방향」 resources/knowledge/original/사방기술교본/3. 야계사방/1. 야계사방의 개요.md:143) · plan_cross_sheets(chainages, grids) · build_cross_sheet 는 블록 bbox 가운데를 칸 가운데에(:233) · 도각은 고정 그림칸 bbox(:250) / Router_Support.py:193-218 블록 크기 재기 빠짐 · 설정 읽기 · CROSS_SHEET_LAYOUT = 3 / 저장 B07_DesignDetail/cross_layout.json = {default [4, 4], sheets {장 번호: [열, 행]}} · 라우트 GET · PUT(B07/Router.py 곁) · Api_Fetch.ts / 화면 = 장을 열면 좌측 정보 칸(장 안내 자리 B07/UI_Panels.ts:203-225)에 「배치 열 [4] × 행 [4] [적용]」 + 「모든 장 기본」 · 적용 = 서버 쓰기 → 목록 다시 · 같은 장 번호 다시 엶.
  • 재사용: usable_area · frame_entities(fit=False) · 첫 측점 id 규칙 · 「옛 배치」 안내.
  • 시험: test_b07_cross_sheet_pad.py:72-110(블록 1 mm 테두리 · 장 나눔 — 대부분 그대로 · 추정) · test_b07_cross_overlay_extent.py · 새 시험(4 × 4 칸 가운데 · 도각 고정 · 1/100 그대로 · 장마다 다른 배치 · 17번째 측점 = 2장).
  • 위험 · 이음매: 장 나눔이 단면 크기와 무관 → 장 id 가 설계 · 덧그림에 안 흔들림(옛 흠 B07/Router.py:500-503 사라짐 · 목록 때 Node 덧그림 재기 생략 가능 · 추정) · 배치 바꾸면 뒤 장 id · 확정 · 뒤 도면번호(평면 · 표지 등) 바뀜 → B07 단계 완료(횡단 장 전부 확정 B07/UI_Page.ts:125-127) 다시 · 구조물 덧그림은 서버 cross_placements 따라감(고칠 것 없음 · 추정).
  • 크기: 중간.
  • ⬜ 7-1 「장마다 배치」 꼴 — (a) 장마다 열 × 행(기본 4 × 4) / (b) 모든 장 한 벌 / (c) 칸 안 단면 끌어 옮기기 — 추천: (a).
  • ⬜ 7-2 칸 안 자리 — 칸 가운데 / 표 밑변을 칸 밑에(줄마다 표 가지런) — 추천: 칸 가운데.

파일 겹침

파일 1 2·5 3 4 6 7
B07/UI_PlanManage.ts ○ ○
B07/UI_PlanKinds.ts · B07/UI_Style.css ○ (B)
ui_template/cad_host/cad_host.ts · CAD/state.ts · bridge · Toolbar.tsx · App.css ○
B07/Engine_Cad_PlanKinds.py ○ ○ ○
B07/Router_Support_Plan.py ○ ○ ○
B07/Engine_Cad_Plan.py · B07/Router_Support_Basin.py (A) ○
B07/Router_Support_Landuse.py ○
B07/Router_PlanKinds.py ○
B07/Api_Fetch.ts ○ ○
B07/Engine_Cad_Sheet.py · B07/Router_Support.py · B07/Router.py · B07/UI_Panels.ts ○
config/config_system.py ○
시험 test_130 + 헬퍼 ○ ○
시험 test_b07_plan_kinds.py · test_119_b07_plan_scale.py ○ ○ ○ ○
시험 test_b07_cross_sheet_pad.py · test_b07_cross_overlay_extent.py ○

창 나눔(제안): A = 1 · 2 · 5(모달 · CAD 칸 · CAD 빌드) / B = 3 · 4 · 6(평면도 엔진 — 같은 두 파일이라 한 창) / C = 7(횡단 장) · A–B 겹침 = Router_Support_Plan.py(A 새 함수 · B build_pieces — 다른 자리) · 시험 파일은 새 함수끼리.