fix(B07): 도각 안쪽을 채우고, 수량표를 한 줄로 세운다
여백이 많다는 지적. 도각 안쪽 작도영역(770x594)에서 5%를 떼고 배치해 사방에 70mm 가까이가 비었다. 2%로 줄이니 같은 블록으로 3장이 2장이 된다(16/7). 표가 제각각 높이에 뜨던 것은 블록을 칸 한가운데 놓았기 때문이다. 수량표 높이는 모든 블록이 같으므로 칸 아래 변에 맞춰 놓으면 표가 한 줄로 선다. 단면 높이 차이는 위쪽이 흡수한다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -112,14 +112,18 @@ def _pack(
|
||||
|
||||
|
||||
def _slots(col_widths: list[float], row_heights: list[float], count: int) -> list[list[float]]:
|
||||
"""칸 중심 좌표 — 좌하단부터 아래→위로 채우고, 열이 차면 오른쪽 열로 넘어간다."""
|
||||
"""칸의 (가로 중심, 아래 변) — 좌하단부터 아래→위로 채우고, 열이 차면 오른쪽 열.
|
||||
|
||||
세로는 중심이 아니라 **아래 변**을 준다. 수량표 높이는 모든 블록이 같으므로
|
||||
아래를 맞추면 같은 행의 표가 한 줄로 선다(2026-08-30 사용자: 표는 행·열을 맞춘다).
|
||||
"""
|
||||
usable_w, usable_h = usable_area()
|
||||
rows = len(row_heights)
|
||||
slots: list[list[float]] = []
|
||||
for index in range(count):
|
||||
column, row = divmod(index, rows)
|
||||
x = -usable_w / 2.0 + sum(col_widths[:column]) + col_widths[column] / 2.0
|
||||
y = -usable_h / 2.0 + sum(row_heights[:row]) + row_heights[row] / 2.0
|
||||
y = -usable_h / 2.0 + sum(row_heights[:row])
|
||||
slots.append([x, y])
|
||||
return slots
|
||||
|
||||
@@ -179,11 +183,12 @@ def build_cross_sheet(sheet: dict[str, Any], sections: list[dict[str, Any]]) ->
|
||||
if bbox is None:
|
||||
continue
|
||||
min_x, min_y, max_x, max_y = bbox
|
||||
center_x, center_y = slots[index]
|
||||
# 2) 칸 가운데에 오도록 원점을 옮겨 다시 만든다.
|
||||
center_x, bottom_y = slots[index]
|
||||
# 2) 가로는 칸 가운데, 세로는 칸 아래 변에 맞춰 원점을 옮겨 다시 만든다.
|
||||
# 아래를 맞춰야 같은 행의 수량표가 한 줄로 선다.
|
||||
origin = (
|
||||
center_x - (min_x + max_x) / 2.0,
|
||||
center_y - (min_y + max_y) / 2.0,
|
||||
bottom_y + _BLOCK_GAP_MM / 2.0 - min_y,
|
||||
)
|
||||
placed = build_cross_drawing(
|
||||
section["source"],
|
||||
|
||||
@@ -29,7 +29,9 @@ A1_TEMPLATE = "00_template_A1"
|
||||
COMPASS_TEMPLATE = "00_template_compass" # 유역도 등 평면 도면의 방위표
|
||||
# A1 내부 작도 영역(템플릿 좌표) — 콘텐츠가 이 영역 중앙에 오도록 배치한다.
|
||||
_A1_INNER = (42.0, 47.0, 812.0, 567.0)
|
||||
_CONTENT_MARGIN = 0.05 # 내부 작도 영역 대비 콘텐츠 여백 비율(각 방향 5%)
|
||||
# 내부 작도 영역 대비 콘텐츠 여백 비율(각 방향). 5%는 도각 안쪽에 70mm 가까이를
|
||||
# 비워 횡단 장이 한 장 더 늘었다 — 2%로 줄여 작도 영역을 쓴다(2026-08-30 사용자).
|
||||
_CONTENT_MARGIN = 0.02
|
||||
|
||||
|
||||
@lru_cache(maxsize=8)
|
||||
|
||||
Reference in New Issue
Block a user