도면에서 읽은 구조, 근거가 보이는 모델광터지하차도 BLOCK7
원본 단면 윤곽을 보존한 3D 검토 모델
@@ -49,7 +49,7 @@ export default function App() {
if (!ps.length) return null
const allHidden = ps.every(p => hidden.has(p.id))
return {g}{ps.length}
{ps.map(p => toggle([p.id])} />
)}
- })}{!filtered.length && 검색 결과가 없습니다.
}선 개수는 실제 부재 개수와 다릅니다. 반복선은 기본적으로 숨겨져 있습니다.
>}
+ })}{!filtered.length && 검색 결과가 없습니다.
}선 개수는 실제 부재 개수와 다릅니다. 반복선은 기본적으로 숨겨져 있습니다.
>}
{tab === '도면' && <>원본 좌표 검토
주요 LINE·TEXT와 공동구 선을 발췌한 검토 자료입니다. 전체 도면은 원본 DXF를 확인하세요.
{['단면A', '단면B', '평면검토', '종단검토', '측구상세'].map(s => )}
크게 보기 ↗그림 읽는 법녹색은 두 콘크리트 레이어, 황토색은 공동구 삽입 블록, 회색은 보조선입니다. 도면 기호·일부 블록은 생략되어 있습니다.
>}
{tab === '검증' && <>확인한 것과 남은 것
- 확인A/B 벽체 상단 EL
종단면과 단면 각각 일치 - 확인단면별 구조선 114개
MAJR 108 + MINR 6, 원본 번호 보존 - 확인공동구 실제 직선·원호
좌우 반전과 단면별 높이 반영 - 미확정평면 중심선·절단 위치
중심 EL·중간 곡률 미검증 - 미확정단면·종단 측점 차이
각 끝 10mm 차이, 경계 대응 필요 - 미확정연결 표면·체적·재료
실제 중간 형상과 상세 연장 미검증
현재 표현 범위두 단면의 구조선과 공동구 윤곽을 공간에 배치했습니다. 표면·그림자를 적용한 렌더링은 연결 형상 확인 후 추가할 항목입니다. 현재 윤곽 명암은 실사 렌더링이 아닙니다.
>}
@@ -57,3 +57,4 @@ export default function App() {
}
+
diff --git a/src/model/geometry.js b/src/model/geometry.js
index 5309e55..bd00946 100644
--- a/src/model/geometry.js
+++ b/src/model/geometry.js
@@ -17,3 +17,18 @@ export function exportModel(hidden) {
const visibleParts = data.parts.filter(p => !hidden.has(p.id))
return { ...data, parts: visibleParts, description: '단면 윤곽 3D 배치. 평면 위치·단면간 연결 미확정. 부재 체적 아님.', coordinateSystem: 'X=단면 횡방향(m), Y=EL(m), Z=단면 STA 차(m); 실제 평면 좌표 미확정' }
}
+
+export function exportOBJ(hidden = new Set()) {
+ const rows = ['# 광터지하차도 BLOCK7 단면 윤곽 모델', '# 단위 m. X 횡방향 / Y EL / Z 단면 STA 차. 평면 배치와 연결 표면 미확정.']
+ let index = 1
+ for (const part of data.parts.filter(p => !hidden.has(p.id))) {
+ for (const section of [0, 1]) {
+ rows.push(`# ${part.name} / ${part.source}`, `o ${part.id.replace(/[^a-zA-Z0-9-]/g, '_')}-${section ? 'B' : 'A'}`)
+ const points = profileVertices(part, section)
+ points.forEach(([x, y, z]) => rows.push(`v ${x} ${y + 100} ${z + 10}`))
+ rows.push(`l ${points.map((_, i) => index + i).join(' ')}`)
+ index += points.length
+ }
+ }
+ return rows.join('\n') + '\n'
+}