Link Search Menu Expand Document

Topology graph

Low-level B-rep graph operations that work directly on an absolute BREP file path rather than a scene body. Use these when you need raw topology analysis, graph compaction, ML export, or local adjacency queries — call the scene-aware wrappers (validate_geometry, recognize_features) when working with bodies already loaded in the scene.

Tools


graph_validate

Raw-path topology validation. Pass an absolute BREP path; use validate_geometry for the scene-aware version.

Server: Swift + Node

Parameters

name type required description
brep_path string yes Absolute path to the BREP file to validate.

Returns — Topology validity report for the shape at brep_path. Reports errors/warnings on individual sub-shapes.

Example

// tool call arguments
{ "brep_path": "/Users/me/Library/Mobile Documents/com~apple~CloudDocs/OCCTSwiftScripts/output/part.brep" }
// example result
{ "valid": true, "errors": [], "warnings": [] }

Notes — For bodies already in the scene, prefer validate_geometry (takes a bodyId).


graph_compact

Compact a BREP’s topology graph (drops unreferenced nodes); writes the rebuilt shape to output_path.

Server: Swift + Node

Parameters

name type required description
brep_path string yes Absolute path to the source BREP file.
output_path string yes Absolute path where the compacted BREP will be written.

Returns — Confirmation that the compacted shape was written to output_path, plus node counts before and after.

Example

// tool call arguments
{
  "brep_path": "/Users/me/.occtswift-scripts/output/part.brep",
  "output_path": "/Users/me/.occtswift-scripts/output/part_compact.brep"
}
// example result
{ "output_path": "/Users/me/.occtswift-scripts/output/part_compact.brep", "nodesRemoved": 4 }

graph_dedup

Deduplicate shared surface/curve geometry in a BREP’s topology graph; writes the rebuilt shape to output_path.

Server: Swift + Node

Parameters

name type required description
brep_path string yes Absolute path to the source BREP file.
output_path string yes Absolute path where the deduplicated BREP will be written.

Returns — Confirmation that the deduplicated shape was written to output_path.

Example

// tool call arguments
{
  "brep_path": "/Users/me/.occtswift-scripts/output/assembly.brep",
  "output_path": "/Users/me/.occtswift-scripts/output/assembly_dedup.brep"
}
// example result
{ "output_path": "/Users/me/.occtswift-scripts/output/assembly_dedup.brep", "geometriesDeduped": 12 }

graph_ml

Export a BREP’s topology graph as ML-friendly JSON. Wraps ScriptHarness BREPGraphJSONExporter, augmented with a faceAdjacency block — the convexity-attributed gAAG edge attribute with face indices in shape.faces() order.

Server: Swift + Node

Parameters

name type required description
brep_path string yes Absolute path to the BREP file.
description string no Optional human-readable label written into the exported JSON.

Returns — ML-friendly JSON containing nodes (faces, edges, vertices with UV/edge samples), edges (topology adjacency), and a faceAdjacency block with { face1, face2, convexity, sharedEdgeCount } entries.

Example

// tool call arguments
{
  "brep_path": "/Users/me/.occtswift-scripts/output/part.brep",
  "description": "bracket v2"
}
// example result
{
  "description": "bracket v2",
  "nodes": [ { "kind": "face", "index": 0 }, "..." ],
  "faceAdjacency": [
    { "face1": 0, "face2": 1, "convexity": "convex", "sharedEdgeCount": 1 }
  ]
}

Notes — Face indices in faceAdjacency follow shape.faces() order, consistent with query_topology’s face[N] scheme.


graph_select

Local B-rep graph adjacency/selection query — returns a focused neighbourhood rather than a full graph dump.

Server: Swift only

Parameters

name type required description
brep_path string yes Absolute path to the BREP file.
query string ("face-neighbors" | "edge-faces" | "vertex-edges" | "face-adjacency" | "edges-class") yes Which adjacency/selection query to run.
face integer no Face index (required for face-neighbors). Follows shape.faces() order.
edge integer no Edge index (required for edge-faces). TopologyGraph index.
vertex integer no Vertex index (required for vertex-edges). TopologyGraph index.
class string ("boundary" | "non-manifold" | "seam" | "degenerate") no Edge class filter (required for edges-class).

Returns — Depends on query:

  • face-neighbors — adjacent face indices, convexity per shared edge, shared-edge count.
  • edge-faces — face indices on both sides of the given edge.
  • vertex-edges — edge indices incident to the given vertex.
  • face-adjacency — full attributed face-adjacency graph (gAAG) for the shape.
  • edges-class — indices of all edges matching the given class.

Example

// tool call arguments  face neighbours with convexity
{
  "brep_path": "/Users/me/.occtswift-scripts/output/part.brep",
  "query": "face-neighbors",
  "face": 2
}
// example result
{
  "face": 2,
  "neighbors": [
    { "face": 0, "convexity": "convex", "sharedEdgeCount": 1 },
    { "face": 3, "convexity": "concave", "sharedEdgeCount": 1 }
  ]
}

Notes — The correct secondary parameter to supply depends on query: face for face-neighbors, edge for edge-faces, vertex for vertex-edges, class for edges-class; none needed for face-adjacency. This tool is Swift only — Node clients must use graph_ml for adjacency data.


feature_recognize

Detect pockets and holes via AAG heuristics. Pass an absolute BREP path; recognize_features is the scene-aware variant.

Server: Swift + Node

Parameters

name type required description
brep_path string yes Absolute path to the BREP file to analyse.

Returns — List of detected features (pockets, holes) with their face-index sets and geometry parameters.

Example

// tool call arguments
{ "brep_path": "/Users/me/.occtswift-scripts/output/part.brep" }
// example result
{
  "features": [
    { "kind": "hole", "faces": [4, 5], "diameter": 6.0 },
    { "kind": "pocket", "faces": [6, 7, 8], "depth": 5.0 }
  ]
}

Notes — For bodies already in the scene, prefer recognize_features (takes a bodyId). Face indices follow shape.faces() order.