forked from 1b-agent/opencadstudio-upstream
Add Storm Sewer module: storm-drain network analysis (Rational + Manning + HGL)
Adds a "Storm Sewer" ribbon tab backed by a new in-repo `stormsewer` engine crate (vendored under crates/). The engine implements standard public-domain methods — Rational-method peak-flow accumulation, Manning circular-pipe hydraulics, time-of-concentration / IDF intensity, and an HGL backwater pass with junction losses — with 24 unit tests and no external dependencies. Module (src/modules/storm_sewer/): - Drafting: SS_INLET / SS_JUNCTION / SS_OUTFALL place structure markers and SS_PIPE chains pipe runs (interactive CadCommands). - Analysis: SS_ANALYZE / SS_REPORT / SS_PROFILE open a .ssn network file, run the engine, draw the plan and HGL long-section, and print a report. - SVG icons; SS_* commands registered for command-line autocomplete. Integration is additive: build.rs auto-discovers the module and one dispatch block is added to src/app/commands.rs. 7 module integration tests. See src/modules/storm_sewer/INTEGRATION.md for the design and the optional follow-up (drive analysis from canvas geometry via XDATA). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
99b7ab1176
commit
9b44eb6400
26 files changed
+2007
No files matched your search
@@ -4,6 +4,9 @@ version = "0.5.0"
|
||||
edition = "2021"
|
||||
build = "build.rs"
|
||||
|
||||
[workspace]
|
||||
members = ["crates/stormsewer"]
|
||||
|
||||
[dependencies]
|
||||
# vtkio (pulled in transitively via truck-meshalgo) depends on xz2 → lzma-sys,
|
||||
# which by default links the system liblzma dynamically. On macOS that bakes a
|
||||
@@ -31,6 +34,9 @@ truck-shapeops = "0.4"
|
||||
# Fast non-cryptographic hasher. Handle/u64 keys dominate the hot block,
|
||||
# hatch, draw-depth and wire caches; the default SipHash is overkill there.
|
||||
rustc-hash = "2"
|
||||
# Storm-sewer hydrology/hydraulics engine (Rational + Manning + HGL). Local
|
||||
# crate; powers the `storm_sewer` ribbon module.
|
||||
stormsewer = { path = "crates/stormsewer" }
|
||||
|
||||
[target.'cfg(target_os = "windows")'.dependencies]
|
||||
windows-sys = { version = "0.61", features = ["Win32_UI_Shell", "Win32_UI_WindowsAndMessaging"] }
|
||||
|
||||
Reference in new issue
Block a user