feat(b06): 소단 = 성토 사면 노면 끝 아래 depth_m 에 수평 한 단 · 아래로 성토 이음 · 절토 소단 끔 · 높이 칸 숨김 · 깊이 칸(기본 1.0 · 0 미만 = 0) · 파이썬 · TS 거울 시험(178-2)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F3mdb91125mPoC6tpsQx4P
This commit is contained in:
@@ -217,11 +217,8 @@ class _SectionGeometry:
|
||||
self.cut_ratio,
|
||||
self.soil_cut_ratio,
|
||||
boundary,
|
||||
self.berm,
|
||||
# 소단이 있으면 경계를 오갈 때마다 꺾는다 — 소단은 평탄한데 경계선은 지반을
|
||||
# 따라 올라가서 되돌아 들어가는 일이 흔하다. 한 번만 꺾으면 그 구간을 암인데
|
||||
# 토사 경사로 그려 절토가 조용히 커진다(2026-09-07).
|
||||
multi_knee=self.berm is not None,
|
||||
# 절토 소단 끔(178-2 · 소단 = 성토 사면 한 단) — 경계는 한 번만 꺾음(종전 규칙).
|
||||
None,
|
||||
)
|
||||
self._cut_points_cache[side] = points
|
||||
return points
|
||||
@@ -235,7 +232,11 @@ class _SectionGeometry:
|
||||
if side in self._fill_points_cache:
|
||||
return self._fill_points_cache[side]
|
||||
start_dist, start_z = self._slope_start(side)
|
||||
points = fill_profile_points(start_dist, start_z, self.fill_ratio, self.berm)
|
||||
# 소단 깊이 기준 = 그쪽 노면 끝(길어깨 끝) 표고 — 측구가 그쪽이어도 같음(178-2).
|
||||
edge_z = (
|
||||
self.road_z(self.left_extent) if side == "left" else self.road_z(-self.right_extent)
|
||||
)
|
||||
points = fill_profile_points(start_dist, start_z, self.fill_ratio, self.berm, top_z=edge_z)
|
||||
self._fill_points_cache[side] = points
|
||||
return points
|
||||
|
||||
@@ -428,8 +429,8 @@ class _SectionGeometry:
|
||||
"""적분·설계선에 반드시 포함할 설계 꼭짓점 오프셋 목록(2단계 무릎·소단 포함)."""
|
||||
points = [0.0, self.left_extent, -self.right_extent]
|
||||
points.extend(offset for offset, _z in self.ditch_points)
|
||||
# 절토 사면 꼭짓점(무릎·소단 모서리) — 빠뜨리면 계단이 설계선에 안 실린다.
|
||||
if self.two_stage or self.berm is not None:
|
||||
# 절토 사면 꼭짓점(무릎) — 빠뜨리면 꺾임이 설계선에 안 실린다.
|
||||
if self.two_stage:
|
||||
for side in ("left", "right"):
|
||||
role = self.left_role if side == "left" else self.right_role
|
||||
if role != "cut":
|
||||
|
||||
Reference in New Issue
Block a user