Skip to content

Add experimental OrcaSlicer integration - #112

Open
WeLizard wants to merge 5 commits into
CNCKitchen:mainfrom
WeLizard:orcaslicer-plugin
Open

Add experimental OrcaSlicer integration#112
WeLizard wants to merge 5 commits into
CNCKitchen:mainfrom
WeLizard:orcaslicer-plugin

Conversation

@WeLizard

@WeLizard WeLizard commented Aug 2, 2026

Copy link
Copy Markdown

Summary

This PR adds an experimental integration for OrcaSlicer's upcoming Plugin Pages API.

It allows BumpMesh to run as a full-size page inside OrcaSlicer and transfers printable model geometry from the current OrcaSlicer project directly into the existing BumpMesh application.

The normal BumpMesh website remains unchanged. Embedded mode requires both the explicit ?orcaslicer=1 parameter and an actual iframe context created by the plugin.

BumpMesh.mp4

Included

  • an opt-in OrcaSlicer mode in the BumpMesh web application;
  • an OrcaSlicer plugin under integrations/orcaslicer;
  • model discovery and direct binary STL transfer from OrcaSlicer;
  • object-transform and mirrored-winding handling;
  • OrcaSlicer language and initial-theme integration;
  • Orca-specific UI translations for all existing BumpMesh languages;
  • guarded browser storage for restricted WebView environments;
  • an embedded-mode external-link guard;
  • strict embedded-mode detection that does not affect the top-level website;
  • plugin icon, metadata, documentation, unit tests and an Orca Cloud publishing kit.

Build

cd integrations/orcaslicer
python build_package.py

The command creates the wheel and a ready-to-review Plugin Hub package under dist/plugin-hub-0.1.0.

Test package

A prebuilt experimental plugin package is attached for testing with the Windows x64 artifact of OrcaSlicer PR #14992 at commit acb0be6ed90fe7714952a1c4a8decbab4ca82510.

  1. Extract the attached archive.
  2. Open OrcaSlicer's Plugins dialog.
  3. Install bumpmesh-0.1.0-py3-none-any.whl.
  4. Activate the plugin and open the BumpMesh tab.

Test package: bumpmesh-orcaslicer-pr-test-0.1.0-ready.zip

The package by itself verifies installation, activation, the bundled tab icon and page lifecycle. For end-to-end model transfer before these web changes are deployed, serve this PR checkout on a loopback address and start OrcaSlicer with BUMPMESH_ORCASLICER_DEV_URL pointing to it, as described in integrations/orcaslicer/README.md.

Current OrcaSlicer API constraints

  • The page bridge currently carries JSON, so STL data is base64-encoded and transferred in chunks.
  • Persistent browser storage may be unavailable to a remote application inside the nested WebView2 iframe. BumpMesh now treats storage as optional.
  • OrcaSlicer provides the initial theme, but the current host implementation does not propagate a live theme change to an already open page.
  • Links using target="_blank" replace the plugin page in the same WebView, and there is currently no host API for opening them in the system browser. External links are therefore blocked only in embedded mode.
  • OrcaSlicer's model API currently exposes read-only geometry snapshots. The processed model must therefore be exported from BumpMesh and imported back into OrcaSlicer manually.
  • Negative-volume objects are excluded because the current API does not expose the resolved boolean result.
  • The current wheel loader expects a single entry in top_level.txt. The package now uses one top-level module and validates this during the build.

These findings are specific to the current draft Plugin Pages API and are kept here rather than presented as permanent BumpMesh limitations.

Validation

Tested against the Windows x64 artifact for OrcaSlicer Plugin Pages PR #14992 at commit acb0be6ed90fe7714952a1c4a8decbab4ca82510.

Verified:

  • BumpMesh WebGL/WebGL2 rendering;
  • responsive full-page layout;
  • OrcaSlicer model discovery and chunked STL transfer;
  • object transforms and mirrored winding;
  • language and initial-theme handling;
  • operation when persistent browser storage is denied;
  • embedded external-link handling;
  • plugin disable/re-enable and restart lifecycle;
  • 11 Python unit tests, Ruff checks and JavaScript syntax checks;
  • wheel packaging with the AGPL license included.
  • installation and activation of the production wheel in a clean OrcaSlicer data directory;
  • normal top-level BumpMesh loading, model import and STL export with no Orca UI or bridge code activated.

Related OrcaSlicer work

@WeLizard
WeLizard marked this pull request as draft August 2, 2026 01:09
@jcarranz97

Copy link
Copy Markdown

This sounds interesting 👀

@WeLizard
WeLizard marked this pull request as ready for review August 17, 2026 17:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants