- 테두리 여유 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
35 lines
1.3 KiB
Python
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)
|