Skip to content

v0.6.0 — split file-I/O concerns into OCCTSwiftIO

Choose a tag to compare

@gsdali gsdali released this 06 May 05:45
· 14 commits to main since this release
5e6dca3

Splits file-I/O concerns into a new sibling package: OCCTSwiftIO v0.1.0 — depends on OCCTSwift only, no OCCTSwiftViewport. Closes #12.

Headless consumers (Scripts, PadCAM CLI, batch pipelines, server-side workflows) can now load CAD files without dragging in the Metal renderer transitively. Source compatibility preserved for existing Tools consumers via @_exported import OCCTSwiftIO.

What moved to OCCTSwiftIO

  • enum CADFileFormat
  • enum ExportManager + enum ExportFormat
  • struct ScriptManifest
  • final class ImportProgressClosure
  • struct CADBodyMetadata (pure-data picking metadata; no Viewport dep)
  • New: enum ShapeLoaderload(from:format:progress:), loadRobust(...), loadFromManifest(at:) returning ShapeLoadResult { shapesWithColors, dimensions, geomTolerances, datums, manifest }. No ViewportBody.

What stays here

  • CADFileLoader.shapeToBodyAndMetadata(...) — the bridge. Unchanged.
  • CADFileLoader.load(...) — now a thin façade over OCCTSwiftIO.ShapeLoader.load(...) plus per-shape bridge. Same return type (CADLoadResult with bodies: [ViewportBody]), same signature.
  • CADFileLoader.loadFromManifest(...) — same façade pattern.
  • CADLoadResult — couldn't move (has bodies: [ViewportBody]).
  • Mesh parameter presets, CurveConverter, SurfaceConverter, WireConverter, BodyUtilities.
  • STL/IGES robust-loader fallback path — bridge-aware (triggered by per-shape mesh-bridge failure), so it lives here.

Consumer migration

  • Bridge users (AIS, CADKit, custom Metal viewers): no change. import OCCTSwiftTools works as before; @_exported re-exports IO so even direct OCCTSwiftTools.ExportManager etc. references still resolve.
  • Headless users (Scripts, PadCAM CLI, batch tools): switch import OCCTSwiftToolsimport OCCTSwiftIO to drop the transitive Viewport dep. ShapeLoader.load(...) is the headless analogue of CADFileLoader.load(...). CADLoadResult has no IO equivalent (it carries [ViewportBody]); use ShapeLoadResult.shapesWithColors instead.

Dependencies

  • New: OCCTSwiftIO0.1.0.
  • OCCTSwift0.170.1 — unchanged.
  • OCCTSwiftViewport0.55.0 — unchanged.

Stats

15 tests / 5 suites in this repo (was 29/8) — the moved test suites live in OCCTSwiftIO now (18/4 there, all green).

Sequencing toward 1.0.0

The issue's acceptance pins both packages at 1.0.0 against OCCT 8.0.0 GA (targeted 2026-05-07). Today's xcframework is OCCT 8.0.0-beta2. Tag both Tools and IO at 1.0.0 when OCCT 8.0.0 GA + OCCTSwift 1.0.0 land.