평면도와 상부평면도 모델을 하나로 통합

This commit is contained in:
김지영 committed 2026-10-20 13:20:43 +09:00
1 parent 9d11b4ed62
commit e473a7caff
10 files changed
+54 -8799

No files matched your search

+4 -2
View File
@@ -212,7 +212,7 @@ def alignment_units(entities):
length = radius_m * math.radians(theta1 - theta0)
units.append({
"id": f"alignment-{index + 1}",
"name": f"BLOCK8 평면 중심선 {index + 1}",
"name": "BLOCK8 기준 중심선",
"center": [(acx - center_x_origin) / 1000, (float(first(props(arc), 20)) - center_y_origin) / 1000],
"planOrigin": [center_x_origin, center_y_origin],
"radius": radius_m,
@@ -222,7 +222,9 @@ def alignment_units(entities):
"centerlineHandle": first(props(arc), 5, ""),
"boundaryHandles": boundary_handles,
})
return units
# 평면도와 상부평면도에 반복된 중심선은 같은 구조물의 도면 표현이다.
# 첫 번째 중심선을 모델 배치 기준으로 사용하고 두 번째는 검산에만 쓴다.
return units[:1]
def add_block_parts(parts, entities, blocks, center_x, sections):
+3 -3
View File
@@ -56,7 +56,7 @@ def main():
svg = [
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 660" role="img" aria-labelledby="title desc">',
'<title id="title">광터지하차도 BLOCK8 도면 기반 3D 구조 모델</title>',
'<desc id="desc">두 평면 중심선을 따라 시점과 종점 단면 구조선을 연결한 열린 표면 검토 모델. 일부 배치 대응은 확인 필요.</desc>',
'<desc id="desc">평면도와 상부평면도의 동일 구조물 중심선을 기준으로 시점과 종점 단면 구조선을 연결한 단일 열린 표면 검토 모델.</desc>',
'<defs><linearGradient id="bg" x2="0" y2="1"><stop stop-color="#f7faf6"/><stop offset="1" stop-color="#e8eee8"/></linearGradient></defs>',
'<rect width="1200" height="660" rx="22" fill="url(#bg)"/>',
'<text x="62" y="61" fill="#728579" font-family="sans-serif" font-size="14" font-weight="700" letter-spacing="2">광터지하차도 · 도면 기반 검토 모델</text>',
@@ -78,12 +78,12 @@ def main():
left = point_at(unit, [[0, 104]], [[0, 104]], 0, 0)
right = point_at(unit, [[0, 104]], [[0, 104]], 0, 1)
p0, p1 = project(left), project(right)
svg.append(f'<g font-family="sans-serif" font-size="12" fill="#55715c"><text x="{p0[0]:.1f}" y="{p0[1]-13:.1f}">중심선 {idx+1} · STA 319.010</text><text x="{p1[0]:.1f}" y="{p1[1]-12:.1f}">STA 338.990</text></g>')
svg.append(f'<g font-family="sans-serif" font-size="12" fill="#55715c"><text x="{p0[0]:.1f}" y="{p0[1]-13:.1f}">BLOCK8 중심선 · STA 319.010</text><text x="{p1[0]:.1f}" y="{p1[1]-12:.1f}">STA 338.990</text></g>')
svg.extend([
'<g font-family="sans-serif" font-size="12"><rect x="62" y="570" width="1076" height="54" rx="9" fill="#f8f3e8" stroke="#e5dbc4"/>',
'<text x="82" y="593" fill="#8c774e">길이 19.980m · 평면 중심선 교점으로 계산 · 시점/종점 단면 구조선 114개씩 + 블록 내부 윤곽</text>',
'<text x="82" y="612" fill="#8c774e">열린 표면 모델이며 닫힌 체적은 아닙니다. 두 중심선에 같은 단면을 적용한 대응은 검토가 필요합니다.</text></g>',
'<text x="82" y="612" fill="#8c774e">단일 구조물 모델입니다. 열린 표면이며 닫힌 체적이 아닙니다. 상부평면도 중심선은 같은 구조물 표현으로 해석했습니다.</text></g>',
'</svg>',
])
OUTPUT.write_text('\n'.join(svg) + '\n', encoding="utf-8")