mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-18 14:32:36 +00:00
docs: capability gap analysis of the Design tab against Onshape
Enumerated from the source rather than from recollection: CadFeatureType and add_* in CadDocument.hpp, Tool in DesignPanel.hpp, Mode in DesignSketchTool.hpp, SketchConstraintType + SketchEntity::Type in SketchEngine.hpp, and the JSON-RPC dispatch in McpControl.cpp. Findings worth stating up front: - The 2D sketcher is at or near Onshape parity -- 19 constraints, every entity type including B-splines and elliptical arcs, trim/extend/offset/mirror and both array kinds. Very little is missing there. - The gaps are all breadth beyond sketching: assemblies/mates, surface modelling, sheet metal, drawings, and variables/configurations. - The most defensible criticism is the absence of variables and expressions. Every dimension is a literal double, so the feature tree is parametric in structure but not in value -- "change one number and the model updates" is only half delivered. It is also the cheapest Tier 1 item to close. The doc separates platform capabilities (version control, FeatureScript, FEA, rendering, cloud PDM) into their own tier rather than counting them as missing tools: that is Onshape-the-platform, not Onshape-the-modeller, and holding a slicer tab to it would not be a fair comparison. One entry is a correctness gap rather than a missing feature: move/rotate body (m_body_xform) is display-only and never enters the B-rep, so a moved body exports and booleans at its original position while the viewport shows it moved. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BVzKmX6Y1aEteit1HTXG4Q
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
8aea63a919
commit
52a8ca965c
@@ -0,0 +1,160 @@
|
||||
# SnapOrca-CAD vs Onshape — capability gap analysis
|
||||
|
||||
Generated 2026-07-22 by enumerating the source, not from recollection:
|
||||
`CadFeatureType` and `add_*` in `src/libslic3r/CadDocument.hpp`, `Tool` in
|
||||
`src/slic3r/GUI/DesignPanel.hpp`, `Mode` in `src/slic3r/GUI/DesignSketchTool.hpp`,
|
||||
`SketchConstraintType` + `SketchEntity::Type` in `src/libslic3r/SketchEngine.hpp`,
|
||||
and the JSON-RPC dispatch in `src/slic3r/GUI/McpControl.cpp`.
|
||||
|
||||
**Scope note.** Onshape is a cloud PLM platform; SnapOrca is a Design tab inside a
|
||||
slicer. A large share of Onshape's surface (release management, branching, real-time
|
||||
collaboration, FEA, rendering, PDM) is out of scope by construction and is listed
|
||||
separately at the bottom rather than counted as a "missing tool".
|
||||
|
||||
---
|
||||
|
||||
## 1. What SnapOrca already has
|
||||
|
||||
### 2D sketcher — near parity with Onshape
|
||||
This is the strongest area. Very little is missing.
|
||||
|
||||
| Category | SnapOrca |
|
||||
|---|---|
|
||||
| Entities | Line, Polyline, Arc (3-point / tangent / center), Circle (center / 2-point / 3-point), Point, Ellipse, Elliptical arc, B-spline |
|
||||
| Shapes | Rectangle (corner / center / oblique / rounded), Slot, Arc-slot, Polygon |
|
||||
| Edit ops | Fillet, Chamfer, Offset, Mirror, Trim, Extend |
|
||||
| Transforms | Move, Rotate, Scale, Linear array, Polar array |
|
||||
| Constraints (19) | Fix, Coincident, Horizontal, Vertical, Distance, LockX, LockY, EqualLength, Parallel, Perpendicular, Concentric, Tangent, Midpoint, Symmetric, Angle, Radius, Diameter, PointOnLine, PointOnObject |
|
||||
| Dimensions | Length, Diameter, Radius, Angle, Distance, Distance-to-line |
|
||||
|
||||
Solver: vendored SolveSpace (`libslvs`, GPL-3.0) — the same solver lineage as a
|
||||
commercial-grade sketcher.
|
||||
|
||||
### Part features
|
||||
|
||||
| Present | Notes |
|
||||
|---|---|
|
||||
| Extrude | + up-to-face / up-to-point, taper, flip |
|
||||
| Revolve | angle-arc gizmo |
|
||||
| Sweep | along a path |
|
||||
| Loft | multi-profile |
|
||||
| Fillet / Chamfer | edge-level |
|
||||
| Draft | face taper |
|
||||
| Shell | wall thickness + open face |
|
||||
| Hole / Thread | face-aware placement |
|
||||
| Pattern | linear + circular |
|
||||
| Boolean | New / Add / Cut / Intersect, with face-mating |
|
||||
| Cut | plane-based, signed offset |
|
||||
| Datum plane | offset / 2-face / 2-edge derived |
|
||||
| Import | STEP (B-rep) + mesh→B-rep (native mesh2step port) |
|
||||
| Export | STEP (native B-rep, not tessellated) |
|
||||
| Multi-body | + per-body colour |
|
||||
| Section view | with flip |
|
||||
| Undo/redo | full feature-tree recompute |
|
||||
| 3MF persistence | parametric recipe survives save/load |
|
||||
|
||||
### Automation
|
||||
9 MCP JSON-RPC methods: `describe_tools`, `describe_scene`, `query_topology`,
|
||||
`measure`, `slice_body`, `import_step`, `import_mesh`, `validate_against`, plus
|
||||
build actions `extrude`, `revolve`, `fillet`, `chamfer`, `hole`, `boolean`, `pattern`.
|
||||
Onshape's equivalent is its REST API + FeatureScript.
|
||||
|
||||
---
|
||||
|
||||
## 2. Missing tools — ranked by impact
|
||||
|
||||
### Tier 1 — structural absences (whole subsystems)
|
||||
|
||||
**1. Assemblies and mates.** Entirely absent. No assembly document, no mate
|
||||
connectors, no fastened / revolute / slider / cylindrical / planar / ball / pin-slot
|
||||
mates, no assembly patterns, no interference detection, no exploded views.
|
||||
`bool_target_face` / `bool_tool_face` do face-to-face *mating* for a boolean, which
|
||||
is geometric alignment, not a kinematic joint.
|
||||
*Impact:* multi-part products cannot be positioned or validated as a mechanism.
|
||||
*Note:* an MCP-side `align_instance_to_face` / `create_*_mate` vocabulary already
|
||||
exists on the Onshape bridge in this workspace, so the target semantics are known.
|
||||
|
||||
**2. Drawings / 2D documentation.** Absent. No drawing sheets, dimensioned views,
|
||||
section/detail views, GD&T, title blocks, or BOM.
|
||||
*Impact:* nothing manufacturable-by-a-third-party leaves the tool. For 3D printing
|
||||
this matters less than for machining, which is the honest reason it is Tier 1 by
|
||||
CAD convention but arguably Tier 3 for this product.
|
||||
|
||||
**3. Variables, equations, configurations.** Absent — no `add_variable`, no
|
||||
expression evaluation, no configuration table. Every dimension is a literal double.
|
||||
*Impact:* this is the biggest *parametric* gap. "Make this bracket for an M4 vs M5
|
||||
bolt" requires re-editing every dependent feature by hand. Onshape's Variable
|
||||
Studio + configurations are a core differentiator, and this is the cheapest Tier 1
|
||||
item to close for the size of the payoff.
|
||||
|
||||
**4. Surface modelling.** Absent. No surface extrude/revolve/loft/sweep, no fill,
|
||||
knit, trim/extend surface, offset surface, or thicken. SnapOrca is solid-only.
|
||||
*Impact:* organic/complex shapes and repair of imported junk geometry are impossible.
|
||||
OCCT already provides all of it (`TKOffset`, `TKBRep`), so the kernel is not the
|
||||
blocker — only UI and feature plumbing.
|
||||
|
||||
**5. Sheet metal.** Absent. No flange, bend, tab, relief, or flat-pattern unfold.
|
||||
*Impact:* arguably out of scope for an FDM slicer; listed for completeness.
|
||||
|
||||
### Tier 2 — individual features with clear demand
|
||||
|
||||
| Missing | Why it matters | Cheap? |
|
||||
|---|---|---|
|
||||
| **Mirror body** (part-level) | Sketch mirror exists; mirroring a *solid* about a plane does not. Extremely common. | Yes — OCCT `gp_Trsf` mirror + fuse |
|
||||
| **Helix / spiral curve** | No helix ⇒ no springs, no custom threads, no spiral vase geometry. Sweep exists but has no helical path to sweep along. | Yes |
|
||||
| **Move / rotate body as a real feature** | `m_body_xform` exists but is **display-only** (memory #1655) — it never enters the B-rep. Export/boolean see the original position. | Medium |
|
||||
| **Split body** | Cut removes material; splitting one body into two independently-usable bodies is absent. Very relevant for print-in-parts. | Medium |
|
||||
| **Thicken** | Solid from a surface/face offset. | Needs surfaces |
|
||||
| **Rib** | Standard structural feature. | Medium |
|
||||
| **Delete face / move face / replace face** | Direct/dumb-solid editing — the main tool for fixing imported STEP. Given SnapOrca imports STEP *and* meshes, its absence is felt. | Medium |
|
||||
| **Datum axis, coordinate system** | Only datum *planes* exist. Axes are needed for revolve/pattern references. | Yes |
|
||||
| **Mass properties** | `GeometryEngine` computes a volume internally, but there is no volume/mass/COM/inertia readout. For print cost/time estimation this is nearly free to expose. | Yes — trivial |
|
||||
| **Measure tool in the GUI** | `measure` exists over MCP but there is no interactive measure in the UI. | Yes |
|
||||
| **Hole standards library** | Hole exists, but no counterbore/countersink/tapped standards (ISO/ANSI) with callouts. | Medium |
|
||||
| **Project / convert edges into a sketch** | Cannot reference existing solid edges as sketch geometry ("Use" in SolidWorks). A significant sketcher gap given everything else is present. | Medium |
|
||||
| **Construction geometry** | Could not confirm a construction/reference-line flag on sketch entities. | Yes if absent |
|
||||
| **Curve tools** | Projected curve, bridging curve, composite curve, 3D fit spline. | Medium |
|
||||
| **Pattern on curve / pattern faces** | Pattern is linear + circular of whole bodies only; no curve-driven pattern, no feature/face pattern. | Medium |
|
||||
| **Wrap / emboss** | Text or sketch wrapped onto a curved face. | Hard |
|
||||
| **Enclose** | Solid from bounded void regions. | Medium |
|
||||
|
||||
### Tier 3 — platform capabilities (out of scope by construction)
|
||||
|
||||
Version control with branching/merging, release management, real-time multi-user
|
||||
collaboration, cloud PDM, FeatureScript custom-feature authoring, simulation/FEA,
|
||||
photorealistic rendering, app store/integrations. These are Onshape-the-platform,
|
||||
not Onshape-the-modeller. Not defects in SnapOrca.
|
||||
|
||||
---
|
||||
|
||||
## 3. Recommended priority
|
||||
|
||||
If the goal is "credible parametric CAD inside a slicer", the ordering that buys
|
||||
the most capability per unit of work:
|
||||
|
||||
1. **Variables + expressions** — unlocks genuine parametric reuse; no new kernel work.
|
||||
2. **Mass properties + GUI measure** — nearly free, immediately useful for printing.
|
||||
3. **Mirror body, datum axis, helix** — small, self-contained, high-frequency features.
|
||||
4. **Promote move/rotate body from display-only to a real B-rep feature** — closes a
|
||||
correctness gap, not just a missing tool (exports currently disagree with the view).
|
||||
5. **Split body** — high value for print-in-parts workflows.
|
||||
6. **Project edges into sketch** — the sketcher's most conspicuous hole.
|
||||
7. **Surface modelling** — large, but OCCT already ships the algorithms.
|
||||
8. **Assemblies** — largest effort; only worth it if SnapOrca targets multi-part products.
|
||||
|
||||
Deliberately last: drawings and sheet metal — high cost, low relevance to an
|
||||
FDM-oriented tool.
|
||||
|
||||
---
|
||||
|
||||
## 4. Honest summary
|
||||
|
||||
SnapOrca's **sketcher is at or near Onshape parity**, and its **solid feature set
|
||||
covers the mainstream modelling path** (sketch → extrude/revolve/sweep/loft →
|
||||
dress-up → boolean/pattern). What is absent is *breadth*: assemblies, surfaces,
|
||||
sheet metal, drawings, and — most importantly for a tool calling itself parametric —
|
||||
**variables and configurations**.
|
||||
|
||||
The single most defensible criticism is #3: without variables, the feature tree is
|
||||
parametric in *structure* but not in *value*, so the promise of "change one number
|
||||
and the model updates" is only half delivered.
|
||||
Reference in New Issue
Block a user