From 3a33341904eee307a3ee93dc1312b9bc5182c4e7 Mon Sep 17 00:00:00 2001 From: Vectornaut Date: Fri, 10 Oct 2025 00:45:07 +0000 Subject: [PATCH] Start a section on CAD formats --- Serialization.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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: