Reads the assembly structure of a shape as products and occurrences: a product is a part or sub-assembly defined once, an occurrence is one placement of it with a matrix and a parent.
This is what STEP assembly import produces and what a tree view walks; a plain shape reports no products.
The shape to analyze
The root products, all products and all occurrences
Describes the geometry of every face: the kind of surface it lies on, its UV bounds, whether it carries a triangulation, and a unique id.
Faces are numbered from 0 in the order shapes.face.getFaces uses.
The shape to analyze
One geometry entry per face
Describes the geometry of every edge: the kind of curve it follows, its parameter range, its continuity and a unique id.
Edges are numbered from 0 in the order shapes.edge.getEdges lists them.
The shape to analyze
One geometry entry per edge
Turns a node of the graph, given by its kind and index, back into the real sub-shape it stands for, so a face or edge found by a query can be used in an operation.
The indexes are the ones the query results use, counted from 0 per kind.
The shape, the node kind and the node index
The sub-shape
Finds the graph node that stands for a given sub-shape of a shape: its kind, its index and its unique id.
The reverse of reconstruct; a sub-shape that does not belong to the shape gives a result
marked invalid.
The shape and one of its sub-shapes
The node's kind, index and id, or an invalid result
Counts what a shape is made of: solids, shells, faces, wires, edges, coedges and vertices, the distinct surfaces and curves behind them, and any assembly products and occurrences.
The quickest way to see what an imported file holds, and to tell one solid from a compound that only looks like one.
The shape to analyze
The counts and graph metadata
Lists, for every face, the faces that share an edge with it, along with its edges, wire count and outer wire.
Faces are numbered from 0 in the order the kernel walks the shape, the same order
shapes.face.getFaces uses. This is the building block for growing a selection outward from
a seed face or finding the faces of a pocket.
The shape to analyze
One adjacency entry per face
Lists, for every edge, the faces it belongs to, its end vertices and its topology flags, such as whether it is a seam or a border edge.
Edges are numbered from 0 in the order shapes.edge.getEdges lists them.
The shape to analyze
One entry per edge
Lists every vertex with its 3D point, its tolerance and the edges that meet there.
Vertices are numbered from 0 in the order the kernel walks the shape.
The shape to analyze
One entry per vertex
Maps the shape's parts upward: which shells each face belongs to, which solids each shell belongs to, and which solids each face ends up in.
Each list holds the parent indexes of one child, so a face shared by two solids lists both.
The shape to analyze
The parent indexes per face and per shell
Describes every wire: whether it is closed, whether it is the outer boundary of its face, how many coedges and distinct edges it has and which face owns it.
The shape to analyze
One entry per wire
Dumps the whole structure of a shape: every solid, shell, face, edge and vertex with its unique id and the parts directly below it.
The heaviest query here, for reasoning about the whole topology at once rather than answering one question.
The shape to analyze
The solids, shells, faces, edges and vertices with their references
Checks the structure of a shape's graph for problems such as dangling references or inconsistent links, and lists every issue found with its severity.
This checks the bookkeeping, not the geometry; shapes.shape.isValid and
shapeFix.basicShapeRepair deal with geometric validity.
The shape to analyze
Whether the graph is sound and the issues found
Structural queries over an OpenCascade shape seen as a graph: which faces touch, which faces an edge belongs to, which edges meet at a vertex, what surface or curve backs each face or edge, how shells and solids contain each other, and the product and occurrence tree of an assembly. Every query returns plain data with
okand an error message rather than throwing, so a batch of queries can report per-item failures;reconstructturns a node of that data back into a real sub-shape.