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

12 KiB

조사 B — B05 흑백지형 · 3D ③ 채택 · 돌붙임/도수로 (10-9 · 읽기 전용 조사 에이전트)

약칭: _X = B05_Profile/B05_Profile_UI_Corridor_X.ts · 뷰어 = B05_Profile/B05_Profile_UI_Viewer.ts · 뷰어코리도 = B05_Profile/B05_Profile_UI_Viewer_Corridor.ts · 보기줄 = B05_Profile/B05_Profile_UI_Panel_View.ts. 화면 확인 없음(코드 · 자료로만).

1. 3D 「흑백 지형」 단추가 안 먹음

  • 현재: 단추 기본 켬(보기줄:100) → setSurfaceGrayscale(뷰어:492) → applyGrayscaleTo(뷰어:393-415) = 정점색을 제자리에서 회색으로 덮고 원래 색은 메시마다 처음 본 값으로 기억(뷰어:399). 지형 적재 직후 회색 먼저(뷰어:469) → 그 뒤 코리도 조립(뷰어:472).
  • 원인(코드로 확인): 예상형상 지형(모든 방식 · ③ 포함)은 밴드 분할본에서 만듦 — 분할본이 이미 회색인 지형 색을 복사(_Split.ts:49) · near/far 가 색 버퍼 하나 공유(_Split.ts:113-114). ③ 망 · 남은 조각이 그 색을 받음(_Tin.ts:103-106 · 275 · 360-363) → 새 메시의 「원래 색」 = 회색 → 끄기 눌러도 회색. far 메시를 덮을 때 공유 버퍼까지 바뀌어 다음 [3D 업데이트]에도 번짐. 예상형상을 끄면(원지형) 단추 먹음.
  • 고칠 자리: _Split.ts 생성자 — 사본 색을 지형 원래 색으로 되돌림 · far 색 버퍼 따로(clone) · 뷰어 applyGrayscaleTo — 원래 색 기억을 메시 → 색 버퍼 열쇠(WeakMap 하나 · 새 메시가 같은 far 조각을 감싸도 한 번만). 합 8줄 안팎.
  • 다른 길(2줄): 단추 때 corridor.resetTerrain() + rebuild() — 단추마다 ③ 다시 짬(약 1.2 s · PLAN 115-10 실측).
  • 재사용: 절성토 색 남김 표식 userData.keepColor(_Tin.ts:357) — ③ 사면 색은 흑백에서도 남음(115-1 결정 그대로).
  • 시험: 새 1건(분할본 색 = 원래 색 · far 버퍼 분리 · Node 도우미) · 깨질 시험 없음.
  • 위험 · 이음매: _Split.ts 는 ③ 이 남기는 파일 — 요구 2 와 충돌 없음.
  • 크기: 작음.

2. 제안 ③ 채택 · 나머지 방식 Old 로

  • 현재: 등록부 _Modes.ts:135-176(지금 · 옛 A · 새 ① · 제안 ② · ③) · 고르기 줄 보기줄:66-87 · 128-129 · 뷰어코리도가 방식을 골라 그림(:115-120 · 205-216 · 233-261). PLAN 115-3(옛 로직 지움 · 미체크)과 같은 일.
  • ③ 사슬(남김): _Loft → _Loft_Profile · _Loft_Toe · _Loft_Grid · _Loft_Shade · _Tin(망 · 지형 이음) · _Tin_Pslg · _Tin_Design:1-140(TinDesign · structureTopLoops · insideLoop) · _Deform:184-231 roadRows(+형 셋) · _Deform_Structure:246-276 noFillLimits(+도움 넷) · _Region:1-233 CellRegion · _Split · _Terrain · 바탕 빌드(_Build · _Frames · _Station · _Station_Structure · _Structures*) · _Mesh(노면 · 마구리 · 구조물) · _Envelope · B05_Profile_UI_Corridor.ts.
  • 서버 몫(지우면 안 됨): ③ = 저장본(노면 리본 · 구조물 솔리드 · 외곽 · 마구리)을 받아 지형 망만 브라우저가 새로 짬(저장 안 함) — B05_Profile_Corridor_Prebuild.py · B05_Profile_Corridor_Node.ts · B05_Profile_Router_Corridor.py · _Envelope. BUILD_VERSION(_Envelope:206) 그대로 — 「지금」 꼬리를 빼도 노면 · 구조물 · 외곽 같음(자르기는 성토 리본만 _Cut:485) · 옛 저장본의 남은 몫은 roadOnly 가 버림.
통째 이동 줄 까닭
_Modes 207 등록부 · 지금 심 보정 · 스커트 붙임
_Legacy 60 옛 A
_Deform_Terrain · _Deform_Breakline 317 · 612 새 ①
_Plan · _Plan_Footprint · _Cut · _Carve · _Carve_Wing · _Union · _Skirt 629 · 348 · 620 · 494 · 256 · 34 · 223 지금(스케치 · 자르기 · 패치 · 스커트)
_Clip 468 지금 · 옛 A 띠 자르기 · ③ 실패 대체(⬜1)
고칠 파일 남김 빼서 Old 사본에
뷰어코리도 roadOnly + loftTerrain 바로 부름(③ 고정) 방식 고르기 · 느림 알림 · clip 대체(:216) · __corridorPlanCurves(:268-285)
보기줄 보기 · 표시 단추 「3D 방식」 줄(:8-14 · 66-87 · 128-129)
B05_Profile_UI_Corridor.ts 캐시 · 저장 rememberLegacyInputs(:32 · 250)
_Deform(692) roadRows · 형 셋(약 70) 변형 장 전부(약 620)
_Deform_Structure(430) noFillLimits · setOf · axisOf · 껍질 · 넓이(약 120 · StationAxis 형은 안에 적음) 포락선 · 구조물 단면 · 구멍 · 드레이프 · 관 입구(약 310)
_Tin(375) tinTerrain(설계자 인자 필수) ② deformDesign(:176-193) · import 손봄(:21-23)
_Tin_Design(349) :1-140 buildTinDesign(:142-349)
_Region(404) :1-233 CorridorStrip · PlanLoopRegion · SubtractedRegion(:235-404)
_Build 행 루프 · 리본 · 외곽 · 마구리 · 구조물 legacy 옵션(:184-188 · 282 · 600) · 깃발(:72 · 90) · 스케치 · 자르기 · 패치 꼬리(:601-633)
_Build_Types · _Envelope · _Mesh · B05_Profile_UI_Viewer_Debug.ts 노면 · 구조물 몫 patch · cellMask · trimTris · cutWalls · planCurves(_Mesh:39-74 · 159-190 · 411-485)
_Station 측점 분류 silhouette 옵션(:93-100 · 401-417)
A00_Common/b_page_state.ts — 키 셋 corridor-deform · legacy · mode(:69-74)
  • Old 자리: B05_Profile/Old/ — 선례(54-24 fb5ab57c7) · tsconfig.json:38 exclude 이미 · git 추적 유지 · vite 는 import 로만 끌어 무관 · ruff 대상 아님. 0_old/ 은 .gitignore:35 → 다른 창에서 사라짐(사실상 삭제)이라 안 씀. 일부 자른 파일은 손대기 전 원본을 Old 에 같은 이름으로. 번들 낡음 판정이 B05_Profile 를 rglob(common_util/common_util_node_bundle.py:24) → 옮긴 직후 서버 번들 한 번 다시 만듦(무해).
  • 시험: Old 로 = resources/tester/old/ + conftest.py:8 collect_ignore 에 "old" — test_115_corridor_deform · 115_4 · 115_5 · 115_6 · 115_7 · b05_cut_merged_loop · b05_patch_skirt · b05_corridor_envelope_flags(+도우미 7). 고침 = test_115_8 등록부 단언(:84-87 · 도우미 :720-732). 그대로 = test_115_10 · b05_corridor_separation · switching · spline · structures_order · router · prune · prebuild · hash_probe · session_keys.
  • 디버그 훅: 뺌 __corridorPlanCurves · __corridorSkirt · __corridorHoles · 남김 __corridorDeform(③ 수치) · __corridorClip · __corridorBuild(planCurves 몫만 뺌) · __corridorScene · __corridorSource.
  • 순서: 커밋 둘 — (가) 등록부 · 고르기 줄 · 옛 A · ① · ② (나) 지금 꼬리 + 스케치 파일. 도우미가 TS 를 런타임 require 로 읽어 import 끊기 · 이동은 같은 커밋에서.
  • 덤(범위 밖): 저장본에서 절 · 성토 리본까지 빼면 17 MB → 수 MB(추정 · serialize 한 줄).
  • 위험: 요구 3 의 3D 띠가 _Structures · _Mesh · _Tin_Design structureTopLoops 를 만짐 → 요구 2 뒤에.
  • 크기: 큼(통째 약 4,300줄 + 잘라냄 약 1,800줄 · 기계적).
  • ⬜1 ③ 을 못 만들 때(점 구름 지형 = 높이 색인 없음 · 측점 2 미만): (가) 원지형 그대로 · _Clip 이동(추천 — 지금 대체는 비탈 자리까지 도려내 빈 구멍 · 추정) (나) 띠 자르기 남김.

3. 돌붙임/도수로 형상 · 상자 [빼기]

  • 정체: 관 · BOX · 세월교 · 물넘이 포장 폼의 선택 상자 「도수로/돌붙임」(하나만) — 키 chute_add_{n}_*(A00_Common/design/design_structure_guard.ts:149-157) · 물넘이만 ford_chute_{n}_*(design_structure_ford_pavement.ts:29-32). 형상 = B06 횡단 띠(유출 성토사면 안쪽 두께 + 돌 · 90-2) appendChuteBand(B06_Section/B06_Section_UI_Cross_Wall_Hatch.ts:323) ← 관 _Cross_Culvert.ts:107 · BOX _Cross_Box.ts:160 · 세월교 _Cross_Ford.ts:132. 자료 = 서버 _chute(B06_Section_Engine_Culvert.py:229-251) ↔ 짝 chute(common_util/common_util_culvert_sets.ts:131-151).
  • 끊긴 곳(코드로 확인):
    • ① 실시간 — 폼 → 횡단 캐시 길 applyPipeOptionsToCache(B06_Section_UI_Page_Pipe_Options.ts:48)가 chute 를 안 얹음 · BOX · 세월교 제어기(B06_Section_UI_Page_Ford_Controls.ts:257 · 304)도 · 흙막이 쪽만 guardSet(culvert_sets.ts:244)으로 얹힘 → 상자 넣어도 [저장] · 새로고침 전엔 띠 없음.
    • ② 물넘이 포장 — ford_chute_* 읽는 곳 0: 세트(Engine_Culvert.py:485-515 · culvert_sets.ts:404) · 정규식 chute_add_ 만 · 오버레이(_Cross_Ford_Pavement.ts:122) 띠 없음 · B08 집계도 gchuteadd 만(B08_Quantity_Router_Summary.py:252-254).
    • ③ B05 3D — 띠 솔리드 없음(_Structures:76 종류 revet · basin · pipe) · 해시에도 없음(_Structures_Hash) · 상자에 종방향 길이 칸 없음.
  • 고칠 자리: ① applyPipeOptionsToCache 한 곳(네 폼이 다 지남)에서 chute(patch) → culvert · box · ford 의 chute 갈아 끼움 + 카드 다시 그림(5줄 안팎) ② chute(values, 머리) · _chute 같은 인자 · 물넘이 세트에 붙임 · 오버레이에 유출측(inflowSign 반대) 성토사면 띠 ③ 3D = 유출 성토 조각(outletFill · fillSegments) 띠를 스윕하는 솔리드 + 해시 키.
  • [빼기]: A00_Common/design/design_structure_form.ts:268-287 — 공용 명세 폼 · 선택 상자 이름표(legend) 안 · 클래스 b05-route__irregular-btn. 「내부 컨테이너의 선택」 = 「구조물 조합」 줄 선택 — 같은 클래스 + 상자 몸통 작은 단추 틀(높이 26 px · 위아래 여백 0 · B05_Profile_UI_Style_Structures.css:565 · flex none :454). [빼기]는 그 틀에서 일부러 뺌(:563-564) → 여백 8 px(B05_Profile_UI_Style.css:355) · 이름표 흐림 0.8(Style_Structures.css:168).
  • 고칠 자리: 글 「삭제」(+title) · CSS 한 규칙(이름표 단추도 작은 단추 틀) · 흐림은 이름표 글에만.
  • 바뀌는 곳(공용): 도수로/돌붙임(관 · BOX · 세월교 · 물넘이) · 노면공 「상세 내용」(design_structure_road.ts:60-63) · M02 구조물 옵션 미리보기(흙막이 포함 · M02_SO_Def_Spec.ts:99). B05 · B06 흙막이는 단 수가 개수를 정해 단추 없음(B05_Profile_UI_Drainage_Facility.ts:345 · _Drainage_Revet_Choice.ts:113).
  • 재사용: chute() · _chute · appendChuteBand · guardSet · 작은 단추 틀.
  • 시험: test_90_chute_band · test_b06_culvert_sets_mirror(파이썬 짝) · test_52_3_structure_spec_ford_pavement 늘림 · 새 1건(폼 → 캐시 chute) · 단추 글을 단언하는 시험 없음.
  • 위험 · 이음매: 패널 아래 구조물 [삭제](빨강 · B05_Profile_UI_Structures_Form.ts:130)와 이름 겹침(모양 다름) · B06 요구(유출 수평 절토 · 관보호공 높이 · 연동 풀림)와 Pipe_Options.ts · culvert_sets.ts · Engine_Culvert.py 겹침(추정) · 3D 띠는 ③ 구멍(_Tin_Design:68)이 뚫지 않게.
  • 크기: ① 작음 · ② 중간 · ③ 중간 · 단추 작음.
  • ⬜2 「형상 연결 안됨」 범위: (가) 횡단 실시간 ① + 물넘이 ②(추천 · 먼저) (나) + B05 3D ③.
  • ⬜3 3D 띠 종방향 길이: (가) 유출 구조물 폭 따라감(관 유출 벽 길이 · BOX/세월교 날개 사이 · 추천) (나) 상자에 길이 칸 더함.
  • ⬜4 [삭제] 이름 · 모양: (가) 공용 한 번 — 노면공 상세 · M02 미리보기도 함께(추천) (나) 도수로/돌붙임만.

파일 겹침

파일 요구 1 요구 2 요구 3
뷰어 ○
_Split ○ 남김
뷰어코리도 · 보기줄 · _Modes ○
_Mesh · _Tin_Design ○ ○(3D)
_Structures · _Structures_Hash 남김 ○(3D)
design_structure_form.ts · B05_Profile_UI_Style_Structures.css ○
Pipe_Options.ts · culvert_sets.ts · Engine_Culvert.py · _Cross_Ford_Pavement.ts ○(B06 요구 겹침 추정)