Skip to content

Releases: SecondMouseAU/OCCTSwiftScripts

v1.5.1 — fix OCCTSwiftIO cap conflicting with OCCTSwiftTools

Choose a tag to compare

@gsdali gsdali released this 20 Jul 12:40
c8fc205

Raises the OCCTSwiftIO floor from .upToNextMinor(from: "1.0.0") (>=1.0.0, <1.1.0) to from: "1.7.5". The old cap conflicted with OCCTSwiftTools 1.6.1's own OCCTSwiftIO >= 1.7.0 requirement, so any consumer depending on both OCCTSwiftScripts and OCCTSwiftTools directly (e.g. OCCTMCP) could not resolve both at their latest versions — SwiftPM reported an unsatisfiable version conflict, forcing a workaround pin to OCCTSwiftScripts 1.4.1 and its pre-BRepGraph-rename ScriptHarness/DrawingComposer.

The heavy mesh-IO stack (SwiftPMX/SwiftGLTF/ThreeMF/SwiftJWW/SwiftX) pulled in by OCCTSwiftIO remains unavoidable — confirmed OCCTSwiftIO 1.7.5's own OCCTSwiftIO target has an unconditional dependency on its MeshIO target, not something a consumer can decline at the product level. Grepping OCCTSwiftIO's own source shows no file there actually imports MeshIO, so that dependency may be vestigial upstream, but that's a separate, out-of-scope cleanup for the OCCTSwiftIO repo, not fixable here.

Verified with the actual regression test for this bug: a throwaway root package depending on both this fix and OCCTSwiftTools 1.6.1 directly (mirroring OCCTMCP's shape) resolves cleanly, with occtswiftio landing on 1.7.5, satisfying both floors simultaneously. No public API or behaviour change to OCCTSwiftScripts itself.

Closes #80.

v1.5.0 — TopologyGraph → BRepGraph rename, OCCTSwift floor 1.15.0

Choose a tag to compare

@gsdali gsdali released this 20 Jul 11:41
68c8ccd

Repins the OCCTSwift floor to 1.15.0 — required because BRepGraph doesn't exist as a symbol before that release (only the deprecated TopologyGraph typealias does). Every internal reference to the deprecated name across ScriptHarness's BREP graph exporters, the occtkit graph-select/graph-ml commands, and the standalone GraphML tool is renamed TopologyGraphBRepGraph to match. No public API or behaviour change — this is a pure identifier rename plus the forced dependency-floor bump; the occtkit CLI's JSON/SQLite output and verb behaviour are unchanged (spot-checked against a real recipe).

See SecondMouseAU/OCCTSwift#333 / OCCTSwift v1.15.0 for the upstream rename this follows. Closes #78.

v1.4.6 — repin OCCTSwift 1.12.9 (#318 + #323 fixes)

Choose a tag to compare

@gsdali gsdali released this 19 Jul 20:43
6408335

Repin the OCCTSwift floor to 1.12.9: kernel patch 0006 (BRepGProp guard, #318) plus patches 0007-0009 (#323). No API or behaviour change.

v1.4.5 — repin OCCTSwift 1.12.7 (#317 crash fix)

Choose a tag to compare

@gsdali gsdali released this 19 Jul 12:27
01f4344

Repin the OCCTSwift floor to 1.12.7: OCCT kernel patch 0005 guards a null Context() in ShapeFix_Face::FixPeriodicDegenerated, fixing the SIGSEGV in #317. No API or behaviour change.

v1.4.4 — repin OCCTSwift 1.12.6 (free-bounds crash fix)

Choose a tag to compare

@gsdali gsdali released this 19 Jul 06:36
0714a4e

Repin the OCCTSwift floor to 1.12.6 — OCCT kernel patch 0004 fixes the uncatchable ShapeAnalysis_FreeBounds SIGSEGV (#310), on top of the thread-safe-fillet fix (#298). No API or behaviour change.

v1.4.3 — repin OCCTSwift 1.12.3 (thread-safe fillet)

Choose a tag to compare

@gsdali gsdali released this 18 Jul 03:34
7ee777d

Repin the OCCTSwift floor to 1.12.3 (OCCT kernel patch 0003 — thread-safe 3D fillet/chamfer, #298 / upstream OCCT#1374). No API or behaviour change.

v1.4.2 — cap OCCTSwiftIO to 1.0.x (fixes lean-consumer resolution)

Choose a tag to compare

@gsdali gsdali released this 01 Jul 20:48
6ed14de

Dependency-constraint patch. No API changes.

Fix (#69, PR #70): OCCTSwiftScripts declared occtDep("OCCTSwiftIO", from: "1.0.0"), which is only bounded by the major version. Once OCCTSwiftIO v1.5.0 was published, any consumer depending on OCCTSwiftScripts without its own root-level OCCTSwiftIO override resolved OCCTSwiftIO to 1.5.0, dragging in the heavy mesh-IO stack (SwiftX / SwiftDXF / SwiftJWW / SwiftPMX / ThreeMF / SwiftGLTF / Nodal / Zip) and making the dependency graph unsolvable (exhausted attempts to resolve the dependencies graph). This broke OCCTMCP's execute_script, whose cached SPM workspace depends on ScriptHarness alone.

Change:

  • New occtDepUpToNextMinor helper; OCCTSwiftIO is now pinned with .upToNextMinor(from: "1.0.0") (the 1.0.x line — the narrow surface used by the GraphML / graphml verbs, which has no need for 1.1.0+).
  • Also fixes a sibling-detection false-positive in the local-clone occtDep path (a .build/checkouts/OCCTSwiftIO was wrongly treated as a dev sibling and used via .package(path:) transitively — the deeper mechanism behind #69).

Lean/transitive consumers (OCCTMCP execute_script, PadCAM, PartsAgent) now resolve without needing their own OCCTSwiftIO cap.

🤖 Generated with Claude Code

v1.4.0 — load-brep / import --allow-invalid

Choose a tag to compare

@gsdali gsdali released this 20 Jun 00:09
4859b27

load-brep and import gain --allow-invalid (JSON: allowInvalid), threaded to OCCTSwift 1.8.0's Exporter.writeBREP(allowInvalid:). Lets an in-progress reconstruction — a compound of loose analytic faces, possibly invalid — be persisted into a scene manifest and reloaded for measurement (metrics, measure-deviation, graph-validate), instead of being refused by the shape.isValid write gate. Default off preserves the gate. OCCTSwift floor → 1.8.0.

Enables OCCTMCP #41. PR #60.

v1.3.0 — occtkit measure-deviation verb + metrics boundingBoxOptimal

Choose a tag to compare

@gsdali gsdali released this 19 Jun 23:28
5aa3b06

Two introspection capabilities, bringing occtkit (and the OCCTMCP Node server that wraps it) to parity with OCCTMCP's Swift in-process tools.

measure-deviation <a.brep> <b.brep> [--deflection D] [--max-samples N]

Directed + symmetric surface deviation (one-sided / symmetric Hausdorff). Unlike measure-distance (minimum gap, ≈0 for overlapping bodies), it samples each shape's tessellated surface and projects onto the other's triangles — the metric for certifying a mesh→analytic reconstruction. Reports {max, rms, mean, worstPoint, samples} per direction + symmetricHausdorff. Exact point-to-triangle; fidelity scales with --deflection (default 0.5% of the a-shape bbox diagonal).

metrics --metrics …,boundingBoxOptimal

Opt-in tight extent (BRepBndLib::AddOptimal); the default Bnd_Box over-reports curved B-spline faces (control-point hull). Default-all set unchanged.

Refs: OCCTMCP #41, #44. PR #59.

v1.2.0 — graph-select verb + convexity in graph-ml

Choose a tag to compare

@gsdali gsdali released this 18 Jun 23:00
d95999b

Adds the BRepGraph selection primitives (on the 1.7.1 floor).

  • graph-select verb (closes #54): local adjacency/selection queries — face-neighbors (+ convexity + shared-edge count via the kernel AAG), edge-faces, vertex-edges, face-adjacency (full gAAG), edges-class (boundary|non-manifold|seam|degenerate) — without dumping the whole graph.
  • graph-ml now emits a convexity-attributed faceAdjacency block (closes #55), the gAAG edge attribute B-rep GNNs key on.

Built + smoke-tested against OCCTSwift 1.7.1; the rewrap preserved the AAG/adjacency reads. (#56)