pub fn validate_solid(
topo: &Topology,
solid: SolidId,
) -> Result<ValidationReport, OperationsError>Expand description
- Euler-Poincaré: V - E + F = 2(1 - g) for genus-g closed solid
- Manifold edges: each edge shared by exactly 2 faces
- Boundary edges: no edge shared by only 1 face (open shell)
- Degenerate faces: each face has at least 3 vertices
- Face normal consistency: normals should be non-zero
- Wire closure: every wire forms a closed loop
- Degenerate face area: near-zero polygon area warning for planar faces
- Zero-length edges: edges with coincident start/end vertices
- Empty wires: wires with no edges
- Shell connectivity: all faces reachable from any face
- Redundant faces: same face ID appearing twice in shell
- Edge vertex consistency: edge vertices belong to the solid
§Errors
Returns an error if topology lookups fail.