Skip to content

Support upload g-code to third-party printers#2

Merged
SoftFever merged 9 commits into
SoftFeverfrom
feature/upload
Aug 20, 2022
Merged

Support upload g-code to third-party printers#2
SoftFever merged 9 commits into
SoftFeverfrom
feature/upload

Conversation

@SoftFever

Copy link
Copy Markdown
Collaborator

No description provided.

@SoftFever SoftFever merged commit dc5e0ee into SoftFever Aug 20, 2022
@SoftFever SoftFever deleted the feature/upload branch August 20, 2022 07:09
SoftFever added a commit that referenced this pull request Aug 20, 2022
ZdDroid pushed a commit to ZdDroid/OrcaSlicer that referenced this pull request Oct 16, 2023
选择打印机增加关键字搜索OrcaSlicer#2
ZdDroid pushed a commit to ZdDroid/OrcaSlicer that referenced this pull request Oct 18, 2023
buzzhuzz added a commit to buzzhuzz/OrcaSlicer that referenced this pull request Jan 10, 2025
SoftFever added a commit that referenced this pull request Feb 25, 2025
* Add Zink Override

Add Zink Override

* Add Zink Override (#1)

Add Zink Override

* Fix escape literals

* Fix Escape Literals (#2)

* Add Zink Override

Add Zink Override

* Fix escape literals

* Add checks for wayland/render gpu and manual user overrides

---------

Co-authored-by: SoftFever <[email protected]>
edmondhuang added a commit to edmondhuang/OrcaSlicer that referenced this pull request Mar 25, 2025
valerii-bokhan added a commit to valerii-bokhan/OrcaSlicer that referenced this pull request Jan 28, 2026
commit 7fdf371
Author: kisslorand <[email protected]>
Date:   Thu Jan 22 13:44:11 2026 +0200

    Fix tree support interface layer counts and contact handling

    - Correct non‑organic tree top interface layer budgeting so gaps don’t consume a layer (N stays N).
    - Remove the extra roof interface pass that was duplicating the 2nd layer.
    - Organic tree: use only the lowest contact footprint and avoid extra bottom‑contact extrusion so interface count matches the user setting.

commit 73baf88
Author: kisslorand <[email protected]>
Date:   Wed Jan 7 17:50:17 2026 +0200

    Enable support interface multimaterial for non organic tree

    Enables mixed-material support interface behavior for non organic tree support type.

commit 606f4d8
Author: kisslorand <[email protected]>
Date:   Wed Jan 7 17:21:27 2026 +0200

    Fix non organic tree interlaced support generation

    Deterministic local interlaced support layers generation for non-organic tree support

commit 5996ab9
Author: kisslorand <[email protected]>
Date:   Tue Jan 6 16:21:17 2026 +0200

    Fix non organic tree bottom support interface generation

    Slim tree bottom interface layer numbers were capped by the object's layer number beneath it.
    Fixed by refactoring the generation algorithm.

commit e292b18
Author: kisslorand <[email protected]>
Date:   Sun Jan 4 01:29:15 2026 +0200

    Typo and semantics fix

    differnt_support_interface_filament -> different_support_interface_filament

    soluble -> zero_top_z_gap

commit 9e4c70a
Author: kisslorand <[email protected]>
Date:   Sat Jan 3 18:47:28 2026 +0200

    Additional fixes and robustness improvements

    Fix incorrect coupling between top and bottom support interface spacing and density, ensuring bottom interfaces use their own parameters for smoothing and toolpath generation.
    Restore correct bottom interface generation for organic (tree) supports when a non-zero bottom Z gap is used, and preserve contacts even when base polygons are empty.
    Improve robustness of organic support slicing by fixing layer index drift and guarding against degenerate polygon boolean operations.

commit 710a388
Author: kisslorand <[email protected]>
Date:   Thu Jan 1 23:35:22 2026 +0200

    Fix support interface semantics and gap handling

    Fix zero-gap interface detection and gap initialization for supports and raft.
    Ensures correct top/bottom contact semantics and avoids relying on default zero gaps.

commit 12f51f9
Author: SoftFever <[email protected]>
Date:   Thu Jan 22 18:26:24 2026 +0800

    try to fix build errors OrcaSlicer#2
valerii-bokhan added a commit to valerii-bokhan/OrcaSlicer that referenced this pull request Jan 30, 2026
commit 7fdf371
Author: kisslorand <[email protected]>
Date:   Thu Jan 22 13:44:11 2026 +0200

    Fix tree support interface layer counts and contact handling

    - Correct non‑organic tree top interface layer budgeting so gaps don’t consume a layer (N stays N).
    - Remove the extra roof interface pass that was duplicating the 2nd layer.
    - Organic tree: use only the lowest contact footprint and avoid extra bottom‑contact extrusion so interface count matches the user setting.

commit 73baf88
Author: kisslorand <[email protected]>
Date:   Wed Jan 7 17:50:17 2026 +0200

    Enable support interface multimaterial for non organic tree

    Enables mixed-material support interface behavior for non organic tree support type.

commit 606f4d8
Author: kisslorand <[email protected]>
Date:   Wed Jan 7 17:21:27 2026 +0200

    Fix non organic tree interlaced support generation

    Deterministic local interlaced support layers generation for non-organic tree support

commit 5996ab9
Author: kisslorand <[email protected]>
Date:   Tue Jan 6 16:21:17 2026 +0200

    Fix non organic tree bottom support interface generation

    Slim tree bottom interface layer numbers were capped by the object's layer number beneath it.
    Fixed by refactoring the generation algorithm.

commit e292b18
Author: kisslorand <[email protected]>
Date:   Sun Jan 4 01:29:15 2026 +0200

    Typo and semantics fix

    differnt_support_interface_filament -> different_support_interface_filament

    soluble -> zero_top_z_gap

commit 9e4c70a
Author: kisslorand <[email protected]>
Date:   Sat Jan 3 18:47:28 2026 +0200

    Additional fixes and robustness improvements

    Fix incorrect coupling between top and bottom support interface spacing and density, ensuring bottom interfaces use their own parameters for smoothing and toolpath generation.
    Restore correct bottom interface generation for organic (tree) supports when a non-zero bottom Z gap is used, and preserve contacts even when base polygons are empty.
    Improve robustness of organic support slicing by fixing layer index drift and guarding against degenerate polygon boolean operations.

commit 710a388
Author: kisslorand <[email protected]>
Date:   Thu Jan 1 23:35:22 2026 +0200

    Fix support interface semantics and gap handling

    Fix zero-gap interface detection and gap initialization for supports and raft.
    Ensures correct top/bottom contact semantics and avoids relying on default zero gaps.

commit 12f51f9
Author: SoftFever <[email protected]>
Date:   Thu Jan 22 18:26:24 2026 +0800

    try to fix build errors OrcaSlicer#2
valerii-bokhan added a commit to valerii-bokhan/OrcaSlicer that referenced this pull request Feb 1, 2026
commit 7fdf371
Author: kisslorand <[email protected]>
Date:   Thu Jan 22 13:44:11 2026 +0200

    Fix tree support interface layer counts and contact handling

    - Correct non‑organic tree top interface layer budgeting so gaps don’t consume a layer (N stays N).
    - Remove the extra roof interface pass that was duplicating the 2nd layer.
    - Organic tree: use only the lowest contact footprint and avoid extra bottom‑contact extrusion so interface count matches the user setting.

commit 73baf88
Author: kisslorand <[email protected]>
Date:   Wed Jan 7 17:50:17 2026 +0200

    Enable support interface multimaterial for non organic tree

    Enables mixed-material support interface behavior for non organic tree support type.

commit 606f4d8
Author: kisslorand <[email protected]>
Date:   Wed Jan 7 17:21:27 2026 +0200

    Fix non organic tree interlaced support generation

    Deterministic local interlaced support layers generation for non-organic tree support

commit 5996ab9
Author: kisslorand <[email protected]>
Date:   Tue Jan 6 16:21:17 2026 +0200

    Fix non organic tree bottom support interface generation

    Slim tree bottom interface layer numbers were capped by the object's layer number beneath it.
    Fixed by refactoring the generation algorithm.

commit e292b18
Author: kisslorand <[email protected]>
Date:   Sun Jan 4 01:29:15 2026 +0200

    Typo and semantics fix

    differnt_support_interface_filament -> different_support_interface_filament

    soluble -> zero_top_z_gap

commit 9e4c70a
Author: kisslorand <[email protected]>
Date:   Sat Jan 3 18:47:28 2026 +0200

    Additional fixes and robustness improvements

    Fix incorrect coupling between top and bottom support interface spacing and density, ensuring bottom interfaces use their own parameters for smoothing and toolpath generation.
    Restore correct bottom interface generation for organic (tree) supports when a non-zero bottom Z gap is used, and preserve contacts even when base polygons are empty.
    Improve robustness of organic support slicing by fixing layer index drift and guarding against degenerate polygon boolean operations.

commit 710a388
Author: kisslorand <[email protected]>
Date:   Thu Jan 1 23:35:22 2026 +0200

    Fix support interface semantics and gap handling

    Fix zero-gap interface detection and gap initialization for supports and raft.
    Ensures correct top/bottom contact semantics and avoids relying on default zero gaps.

commit 12f51f9
Author: SoftFever <[email protected]>
Date:   Thu Jan 22 18:26:24 2026 +0800

    try to fix build errors OrcaSlicer#2
valerii-bokhan added a commit to valerii-bokhan/OrcaSlicer that referenced this pull request Feb 2, 2026
commit 7fdf371
Author: kisslorand <[email protected]>
Date:   Thu Jan 22 13:44:11 2026 +0200

    Fix tree support interface layer counts and contact handling

    - Correct non‑organic tree top interface layer budgeting so gaps don’t consume a layer (N stays N).
    - Remove the extra roof interface pass that was duplicating the 2nd layer.
    - Organic tree: use only the lowest contact footprint and avoid extra bottom‑contact extrusion so interface count matches the user setting.

commit 73baf88
Author: kisslorand <[email protected]>
Date:   Wed Jan 7 17:50:17 2026 +0200

    Enable support interface multimaterial for non organic tree

    Enables mixed-material support interface behavior for non organic tree support type.

commit 606f4d8
Author: kisslorand <[email protected]>
Date:   Wed Jan 7 17:21:27 2026 +0200

    Fix non organic tree interlaced support generation

    Deterministic local interlaced support layers generation for non-organic tree support

commit 5996ab9
Author: kisslorand <[email protected]>
Date:   Tue Jan 6 16:21:17 2026 +0200

    Fix non organic tree bottom support interface generation

    Slim tree bottom interface layer numbers were capped by the object's layer number beneath it.
    Fixed by refactoring the generation algorithm.

commit e292b18
Author: kisslorand <[email protected]>
Date:   Sun Jan 4 01:29:15 2026 +0200

    Typo and semantics fix

    differnt_support_interface_filament -> different_support_interface_filament

    soluble -> zero_top_z_gap

commit 9e4c70a
Author: kisslorand <[email protected]>
Date:   Sat Jan 3 18:47:28 2026 +0200

    Additional fixes and robustness improvements

    Fix incorrect coupling between top and bottom support interface spacing and density, ensuring bottom interfaces use their own parameters for smoothing and toolpath generation.
    Restore correct bottom interface generation for organic (tree) supports when a non-zero bottom Z gap is used, and preserve contacts even when base polygons are empty.
    Improve robustness of organic support slicing by fixing layer index drift and guarding against degenerate polygon boolean operations.

commit 710a388
Author: kisslorand <[email protected]>
Date:   Thu Jan 1 23:35:22 2026 +0200

    Fix support interface semantics and gap handling

    Fix zero-gap interface detection and gap initialization for supports and raft.
    Ensures correct top/bottom contact semantics and avoids relying on default zero gaps.

commit 12f51f9
Author: SoftFever <[email protected]>
Date:   Thu Jan 22 18:26:24 2026 +0800

    try to fix build errors OrcaSlicer#2
valerii-bokhan added a commit to valerii-bokhan/OrcaSlicer that referenced this pull request Feb 2, 2026
commit 7fdf371
Author: kisslorand <[email protected]>
Date:   Thu Jan 22 13:44:11 2026 +0200

    Fix tree support interface layer counts and contact handling

    - Correct non‑organic tree top interface layer budgeting so gaps don’t consume a layer (N stays N).
    - Remove the extra roof interface pass that was duplicating the 2nd layer.
    - Organic tree: use only the lowest contact footprint and avoid extra bottom‑contact extrusion so interface count matches the user setting.

commit 73baf88
Author: kisslorand <[email protected]>
Date:   Wed Jan 7 17:50:17 2026 +0200

    Enable support interface multimaterial for non organic tree

    Enables mixed-material support interface behavior for non organic tree support type.

commit 606f4d8
Author: kisslorand <[email protected]>
Date:   Wed Jan 7 17:21:27 2026 +0200

    Fix non organic tree interlaced support generation

    Deterministic local interlaced support layers generation for non-organic tree support

commit 5996ab9
Author: kisslorand <[email protected]>
Date:   Tue Jan 6 16:21:17 2026 +0200

    Fix non organic tree bottom support interface generation

    Slim tree bottom interface layer numbers were capped by the object's layer number beneath it.
    Fixed by refactoring the generation algorithm.

commit e292b18
Author: kisslorand <[email protected]>
Date:   Sun Jan 4 01:29:15 2026 +0200

    Typo and semantics fix

    differnt_support_interface_filament -> different_support_interface_filament

    soluble -> zero_top_z_gap

commit 9e4c70a
Author: kisslorand <[email protected]>
Date:   Sat Jan 3 18:47:28 2026 +0200

    Additional fixes and robustness improvements

    Fix incorrect coupling between top and bottom support interface spacing and density, ensuring bottom interfaces use their own parameters for smoothing and toolpath generation.
    Restore correct bottom interface generation for organic (tree) supports when a non-zero bottom Z gap is used, and preserve contacts even when base polygons are empty.
    Improve robustness of organic support slicing by fixing layer index drift and guarding against degenerate polygon boolean operations.

commit 710a388
Author: kisslorand <[email protected]>
Date:   Thu Jan 1 23:35:22 2026 +0200

    Fix support interface semantics and gap handling

    Fix zero-gap interface detection and gap initialization for supports and raft.
    Ensures correct top/bottom contact semantics and avoids relying on default zero gaps.

commit 12f51f9
Author: SoftFever <[email protected]>
Date:   Thu Jan 22 18:26:24 2026 +0800

    try to fix build errors OrcaSlicer#2
valerii-bokhan added a commit to valerii-bokhan/OrcaSlicer that referenced this pull request Feb 2, 2026
commit 7fdf371
Author: kisslorand <[email protected]>
Date:   Thu Jan 22 13:44:11 2026 +0200

    Fix tree support interface layer counts and contact handling

    - Correct non‑organic tree top interface layer budgeting so gaps don’t consume a layer (N stays N).
    - Remove the extra roof interface pass that was duplicating the 2nd layer.
    - Organic tree: use only the lowest contact footprint and avoid extra bottom‑contact extrusion so interface count matches the user setting.

commit 73baf88
Author: kisslorand <[email protected]>
Date:   Wed Jan 7 17:50:17 2026 +0200

    Enable support interface multimaterial for non organic tree

    Enables mixed-material support interface behavior for non organic tree support type.

commit 606f4d8
Author: kisslorand <[email protected]>
Date:   Wed Jan 7 17:21:27 2026 +0200

    Fix non organic tree interlaced support generation

    Deterministic local interlaced support layers generation for non-organic tree support

commit 5996ab9
Author: kisslorand <[email protected]>
Date:   Tue Jan 6 16:21:17 2026 +0200

    Fix non organic tree bottom support interface generation

    Slim tree bottom interface layer numbers were capped by the object's layer number beneath it.
    Fixed by refactoring the generation algorithm.

commit e292b18
Author: kisslorand <[email protected]>
Date:   Sun Jan 4 01:29:15 2026 +0200

    Typo and semantics fix

    differnt_support_interface_filament -> different_support_interface_filament

    soluble -> zero_top_z_gap

commit 9e4c70a
Author: kisslorand <[email protected]>
Date:   Sat Jan 3 18:47:28 2026 +0200

    Additional fixes and robustness improvements

    Fix incorrect coupling between top and bottom support interface spacing and density, ensuring bottom interfaces use their own parameters for smoothing and toolpath generation.
    Restore correct bottom interface generation for organic (tree) supports when a non-zero bottom Z gap is used, and preserve contacts even when base polygons are empty.
    Improve robustness of organic support slicing by fixing layer index drift and guarding against degenerate polygon boolean operations.

commit 710a388
Author: kisslorand <[email protected]>
Date:   Thu Jan 1 23:35:22 2026 +0200

    Fix support interface semantics and gap handling

    Fix zero-gap interface detection and gap initialization for supports and raft.
    Ensures correct top/bottom contact semantics and avoids relying on default zero gaps.

commit 12f51f9
Author: SoftFever <[email protected]>
Date:   Thu Jan 22 18:26:24 2026 +0800

    try to fix build errors OrcaSlicer#2
edmondhuang added a commit to edmondhuang/OrcaSlicer that referenced this pull request Feb 6, 2026
@ghost ghost mentioned this pull request Feb 7, 2026
1 task
cdvankammen added a commit to cdvankammen/OrcaSlicer that referenced this pull request Feb 15, 2026
Phase 4 Completion Summary

  What Was Implemented (~315 lines of code)

  1. Extended PlateSettingsDialog (PlateSettingsDialog.hpp +25
   lines)
  - Added checkboxes for custom printer/filaments
  - Added ComboBox controls for preset selection                - Added sync and getter methods

  2. Dialog UI Implementation (PlateSettingsDialog.cpp +265
  lines)
  - Printer preset section with checkbox + dropdown
  - Filament presets section with checkbox + multiple
  dropdowns (one per extruder)
  - Populate methods that load presets from PresetBundle
  - Sync methods that load current values from PartPlate
  - Getter methods that return selected values

  3. Plater Integration (Plater.cpp +20 lines)
  - Load current preset names when dialog opens
  - Save selected preset names when user clicks OK
  - Logging for debugging

  4. Visual Indicator (PartPlate.cpp +5 lines)
  - Updated condition to show "changed" icon when plate has
  custom presets

  User Experience

  The dialog now has this layout:
  ┌─ Plate Settings ─────────────────────────┐
  │                                           │
  │  [existing settings: bed type, etc.]     │
  │                                           │
  │  [✓] Custom printer for this plate       │
  │      [Bambu Lab X1C 0.4 nozzle    ▼]     │
  │                                           │
  │  [✓] Custom filaments for this plate     │
  │      Extruder 1: [PLA Basic        ▼]    │
  │      Extruder 2: [PETG Basic       ▼]    │
  │      Extruder 3: [TPU 95A          ▼]    │
  │                                           │
  │              [Cancel]  [OK]               │
  └───────────────────────────────────────────┘

  Features

  - ✅ Checkboxes enable/disable preset selection
  - ✅ Dropdowns populated from PresetBundle with all visible
  presets
  - ✅ "Same as Global" option at top of each dropdown
  - ✅ Per-extruder filament selection
  - ✅ Full save/load integration with PartPlate
  - ✅ Visual indicator (colored icon) when plate has custom
  settings

  Feature OrcaSlicer#2 Overall Progress

  Status: 80% Complete (4/5 phases done)

  Phase: 1. Backend Data Structures
  Status: ✅ Complete
  Lines: ~25
  ────────────────────────────────────────
  Phase: 2. 3MF Serialization
  Status: ✅ Complete
  Lines: ~50
  ────────────────────────────────────────
  Phase: 3. Config Resolution
  Status: ✅ Complete
  Lines: ~105
  ────────────────────────────────────────
  Phase: 4. GUI Implementation
  Status: ✅ Complete
  Lines: ~315
  ────────────────────────────────────────
  Phase: 5. Slicing Integration & Testing
  Status: 📋 Pending
  Lines: ~280 est.
  ────────────────────────────────────────
  Phase: Total
  Status: 80%
  Lines: 495 / 775

  What Remains (Phase 5)

  - Apply plate config during slicing (~100 lines, 2-3 hours)
  - Add validation checks (~80 lines, 1-2 hours)
  - Comprehensive testing (~100 lines tests, 4-6 hours)

  Estimated time to complete Feature OrcaSlicer#2: 7-11 hours

  The GUI is now fully functional and ready for slicing
  integration!
@KennyGreg KennyGreg mentioned this pull request Mar 9, 2026
3 tasks
wight554 pushed a commit to wight554/OrcaSlicer that referenced this pull request Mar 13, 2026
* feat: Add preset renaming functionality

This commit introduces the ability to rename printer and filament presets. It includes a new dialog for renaming, updates to the preset management classes, and UI integration for the rename action.

Co-authored-by: bickusua <[email protected]>

* Fix: Correctly save renamed presets and remove unused DPI logic

Co-authored-by: bickusua <[email protected]>

* feat: Add preset rename history and dialog

Co-authored-by: bickusua <[email protected]>

* Refactor config option access and remove unnecessary Wrap call

Co-authored-by: bickusua <[email protected]>

* Refactor RenamedProfilesDialog for better layout and appearance

Co-authored-by: bickusua <[email protected]>

* Fix: Remove unnecessary label alignment in RenamedProfilesDialog

Co-authored-by: bickusua <[email protected]>

* Refactor RenamedProfilesDialog to use static text for labels

Co-authored-by: bickusua <[email protected]>

* Fix: Use standard arrow for profile rename description

Co-authored-by: bickusua <[email protected]>

---------

Co-authored-by: Cursor Agent <[email protected]>
Co-authored-by: bickusua <[email protected]>
wight554 pushed a commit to wight554/OrcaSlicer that referenced this pull request Mar 14, 2026
* feat: Add preset renaming functionality

This commit introduces the ability to rename printer and filament presets. It includes a new dialog for renaming, updates to the preset management classes, and UI integration for the rename action.

Co-authored-by: bickusua <[email protected]>

* Fix: Correctly save renamed presets and remove unused DPI logic

Co-authored-by: bickusua <[email protected]>

* feat: Add preset rename history and dialog

Co-authored-by: bickusua <[email protected]>

* Refactor config option access and remove unnecessary Wrap call

Co-authored-by: bickusua <[email protected]>

* Refactor RenamedProfilesDialog for better layout and appearance

Co-authored-by: bickusua <[email protected]>

* Fix: Remove unnecessary label alignment in RenamedProfilesDialog

Co-authored-by: bickusua <[email protected]>

* Refactor RenamedProfilesDialog to use static text for labels

Co-authored-by: bickusua <[email protected]>

* Fix: Use standard arrow for profile rename description

Co-authored-by: bickusua <[email protected]>

---------

Co-authored-by: Cursor Agent <[email protected]>
Co-authored-by: bickusua <[email protected]>
thereprocase added a commit to thereprocase/OrcaSlicer that referenced this pull request Mar 31, 2026
Uruk #1: Single part = center on bed instantly, no GA wasted
Uruk OrcaSlicer#5: Tiny bed (120mm A1 Mini) — halved bed margin from 1mm to
  0.5mm per side to avoid over-shrinking small beds
Also: moved bed dimension vars to function scope for early-exit paths

Remaining Uruk issues (documented, not yet fixed):
- OrcaSlicer#2: Re-arrange doesn't preserve previous positions (by design —
  Snuggle re-nests all selected parts from scratch)
- OrcaSlicer#3: Unit mismatch (inch STLs) — Orca's import handles unit
  conversion before Snuggle sees the mesh
- OrcaSlicer#4: Extreme size ratios — needs adaptive voxel resolution

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
thereprocase added a commit to thereprocase/OrcaSlicer that referenced this pull request Mar 31, 2026
Issue #1 (WRONG): Single-part centering didn't set rotation field.
  Fix: explicit items[0].rotation = 0.0

Issue OrcaSlicer#2 (WRONG/HIGH): Empty voxel grids silently bypassed collision
  detection. Parts with failed voxelization appeared as zero-size
  points that never collided with anything.
  Fix: Empty grids are now detected and marked UNARRANGED before
  reaching the nester. nester_to_item mapping translates indices
  back correctly when writing results.

Also verified NOT breaking (Fellowship consensus):
- Coordinate transforms: all 4 paths correct (Sauron)
- Overflow fallback: std::move safe, excludes is const (Frodo)
- itemid ordering: sort restores correctly after split/recombine
- Division by zero: all guarded
- All-unarranged fallback: equivalent to default arranger

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
thereprocase added a commit to thereprocase/OrcaSlicer that referenced this pull request Mar 31, 2026
Ledger fixes (Sauron #1):
- W-001: clean up dangling brace in SnuggleArrange (cosmetic, already safe)
- W-003 CRITICAL: GPU cleanup() now releases DC/HWND on all failure paths
- W-006 HIGH: voxel_size<=0 guard in world_to_grid + collision_count
- W-007 HIGH: multimap instance lookup replaces O(N²) linear scan
- W-010: fmod replaces while-loop rotation normalization (DoS fix)
- W-027: shared snuggle_constants.hpp for ROT_CACHE_BINS
- W-028: PI_F/TWO_PI_F constants replace 9 bare literals

UX fixes (Sauron OrcaSlicer#2, from Frodo's supervision):
- Part gap slider min matches backend (1mm)
- Duplicate compact checkbox removed
- 4 missing tooltips added (Part gap, Timeout, Max parts, Multi-plate)
- Progress messages humanized ("Optimizing... 42%")
- Footer text clarified
- Fallback notification added
- Label references corrected

Reviewed by: Gandalf (ledger walkthrough), Frodo (final approval)

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
thereprocase added a commit to thereprocase/OrcaSlicer that referenced this pull request Apr 1, 2026
Critical: translation writeback computed bbox center instead of
polygon origin (0,0). Parts would land at wrong positions offset
by (bbox_center - origin). Fixed to track where the poly's local
origin falls in bed coordinates after placement.

High: removed dead code (6 unused variables from earlier approach).
High: config key now uses technology postfix (_fff, _sla, _seq_print)
matching the established pattern for multi-tech persistence.

Medium: guard negative pixel offsets in collides/stamp to prevent
undefined behavior from exclude polygons extending past bed edge.
Medium: replaced goto-based instance matching with bool tracking
and added warning log when no ModelInstance match is found.

Fixes: Sauron #1 (critical), OrcaSlicer#2 (high), OrcaSlicer#3 (high), OrcaSlicer#5 (medium),
       Uruk-Hai UI #1 (high), OrcaSlicer#2 (high), OrcaSlicer#3 (medium),
       Uruk-Hai ArrangeJob OrcaSlicer#2 (high)

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
thereprocase added a commit to thereprocase/OrcaSlicer that referenced this pull request Apr 5, 2026
Critical: translation writeback computed bbox center instead of
polygon origin (0,0). Parts would land at wrong positions offset
by (bbox_center - origin). Fixed to track where the poly's local
origin falls in bed coordinates after placement.

High: removed dead code (6 unused variables from earlier approach).
High: config key now uses technology postfix (_fff, _sla, _seq_print)
matching the established pattern for multi-tech persistence.

Medium: guard negative pixel offsets in collides/stamp to prevent
undefined behavior from exclude polygons extending past bed edge.
Medium: replaced goto-based instance matching with bool tracking
and added warning log when no ModelInstance match is found.

Fixes: Sauron #1 (critical), OrcaSlicer#2 (high), OrcaSlicer#3 (high), OrcaSlicer#5 (medium),
       Uruk-Hai UI #1 (high), OrcaSlicer#2 (high), OrcaSlicer#3 (medium),
       Uruk-Hai ArrangeJob OrcaSlicer#2 (high)

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
thereprocase added a commit to thereprocase/OrcaSlicer that referenced this pull request Apr 11, 2026
User priority OrcaSlicer#2: tall parts should cluster near the plate geometric
center so the print head's late-phase XY travel envelope (at high
layer counts where only tall parts are still printing) is bounded by
their cluster extent instead of the full plate.

Implementation: score_at's secondary cost (previously just dist-to-
anchor squared) now also adds a tall-weighted distance-to-bed-center
penalty. Items >= 100mm tall get full weight; shorter items scale
linearly to zero. First item per plate is exempt (cbb_empty path)
because it follows the anchor seed by design.

Uses ArrangePolygon::height which Orca's ModelArrange.cpp already
populates from the instance convex-hull bounding-box Z extent. The
nester has ignored this field until now.

Won't change anything for the synthetic tetromino/L-bracket tests
(items have height=0 there) but should noticeably centralize tall
parts on real user plates. Pairs with the travel-first priority
ordering saved to memory/feedback_arrange_priorities.md.
thereprocase added a commit to thereprocase/OrcaSlicer that referenced this pull request Apr 11, 2026
Critical: translation writeback computed bbox center instead of
polygon origin (0,0). Parts would land at wrong positions offset
by (bbox_center - origin). Fixed to track where the poly's local
origin falls in bed coordinates after placement.

High: removed dead code (6 unused variables from earlier approach).
High: config key now uses technology postfix (_fff, _sla, _seq_print)
matching the established pattern for multi-tech persistence.

Medium: guard negative pixel offsets in collides/stamp to prevent
undefined behavior from exclude polygons extending past bed edge.
Medium: replaced goto-based instance matching with bool tracking
and added warning log when no ModelInstance match is found.

Fixes: Sauron #1 (critical), OrcaSlicer#2 (high), OrcaSlicer#3 (high), OrcaSlicer#5 (medium),
       Uruk-Hai UI #1 (high), OrcaSlicer#2 (high), OrcaSlicer#3 (medium),
       Uruk-Hai ArrangeJob OrcaSlicer#2 (high)

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
thereprocase added a commit to thereprocase/OrcaSlicer that referenced this pull request Apr 11, 2026
User priority OrcaSlicer#2: tall parts should cluster near the plate geometric
center so the print head's late-phase XY travel envelope (at high
layer counts where only tall parts are still printing) is bounded by
their cluster extent instead of the full plate.

Implementation: score_at's secondary cost (previously just dist-to-
anchor squared) now also adds a tall-weighted distance-to-bed-center
penalty. Items >= 100mm tall get full weight; shorter items scale
linearly to zero. First item per plate is exempt (cbb_empty path)
because it follows the anchor seed by design.

Uses ArrangePolygon::height which Orca's ModelArrange.cpp already
populates from the instance convex-hull bounding-box Z extent. The
nester has ignored this field until now.

Won't change anything for the synthetic tetromino/L-bracket tests
(items have height=0 there) but should noticeably centralize tall
parts on real user plates. Pairs with the travel-first priority
ordering saved to memory/feedback_arrange_priorities.md.
thereprocase added a commit to thereprocase/OrcaSlicer that referenced this pull request Apr 12, 2026
Big boss review point OrcaSlicer#2: intersection_ex per candidate × per placed
item compounds badly. Most candidate grid positions aren't near any
placed item, so most intersection_ex calls return 'no overlap' after
significant polygon math. Add a cheap AABB overlap check first;
only call intersection_ex on placed items whose bbox actually
overlaps the candidate's bbox.

Implementation:
- Cache each placed item's bbox in placed_bboxes alongside placed_polys
- Compute the candidate bbox in world coords from (x, y) + rot_bb size
- For each placed item, AABB check: skip if bboxes don't overlap
- If NO placed bbox overlaps the candidate, the candidate is
  provably collision-free — skip all intersection_ex calls entirely
- If some DO overlap, call intersection_ex only on those
- The real polygon check remains the ground truth; the AABB is a
  shortcut not a replacement

This is the GOOD use of bbox — broad-phase collision pruning, not
scoring. Every physics engine (including Box2D) does this. Standard
AABB-then-narrow-phase pattern. The 'bbox is never right' memo
applies to SCORING metrics, not to collision broad phase.

Expected speedup: 5-10x on typical inputs per the big boss review
estimate. Not directly measured — this commit is semantics-preserving
and the existing test suite already takes seconds, not minutes, so
a before/after timing isn't cleanly observable at this scale.
Will matter more when C2 M2.3's hull-scored path runs on larger
groups (post-M3 spillover recovery, post-bitmap-collision-refactor).

Test verification: 161 cases / 1436 assertions green. Cat 1.4
L-shape discriminator still lands at ~201 mm hull perimeter
unchanged — proof the pre-reject is purely a speedup, not a
behavior change.
@Carter3DP Carter3DP mentioned this pull request May 4, 2026
4 tasks
ildarcheg added a commit to ildarcheg/OrcaSlicer that referenced this pull request May 20, 2026
1. Section 2 placement + Section 1 inspect + Section 3 case 9 + Section 4
   test OrcaSlicer#14: clarify "FIRST source" -> source with LOWEST existing index
   in obj.volumes. Stable inspect --json output under --parts reordering.
2. Section 2 / Q4 filament + per-vol config: empty sources (dropped per
   Q7) are excluded from agreement checks. New unit test OrcaSlicer#16.
3. Section 2 / per-vol config: strict rule -- all-carry-same OR none-carry,
   otherwise refuse with hint message. New unit test OrcaSlicer#17.
4. Section 3: new "Validation order (deterministic precedence)" subsection.
5. Section 3: new "Idempotency" subsection.
6. Section 4: new unit test OrcaSlicer#15 (explicit --filament override on agreeing
   sources) and note above e2e test OrcaSlicer#2 calling out its integration-test
   nature.

Unit test count: 14 -> 17. E2E: 13. Roundtrip: 1.
dnevera pushed a commit to dnevera/OrcaSlicer that referenced this pull request Jun 1, 2026
- Fix OrcaSlicer#1: Combined nozzle_in_extruder_change and filament_in_nozzle_change checks in process_filament_change to prevent double-counting of unload/load times.
- Fix OrcaSlicer#2: Removed get_hotend_change_time() addition in process_filament_change as hotend change time is already accounted for via SYNC gcode.
- Fix OrcaSlicer#3: Added tracking for total_flush_filament_changes statistics.
- Fix OrcaSlicer#4: Passed nozzle_id to process_filament_change to correctly identify the active nozzle under multi-nozzle configuration.
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.

1 participant