Skip to content
Shapemetry

@huukhanhnguyen/types / evaluate/inspect

evaluate/inspect

CurveMetrics

CurveMetrics = { closed: boolean; length: number; selfIntersects: boolean | null; winding: "CW" | "CCW" | null; }

closed

closed: boolean

length

length: number

selfIntersects

selfIntersects: boolean | null

null when the curve isn't planar-XY (test not applicable).

winding

winding: "CW" | "CCW" | null

Loop orientation in the XY plane; null for open or non-planar curves.


InspectClash

InspectClash = { a: string; b: string; overlap: number; }

a

a: string

b

b: string

overlap

overlap: number


InspectCounts

InspectCounts = { annotations: number; curves: number; faces: number; groups: number; hidden: number; meshes: number; points: number; }

annotations

annotations: number

curves

curves: number

faces

faces: number

groups

groups: number

hidden

hidden: number

meshes

meshes: number

points

points: number


InspectGroup

InspectGroup = { bounds: BoundingBox | null; counts: InspectCounts; hidden: boolean; key: string; layers: string[]; materials: string[]; mesh?: MeshMetrics; steps: InspectStep[]; tessellation?: { curves: { points: Point[]; }[]; meshes: { indices: number[]; positions: number[]; }[]; }; warnings: string[]; }

bounds

bounds: BoundingBox | null

counts

counts: InspectCounts

hidden

hidden: boolean

key

key: string

layers

layers: string[]

materials

materials: string[]

mesh?

optional mesh?: MeshMetrics

Tessellated mesh diagnostics when the group carries faces.

steps

steps: InspectStep[]

tessellation?

optional tessellation?: { curves: { points: Point[]; }[]; meshes: { indices: number[]; positions: number[]; }[]; }

Full tessellation — only with the geometry option (external tools).

curves

curves: { points: Point[]; }[]

meshes

meshes: { indices: number[]; positions: number[]; }[]

warnings

warnings: string[]


InspectReport

InspectReport = { clashes?: InspectClash[]; groups: InspectGroup[]; parameters: { key: string; value: unknown; }[]; title?: string; unit?: string; warnings: string[]; }

clashes?

optional clashes?: InspectClash[]

Coarse bbox-overlap pairs — only with the clashes option.

groups

groups: InspectGroup[]

parameters

parameters: { key: string; value: unknown; }[]

key

key: string

value

value: unknown

title?

optional title?: string

unit?

optional unit?: string

warnings

warnings: string[]

Every group/step warning, prefixed with its path — scan this first.


InspectStep

InspectStep = { bounds: BoundingBox | null; counts: InspectCounts; curve?: CurveMetrics; error?: string; key: string; method: string; steps?: InspectStep[]; warnings: string[]; }

bounds

bounds: BoundingBox | null

counts

counts: InspectCounts

curve?

optional curve?: CurveMetrics

Tessellated curve diagnostics when the step's value is one curve.

error?

optional error?: string

key

key: string

method

method: string

steps?

optional steps?: InspectStep[]

Present when the step is a nested Group: its own pipeline.

warnings

warnings: string[]


MeshMetrics

MeshMetrics = { boundaryEdges: number; degenerate: number; invertedSolids: number; sealed: boolean; solids: number; triangles: number; volume: number; }

boundaryEdges

boundaryEdges: number

degenerate

degenerate: number

invertedSolids

invertedSolids: number

Sealed components with negative volume: inside-out (e.g. an unflipped mirror copy).

sealed

sealed: boolean

True when every edge is shared by exactly two triangles.

solids

solids: number

Connected components (vertex-connectivity) — one per separate solid/sheet.

triangles

triangles: number

volume

volume: number

Signed volume — negative on a sealed mesh means inverted winding.

Last updated: 📖 4 min readEdit on GitHub