Skip to content

BRepBuilderAPI_MakeSolid returns solid-type result with zero faces in OCCT wasm pipeline #126

@0x46y

Description

@0x46y

Summary

In our browser-based OCCT wasm pipeline, BRepBuilderAPI_MakeSolid
sometimes returns a solid-type object without an explicit failure,
but the resulting topology contains zero faces.

Recent diagnostics show that both patterns can occur depending on the
post-solidification route: some routes produce empty-topology results,
while others produce non-empty solid candidates.

As a result, the returned object cannot be used as a valid solid for
downstream operations such as volume computation.

Environment

  • OCCT: wasm build used in browser integration
  • Runtime: Chrome (browser worker)
  • Input: STL-derived geometry after mesh repair

Pipeline used:

STL mesh → sew/heal → force closure → shell → BRepBuilderAPI_MakeSolid

Observed behavior

Across multiple post-solidification attempts we repeatedly observe
diagnostics similar to:

  • ret = solid/1
  • topo = 0/1/1 (face/shell/solid counts)

These diagnostics are generated by my own diagnostic tool.

This indicates that a TopoDS_Solid object is returned, but the
topology effectively contains:

  • 0 faces
  • 1 shell
  • 1 solid container

Because the face count is zero, our pipeline rejects the result
as not a usable solid for downstream geometry operations.

This can occur even when earlier closure diagnostics report no open
edges after the force-closure stage.

Expected behavior

If BRepBuilderAPI_MakeSolid returns a solid object, the resulting
topology would normally represent a usable closed solid (i.e.
non-zero face topology).

Alternatively, if the shell cannot produce a valid solid, it may be
preferable for the operation to fail explicitly.

Request

Could you clarify:

  • Is this behavior expected in some situations when using
    BRepBuilderAPI_MakeSolid?

  • Are there recommended validation checks after MakeSolid
    before treating the result as a valid solid?

  • Are there known prerequisites for STL-repaired shells before
    calling MakeSolid in OCCT (particularly in wasm builds)?

Due to confidentiality we cannot share the original STL mesh,
but we can provide sanitized diagnostics and reproducible
parameter settings if helpful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions