Files
Aislo/resources/tester/test_b07_cross_sheet_pad.py
T
eomsangdonandClaude Opus 5.5 1eb43a790d fix(B07): 횡단면도 단면 블록 테두리 간격 1 mm — 한 장에 더 담음
- 테두리 여유 4 mm · 위아래 덧 여백 5 mm 제거 → 테두리 ↔ 그림 1 mm(CROSS_BORDER_PAD_MM)
- 장 배치(Sheet.py)와 단독 도면(Engine_Cad.py) 같은 상수
- 검증_sub4 첫 장 칸 168×172 → 162×156 mm · 담을 수 8 → 12

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013rJwJMVL4EE31y77TB11AP
2026-10-06 17:38:14 +09:00

35 lines
1.3 KiB
Python

"""B07 횡단면도 — 단면 블록 테두리 ↔ 안쪽 그림 간격 1 mm (59-1)."""
import pytest
from B07_DesignDetail.B07_DesignDetail_Engine_Cad import (
CROSS_BORDER_PAD_MM,
FRAME_LAYER_ID,
build_cross_drawing,
)
from B07_DesignDetail.B07_DesignDetail_Engine_Cad_Sheet import section_block_size
from B07_DesignDetail.B07_DesignDetail_Engine_Template import entities_bbox
_SOURCE = {
"chainage_m": 20.0,
"samples": [
{"valid": True, "offset_m": float(x), "elevation_m": 100.0 + 0.3 * x}
for x in range(-10, 11)
],
}
def test_frame_hugs_section_by_one_mm() -> None:
drawing = build_cross_drawing(_SOURCE, "cross_00020m", None, None, None, "")
lines = [e for e in drawing["entities"] if e.get("layerId") != FRAME_LAYER_ID]
frame = [e for e in drawing["entities"] if e.get("layerId") == FRAME_LAYER_ID]
min_x, min_y, max_x, max_y = entities_bbox(lines)
f_min_x, f_min_y, f_max_x, f_max_y = entities_bbox(frame)
assert CROSS_BORDER_PAD_MM == 1.0
assert f_max_y - max_y == pytest.approx(1.0)
assert min_y - f_min_y == pytest.approx(1.0)
# 표 없는 블록 크기 = 테두리 크기
width, height = section_block_size(_SOURCE, None, with_table=False)
assert height == pytest.approx(f_max_y - f_min_y)
assert width == pytest.approx(f_max_x - f_min_x)