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