ogeom_doc/lib.rs
1//! Document and product structure.
2//!
3//! Parts, assemblies and instances with placements; colours and materials per shape
4//! and per sub-shape; layers; names and user properties; PMI and GD&T (dimensions,
5//! tolerances, datums, annotations); construction geometry; validation properties; transactional undo and
6//! redo; and the native persistence format.
7//!
8//! Instancing leans directly on the location chain (`docs/DATA_MODEL.md` ยง2): an
9//! assembly of ten thousand identical fasteners is ten thousand placements over one
10//! piece of geometry, and that only works because placement is structural rather
11//! than a matrix to be compared with an epsilon.
12//!
13//! Deliberately not a label-and-attribute tree. The capability is required; that
14//! particular design, and compatibility with anyone's file format, are not.
15
16pub mod attributes;
17pub mod construction;
18pub mod pmi;
19pub mod structure;
20pub mod view;
21
22pub use attributes::{
23 Layer, LayerId, Material, MaterialId, Property, PropertyValue, Texture, TextureId,
24 TextureMapping, ValidationProperties,
25};
26pub use construction::{Construction, ConstructionGeometry};
27pub use pmi::{
28 Annotated, Callout, Datum, DatumModifier, DatumModifierKind, DatumReference, DatumTarget,
29 DatumTargetKind, Dimension, GeometricTolerance, LEAST_MATERIAL, MAXIMUM_MATERIAL, MeasureKind,
30 Pmi,
31};
32pub use structure::{Colour, Document, Instance, Occurrence, Product, ProductId, ProductKind};
33pub use view::{Note, View};