diff --git a/Serialization.md b/Serialization.md index f4be176..0f36f54 100644 --- a/Serialization.md +++ b/Serialization.md @@ -28,6 +28,24 @@ We want write-read and write-read-write round trips to be faithful. # Framework and format +## CAD formats + +### STEP + +This format is described by the ISO 10303 standard. The standard includes an "Integrated Resource," described by [ISO 10303-108](https://www.iso.org/standard/34697.html), for "Parameterization and constraints for explicit geometric product models." As of 2008, there was no STEP Application Protocol that incorporated this integrated resource, but the authors of the paper below experimented with a hypothetical application protocol. + +- Junhwan Kim, Michael J. Pratt, Raj G. Iyer, and Ram D. Sriram. ["Standardized data exchange of CAD models with design intent"](https://doi.org/10.1016/j.cad.2007.06.014). Computer-Aided Design 40 (7). + +There's an experimental Rust crate for reading and writing STEP files, called [ruststep](https://github.com/ricosjp/ruststep). + +### IGES + +[This page](https://innovation.world/it/invention/iges-step/) claims that IGES "lacked the ability to store higher-level information like feature history or assembly constraints." + +### SolveSpace + +None of the SolveSpace [export options](https://solvespace.com/ref.pl#Export) talk about preserving constraint information. + ## Rust frameworks [Serde](https://serde.rs) is a very popular serialization framework for software written in Rust. It supports many [formats](https://serde.rs/#data-formats) out of the box. Here are the human-readable ones that are designed for hierarchical data and are supported for both serialization and deserialization: