Sprint 14~22 — egui 리본 UI + OcctKernel B-rep + 가로보/신축이음 + 선형 좌표 + USD 익스포트 + WASM + CI/CD + 테스트 4층
Sprint 14: egui TopBottomPanel 리본 + CollapsingHeader SidePanel (상부구조·추가부재·선형·프로젝트) Sprint 15: IncrementalDb 전 Feature 타입 확장 (girder→7종), dirty-tracking 20 unit tests Sprint 16: Gitea + GitHub Actions CI/CD (check/test/clippy/fmt + 멀티플랫폼 릴리스) Sprint 17: AlignmentTransform + AlignmentScene — 선형 국소 프레임 → 세계 좌표 변환 Sprint 18: OcctKernel 교각(16각형 기둥+코핑) + 교대(흉벽+푸팅+날개벽) B-rep Sprint 19: CrossBeamIR + ExpansionJointIR — IR/DSL/kernel/scene 전 계층, sweep_profile_flat_x Sprint 20: 테스트 4층 — Layer1 insta 스냅샷(7종), Layer2 기하 불변량(19), Layer3 두-커널(7), Layer4 proptest(7) — 61 tests pass Sprint 21: cimery-usd PureRustKernel 실제 기하 변환 + BridgeExporter 증분 캐시 Sprint 22: viewer wasm feature + wasm-bindgen/web-sys + GitHub Actions Cloudflare Pages 배포 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -321,6 +321,62 @@ pub struct AbutmentIR {
|
||||
pub material: cimery_core::MaterialGrade,
|
||||
}
|
||||
|
||||
// ─── Cross Beam IR ────────────────────────────────────────────────────────────
|
||||
|
||||
/// Fully-resolved Cross Beam (가로보) specification. Sprint 19.
|
||||
///
|
||||
/// Cross beams provide lateral bracing between girders at regular intervals.
|
||||
/// All dimensions in mm; station in m.
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct CrossBeamIR {
|
||||
pub id: FeatureId,
|
||||
/// Station along alignment [m] — position of this cross beam set.
|
||||
pub station: f64,
|
||||
pub section: cimery_core::CrossBeamSection,
|
||||
/// Web height (distance between flange centrelines) [mm].
|
||||
pub web_height: f64,
|
||||
/// Web plate thickness [mm].
|
||||
pub web_thickness: f64,
|
||||
/// Flange width [mm].
|
||||
pub flange_width: f64,
|
||||
/// Flange thickness [mm].
|
||||
pub flange_thickness:f64,
|
||||
/// Number of girder bays to span (= girder_count - 1).
|
||||
pub bay_count: u32,
|
||||
/// Girder c/c spacing [mm] — defines beam length per bay.
|
||||
pub girder_spacing: f64,
|
||||
pub material: cimery_core::MaterialGrade,
|
||||
}
|
||||
|
||||
impl CrossBeamIR {
|
||||
/// Total length of one cross beam [mm].
|
||||
pub fn total_length_mm(&self) -> f64 {
|
||||
self.bay_count as f64 * self.girder_spacing
|
||||
}
|
||||
}
|
||||
|
||||
// ─── Expansion Joint IR ───────────────────────────────────────────────────────
|
||||
|
||||
/// Fully-resolved Expansion Joint (신축이음) specification. Sprint 19.
|
||||
///
|
||||
/// Placed at the ends of a span or at pier locations to allow relative movement.
|
||||
/// All dimensions in mm; station in m.
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct ExpansionJointIR {
|
||||
pub id: FeatureId,
|
||||
/// Station along alignment [m].
|
||||
pub station: f64,
|
||||
pub joint_type: cimery_core::ExpansionJointType,
|
||||
/// Opening gap width [mm] — clear distance at nominal position.
|
||||
pub gap_width: f64,
|
||||
/// Total transverse width [mm] — same as deck width.
|
||||
pub total_width: f64,
|
||||
/// Total assembly depth [mm].
|
||||
pub depth: f64,
|
||||
/// Design movement range [mm] — max expansion/contraction.
|
||||
pub movement_range:f64,
|
||||
}
|
||||
|
||||
// ─── Tests ────────────────────────────────────────────────────────────────────
|
||||
|
||||
#[cfg(test)]
|
||||
|
||||
Reference in New Issue
Block a user