Skip to content

add edge convexity/concavity (+ dihedral angle) to the BRepGraph export schema #55

Description

@gsdali

Context

BREPGraphJSONExporter and graph-ml export a thorough per-edge attribute set — tolerance, degenerate/closed flags, sameParameter/sameRange, maxContinuity, parameter range, start/end vertex, boundary, manifold, adjacency. But they omit edge convexity/concavity (and dihedral angle).

Why this matters

Convexity is the single most important edge feature in B-rep feature-recognition GNNs — AAGNet's geometric Attributed Adjacency Graph (gAAG) and BRepGAT both key on per-edge convex/concave/smooth labels, and it's the most common machining-feature discriminator. It's also exactly what concave/convex selectors resolve. Right now a consumer feeding the exported graph to a GNN (the whole point of graph-ml) is missing the highest-signal edge attribute.

Proposal

Add to each edge in the graph export:

  • convexity: convex | concave | smooth/tangent | unknown (enum string),
  • optionally dihedralAngle (radians) at a representative point.

The kernel already exposes the classification on Shape (concaveEdges(), convexEdges(), EdgeConcavity/EdgeConvexity); compute it in the exporter (or request a TopologyGraph-level accessor if cleaner). Add the field to both the graph-ml ML payload (per-edge) and the full BREPGraphJSONExporter edge block; bump the export schemaVersion.

Audit ref

Part of the BRepGraph coverage audit (2026-06-18). Companion: graph adjacency/selection query verb (separate issue). MCP passthrough in OCCTMCP#38.

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