feat(B07): 평면도 여러 장 맞춤선 · 이웃 구간 흐리게 · n/N장 · 돌린 맞춤 뺌(141-4)

- 장 나눔 — 돌린 방향 맞춤 뺌(그림을 안 돌리므로 그림칸 높이 넘침 흠)
- 장 경계 측점에 노선 직각 맞춤선 + 「MATCH LINE NO.x · n장 이어짐」 · 글은 글 자리 잡기 장애물
- 이웃 구간 노선 = 도곽 안 흐린 파선(중심선 고를 때) · 도면명 「n/N장」
- 새 test_141_4

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01STqEqztUthVFBmEP18wBSz
This commit is contained in:
2026-10-09 15:16:02 +09:00
co-authored by Claude Opus 5.5
parent 24b45655e9
commit 0d49a4c3c1
4 changed files with 203 additions and 5 deletions
@@ -31,6 +31,7 @@ from B07_DesignDetail.B07_DesignDetail_Engine_Cad_Plan import (
_structure_label,
plan_area_mm,
plan_chunks,
sheet_links,
)
from B07_DesignDetail.B07_DesignDetail_Engine_Cad_PlanKinds import (
DEFAULT_KINDS,
@@ -544,10 +545,15 @@ def build_pieces(
pieces, _load_design_curves(project_root), route, box, chunk, total, mm
)
chosen = {piece: pieces[piece] for piece in wanted if piece in pieces}
if total > 1: # 여러 장 이음 — 조각 고름과 무관하게 늘(이웃 노선은 중심선 고를 때만 · 141-4)
chosen["sheet_links"] = pieces["sheet_links"] = sheet_links(
route, chunk, total, box, interval, mm, "centerline" in wanted
)
folder = _design_root(project_root) / "plan_pieces" / str(number)
for piece, data in pieces.items():
atomic_write_json(folder / f"{piece}.json", data)
return {piece: pieces[piece] for piece in wanted if piece in pieces}, box, chunk, total
return chosen, box, chunk, total
def plan_kind_source(
@@ -576,7 +582,7 @@ def plan_kind_source(
)
title = plan_title(kind["name"])
return {
"label": title if total <= 1 else f"{title} {chunk['number']}장",
"label": title if total <= 1 else f"{title} {chunk['number']}/{total}장",
"box": box,
"pieces": pieces,
"scale": kind["scale"],
@@ -610,7 +616,7 @@ def plan_kind_items(project_root: Path, longitudinal: dict[str, Any]) -> list[di
"id": f"plan_{kind['id']}"
if single
else f"plan_{kind['id']}_{chunk['number']}",
"label": title if single else f"{title} {chunk['number']}장",
"label": title if single else f"{title} {chunk['number']}/{len(sheets)}장",
"plan_kind": kind["id"],
"plan_kind_name": kind["name"],
}