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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions