feat(b07): 횡단 장 표 · 표 위 글 배율 칸(180-2)
- cross_layout.json table_scale(모든 장 한 값 · 0.5~2.0 · 기본 1) · 저장 검사 · 「모든 장」 저장이 배율 안 지움 - 표 폭 · 행 높이 · 글 · 글 줄 높이에 배율 · 174 쌓기 · 넘침 판정이 같은 값으로 다시 셈 - 확정 장 그대로 · 다른 배율로 확정된 장 = stale_scale 안내 - 배치 칸 줄에 「표 배율 [1] [배율 적용]」 - 새 시험 test_180_2_b07_cross_scale · test_140 기본값 · test_153_1 배율 칸 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TNMXVCZXMpHpVvqmFkeChL
This commit is contained in:
@@ -128,16 +128,17 @@ def _cross_table_entities(
|
||||
table_top: float,
|
||||
title_label: str,
|
||||
center_x: float = 0.0,
|
||||
scale: float = 1.0,
|
||||
) -> list[dict[str, Any]]:
|
||||
"""횡단 수량 산출표(납품 양식)를 표 객체 하나로 만든다.
|
||||
"""횡단 수량 산출표(납품 양식)를 표 객체 하나로 만든다 — scale = 표 · 글 배율(180-2).
|
||||
|
||||
머리행은 폭을 8등분하고 본문은 11열 가중치를 쓴다 — 격자가 서로 다르므로 두 경계를
|
||||
합친 열로 표를 만들고 병합으로 원래 칸을 되살린다. 병합 자리에서 선을 끊는 일은
|
||||
표가 스스로 하므로, 예전처럼 가로선을 손으로 끊지 않는다.
|
||||
"""
|
||||
width = _CROSS_TABLE_WIDTH
|
||||
row_h = _CROSS_TABLE_ROW_HEIGHT
|
||||
font = _CROSS_TABLE_FONT
|
||||
width = _CROSS_TABLE_WIDTH * scale
|
||||
row_h = _CROSS_TABLE_ROW_HEIGHT * scale
|
||||
font = _CROSS_TABLE_FONT * scale
|
||||
left = center_x - width / 2.0
|
||||
right = center_x + width / 2.0
|
||||
body_edges = _cross_column_edges(width, center_x)
|
||||
@@ -331,24 +332,24 @@ def cross_note_lines(design: dict[str, Any] | None) -> list[str]:
|
||||
return [line.rstrip() for line in note.strip().splitlines()]
|
||||
|
||||
|
||||
def cross_note_height(lines: list[str]) -> float:
|
||||
"""표 위 글 높이(mm) — 줄 수 × 줄 높이."""
|
||||
return _CROSS_NOTE_LINE_HEIGHT * len(lines)
|
||||
def cross_note_height(lines: list[str], scale: float = 1.0) -> float:
|
||||
"""표 위 글 높이(mm) — 줄 수 × 줄 높이 × 배율."""
|
||||
return _CROSS_NOTE_LINE_HEIGHT * scale * len(lines)
|
||||
|
||||
|
||||
def _cross_note_entities(
|
||||
drawing_id: str, lines: list[str], top: float, center_x: float = 0.0
|
||||
drawing_id: str, lines: list[str], top: float, center_x: float = 0.0, scale: float = 1.0
|
||||
) -> list[dict[str, Any]]:
|
||||
"""표 위 글 줄마다 Text — 표 왼쪽 끝 맞춤 · 위에서 아래로(id `{도면}:note:{n}`)."""
|
||||
left = center_x - _CROSS_TABLE_WIDTH / 2.0
|
||||
left = center_x - _CROSS_TABLE_WIDTH * scale / 2.0
|
||||
return [
|
||||
_text_entity(
|
||||
f"{drawing_id}:note:{index}",
|
||||
line,
|
||||
left,
|
||||
top - _CROSS_NOTE_LINE_HEIGHT * (index + 0.5),
|
||||
top - _CROSS_NOTE_LINE_HEIGHT * scale * (index + 0.5),
|
||||
CROSS_TABLE_LAYER_ID,
|
||||
_CROSS_TABLE_FONT,
|
||||
_CROSS_TABLE_FONT * scale,
|
||||
TABLE_LABEL_COLOR,
|
||||
align="left",
|
||||
)
|
||||
@@ -357,11 +358,11 @@ def _cross_note_entities(
|
||||
]
|
||||
|
||||
|
||||
def cross_table_width() -> float:
|
||||
def cross_table_width(scale: float = 1.0) -> float:
|
||||
"""수량 산출표 가로 폭(mm)."""
|
||||
return _CROSS_TABLE_WIDTH
|
||||
return _CROSS_TABLE_WIDTH * scale
|
||||
|
||||
|
||||
def cross_table_height() -> float:
|
||||
def cross_table_height(scale: float = 1.0) -> float:
|
||||
"""수량 산출표 세로 높이(mm) — 머리 2행 + 본문 6행."""
|
||||
return _CROSS_TABLE_ROW_HEIGHT * (len(_CROSS_LEFT_ROWS) + 2)
|
||||
return _CROSS_TABLE_ROW_HEIGHT * scale * (len(_CROSS_LEFT_ROWS) + 2)
|
||||
|
||||
Reference in New Issue
Block a user