In GLCanvas3D::on_mouse, avoid calling SetFocus when the currently focused window is a text input control (wxTextCtrl, wxComboBox or wxSpinCtrl). This prevents deselection bugs when the mouse leaves the window while a text control is focused. Also commented out explicit wx text-control includes near the top of the file.
Only TextCtrl needed
cleaning
Removed unused wxWidgets header includes.
Update GLCanvas3D.cpp
Co-authored-by: yw4z <yw4z@outlook.com>
Co-authored-by: yw4z <ywsyildiz@gmail.com>
Fix: generic locale fallback on all platforms when language is unavailable
Move the locale fallback chain out of the #ifdef __linux__ block so it
applies on macOS and Windows too. Add a base-language fallback step that
strips the region code (e.g. en_IL -> en) before trying the full
fallback chain (current locale, system, best, en_US, en_UK).
Previously, if wxLocale::IsAvailable() failed on non-Linux, the app
would show an error and exit. Now it gracefully falls back to a working
locale.
Co-authored-by: SoftFever <softfeverever@gmail.com>
# Description
Upgrade wxWidgets to the latest 3.3.2.
The wxWidgets team mentioned that while 3.3 is not labeled “stable,” it
is production-ready. It isn’t labeled “stable” only because it may
introduce breaking ABI/API changes. As Linux distros are moving to
Wayland, and given the number of fixes in wxWidgets to improve Wayland
support, it’s worth upgrading to 3.3.2 instead of staying on 3.2.x.
Note:
I didn’t switch the dark mode implementation to wxWidgets for two
reasons:
1. To avoid broader changes, since the current dark mode works well with
wxWidgets 3.3.2.
2. wxWidgets dark mode doesn’t support changing themes on the fly; it
requires an application restart for the change to take effect.
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the
changes made in this PR.
-->
Commit ed88cbe removed `new WebViewWebKit` on macOS because wx 3.3
dropped the no-arg wxWebViewWebKit constructor, falling through to
wxWebView::New(). That bypassed the WebViewWebKit destructor that calls
RemoveScriptMessageHandler("wx"), reintroducing the WebKit teardown bug
the subclass was added to fix.
Restore the macOS-specific subclass path by adding a constructor that
forwards to the wx 3.3 wxWebViewConfiguration-based ctor.
wxWidgets 3.3.2 changed MSWGetStyle to add WS_CAPTION when
wxMINIMIZE_BOX/wxMAXIMIZE_BOX/wxCLOSE_BOX is set. This caused
DefWindowProc to subtract the caption height in WM_NCCALCSIZE for
maximized windows, shrinking the client area and creating a gap
above the taskbar.
Fix by handling WM_NCCALCSIZE for the maximized case explicitly
(strip only border overshoot, not caption) and removing the now
unnecessary wxEVT_MAXIMIZE workaround.
On Linux/GTK, CheckBox, RadioBox, and SwitchButton set their size to
exactly the bitmap size (18x18 or 16x16), but GTK's internal CSS padding
requires additional space, resulting in negative content width warnings.
Use GetBestSize() on GTK to account for theme padding.
wxWidgets 3.3 cmake install doesn't include private headers.
OrcaSlicer uses some private headers for accessibility support.
Add a post-install step to copy the private headers directory.
wxWidgets 3.3 bundles its own NanoSVG in bmpsvg.cpp, conflicting with
OrcaSlicer's bundled copy which includes the nsvgRasterizeXY extension.
Set wxUSE_NANOSVG=OFF in deps cmake to use OrcaSlicer's version only.
- Plater: use Add() instead of wxArrayString(size_t, wxString) ctor
- Search: change sep from std::wstring to wxString for concatenation
- SendMultiMachinePage: replace wxList::Node* with compatibility_iterator
(Node type removed in wx 3.3 with wxUSE_STD_CONTAINERS=ON)
- PhysicalPrinterDialog: disambiguate set_values() call with explicit
std::vector<std::string> (wxArrayString now also matches initializer list)
- Preferences: use ToStdString() instead of mb_str() for std::string comparison
- Plater: use wxString::FromUTF8() for wxArrayString constructor argument
In wx 3.3 with wxUSE_STD_CONTAINERS=ON, wxString is backed by
std::wstring, so direct concatenation of const char[] with
std::wstring or wxUniCharRef fails. Fix by splitting compound
concatenations into separate += operations on wxString, or by
wrapping the left operand in wxString() to use its operator+.
Files fixed:
- AuxiliaryDataViewModel.cpp: split "\\" + wxString/wstring chains
- AboutDialog.cpp: split std::string("\n") + wxUniCharRef
- Auxiliary.cpp: wrap dir.wstring() in wxString(), split "/" + wstring
In wxWidgets 3.3, wxBitmapComboBoxBase::OnAddBitmap changed its
parameter from const wxBitmap& to const wxBitmapBundle&, and m_bitmaps
was replaced by m_bitmapbundles. Update OnAddBitmap signature and
OnDrawItem to use wxBitmapBundle, extracting wxBitmap via
GetBitmap(GetDefaultSize()) where needed.
- Wrap GetToolTipCtrl() call in GUI_App.cpp with #if wxVERSION_NUMBER < 3300
guard, as this API may not be accessible in wxWidgets 3.3. The dark tooltip
theming is cosmetic and non-critical.
- Add explicit #include <wx/utils.h> to 7 source files that use functions from
that header (wxGetMousePosition, wxLaunchDefaultBrowser, wxGetDisplaySize,
wxBell) but relied on transitive includes. This preempts breakage from
wxWidgets 3.3 reducing transitive includes.
Files with wx/utils.h added: BBLTopbar.cpp, CreatePresetsDialog.cpp,
CameraPopup.cpp, GLCanvas3D.cpp, GCodeViewer.cpp, GUI_ObjectList.cpp,
FilamentMapPanel.cpp.
Skipped BindDialog.cpp and FilamentPickerDialog.cpp as they already include
wx/wx.h which provides wx/utils.h transitively.
Part of wxWidgets 3.1.5 -> 3.3.2 upgrade.
In wxWidgets 3.3, wxWindow::Raise() no longer implies Show(). Add
explicit Show() before Raise() in two event handlers that activate the
main frame from another instance (load model, start download), and swap
the Show/Raise order in bring_instance_forward() so Show() precedes
Raise().
wxTRANSPARENT_WINDOW is removed in wxWidgets 3.3. Remove all 3
occurrences in MainFrame.cpp:
- ResizeEdgePanel constructor: already uses wxBG_STYLE_TRANSPARENT
via SetBackgroundStyle(), so the flag was redundant
- slice_panel and print_panel: drop the style parameter entirely
(defaults to 0)
wxWidgets 3.2+ asserts on invalid sizer flag combinations where
wxEXPAND (which fills the entire space in the secondary direction)
is combined with wxALIGN_* flags (which are meaningless when expanding).
Remove the conflicting wxALIGN_* flags from all 112 occurrences across
21 files, keeping wxEXPAND and any non-conflicting flags intact.
Since we now target wxWidgets 3.3, all wxCHECK_VERSION(3,1,N) checks
are always true. Remove the guards keeping only the true branches:
- I18N.hpp: Remove version guard around _wxGetTranslation_ctx macro
- ExtraRenderers.hpp, GUI_App.hpp: Simplify SUPPORTS_MARKUP to check
only wxUSE_MARKUP (version check always true)
- ConfigWizard.cpp: Remove manual wxArrayInt comparison fallback
- SendSystemInfoDialog.cpp: Simplify display scaling guard to _WIN32 only
- GUI_Utils.cpp: Remove IsDark() fallback using luma approximation
- wxinit.h: Remove legacy wxEVT_BUTTON and wxEVT_HTML_LINK_CLICKED
compat macros (these event names exist natively in wx 3.3)
wxWidgets 3.3 requires macOS 10.11+, making the 10.9.5-specific crash
workaround in OpenGLManager impossible to trigger. Remove:
- OSInfo struct and s_os_info static member from the header
- OS version recording in init_glcontext()
- Conditional wxGLContext deletion in the destructor (now always deletes)
- Unused #include <wx/platinfo.h>
The MacDarkMode.hpp include is retained as mac_max_scaling_factor() is
still used by GLInfo::get_max_tex_size().
wxWidgets 3.1+ accepts const argv arrays (const wchar_t* const* and
const char* const*) in wxExecute(), making the const_casts unnecessary.
Remove all 14 const_cast<char**>/const_cast<wchar_t**> wrappers around
wxExecute calls and their associated FIXME comments across GUI.cpp,
NotificationManager.cpp, and Downloader.cpp.
Remove scale_win_font() and scale_controls_fonts() functions along
with the #if !wxVERSION_EQUAL_OR_GREATER_THAN(3,1,3) guard in
rescale(). Since wx >= 3.1.3 is now guaranteed, this code could
never execute and the functions had no other callers.
Since we now target wxWidgets 3.3, the custom DPI change event
workaround (DpiChangedEvent, EVT_DPI_CHANGED_SLICER,
register_win32_dpi_event) is dead code. wxWidgets 3.1.3+ provides
native wxEVT_DPI_CHANGED / wxDPIChangedEvent which is already
wired up in the "true" branch of the version guards.
Removes:
- DpiChangedEvent struct and EVT_DPI_CHANGED_SLICER declaration/definition
- register_win32_dpi_event() function and its call site
- All associated #if !wxVERSION_EQUAL_OR_GREATER_THAN(3,1,3) guards
* Aktualisiere deutsche Übersetzungen in der i18n-Datei für bessere Klarheit und Konsistenz
* Update German localization for OrcaSlicer
- Improved translations for various messages, ensuring clarity and consistency.
- Corrected terminology for technical terms such as "flow ratio" and "emboss text object."
- Adjusted phrasing for better readability and grammatical accuracy.
- Removed redundant or unclear phrases to streamline user experience.
- Added new entries for warnings and notifications related to printer operations.
* typo
# Description
<!--
> Please provide a summary of the changes made in this PR. Include
details such as:
> * What issue does this PR address or fix?
> * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be
considered?
-->
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the
changes made in this PR.
-->
# Description
update cmake to 4.3.x version for better support of new build tools
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the
changes made in this PR.
-->
# Description
We want to ignore everything on this path so that the build uses its own
dependencies rather than picking up, e.g., the wrong version of libpng
just because that's what someone has in their MacPorts.
This fixes https://github.com/OrcaSlicer/OrcaSlicer/issues/10460
## Tests
I confirmed that this patch fixes the build (`./build_release_macos.sh
-x`).
Defaults to ignore:
/opt/local (MacPorts)
/opt/homebrew (Homebrew on ARM)
/opt/local (Homebrew on x86)
We want to ignore these paths so any dependencies they might contain don't interfere with the build.
This fixes https://github.com/OrcaSlicer/OrcaSlicer/issues/10460
# Description
<!--
> Please provide a summary of the changes made in this PR. Include
details such as:
> * What issue does this PR address or fix?
> * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be
considered?
-->
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the
changes made in this PR.
-->
# Description
tweak some wipe tower related warnings to reduce confusion
1. Skip flushing volume validation for multi-tool printers
2. check precise_z_height and enable_prime_tower conflicts in print
validate
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the
changes made in this PR.
-->
Flushing volumes only apply to SEMM and BBL printers. Multi-tool printers don't perform filament purging between tool changes, so the zero-volume warning was being incorrectly triggered.
# Description
Reverted PR #12191 and #12777 and added new fixes. This also resolves an
issue where, in some cases, the sliced result was immediately
invalidated after the first slicing.
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the
changes made in this PR.
-->
# Description
Previously, wipe tower behavior was determined by the printer model.
In this PR, we introduced an option that lets users choose which wipe
tower type to use.
BBL printers remain hardcoded to Type 1. Qidi profiles default to Type
1.
This may be useful for users with a filament-cutter-based system
(similar to Bambu printers) who want to use similar configurations—they
can select the "Type 1" wipe tower. That said, Wipe Tower Type 2 is
generally recommended for all printers, whether they use a typical MMU
setup, a filament cutter, or a tool changer.
# Screenshots/Recordings/Graphs
<img width="1307" height="854" alt="Screenshot 2026-03-15 at 22 27 29"
src="https://github.com/user-attachments/assets/04bc5c42-88c4-458a-a933-a22f8408b6a8"
/>
## Tests
<!--
> Please describe the tests that you have conducted to verify the
changes made in this PR.
-->
The check_profiles workflow used gh pr comment directly, which fails for
fork PRs due to read-only GITHUB_TOKEN. Split into artifact upload +
workflow_run pattern so comments post with proper write permissions.
## FIXES
• Corrects area height on windows while using 125% and 175% scaling. it
shows scrollbar when it incorrectly set. i have used directly size of
combobox this time instead static number
## IMPROVEMENTS
• Removes restriction for restarting orca when setting changed
# Description
Add the localization/ directory to the Flatpak source list so
run_gettext.sh can compile .po files into .mo translations.
Replace LC_ALL=C.UTF-8 with LC_NUMERIC=C in the entrypoint script to
preserve the user's language settings while still preventing
decimal-separator parsing issues.
fixes#12714
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the
changes made in this PR.
-->
Add the localization/ directory to the Flatpak source list so
run_gettext.sh can compile .po files into .mo translations.
Replace LC_ALL=C.UTF-8 with LC_NUMERIC=C in the entrypoint script
to preserve the user's language settings while still preventing
decimal-separator parsing issues.
# Description
This pull request fixes the bug where Orca Slicer enters an infinite
loop when a density of zero is introduced for the top layer solid infill
# Screenshots/Recordings/Graphs
<img width="2560" height="1392" alt="image"
src="https://github.com/user-attachments/assets/5bf5c220-a398-483f-9f69-63dadbc888af"
/>
Note: For bottom solid infill, this is not a problem because the minimum
density is 10%.
Makes sure all non-bbl printers go through the same filament reordering
code so custom filament sequence is properly handled, while skipping the
filament grouping part by mapping all filaments to group 0.
This is the same method used by BBL printer to calculate the optimal
filament grouping so should be robust.
Fix#12449Fix#12766
# Description
<!--
> Please provide a summary of the changes made in this PR. Include
details such as:
> * What issue does this PR address or fix?
> * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be
considered?
-->
Happy Hare now writes mmu lane data to the moonraker db similar to AFC,
so we can normalize to the one implementation. For now, i've just
re-ordered it so that the moonraker db is checked first. I want this
because I've actually updated the happy hare data to include more data
than we had access to via the "mmu" object. For happy hare we now have
access to vendor name, which we can eventually use to further fine tune
the auto-matched filament preset.
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
_n/a_
## Tests
<!--
> Please describe the tests that you have conducted to verify the
changes made in this PR.
-->
# Description
Qidi printers run Klipper and we don't want arc fitting enabled for
these.
This is wrongly enabled in QidiStudio as well, likely where these
profiles originated.
With certain irrational beam interlocking parameters, it will take a few
minutes to complete the interlocking generation; even worse:
cancellation doesn't work once it started.
This PR fix that by adding cancellation check inside some of the most
time consuming loops so it can be stopped ASAP.
Also cherry picked a sanity check from
https://github.com/bambulab/BambuStudio/pull/9925 by @mpaperno. Thanks!
The following test project (which was modified from the upper PR by
@mpaperno) took me more than 90s to complete with 0.1mm beam width:
[Interloack-Test2.orca.3mf.txt](https://github.com/user-attachments/files/25975637/Interloack-Test2.orca.3mf.txt)
# Description
I was just building the project and checked out the CMakeLists to see if
there are some optional features I can disable to speed up compilation
and tripped on this chinese comment.
This just translates the comment to English for consistency
Previously, wipe tower behavior was determined by checking if the printer
was a QIDI vendor. This introduces a configurable enum (Type 1 / Type 2)
so any printer can select its wipe tower implementation. BBL printers
remain hardcoded to Type 1. Qidi profiles default to Type 1.
# Description
The wipe tower config position (wipe_tower_x/y) could be outside the plate boundary (e.g. default y=250 on a 200mm printer). No constraint was applied at slice time, so the tower was generated out-of-bounds.
issue reported in #12731
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the changes made in this PR.
-->
The wipe tower config position (wipe_tower_x/y) could be outside the
plate boundary (e.g. default y=250 on a 200mm printer). No constraint
was applied at slice time, so the tower was generated out-of-bounds.
Happy Hare now writes mmu lane data to the moonraker db similar to AFC, so we can normalize to the one implementation. For now, i've just re-ordered it so that the moonraker db is checked first. I want this because I've actually updated the happy hare data to include more data than we had access to via the "mmu" object. For happy hare we now have access to vendor name, which we can eventually use to further fine tune the auto-matched filament preset.
std::map::at() throws std::out_of_range when option.category or
"Basic information" is not present in the tab's category_icon_map,
crashing the app. Replace with a safe find()-based helper lambda
that falls back to an empty string (no icon) when the key is missing.
Add a guard that skips creating fill params for top surfaces when the configured density is less than or equal to zero. This avoids generating surface fills for zero/negative densities and prevents unnecessary processing or potential errors when top surface density is disabled.
In CLI mode, PartPlateList is constructed with a NULL plater pointer
(OrcaSlicer.cpp:3612). When set_shapes() calls PartPlate::set_shape(),
it unconditionally executes render data preparation code that
dereferences the null plater through calls like generate_print_polygon()
→ wxGetApp().plater(), causing a segmentation fault (exit code 139).
This adds a null check on m_plater in PartPlate::set_shape() to skip
the render-only code block that generates logo triangles, print/exclude
polygons, gridlines, icon vertices, and plate name textures.
These rendering operations are not needed in CLI mode and this change
has no impact on GUI mode where m_plater is always valid.
* Fix GIT_COMMIT_HASH not set in Flatpak builds
The env var check was gated inside the .git directory check, so
Flatpak builds (which exclude .git from the sandbox) always fell
back to "0000000". Lift the env var check to top level and inject
the commit hash into the Flatpak manifest via build-options.env.
* Switch Flatpak build to Clang/LLD via LLVM 21 SDK extension
- Add org.freedesktop.Sdk.Extension.llvm21
- Bump runtime to GNOME 49 (SDK 25.08) for llvm21 availability
* fix build errors and improving build speed for flatpak
* fxi more build errors
* Update error messages for GNOME Platform and SDK versions
The env var check was gated inside the .git directory check, so
Flatpak builds (which exclude .git from the sandbox) always fell
back to "0000000". Lift the env var check to top level and inject
the commit hash into the Flatpak manifest via build-options.env.
Fix hotkeys blocked in Prepare view when notification is shown
Restore SetFocus() in the GLCanvas3D mouse-entering handler so the
canvas reclaims wxWidget keyboard focus whenever the mouse enters it
(provided the main window is active). Without this, clicking a sidebar
control or a UI update triggered by slicing could leave the canvas
without focus, causing hotkeys like Tab to stop working until the user
clicked the canvas or dismissed the notification.
* optimize resize feature on Linux
* fix the black screen issue on app startup on Linux
* Fixed an issue that Filament Grouping dialog always popup on Linux
* Fix an issue that on Linux the project name or model file name was not displayed in title bar
* optimize resize feature on Linux
* fix the black screen issue on app startup on Linux
* Fixed an issue that Filament Grouping dialog always popup on Linux
# Description
Esthetic filaments such as wood-infused, matte and marble filaments will now be handled by the Snapmaker printer agent so that they could be matched to more appropriate print profiles instead of generic PLA.
When flush_multiplier is applied to flush_volumes_matrix values, the
result can be a decimal (e.g., 272 * 1.3 = 353.6). Some printer firmware
metadata parsers (notably Creality K2) crash when parsing decimal values
in flush_volumes_matrix, causing prints to get stuck at "File selected".
This fix rounds the multiplied values to integers, ensuring compatibility
with firmware that expects integer values in this field.
Fixes compatibility with Creality K2 and potentially other Klipper-based
printers that parse the CONFIG_BLOCK metadata.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude <noreply@anthropic.com>
# Description
<!--
> Please provide a summary of the changes made in this PR. Include details such as:
> * What issue does this PR address or fix?
> * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be considered?
-->
Added eSUN Filament PLA Basic, Marble, Matte to Orca Filament Library
<img width="811" height="331" alt="image" src="https://github.com/user-attachments/assets/5cda8b59-cd44-4e32-bae0-d08d2346dd39" />
## Tests
<!--
> Please describe the tests that you have conducted to verify the changes made in this PR.
-->
```
./OrcaSlicer_profile_validator -v eSUN
Total loaded vendors: 1
Validation completed successfully
```
Translation added
# Description
<!--
> Please provide a summary of the changes made in this PR. Include details such as:
> * What issue does this PR address or fix?
> * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be considered?
-->
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the changes made in this PR.
-->
### Description
A couple of warning dialogs still used a caption containing "**BambuStudio warning**". It is a leftover from the original BambuStudio codebase.
### This PR
- removes the explicit caption so the dialogs use the standard application warning title instead.
### Result
- removes the remaining Bambu reference while keeping the visible behavior consistent with the rest of the UI.
- addresses point 1. of "New ports from Bambu Studio" section from #12684
### Screenshots
- **Before:**
<img width="1352" height="277" alt="image" src="https://github.com/user-attachments/assets/d107acaa-f159-496a-b14e-93cd149bf355" />
- **After:**
<img width="1356" height="278" alt="image" src="https://github.com/user-attachments/assets/e111b5b3-9b3e-4b13-b20d-f98e5173ea16" />
Added entry to wipingdialog.html css to prevent it from being overscrollable and its position fixed.
Added escape button to close dialog event on both javascript and webview events
JIRA-136
# Description
When using the Bambu H2D, users can use Filament Grouping, a button found next to the bed preview. When not on a H2D profile, the button is hidden. However, it remained usable, and clicking an empty space below all the buttons causes the dialog to appear.
This PR fixes that by adding a check before the button is registered.
Addresses point 9 (focusing on the 2nd bullet) in #12684
## Tests
Tried to click on the empty area right below the column of buttons (see the below images)
Made sure to have the H2D profile loaded as well, and checked that the dialog still opens for that printer.
H2D active
<img width="1635" height="949" alt="image" src="https://github.com/user-attachments/assets/da6fb03b-e3c8-4504-ac60-b96ecc6347dc" />
Area to click for the invisible button
<img width="935" height="788" alt="image" src="https://github.com/user-attachments/assets/1f001bcf-0224-4922-b5bf-47a95820e536" />
The WipeTower2 code path never called construct_mesh(), leaving
wipe_tower_mesh_data as std::nullopt. GCode export then dereferenced
it unconditionally, triggering an assertion failure / crash.
1. Dirty flags not showing for extruder options:
2. Crash when switching to non-first extruder tabs:
3. Modifying one extruder's parameter affects other extruders:
* Linux: prefer discrete GPU on dual-GPU systems via PRIME environment variables
Set DRI_PRIME=1 for AMD/nouveau PRIME setups and __NV_PRIME_RENDER_OFFLOAD/__GLX_VENDOR_LIBRARY_NAME for NVIDIA proprietary driver, only when the NVIDIA kernel module is detected. Uses replace=false to respect user overrides.
* Improves usability on Linux. No more double title bar (#12600)
* Fix double title bar on Linux by removing WM decorations for GTK
* wip
* fix
* finish
* address review comment
Fix crash in PA calibration pattern generation
Reset current extruder ID and clear pointers in set_extruders to prevent dangling pointers when extruders are recreated. Also fixed undefined behavior by checking if the vector is empty before taking max_element.
Co-authored-by: SoftFever <softfeverever@gmail.com>
## Summary
- Change default bed temperature type from "By First filament" to "By Highest Temp"
- Move `bed_temperature_formula` option from develop mode to advanced mode for better accessibility
- Relocate UI control from "Basic Information - Advanced" to "Multimaterial Setup" section where it's more relevant for multi-filament printing
Using the highest temperature of all printed filaments is generally safer for bed adhesion than using the first filament's temperature, especially in multi-material prints where different filaments may require different bed temperatures.
<img width="390" height="239" alt="Screenshot 2026-02-26 at 18 44 56" src="https://github.com/user-attachments/assets/0fe9f8c7-062a-4a7a-8ab3-c52df7e74b26" />
# Description
This PR enhances the GCodeProcessor's time estimation by incorporating Junction Deviation (JD) into the jerk calculations, providing more accurate print time predictions for firmwares that use JD (like modern Marlin).
Key Changes:
- Added JD support to time estimation
- Reads machine_max_junction_deviation (machine limits) and default_junction_deviation (print profile)
- When JD is enabled (>0), replaces traditional X/Y jerk values with JD-based calculation:
$Jerk = \sqrt{2.5\cdot JD \cdot acceleration }$
- Falls back to traditional jerk when JD is not used
# Test:
JD:0.0256mm Accel.: 1000 mm/s²
<img width="2560" height="1392" alt="image" src="https://github.com/user-attachments/assets/f0e95294-bfca-400e-bffc-8d615d051b70" />
Jerk: 8mm/s (equivalent)
<img width="2560" height="1392" alt="image" src="https://github.com/user-attachments/assets/8508727e-70f6-49ed-ac19-002db73e957b" />
JD:0.0128mm (4mm/s jerk)
<img width="2560" height="1392" alt="image" src="https://github.com/user-attachments/assets/91b04d3b-1b9e-48f4-b4b4-5addda2eff57" />
* Add Elegoo filament profiles to OrcaFilamentLibrary
Add 7 Elegoo filament profiles based on manufacturer specifications:
- Elegoo Rapid PETG (high-speed PETG, 240-270°C, 30-600mm/s)
- Elegoo PETG Pro (standard PETG, 230-260°C, 30-270mm/s)
- Elegoo PETG-CF (carbon fiber PETG, 240-270°C, 30-220mm/s)
- Elegoo PLA (standard PLA, 190-230°C, 30-280mm/s)
- Elegoo Rapid PLA+ (high-speed PLA, 190-230°C, 30-600mm/s)
- Elegoo ASA (ASA, 250-280°C, 30-270mm/s)
- Elegoo TPU 95A (flexible TPU, 220-240°C, 30-60mm/s)
All settings sourced from Elegoo's official product specifications.
* Fix dual seam fuzzy painted rev 2 (#11923)
* 2 seam fuzzy 2nd attempt
* Update FuzzySkin.cpp
* Fix debug SVG
* solve bump artifact in extrusion junction joint
* minor fixes
* cleaning
Update FuzzySkin.cpp
* Fix filament override changes not appearing in Unsaved Changes and showing as “Undef category” in preset comparison (#12298)
* Fix an issue that on Windows the Bambu legacy plugin is 01.10.01.09 (#12380)
* tweak legacy library migration from rename to copy in BBLNetworkPlugin (#12400)
* tweak legacy library migration from rename to copy in BBLNetworkPlugin
* Add Pressure Advance visualization support (#11673)
* Add Pressure Advance visualization support
Signed-off-by: minicx <minicx@disroot.org>
* Port Pressure Advance visualization to libvgcode architecture
Adapt PA visualization (originally in commit e3a77259) to work with
the new libvgcode library introduced by upstream PR #10735.
Changes across the libvgcode stack:
- PathVertex: add pressure_advance field
- Types.hpp: add PressureAdvance to EViewType enum
- ViewerImpl: add ColorRange, color mapping, range updates for PA
- LibVGCodeWrapper: pass pressure_advance from MoveVertex to PathVertex
GCodeViewer UI integration:
- Add "Pressure Advance" to view type dropdown
- Add PA color range in legend (3 decimal places)
- Add PA value display in sequential view marker tooltip
- Add PA row in position properties table
The GCodeProcessor PA parsing (M900, M572, SET_PRESSURE_ADVANCE)
is preserved from the original implementation.
* Tag Pressure Advance visualization changes with ORCA comments
Signed-off-by: minicx <minicx@disroot.org>
---------
Signed-off-by: minicx <minicx@disroot.org>
Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
* Fix time estimation using wrong machine limits due to broken extruder_id indexing (#12411)
The extruder_id*2 offset in get_axis_max_feedrate/get_axis_max_acceleration
was cherry-picked from BambuStudio's per-nozzle limit system, which OrcaSlicer
never ported. Without that system the limit arrays only have 2 values
([0]=Normal, [1]=Stealth), so any extruder_id > 0 or the uninitialized
value (255) would overshoot the array and fall back to values.back(),
always returning stealth-mode limits and producing incorrect time estimates.
Revert to indexing by time mode only (matching v2.3.1 behavior) and simplify
the M201/M203 handlers to write only the two mode slots they actually use.
* Fix machine envelope G-code emitting wrong limits due to broken extruder_id indexing (#12414)
print_machine_envelope() used get_extruder_id(extruder_id)*2 to index
machine limit arrays that only hold [Normal, Stealth] (2 entries).
For multi-extruder setups this went out-of-bounds, causing wrong M201/M203
values in the G-code which then override the estimator's correct limits.
Same class of bug as c6d1c11ebb but on the G-code writer side.
Changes:
- Remove unused extruder_id param from print_machine_envelope()
- Use .values.front() for M201/M203, matching M204/M205 in same function
- Change get_option_value() fallback from .back() to .front() so any
future out-of-bounds index returns Normal mode instead of Stealth
* update error message when plugin upgrade failed
* Add and update pt-BR translations (#12409)
* Add preference for filament area height to reduce scrolling while using 16+ filaments (#12317)
Fixes https://github.com/OrcaSlicer/OrcaSlicer/issues/12284
Adds a preference for filaments area height since every user has different amount of MM units and external filaments
so users can set a value that fits their setups this way
we might see 3 or 6 filaments for each unit on future. thats why i set value as int
used 10 as default value. its good for 2 multimaterial units ( 8 filaments ) and 1 external filament
min value is 8. might be good when no external filaments in use
max value is 99. UI works same as 2.3.1 version
<img width="562" height="122" alt="Screenshot-20260215194149" src="https://github.com/user-attachments/assets/309cec36-8b83-48f3-875f-d5f22a9631e7" />
**BEFORE**
Scrollable area fixed for 10 items. that causes a lot of scrolling whe user has 3 or 4 ams units
<img width="411" height="237" alt="Screenshot-20260215194816" src="https://github.com/user-attachments/assets/fc7823c0-d82a-4d1f-bb5b-56e8dd47abd2" />
**AFTER**
value 10. - 2 multimaterial units ( 8 filaments ) and 1 external filament
<img width="1002" height="250" alt="Screenshot-20260215195243" src="https://github.com/user-attachments/assets/e3238cd1-788e-4ed2-b048-89c63bd323db" />
value 18 - 4 multimaterial units ( 16 filaments ) and 1 external filament
<img width="1001" height="355" alt="Screenshot-20260215195127" src="https://github.com/user-attachments/assets/afe0305e-fcb4-4a51-b8dc-e70a063aa391" />
* Fix: Correct range checking for int and float Config Options + QoL changes in tooltips (#11915)
* Fix float number not working properly for option min/max (#11211)
* ConfigOptionDef: min/max values type are changed from INT to FLOAT.
(cherry picked from commit f277bc80c22e0c9a067481a4301922e2c96aed47)
* Fix infinite loop and crash when `fuzzy_skin_point_distance` = 0 (SoftFever/OrcaSlicer#11069)
* Fix Linux build issue
* Fix float comparison due to precision loss
* Fix: Range check added for coInt options; Ranges and defaults added in tooltips
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Update machine profile for OpenEYE Peacock V2 (#12333)
* OpenEYE Peacock V2 machine profile: Add printer_agent key to enable AMS filament synchronization (Klipper/Moonraker)
Signed-off-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>
* Optimize retraction settings in printer profiles to reduce stringing and improve print quality
Signed-off-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>
---------
Signed-off-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>
* Fix preheat regression bugs (#12438)
Fix preheat regression bugs
revert 769fc137c7
* Fix the issue where `resources/profiles/OrcaFilamentLibrary.json` is not updated accordingly.
---------
Signed-off-by: minicx <minicx@disroot.org>
Signed-off-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>
Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
Co-authored-by: Kiss Lorand <50251547+kisslorand@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
Co-authored-by: minicx <39405619+loss-and-quick@users.noreply.github.com>
Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Alexandre Folle de Menezes <afmenez@terra.com.br>
Co-authored-by: yw4z <ywsyildiz@gmail.com>
Co-authored-by: Valerii Bokhan <80919135+valerii-bokhan@users.noreply.github.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
Co-authored-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>
Added checks in ByLayer print sequence to handle ordering for Intra-layer ordering option. Prevents new ordering setup when "As object list" is enabled.
* Fix float number not working properly for option min/max (#11211)
* ConfigOptionDef: min/max values type are changed from INT to FLOAT.
(cherry picked from commit f277bc80c22e0c9a067481a4301922e2c96aed47)
* Fix infinite loop and crash when `fuzzy_skin_point_distance` = 0 (SoftFever/OrcaSlicer#11069)
* Fix Linux build issue
* Fix float comparison due to precision loss
* Fix: Range check added for coInt options; Ranges and defaults added in tooltips
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
print_machine_envelope() used get_extruder_id(extruder_id)*2 to index
machine limit arrays that only hold [Normal, Stealth] (2 entries).
For multi-extruder setups this went out-of-bounds, causing wrong M201/M203
values in the G-code which then override the estimator's correct limits.
Same class of bug as c6d1c11ebb but on the G-code writer side.
Changes:
- Remove unused extruder_id param from print_machine_envelope()
- Use .values.front() for M201/M203, matching M204/M205 in same function
- Change get_option_value() fallback from .back() to .front() so any
future out-of-bounds index returns Normal mode instead of Stealth
The extruder_id*2 offset in get_axis_max_feedrate/get_axis_max_acceleration
was cherry-picked from BambuStudio's per-nozzle limit system, which OrcaSlicer
never ported. Without that system the limit arrays only have 2 values
([0]=Normal, [1]=Stealth), so any extruder_id > 0 or the uninitialized
value (255) would overshoot the array and fall back to values.back(),
always returning stealth-mode limits and producing incorrect time estimates.
Revert to indexing by time mode only (matching v2.3.1 behavior) and simplify
the M201/M203 handlers to write only the two mode slots they actually use.
* Add Pressure Advance visualization support
Signed-off-by: minicx <minicx@disroot.org>
* Port Pressure Advance visualization to libvgcode architecture
Adapt PA visualization (originally in commit e3a77259) to work with
the new libvgcode library introduced by upstream PR #10735.
Changes across the libvgcode stack:
- PathVertex: add pressure_advance field
- Types.hpp: add PressureAdvance to EViewType enum
- ViewerImpl: add ColorRange, color mapping, range updates for PA
- LibVGCodeWrapper: pass pressure_advance from MoveVertex to PathVertex
GCodeViewer UI integration:
- Add "Pressure Advance" to view type dropdown
- Add PA color range in legend (3 decimal places)
- Add PA value display in sequential view marker tooltip
- Add PA row in position properties table
The GCodeProcessor PA parsing (M900, M572, SET_PRESSURE_ADVANCE)
is preserved from the original implementation.
* Tag Pressure Advance visualization changes with ORCA comments
Signed-off-by: minicx <minicx@disroot.org>
---------
Signed-off-by: minicx <minicx@disroot.org>
Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
* Reapply "Switch to self hosted mac runner (#12024)" with proper fix
This reverts commit 783f9926e3.
* use conditional logic for self-hosted runners
* improve readbility
- Add configurable GLEW_USE_EGL option (default OFF) to match wxWidgets
- Explicitly set wxUSE_GLCANVAS_EGL=OFF for vendored wxWidgets build
- Add compile-time check to detect EGL/GLX backend mismatch between
GLEW and wxWidgets, preventing silent rendering failures
The bug occurred when GLEW was compiled with EGL support (using
eglGetProcAddress) but wxWidgets created GLX contexts. This mismatch
caused OpenGL function pointers to fail loading, resulting in blank
3D model preview.
Co-authored-by: SoftFever <softfeverever@gmail.com>
Wipe tower interface features and preheat fixes
Fresh PR branch rebuilt on upstream/main (squash of origin/BBL-studio-wipe-tower-merge) to avoid merge-history issues.
* Add Rectilinear Support for Normal support type. Fix issue #9508.
* Remove duplicate the rotation logic, use raft_interface_angle function.
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Fix extruder_id out-of-bounds in switch_excluder
Added a check to reset extruder_id to 0 if it exceeds the size of nozzle_volumes or extruders, preventing potential out-of-bounds access.
Co-Authored-By: Christopher R. Palmer <1305033+crpalmer@users.noreply.github.com>
* Add custom nozzle diameter option in sidebar
Ensures that if the actual nozzle diameter is not present in the list, it is added as a custom option. This improves user experience by allowing selection of non-standard nozzle diameters.
Refactor nozzle diameter selection logic in Sidebar
Simplified the logic for updating the extruder nozzle diameter combo box by removing redundant checks and streamlining the addition of custom nozzle diameters. This improves code clarity and ensures the actual nozzle diameter from the printer config is always considered.
Co-Authored-By: yw4z <yw4z@outlook.com>
* Prevent profile switch if selected diameter matches nozzle
Adds a check in Sidebar::priv::switch_diameter to avoid switching printer profiles when the selected diameter matches the current nozzle diameter in the configuration. This prevents unnecessary profile changes and improves user experience.
---------
Co-authored-by: Christopher R. Palmer <1305033+crpalmer@users.noreply.github.com>
Co-authored-by: yw4z <yw4z@outlook.com>
New translation OrcaSlicer
# Description
<!--
> Please provide a summary of the changes made in this PR. Include details such as:
> * What issue does this PR address or fix?
> * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be considered?
-->
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the changes made in this PR.
-->
* fixes: keys_map is initialized with itself [-Winit-self]
* fixes: operation on repeats may be undefined [-Wsequence-point]
* fixes: warning: suggest parentheses around && within || [-Wparentheses]
* fixes: moving brim_points to itself [-Wself-move]
* fixes: operation on unprintability may be undefined [-Wsequence-point]
* fixes: extra tokens at end of #endif directive [-Wendif-labels]
* fixes: converting to non-pointer type int from NULL [-Wconversion-null]
* review result: simplifies fix 'operation on repeats may be undefined'
# Description
The current bounding box selection display loses all usefulness once the furthest apart objects are selected.
This is especially noticeable on grid patterns, where nested unselected elements become indistinguishable after selecting all.
This PR implements a highlighting method that visually brightens individually selected objects.
# Screenshots/Recordings/Graphs
<img width="1845" height="829" alt="image" src="https://github.com/user-attachments/assets/a92a7176-182c-41e2-869e-badb220dfee2" />
Current 2.3.1: All but some objects are selected. Can you tell which ones?
<img width="2169" height="1042" alt="image" src="https://github.com/user-attachments/assets/c6c721d5-4f03-4c23-beff-b0acc0601568" />
Proposed PR: Slight lightening of selected objects
## Tests
Built on windows, tested with various colors and non-printable
Sorry had to re-create the PR as I did some chaos in my repo with CLI. xD
Fixes issue https://github.com/OrcaSlicer/OrcaSlicer/issues/10971
Description:
Fix wipe tower filament selection and clean up tool ordering. Added wipe_tower_filament handling to WipeTower2 (store config, mark non-selected tools as “soluble,” and use it in toolchange selection) and ensured the configured wipe‑tower extruder is included in the extruder list for ordering. Removed duplicated/merged tool‑ordering code (extra insert_wipe_tower_extruder definition, duplicate declaration, and redundant reorder block) so the tool order logic runs only once.
<img width="1819" height="799" alt="image" src="https://github.com/user-attachments/assets/cef39026-cf6a-46da-a87a-ef895774699f" />
This PR adds a new filament sync mode setting for device-based filament synchronization.
Users can now choose between syncing both filament preset + color (current behavior) or syncing color only, so calibrated local filament profiles are preserved while still updating slot colors from the printer.
It also includes small UI improvements for the new preference entry and sync status messaging.
<img width="665" height="671" alt="image" src="https://github.com/user-attachments/assets/23980846-0113-48ab-84aa-adf5cdab8ab6" />
* Add checks to snap wipe tower back to origin when it was loaded outside the plate boundary
* Fix Wipe Tower preview outside plate boundary and warning notification
- snaps wipe tower preview to nearest edge if it was loaded outside of plate boundary.
- Added warning notification to notify position change
# Description
Transforming internal 3D Files to DRC to reduce orca size
## Calibs
(Not counting temperature_tower)
Original 6,01 MB
Converted 1,57 MB
- Mesh (STL/3MF) to LossLess DRC
- SCV-V2 116kb -> 15kb
- fast_tower_test 66kb -> 9kb
- ringing_tower 172kb -> 22kb
- pressure_advance_test 124kb -> 16kb
- tower_with_seam 2kb -> 1kb
- retraction_tower 1.726kb -> 97kb (done at 25, if 0 = 212kb)
- ~~temperature_tower~~ Updated, fixed, wider range and Draco in: #12103 5.075kb -> 485kb
- vfa 1.453kb -> 179kb
- Step
- SpeedTestStructure 1.312kb -> 86kb
- Imported:
- Linear Deflection: 0.002
- Angle Deflection: 0.25
- Exported as LossLess DRC
## Handy Models
Original 4,66 MB
Converted 1,53 MB
- STL/3MF to LossLess DRC (Maybe reduce the bit depth???)
- 3DBenchy 2.417kb -> 570kb (done at 25, if 0 = 1.340kb)
- calicat 43kb -> 6kb
- ksr_fdmtest_v4 128kb -> 74kb
- Orca_stringhell 63kb -> 37kb
- OrcaToleranceTest 758kb -> 94kb
- Stanford_Bunny 755kb -> 187kb (done at 25, if 0 = 316kb)
- Voron_Design_Cube_v7 34kb -> 21kb
## Bit used
After some test with a lot of models and all possible combinations it's safe to say that >20 is BondingBox and mm3 volume the best it can.
So i used 25 just as a safe value in:
- Stanford_Bunny
- 3DBenchy
- retraction_tower
<img width="324" height="499" alt="imagen" src="https://github.com/user-attachments/assets/bb5000cf-c1fa-4153-af2f-691ea59bc254" />
<img width="324" height="499" alt="imagen" src="https://github.com/user-attachments/assets/f38e3528-0d05-4621-984e-f107a0eec91e" />
## MultiPart 3MF
Didint change them, too much trouble for small changes.
## Problem
Some Creality printers (e.g. Ender-3 V3 SE) rely on metadata comments in the first lines of G-code files to display print info on the screen (estimated time, filament usage, layer height). This follows a format originally used by Cura/Creality Print:
```
;FLAVOR:Marlin
;TIME:3708.97
;Filament used:6.21m
;Layer height:0.2
```
OrcaSlicer currently has no way to write content before the `HEADER_BLOCK` in the G-code output, and does not expose `print_time_sec` or `filament_length_m` as usable placeholders. As a result, these printers show zeroed-out print info on screen.
## Changes
### 1. New placeholders (post-processing)
Added two new G-code placeholders resolved during post-processing:
- `{print_time_sec}` — total estimated print time in seconds (double)
- `{filament_length_m}` — total filament length in meters (double)
These values are only available after G-code generation, so they use inline marker replacement (`@PRINT_TIME_SEC@`, `@FILAMENT_LENGTH_M@`) that `GCodeProcessor::run_post_process()` substitutes with actual computed values — the same pattern used by existing M73 and layer count placeholders.
### 2. New "File header G-code" option (`machine_top_gcode`)
Added a new G-code field in **Printer Settings > Machine G-code** that writes content at the very top of the output file, before `HEADER_BLOCK_START`. This allows users to add firmware-specific metadata that must appear in the first lines.
### 3. Creality Ender-3 V3 SE profile update
Pre-configured the Ender-3 V3 SE profiles (all 4 nozzle variants) with a default `machine_top_gcode` value matching the Cura-compatible header format, so print info displays correctly out of the box.
# Screenshots
| Before (current OrcaSlicer) | After (this PR) |
|---|---|
|  |  |
## Tests
- Sliced test model with Ender-3 V3 SE profile
- Verified G-code output contains correct values in first lines:
- `;TIME:` with actual print time in seconds
- `;Filament used:` with filament length in meters
- `;Layer height:` with correct layer height
- Verified `{print_time_sec}` and `{filament_length_m}` work in both Machine Start G-code and File header G-code fields
- Verified empty `machine_top_gcode` produces no extra output
- Built and tested on macOS (arm64)
The IDEX profiles for Ratrig v-core 4.0 printers where only working for the 0.4 mm nozzle. I suppose these changes should fix it. I only asked copilot about it, so not tested if that is the reason why I cannot select a second filament with the bigger nozzle profiles.
# Description
<!--
> Please provide a summary of the changes made in this PR. Include details such as:
> * What issue does this PR address or fix? Add new models
> * What new features or enhancements does this PR introduce? no
> * Are there any breaking changes or dependencies that need to be considered? no
-->
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the changes made in this PR.
-->
* added option to save a profile as detached(no inheritance)
* Revert "added option to save a profile as detached(no inheritance)"
This reverts commit c1326c6dec.
* re-commiting the changes
* fixed conflicts with upstream
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Add read support for Google's Draco (.drc) format.
* Fix build on Linux
* Use boost instead of fstat.
* Switch to boost memory-mapped file to save RAM and potentially improve performance.
* Trim trailing whitespace.
* Initial Draco write support.
Currently always exports with 16-bit precision and speed 0 (best compression).
The back-end function does have arguments to specify them, it's just not hooked into the GUI.
* Add Draco to the About dialogue.
* Fix Linux compile (hopefully)
* Add an option to associate DRC files on Windows.
* Implement a Preferences option to set Draco position quantization bits
* Update src/slic3r/GUI/Preferences.cpp
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
* Some slight changes to ianalexis's suggestion.
* Implement a create_item_spinctrl() function for numeric inputs, and use that instead of create_item_input().
* Move "bits" to inside the spinctrl box.
* Refactor following yw4z's feedback
* Update src/slic3r/GUI/Preferences.cpp
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
* Change to 0 bits as the default setting for Draco export precision.
* Change to a lossy checkbox and a bits field with a range of 8-30.
* Proper SpinInput code from yw4z
* Revert "Proper SpinInput code from yw4z"
This reverts commit 7e9c85f31a.
* Revert "Change to a lossy checkbox and a bits field with a range of 8-30."
This reverts commit d642c9bcc0.
* Redo preferences based on SoftFever's feedback
* Refactor to minimize code duplication
* Fix padding
* Improve Draco export quality level tooltip clarity
Clarify that 0 means lossless compression (not uncompressed),
document the valid lossy range (8-30), and better explain the
tradeoff between file size and geometric detail.
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
Closes#11726
# Description
Removed hardcoded 0.2mm layer height.
Now it will stay in with the user process.
Also corrected several config assignments to use print_config instead of obj->config for consistency.
## Note
Didn't change PA PATTERN because i don't know if it may impact the calibration results for this specific test.
Toolchanger printers with 4 tools were incorrectly treated as dual-nozzle (IDEX-style) printers in AMS Sync. So I was locked to just tool 1/2.
Adjusted AMS Sync to use dual-nozzle logic only for true 2-nozzle setups (nozzle_nums == 2 and filament_map in {1,2}), and route 3+ tool toolchangers through the generic mapping flow so all tool IDs are handled correctly.
Before:
<img width="2276" height="1738" alt="image" src="https://github.com/user-attachments/assets/ccebc020-37cf-4af6-8568-a9f331f6c08c" />
After:
<img width="2236" height="1662" alt="image" src="https://github.com/user-attachments/assets/030f49c3-463d-4355-95ba-ba8f95a01ecd" />
Tested on / with:
- Snamaker U1
- ARM macOS
# Description
Fixes the Setup Wizard getting stuck on the "Loading......" screen when
running on Wayland sessions.
**Root Cause:** When OrcaSlicer runs under XWayland (Wayland sessions
with `GDK_BACKEND=x11`), WebKit2GTK's compositing mode can fail
silently, causing the Setup Wizard WebView to freeze or render blank.
The JavaScript signal from C++ (`userguide_profile_load_finish`) either
fails to execute or its rendering result never displays, leaving users
permanently stuck.
**Solution:**
1. Set `WEBKIT_DISABLE_COMPOSITING_MODE=1` environment variable to force
software rendering for WebKit2GTK - this is the same fix used by
BambuStudio
2. Enable the 20-second timeout fallback in `load.js` so the wizard
proceeds automatically even if the C++ → JavaScript communication fails
**Files changed:**
- `src/OrcaSlicer.cpp` - Added `WEBKIT_DISABLE_COMPOSITING_MODE` env var
(4 lines)
- `resources/web/guide/0/load.js` - Enabled timeout fallback (2 lines)
# Screenshots/Recordings/Graphs
N/A - This is a Linux/Wayland-specific fix that addresses a rendering
issue. The visual result is simply that the Setup Wizard proceeds past
"Loading......" as expected.
## Tests
1. **On Wayland session (e.g., GNOME on Wayland):**
- Remove existing config (`~/.config/OrcaSlicer/`) to simulate first
launch
- Launch OrcaSlicer
- Verify Setup Wizard proceeds past "Loading......" to the actual wizard
page
2. **On X11 session:**
- Same test as above to verify no regression
3. **Verify env var is set:**
- Check that `WEBKIT_DISABLE_COMPOSITING_MODE=1` is in the process
environment on Linux builds
# Description
This PR lays the groundwork for future OrcaSlicer ↔ printer connectivity
enhancements by modularizing the network agent architecture. It also
adds experimental filament info sync from printers that have a material
station or multi-tool system.
## Architecture Changes
- **Introduce `IPrinterAgent` interface** — an abstraction layer that
allows per-machine printer agent switching at runtime, decoupling
printer communication from the monolithic `NetworkAgent`
- **Introduce `ICloudServiceAgent` interface** — separates cloud service
logic from printer-level communication
- **Extract `OrcaCloudServiceAgent`** — moves Orca cloud service logic
into its own implementation behind `ICloudServiceAgent`
- **Extract `OrcaPrinterAgent`** — wraps the existing BBL printer
communication behind `IPrinterAgent`
- **Add `NetworkAgentFactory`** — factory for creating the appropriate
printer agent per machine
- **Refactor `NetworkAgent`** — slimmed down from monolithic class to a
thinner coordination layer
## New Printer Agents
- **`MoonrakerPrinterAgent`** — Klipper/Moonraker-based printers
- **`QidiPrinterAgent`** — Qidi printers (with Qidi filament box
support)
- **`SnapmakerPrinterAgent`** — Snapmaker printers with filament sync
## Filament Sync (Experimental)
Syncs filament information from printers equipped with AMS-style
material systems or multi-tool changers:
- Qidi printers with Qidi box
- Armored Turtle (AFC) box via Moonraker
- Snapmaker material station
For Qidi printers with Qidi box:
<img width="1200" height="762" alt="Screenshot 2026-01-27 at 20 30 55"
src="https://github.com/user-attachments/assets/155a164f-cd08-40b0-b62b-c3ab7378224e"
/>
Armored Turtle box:
<img width="1135" height="805" alt="Screenshot 2026-01-27 at 20 32 58"
src="https://github.com/user-attachments/assets/50f6618e-eb54-46db-8e01-1197a005fbf0"
/>
# Screenshots/Recordings/Graphs
[filasync.webm](https://github.com/user-attachments/assets/e6bb7f04-8312-4014-b237-6bd3ef792215)
## Tests
<!-- Please describe the tests that you have conducted to verify the
changes made in this PR. -->
When running under XWayland (Wayland sessions with GDK_BACKEND=x11),
WebKit2GTK's compositing mode can fail silently, causing the Setup
Wizard WebView to freeze or render blank. This leaves users stuck on
the "Loading......" screen indefinitely.
Changes:
- Set WEBKIT_DISABLE_COMPOSITING_MODE=1 to force software rendering,
matching the fix used by BambuStudio
- Enable the 20-second timeout fallback in load.js so the wizard
proceeds even if the C++ -> JavaScript signal fails
* Fix active filament preset not matching wizard selection on first run
After completing the setup wizard with only a non-PLA filament selected
(e.g. Generic ABS), the active filament preset defaulted to Generic PLA
instead of the user's selection. This happened because load_presets()
falls back to Generic PLA when the initial printer differs from the
preferred printer, and the first_added_filament override was disabled.
Add post-load correction in apply_config() that switches the active
filament to the first compatible wizard-selected filament when the
current active filament is not in the wizard selection. Also fix the
guide JS (22.js, 23.js) to use the filalist attribute for building
the filament array, and add platform-specific build test commands to
CLAUDE.md.
* Replace @System filaments with vendor-specific overrides in wizard
When the wizard selects a generic filament like "Generic ABS @System",
check if a vendor-specific override exists (e.g. BBL "Generic ABS")
and use that instead. This ensures printer-tuned profiles are preferred,
preventing load_installed_filaments from adding unwanted BBL defaults.
When printers from the default bundle are also selected, both variants
are kept since those printers need the @System version.
Also adds diagnostic logging for filament loading in LoadProfileFamily.
* Guard against persisting presets for Default Printer and fix filament override logic
Prevent export_selections from saving stale preset settings for the
built-in "Default Printer" placeholder, which is only the initial state
before a real printer is loaded. Also require a non-default vendor printer
to be selected before replacing @System filaments with vendor-specific
overrides in the wizard, avoiding incorrect filament substitution when
only the default bundle is present.
layer_height_profile_adaptive() was using object_print_z_height()
(shrinkage-compensated) to bound the profile, but
update_layer_height_profile() validates against
object_print_z_uncompensated_max. When shrinkage compensation is
active, the mismatch causes the adaptive profile to be silently
cleared every frame and replaced with flat layers.
Use object_print_z_uncompensated_height() instead, matching both
the validator and the existing layer_height_profile_from_ranges()
implementation which already uses the uncompensated value.
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Replaced GitHub wiki URLs with new orcaslicer.com documentation links for several hints to provide more accurate and up-to-date references.
Co-authored-by: yw4z <yw4z@outlook.com>
* Add overhang_reverse config to calibration routines
Set the 'overhang_reverse' configuration option to false in both calib_temp and calib_retraction functions to ensure consistent calibration behavior.
* Disable overhang_reverse in calib_pa function
Adds a line to set the 'overhang_reverse' configuration option to false when running the calib_pa function, ensuring this feature is disabled during calibration.
* Disable reverse on even for PA Tower
* Remove unncesary overhang_reverse disablers
* Update Plater.cpp
Update Plater.cpp
* Update Plater.cpp
# Description
<!--
> Please provide a summary of the changes made in this PR. Include details such as:
> * What issue does this PR address or fix?
> * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be considered?
-->
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the changes made in this PR.
-->
Changed the help link for the 'symmetric_infill_y_axis' option from 'strength_settings_patterns#zig-zag' to 'strength_settings_infill#symmetric-infill-y-axis' to provide more accurate documentation.
* Fix aligned back seam positioning for mirrored objects
This change makes “Aligned back” seams behave the same on mirrored models as on normal models.
Mirroring flips the model’s surface directions, so the slicer treated the back as the front.
Now it corrects those directions when calculating seam visibility, so seams still line up on the back after mirroring.
* Comments
Add comments to the changes
# Description
When creating a new filament preset and setting the Printer Dependencies to "All", the preset does not save this setting. This issue only occurs on creation due to code that is meant to validate the data to prevent a case where the filament is compatible with none of the printers.
EDIT: While I considered redoing the data validation for this tab overall, I have now preserved the original purpose of the code, which is to add the current printer as a compatible printer only if:
- the base preset is a System preset
- the user has not specified any compatible printers
Notably, this seems to be the cause of #11959
Moving the data validation from `Preset::save_current_preset` to `Tab::save_preset` allows the Preset function to be simplified through removal of the current printer parameter.
# Screenshots/Recordings/Graphs
There is no visible change on the UI.
## Tests
Tested the following combinations of filament presets:
- System->new User
- User->new User
- User->same User
Tried to set them to All, where the System->new User should be the only case where this is replaced by a default.
In any case where there are printers already set, those settings should be kept.
* Fix: GCodeViewer displaying inconsistent data in title and body
* Fix: remove actual flow info from GCodeViewer title
* Refactor: reduce repetition of N/A and headers
* Fix: Add missing categories to print settings (Seam, Wipe, Accel, Scarf)
- Assigns categories (Quality, Speed) to various print settings in PrintConfig.cpp.
- Ensures these settings are correctly tracked in the UI override list (GUI_ObjectList).
- Fixes issue where overriding these settings per-object did not trigger the 'modified' icon.
* Fix: Add missing categories to additional per-object settings
- Assigns categories (Speed, Quality, Strength, Support) to relevant settings.
- Cleans up duplicate definition of 'outer_wall_acceleration' in PrintConfig.cpp.
- Ensures the 'modified' icon (orange arrow) appears correctly in the Object List.
* Fix: Restore original default values for acceleration and skirt angle
- Reverted 'default_acceleration' back to 500.
- Reverted 'skirt_start_angle' back to -135.
* Style: Remove trailing whitespace in print_flow_ratio tooltip
* Fix: Mark skirt_start_angle as advanced setting
* fix values
* Fix dark color rendering in G-code preview by using additive specular lighting
* Revert "Fix dark color rendering in G-code preview by using additive specular lighting"
This reverts commit 2a65bc9060.
* Fix dark color rendering in G-code preview (Standard & ES shaders) by using additive specular lighting
* Fix dark color preview: Increase minimum brightness to 48/255 (~19%)
* Refactor: Revert to combined lighting calculation in shaders
Fix layer/time display in Preview legend for pause/custom G-code
The Preview legend showed incorrect layer numbers and elapsed time for pause/custom G-code entries. The issue was caused by:
• get_layer_id_at() performing a strict upper_bound search on float Z values, while custom G-code stores Z positions as doubles. Minor precision differences often pushed the lookup to return layer 0 or the last layer.
• The legend displayed the raw zero-based layer index.
Fixes included:
• Fetch layer Z values as doubles and use an epsilon-based closest-layer search.
• Display layers as 1-based values for user-facing UI.
• Accumulate time up to the beginning of the identified layer.
This aligns the legend with the vertical slider marker and provides consistent pause/custom G-code reporting.
# Description
### `src/libslic3r/PrintApply.cpp` changes (line 318)
Change `const auto` to `const auto&` for loops (simple optimization) .
### `src/slic3r/Utils/CalibUtils.cpp` changes (lines 762, 766, 779, 783/784, 814, 816, 831, 835, 837, 1001)
Define config_pattern
`const auto& config_pattern = SuggestedConfigCalibPAPattern();` (line 762 and 814)
Replace calls of `SuggestedConfigCalibPAPattern()` with `config_pattern` (lines 766, 775, 779, 783, 784, 816, 831, 835, 837)
Change `const auto` to `const auto&` for loops (simple optimization) (lines 816, 835, 837, 1001)
*Also gets rid of the five compiler warnings out of the few hundred/thousand (when building the entire project) that warn about copying loop variables*
i.e.
```/home/neo/git/OrcaSlicer-EDIT-TEMP/src/slic3r/Utils/CalibUtils.cpp:828: note: use reference type to prevent copying
/home/neo/git/OrcaSlicer-EDIT-TEMP/src/slic3r/Utils/CalibUtils.cpp:832: warning: loop variable ‘opt’ creates a copy from type ‘const std::pair<std::__cxx11::basic_string<char>, int>’ [-Wrange-loop-construct]
832 | for (const auto opt : SuggestedConfigCalibPAPattern().int_pairs) { print_config.set_key_value(opt.first, new ConfigOptionInt(opt.second)); }
```
## Tests
Should have no functional difference. Contains optimizations, calibrations appear to still function well.
### What was the issue?
The check that validates whether a filament is compatible with the selected build plate type was only executed for Bambu Lab printers.
Other printers skipped this entirely, even though they can also use multiple plate types with different temperature requirements.
This caused cases where:
- incompatible filament/plate combinations went unnoticed,
- users received no warning even when the bed type clearly couldn’t support the selected filament.
### What’s changed?
- The validation block extends beyond BambuLab printers.
- Now all printers get the same compatibility check:
- if a filament requires a bed temperature not supported by the chosen plate,
- Orca shows the same clear error message as it does for BBL printers.
- Show the selected filament preset name (alias if present) in bed/filament mismatch warnings instead of substituting the parent preset.
### Why this helps
- Consistent behavior across all printer brands.
- Prevents invalid filament/plate setups that could cause print failures.
- Makes plate presets more robust and predictable for custom and community printers.
### Notes
- No behavior changes for BBL printers — they keep the existing checks.
- Other printers now benefit from them too.
# Description
This PR introduces a new material type called **CoPE** to the system.
**Changes:**
* **New Material:** Implemented `CoPE` as a selectable material type.
* **Configuration:** Added necessary material properties and parameters specific to CoPE.
**Breaking Changes:**
* None.
# Screenshots/Recordings/Graphs
<img width="1793" height="618" alt="image" src="https://github.com/user-attachments/assets/8577be4d-9f5f-4bda-b0de-c0842857625d" />
<img width="978" height="937" alt="image" src="https://github.com/user-attachments/assets/ec2ba1a3-41d5-4792-8fea-41c282136ff2" />
## Tests
I have verified the changes with the following tests:
* **UI Validation:** Verified that `CoPE` correctly appears in the software's material selection list.
* **Preset Management:**
* Successfully **exported** a preset containing the CoPE material.
* Successfully **imported** the CoPE preset back into the software.
v3.0.0 of takanome-dev/assign-issue-action is broken:
- action.yml references dist/index.js
- But the release only contains dist/index.mjs
- This causes immediate failure: "File not found: dist/index.js"
This PR:
1. Reverts to v2.2 which works correctly
2. Reverts reminder_days to 7 (v2.2 behavior: days before unassignment)
3. Adds comment with link to upstream bug report
Bug report: https://github.com/takanome-dev/assign-issue-action/issues/426Fixes#11873
Co-authored-by: Hanan <okets78@hotmail.com>
* Fix Gtk-Critical assertion in PresetComboBoxes
Resolve the `gtk_cell_layout_get_cells: assertion GTK_IS_CELL_LAYOUT
failed` error by switching from `gtk_cell_layout_get_cells()` to
`gtk_container_get_children()` with direct PangoLayout ellipsization
on GtkEntry widgets.
Picked from PrusaSlicer:
https://github.com/prusa3d/PrusaSlicer/commit/e855ab5d
* Add defensive guards for GTK widget sizing
Fix Gtk-CRITICAL assertions in TextInput and DropDown widgets that
occur when the widget attempt relative sizing against window size
before GTK completes the window layout.
Changes include:
- TextInput.cpp: Clamp textSize.x >= -1 to prevent
`gtk_widget_set_size_request` failures.
- Picked from Prusa Slicer:
https://github.com/prusa3d/PrusaSlicer/commit/e855ab5d
- DropDown.cpp: Guard against zero/negative dimensions during early
initialization:
- Prevent szContent.x = 0 when parent size is unavailable.
- Unique to OrcaSlicer
- Triggers during initializing DesignerPanel --> BasicInfo -->
License DropDown before a parent size is available.
- Latent bug exists in Bambu Studio, but Bambu does not have
License field enabled on this panel.
- Created global guard for future resilience.
- Clamp szContent.y >= 1 for dropdowns before content initialized.
- Bug exists in BambuStudio
- Prusa did not implement the "ENH: ComboBox Second DropDown"
* Added proper tool‑change handling for Geeetech multi‑color
* Better variables used for initial bed/nozzle temp for Geeetech multicolor printers
* Wrong colon symbol (U+FF1A) replaced with regular U+003A
During the slicing those symbols are not recognized by the printers and come out with artifacts
* Enhance backward compatibility for filament extruder variants in 3MF project files
Fix crashes when loading old 3MF project
* QoL: add handy models directory to ignore list
# Description
<!--
> Please provide a summary of the changes made in this PR. Include details such as:
> * What issue does this PR address or fix?
> * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be considered?
-->
This PR adds support for two new Wemake3D printer models to OrcaSlicer: the `Phoenix Pro V1` and `TinyBot V1`.
Changes Made:
Added new printer definitions for:
`WEMAKE3D Phoenix Pro V1`
`WEMAKE3D TinyBot V1`
Includes standard printer profiles (machines and process settings).
Implements device-specific start/end G-code.
Adds recommended slicing parameters for optimal print quality.
**Dependencies & Considerations:**
This PR adds new configuration files only and does not modify any existing core functionality.
No breaking changes are introduced.
The profiles are based on standard Marlin-compatible G-code and should work with the stock firmware on these devices.
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
Printer Selection Menu
The new printers "Wemake3D Phoenix Pro V1" and "Wemake3D TinyBot V1" now appear in the printer selection list.
<img width="806" height="656" alt="image" src="https://github.com/user-attachments/assets/39c4e2fb-c1cc-4bdd-b6c6-ee432fbc198f" />
Printer Settings Preview
Example printer settings panel for the Phoenix Pro V1.
<img width="1180" height="785" alt="image" src="https://github.com/user-attachments/assets/44f0c820-6c70-4daa-86a2-94a7792d1216" />
## Tests
Verification Steps:
**Profile Validation:** Validated with `orca_extra_profile_check.py`
**Installation & Discovery:** Successfully installed the configuration files and verified both printers appear in the "Add Printer" wizard.
**Profile Loading:** Tested loading each printer profile and confirmed all default settings (print, filament, process) are applied correctly.
**G-code Validation:** Manually reviewed the start and end G-code for each model to ensure compatibility and safety.
**Slice Simulation:** Performed test slices on sample models (benchy, calibration cube) for both printers to verify parameter application and generate error-free G-code.
**Basic Compatibility:** Confirmed generated G-code follows standard Marlin syntax and should be compatible with the printers' expected firmware.
**Test Environment:**
OrcaSlicer Version : `2.3.2-dev` & `2.3.1`
OS :` Windows 10` & `Windows 11`
<!--
> Please describe the tests that you have conducted to verify the changes made in this PR.
-->
This PR fixes an issue where certain characters (for example the degree symbol ° used in °C) became corrupted after opening and saving the Custom G-code editor multiple times.
#### What was the problem?
When users added symbols like ° inside Start/End G-code, the editor would show them correctly the first time, but after reopening the dialog a few times the text would slowly change into strange characters.
#### How to reproduce
- Open any Custom G-code field
- Add a line containing °C
- Save the dialog
- Reopen it several times
- The text begins to change into unreadable characters
#### What this PR changes
The Custom G-code editor now properly loads and saves text that contains symbols such as °, so these characters stay exactly as the user typed them. This keeps Custom G-code stable across editing sessions and prevents slow corruption of Unicode characters.
#### Result
- °C and similar symbols remain correct
- No more “weird characters” appearing after multiple reopen/save cycles
- Custom G-code is preserved accurately
Fixes#11502
There's still a bug where it will expire too soon when idle *after* a reminder has been sent.
Fixes#11873
@SoftFever Every person who pushes a commit will get a dumb email until this merges (uhm, provided it actually works).
# Description
<!--
> Please provide a summary of the changes made in this PR. Include details such as:
> * What issue does this PR address or fix?
> * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be considered?
-->
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the changes made in this PR.
-->
# Description
Fixes#6813Fixes#7782Fixes#6367
This is a port of libvgcode, OpenGL Core Profile (libvgcode requires OpenGL 3.2+), and probably other stuff I forgot from PrusaSlicer. libvgcode is also known as "Improved G-code Viewer" which was introduced in [PrusaSlicer 2.8.0](https://github.com/prusa3d/PrusaSlicer/releases/tag/version_2.8.0-alpha5). It significantly improves performance of the G-code preview and allows displaying the actual speed and volumetric flow rate.
## TODO
- [x] Make the sliders work properly again
- [x] Make view type selection work
- [x] Fix toggling of feature type visibility
- [x] Expose actual speed/actual flow view types
- [x] Fix display of G2/G3 arcs
- [x] Wire up actual speed graph widgets
- [x] Fix painter gizmos
- [x] Fix crash when selecting filament view type on Windows
- [ ] Figure out display color management (#10827)
- [x] Fix incorrect rendering of small area flow compensation (or any extrusions with varying flow)
- [ ] Localization
- [ ] Testing
- [ ] Code cleanup, performance optimization
## Removed functionality
Some functionality is not supported by libvgcode:
- Toggling visibility of tools
- Toggling visibility of colors in color print view
- Support for systems with OpenGL <3.2
- Bambu's implementation of G2/G3 arcs was replaced with PrusaSlicer's implementation
# Screenshots/Recordings/Graphs
https://github.com/user-attachments/assets/c1413a82-3058-4541-b96c-3d5f7cdef174
<details>
<summary>Outdated Stuff</summary>
https://github.com/user-attachments/assets/ca172ef4-0828-4d21-8768-b08a4132c9ab
<img width="1611" height="1145" alt="image" src="https://github.com/user-attachments/assets/5e0d04ff-8046-4636-a08a-cdedc60303bc" />
</details>
## Tests
- [x] Normally sliced G-code
- [ ] G-code viewer mode
- [x] Arc fitting enabled
- [x] Spiral Z-hops
- [x] Multi-extruder/multi-color
- [x] Vase mode
- [x] Skirt/brim
- [x] Supports
- [ ] Support transition (whatever this is)
- [x] Painter gizmos
- [x] Measurement gizmo
- [x] Move/rotate/scale gizmos
- [x] H2D/H2S support (oh no)
- [ ] Windows
- [x] macOS
- [ ] Linux
Lowered hot_plate_temp from 5705 to a reasonable 70 degrees.
(should be 60-90 degrees according to sources, made it the same as the first layer bed temp)
# Description
This PR adds support for the new printer model **Cubicon xCeler-Plus**.
It includes:
- Machine configuration (JSON)
- Process profiles (Speed, Quality settings)
- Filament settings
- Bed texture and model resources
# Screenshots/Recordings/Graphs
# Tests
I have successfully tested the sliced G-code on the actual machine (Cubicon xCeler-Plus).
- [x] Slicing test passed
- [x] Printing test passed with Klipper firmware
# Description
This PR introduces most features and capabilities needed for future network plugin-related changes, as discussed on Discord. In short bullet points:
- it allows users to select a specific version of the Bambu network library to use,
- improves hot reloading (in most cases, version changes don't require restarting Orca),
- introduces possibility to add _custom_ variants of supported plugin versions by placing them in the plugin directory with a suffix of `-<name>`,
- adds an button in the "Developer" section of Preferences to hot-reload the network plugin from disk,
- ports plugin error messages from Bambu Studio, including the questionable unsigned app one (rephrased), to make it clear to users why their printer commands don't really execute.
Also introduces CMake 4.x compatibility on macOS, because I was too lazy to install CMake 3 on my computer 😶
# Screenshots/Recordings/Graphs
<img width="494" height="225" alt="image" src="https://github.com/user-attachments/assets/366e8c0f-8b12-4c75-a2db-ba08e7544ecd" />
<img width="223" height="276" alt="image" src="https://github.com/user-attachments/assets/dffec726-b6d5-44d3-a2b3-dd56d2590356" />
<img width="521" height="182" alt="image" src="https://github.com/user-attachments/assets/934ba963-f299-4d20-a107-8375f1f99571" />
<img width="644" height="640" alt="image" src="https://github.com/user-attachments/assets/00385657-04f2-4f36-896e-58265df58ebc" />
## Tests
Tested manually, also added some basic tests to make sure config management behaves correctly.
# Description
This PR addresses the issue that WipeTower's start z position didn't consider the z_offset.
fixes#11611
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the changes made in this PR.
-->
# Description
Fix application freeze when Prime Tower brim is set to Auto
This PR fixes an issue where enabling Auto brim width for the Prime Tower caused the application to freeze and consume unbounded amounts of memory.
Root cause
0c5f6c9865/src/libslic3r/GCode/WipeTower2.cpp (L2036-L2039)
When Auto brim is selected, the brim width was not being computed and the raw configuration value (-1) was used directly.
This resulted in an effectively infinite loop during Prime Tower brim generation, leading to runaway memory allocation instead of a controlled failure or a crash.
Solution
The Auto brim width is now properly computed based on the Prime Tower height, matching the intended behavior and existing logic used in other slicer implementations.
# Description
* What issue does this PR address or fix?
1. Refactor Polymaker folder within Snapmaker profile directory, so that the structure is more clear.
2. Add more Polymaker filament presets for Snapmaker printers.
* What new features or enhancements does this PR introduce?
1. None
* Are there any breaking changes or dependencies that need to be considered?
1. None
# Description
This PR updates the machine start G-code and adaptive bed mesh options of the **OpenEYE Peacock V2** printer profile.
There are no breaking changes. Existing profiles and workflows remain fully compatible.
## Tests
- Loaded the updated profile in Orca Slicer.
- Generated sample G-code files and verified the updated startup sequence.
- Confirmed no impact on slicing behavior, materials, or process settings.
# Description
Accurate color change calculations for coprint setups by specifying the nozzle volume, reduced risk of jamming by removing parking position setting.
## Tests
Settings tested on N3+ and K1 equipped with coprint kits.
* fixes: wxTimerEvent not supposed to be created by user code [-Wdeprecated-declarations]
* use wxTimerEvent instead of wxCommandEvent.
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
# Description
[Updated Qhull]
changelog
https://github.com/qhull/qhull/releases/tag/v8.0.2
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the changes made in this PR.
-->
* Added InnovatiQ Vendor Files
* Cover image corrected
* Corrected Texture Image
* Support Interface Pattern modified
* Fix file name casing
* Added new filament(PETG)
* changed three parameters
* Added 6 new printer files
0.25, 0.6, 0.8 printer profiles are added to TiQ2 and TiQ8
* Added 6 new machines in machine list
* 6 new machines added in machine list
* Modified the PACF filament and process file
* Added two new filament file and one process file
* Modified one filament and one process file
* PETG Polymax profile for TiQ2 updated
* HPP4GF25 Grauts filament-process addeed to TiQ2
---------
Co-authored-by: MohanS <sibi.mohan@innovatiq.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
Co-authored-by: Ashidsha Jaleel <JaA0@germanreprap.local>
Co-authored-by: SoftFever <softfeverever@gmail.com>
Co-authored-by: ash-innovatiq <ashidsha.jaleel@innovatiq.com>
* ConfigOptionDef: min/max values type are changed from INT to FLOAT.
(cherry picked from commit f277bc80c22e0c9a067481a4301922e2c96aed47)
* Fix infinite loop and crash when `fuzzy_skin_point_distance` = 0 (SoftFever/OrcaSlicer#11069)
* Fix Linux build issue
* Fix float comparison due to precision loss
* Emit Disable Power Loss Recovery
Now only works if it's enabled but the goal it's to force disable it.
With this change it will always emit the command for BBL or Marlin 2.
Co-Authored-By: Michael Rook <54159303+michaelr0@users.noreply.github.com>
* Refactor power loss recovery G-code comments
* Return empty power loss recovery when no compatible printer
* Update power loss recovery comments
Update label and tooltip for power loss recovery
* Add enum for power loss recovery mode
Refactored power loss recovery configuration to use a new PowerLossRecoveryMode enum instead of a boolean. Updated GCodeWriter and related logic to handle the new enum, allowing for 'printer_configuration', 'enable', and 'disable' options. Updated config handling, legacy value conversion, and default values accordingly.
* Update PrintConfig.cpp
---------
Co-authored-by: Michael Rook <54159303+michaelr0@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Replace spline with PchipInterpolatorHelper in flow compensator
Swapped out the tk::spline implementation for PchipInterpolatorHelper in SmallAreaInfillFlowCompensator. Updated member types and method calls to use the new interpolator for improved flow compensation modeling.
* Enforce strictly increasing flow compensation factors
Added a check to ensure that flow compensation factors in SmallAreaInfillFlowCompensator strictly increase with extrusion length, throwing an exception if this condition is not met. This improves input validation and prevents invalid compensation models.
* Add context to Small Area Flow Compensation errors
Prefixed error messages in SmallAreaInfillFlowCompensator with 'Small Area Flow Compensation' for improved clarity and debugging. Also rethrows exceptions after logging to ensure proper error propagation.
* Remove spline library from dependencies
Eliminated the spline header-only library from the project by deleting its CMake configuration and header file, and updating documentation and build scripts to remove references to spline. This streamlines the dependencies and build process.
* Brim can follow EFC outline
* Optimization
* Update Spanish EFC brim description
Adopt reviewer-proposed wording from RF47.
Co-authored-by: RF47 <RF47@users.noreply.github.com>
* Tag Orca specific changes
Tag Orca specific changes vs. Bambu using the comment //ORCA: . This helps when reviewing merge commits from upstream Bambu so we don't end up causing regressions when pulling in commits from upstream
* Tooltip update
---------
Co-authored-by: RF47 <RF47@users.noreply.github.com>
Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
Relocated Clipper2 source files and CMake configuration from src/clipper2 to deps_src/clipper2. Updated CMakeLists to add Clipper2 as a dependency from the new location, improving dependency organization.
Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
* Fix missing force-build and use non-docker publish action
Fixes#11687Fixes#10404
* Initial deletion of build_check_cache
Start to fold functionality into build_deps, but definitely broken.
* Tests can be built separately
Missed this before
* Create artifact for all platforms, fix cache usage
Cache is only created on `main` branch.
Artifact is used to move files between jobs.
The Linux artifact was broken, now it's not.
The Mac artifact didn't exist, now it does.
The Windows artifact gets a new name and now isn't a
zip-within-a-zip. Perhaps this will cause a permissions problem; we
will see shortly.
* Apparently cannot update env used for `if` mid-stream
* Force-build causes a clean deps build
* Either build or pull from cache
Cache only has final output, not intermediate files. So we either
build or use the cache.
* Keep dep uploads for 10 days instead
It's just the final object outputs, not intermediates, so it's not as
large and we can keep it slightly longer.
* Adds M3D D8500 Enabler Pro Profiles V1
Adds support for M3D D8500 Enabler Pro support for Orca.
Allows user to set up the printer directly from the printers menu.
* Adds M3D D8500 Enabler Pro Profiles V1
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
Fix adaptive fill issues
- Disconnecting from walls at low density
- Not supporting rotation
Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
* Grid non-crossing for multiline
cleaning
Replaced negative offset logic with surface contraction to reduce overlap with perimeters.
center the infill
filltriangles
update triangles
preallocate memory
Update FillRectilinear.cpp
Update FillRectilinear.cpp
overlapp adjustment
Fix Crash
Update FillRectilinear.cpp
density tunning
density tunning
fine tunning
reserve polilines
Grid non-crossing for multiline
Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>
Co-Authored-By: discip <53649486+discip@users.noreply.github.com>
* Improve multiline fill offset and polyline closure
Changed offset type from jtRound to jtMiter in multiline_fill for better geometry. Updated polyline conversion to require at least 3 points and ensured polylines are closed if not already. Updated FillGyroid, FillTpmsD, and FillTpmsFK to pass the 'close' argument to multiline_fill.
cleaning
FillAdaptive Noncross
Only use clipper if worth it
safeguard
fix overlap
Update FillRectilinear.cpp
FilllRectilineal multiline clipper
Update FillRectilinear.cpp
FilllRectilineal multiline clipper
Update FillRectilinear.cpp
Update FillRectilinear.cpp
fix 3d honeycomb
Simplify polylines
Update FillBase.cpp
Update FillBase.cpp
cleaning
Improved Multiline Function
This ensures `multiline_fill()` will correctly generate multiline infill with
closed loop polylines if the input infill line is a closedloop polyline. This
ensures that the multiline infill doesn't have little gaps or overlaps at the
"closed point" of the original infill line.
This changes how the tangent is calculated for the first and last points in a
polyline if the first and last points are the same, making it a closed loop.
Instead of just using the first or last line segment, it uses the line segment
between the points before the last point and after the first point, the same
way that all the other poly-line mid points are handled.
It also uses eigen vector operations to calculate the points instead of
explicitly calculating the x and y values. This is probably faster, and if not
then it is at least more concise.
Hibrid Multiline Function
Update FillRectilinear.cpp
Update FillRectilinear.cpp
Update FillRectilinear.cpp
Update FillRectilinear.cpp
clipperutils multiline hibrido
Update FillBase.cpp
Update FillBase.cpp
Update FillBase.cpp
multiline hibrido
arc tolerance
multiline con union
Update FillBase.cpp
Update FillBase.cpp
Update FillBase.cpp
Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>
Co-Authored-By: Donovan Baarda <dbaarda@gmail.com>
* Switch multiline offset logic to Clipper2
Replaces Clipper-based multiline offset logic in FillBase.cpp with Clipper2, using InflatePaths and Union for offsetting and merging. Adds new conversion utilities in Clipper2Utils for handling Paths64 to Polygons/Polylines and updates headers accordingly.
* Refactor multiline_fill to always use Clipper2 logic
Removed the 'use_clipper' parameter from multiline_fill and updated all callers to use the new signature. The function now consistently applies Clipper2-based offset logic for multiline infill, simplifying the code and ensuring uniform behavior across fill patterns.
* Change offset join type to Round in multiline_fill
Replaces the Miter join type with Round in the InflatePaths call within multiline_fill. For smotther print travels.
* Increase max infill multiline to 10
Raised the maximum allowed value for the 'Fill Multiline' infill parameter from 5 to 10 to support more lines in infill patterns.
* Refactor multiline_fill to optimize offset logic
Replaces manual conversion of polylines to Clipper2 paths with Slic3rPolylines_to_Paths64 and filters short paths using std::remove_if. Uses ClipperOffset for path inflation and streamlines merging and conversion to polylines, improving performance and code clarity.
* half iteration because is bucle
* Funciona 1
Refactored the multiline_fill function to streamline the insertion of center lines by directly checking for odd line counts and removing redundant logic. This improves code clarity and reduces unnecessary checks.
* Refactor multiline_fill for improved offset logic
Reworked the multiline_fill function to simplify and clarify the logic for generating multiple offset lines. The new implementation computes offsets more explicitly for odd and even cases, creates a fresh ClipperOffset for each band, and improves conversion between Clipper2 paths and polylines. This enhances maintainability and correctness of the multiline fill generation.
* Quartercubic multiline
* fillplanePath
fix bounding box
Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>
* fillconcentric multiline
Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>
* Update FillBase.hpp
* cleaning
* Refactor multiline_fill to clean polylines and reuse offsetter
Invalid polylines with less than two points are now removed before processing. The ClipperOffset object is created once and reused for each offset, improving efficiency and code clarity.
trigger build
* Optimize Filltrapezoidal
Refactored the trapezoidal fill pattern generation to precompute base row templates and reuse them with vertical translation, reducing redundant computations and improving code clarity. This change enhances performance and maintainability by avoiding repeated construction of row patterns within loops.
* Replace push_back with emplace_back for Polyline points
Updated Polyline point insertion from push_back to emplace_back for efficiency and clarity. Also refactored row copying logic to avoid in-place modification, improving code readability and safety.
* Update FillRectilinear.cpp
* Reserve space for poliline points
* Union not needed
* Update FillRectilinear.cpp
* unused functions
* compactado
Update FillRectilinear.cpp
* Adjust minimum rows for better performance
* Update FillRectilinear.cpp
---------
Co-authored-by: Ian Bassi <12130714+ianalexis@users.noreply.github.com>
Co-authored-by: discip <53649486+discip@users.noreply.github.com>
Co-authored-by: Donovan Baarda <dbaarda@gmail.com>
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
Refresh filament setting overrides on preset change
The filament “Setting Overrides” page derives its UI state from multiple configs
(filament, printer, process), but this derived state was not recomputed during
preset reloads.
As a result, override widgets could reflect stale values until the page was
revisited or a user interaction triggered an update.
Recompute the filament setting overrides as part of TabFilament::reload_config(),
keeping the derived UI in sync with the active preset immediately after reload.
* Adjust resonance avoidance speed calculation
* Only adjust if it's strictly below max
* If the speed is over half of the set speed range,
use the max speed to prevent slowdowns
Signed-off-by: Kuran Kaname <celtare21@gmail.com>
* update comment
---------
Signed-off-by: Kuran Kaname <celtare21@gmail.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Add Eolas Prints filament profiles (18 profiles)
This commit adds official filament profiles for Eolas Prints, a Spain-based
3D printing materials supplier with nearly 10 years of experience and ISO 9001
& ISO 14001 certifications for quality control.
Profiles included:
- 9 PLA variants: Premium, Matte, Silk, Neon, High Speed, INGEO 850,
INGEO 870, Antibacterial, and Transition
- 3 PETG variants: Standard, UV Resistant, and Transition
- 4 TPU variants: Flex 93A, D53, D60 UV, and Transition
- 2 ABS/ASA variants: ABS and ASA
Company: Eolas Prints
Website: https://eolasprints.com
Location: Cantabria, Spain
Certifications: ISO 9001, ISO 14001
* Update Eolas Prints PLA INGEO 850 @system.json
Updated Eolas Prints INGEO 850 Filament profile
* Update Eolas Prints PETG Transition @system.json
Updated Eolas Prints PETG Transition Filament Profile
* Update Eolas Prints PETG UV Resistant @system.json
* Fixed JSON errors for Eolas Prints FIlament profiles
* Added filament_id & Fixed Typos for Eolas Prints Prints profiles.
Fix object list name refresh after emboss edits
Refresh the object list immediately after embossed text name changes so the displayed name stays in sync.
Fix filament preset undo/dirty tracking to match Bambu behavior
Use deep compare for filament presets so vector options report #idx keys.
Align undo/dirty mapping with indexed fields and Bambu’s filter_diff_option.
Pass explicit indices for filament override fields.
Add missing filament variant keys (retract lift bounds, ironing overrides) to filament_options_with_variant so per‑filament undo works.
* explicitly set the machine_max_junction_deviation
* reworked the support settings for all profiles
* forgot the bottom interface spacing. set more accurate values
* set the wrong value, meant support_bottom_z_distance
* line type by default single extruder
* Defautl to color print if use multicolor
* Update condition for setting view type in GCodeViewer
* Refine default view type selection in GCodeViewer
Improves logic for selecting the default view type based on nozzle and filament preset counts. Now selects 'Summary' for multiple nozzles, 'ColorPrint' for single nozzle with multiple filaments, and 'FeatureType' otherwise.
* Refactor multimaterial detection in GCodeViewer
Introduced a 'multimaterial' boolean to clarify logic for detecting multiple filament presets. This improves readability and maintains consistent behavior when setting the view type based on extruder and filament count.
* Automatically generate extruder id & printer extruder variant mappings for non-BBL multi-extruder printers
* Support different layer height limit for non-bbl multi-extruder printer
* Add auto slice after changes option
Introduces a new 'Auto slice after changes' setting in Preferences, allowing OrcaSlicer to automatically re-slice when slicing-related settings change. Implements logic in Plater to schedule auto-reslicing if the option is enabled and conditions are met, and sets the default to false in AppConfig.
* Improve auto-reslice scheduling after slice cancellation
Adds a flag to track when auto-reslice should be triggered after a slicing process is cancelled. Ensures that auto-reslice is scheduled once the current slicing process completes and is not lost if a slice is cancelled mid-operation.
* Add configurable delay for auto slice after change
Introduces a new 'auto_slice_change_delay_seconds' setting to control the delay before auto slicing starts after a change. Updates AppConfig to set a default value, adds a timer and logic in Plater to handle the delay, and exposes the setting in Preferences. This allows users to group multiple edits before triggering auto slicing.
* Combine auto-reslice checkbox and delay input in preferences
Replaces separate auto-reslice and delay settings with a unified UI element in Preferences. The new function create_item_auto_reslice adds both the checkbox and delay input in a single row, improving usability and code organization.
* Move auto reslice option into Control > Behaviour
* Remove 'loop' icon from AutoSlice
* Default disable and 1 Sec
* Add input validation for acceleration and speed values
Added a check to ensure that acceleration values are greater than speed values in the PA calibration dialog. Displays a warning message and prevents calibration if the inputs are invalid to guard against swapped or incorrect user entries.
* Add input validation for calibration parameters
Spiral Z-Hop resolution
Use slicing resolution to determine segment count for emulated spiral Z-hop
What’s changed
The number of linear segments used to approximate a spiral Z-hop is now derived from the PrintConfig resolution value.
The segment count is clamped to a safe range (4–24) to avoid excessive G-code generation or MCU queue overflow.
Why
Previously a fixed 24 segments were always used, regardless of model resolution.
For small-radius spiral lifts this was excessive and could overwhelm some printers.
Adapting segment count to resolution ensures smooth motion where needed, but lighter G-code where possible.
Details
m_resolution is now stored via apply_print_config().
_spiral_travel_to_z() uses this value to compute segment count dynamically.
Only the linear-segment fallback path is affected; G2/G3 arc-fitting remains unchanged.
Added the Cali Cat STL file to handy models and updated the GUI to include 'Cali Cat' as a selectable option in the handy model submenu.
Co-authored-by: davidzhen <3886830+davidzhen@users.noreply.github.com>
* Replace with STL to Replace with 3D file: Support STEP
Enhanced the replace logic to support STEP (.stp, .step) files, including user-configurable mesh settings and dialog, while maintaining backward compatibility with STL and other formats.
Updated the menu label and tooltips to 'Replace 3D file' for clarity.
* Update 'STL' references to '3D file' in UI and logs
Replaces user-facing text and log messages referring to 'STL' with '3D file' for broader file type support and improved clarity in the menu, status messages, and logging.
* Merge branch 'main' into remplace-with-stl
* Enable IPv6 usage in curls resolve code
Before this change OrcaSlicer would fail to resolve the IPv6 addresses
of printers when trying to interact with them via HTTP.
For context: I'm running my Klipper based printers with only IPv6
addresses being assigned to them. That works fine for
everything (including other slicers such as prusa-slic3r).
A few years ago I did debug this and figured that it came down to the
single line in the code base that this commit removes. I've since
patched every single OrcaSlicer version with this change and never
noticed a downside. It should be fine to remove the restriction.
* Initial changes allowing you to change the type of multiple parts at once by selecting them all.
* Removed second occurance of Change type in right click menu
* Ready to go feature change
* Remove accidental file creation
* Removing excessive std::cerr
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
Update default Windows SDK include path version
Changed the default Windows SDK include path from version 10.0.22000.0 to 10.0.26100.0 in CMakeLists.txt to use a newer SDK version when environment variables are not set.
* Add ability to disable Power Loss Recovery
* Fix typo in PrintConfig.hpp for power loss recovery
* Attempt to resolve Unknown option exception: disable_power_less_recovery
Add disable_power_loss_recovery property to any json which had scan_first_layer
* Revert "Attempt to resolve Unknown option exception: disable_power_less_recovery"
This reverts commit ddaf34b317.
* Fix typo
* Change attribution from BBS to Orca in PrintConfig.cpp
* Mini refactor power loss recovery handling in GCode export
- Moved power loss recovery G-code generation to a new method in GCodeWriter.
- Support Marlin 2
* Update comments and power loss recovery handling
* Implement power loss recovery G-code commands
Added functions to start and end power loss recovery with appropriate G-code commands and comments.
* Add power loss recovery methods to GCodeWriter
* refactor and fix build errors
---------
Co-authored-by: Michael Rook <michael@rook.id.au>
Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Fix tooltip + URL
* Full Material wiki redirection maping
* Machine wiki + append_option_line wiki linking
* Machine wiki 2
* Update README with improved wiki links and clarity
* Bring back Print statistics options
* Move num_extruders config to OtherSlicingStatesConfigDef
The num_extruders configuration option was relocated from OtherPresetsConfigDef to OtherSlicingStatesConfigDef for better organization and relevance. This change ensures that the number of extruders is defined in the context of slicing states rather than presets.
* Unifi adaptative bed mesh
* Replace Simplified Chinese in `OrcaSlicer_zh_TW.po` with Traditional
ones, fix '制', and add missing translatinos
* Fix settings -> system language selector (`Perefences.cpp`): 繁体 -> 繁體
* Two missing translation in `text.js`
* Get libslic3r tests closer to passing
I can't get geometry tests to do anything useful. I've added extra
output, but it hasn't helped me figure out why they don't work
yet. That's also probably the last broken 3mf test doesn't work.
The config tests were mostly broken because of config name changes.
The placeholder_parser tests have some things that may-or-may-not
still apply to Orca.
* Vendor a 3.x version of Catch2
Everything is surely broken at this point.
* Allow building tests separately from Orca with build_linux.sh
* Remove unnecessary log message screwing up ctest
Same solution as Prusaslicer
* Make 2 TriangleMesh methods const
Since they can be.
* Move method comment to the header where it belongsc
* Add indirectly-included header directly
Transform3d IIRC
* libslic3r tests converted to Catch2 v3
Still has 3 failing tests, but builds and runs.
* Disable 2D convex hull test and comment what I've learned
Not sure the best way to solve this yet.
* Add diff compare method for DynamicConfig
Help the unit test report errors better.
* Perl no longer used, remove comment line
* Clang-format Config.?pp
So difficult to work with ATM
* Remove cpp17 unit tests
Who gives a shit
* Don't need explicit "example" test
We have lots of tests to serve as examples.
* Leave breadcrumb to enable sla_print tests
* Fix serialization of DynamicConfig
Add comments to test, because these code paths might not be even used
anymore.
* Update run_unit_tests to run all the tests
By the time I'm done with the PR all tests will either excluded by
default or passing, so just do all.
* Update how-to-test now that build_linux.sh builds tests separately
* Update cmake regenerate instructions
Read this online; hopefully works.
* Enable slic3rutils test with Catch2 v3
* Port libnest2d and fff_print to Catch2 v3
They build. Many failing.
* Add slightly more info to Objects not fit on bed exception
* Disable failing fff_print tests from running
They're mostly failing for "objects don't fit on bed" for an
infinite-sized bed. Given infinite bed is probably only used in tests,
it probably was incidentally broken long ago.
* Must checkout tests directory in GH Actions
So we get the test data
* Missed a failing fff_print test
* Disable (most/all) broken libnest2d tests
Trying all, not checking yet though
* Fix Polygon convex/concave detection tests
Document the implementation too. Reorganize the tests to be cleaner.
* Update the test script to run tests in parallel
* Get sla_print tests to build
Probably not passing
* Don't cause full project rebuild when updating test CMakeLists.txts
* Revert "Clang-format Config.?pp"
This reverts commit 771e4c0ad2.
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
Renamed 'param_extruder_clearence.svg' to 'param_extruder_clearance.svg' and updated the corresponding resource reference in Tab.cpp to correct the spelling error.
Co-authored-by: Nanashi <53353250+NanashiTheNameless@users.noreply.github.com>
Add fallback URL for MPFR source download
Updated MPFR.cmake to include both the GNU FTP and mpfr.org URLs for downloading the MPFR source. This improves reliability in case one of the sources is unavailable.
* Clipper2 from BBS
* Fix
* Clipper2 Update: 1.5.2 -> 2.1.5.4
* Replace Clipper2Lib::Area calls with Clipper2LibArea
Updated area calculation calls to use Clipper2LibArea<T> instead of Clipper2Lib::Area<T> in multiple locations. This change likely reflects a refactor or renaming of the area calculation function.
* Revert "Replace Clipper2Lib::Area calls with Clipper2LibArea"
This reverts commit c92a9a1522e8d7b0f1f8557d4c752a8b8c8fc279.
* Revert "Clipper2 Update: 1.5.2 -> 2.1.5.4"
This reverts commit a745894bdc9cda4ce4d19e0705d214b78091acad.
* Update project version
* Update Visual Studio and CMake instructions in build guide
Reorders Visual Studio version recommendations and simplifies installation instructions. Clarifies CMake path setup guidance and removes outdated notes specific to Visual Studio 2026 and CMake 4.2.
* Update CMake mac version 3.31.10
* Profiles for Creality K2 Pro printer
Added printer profiles for Creality K2 Pro based on existing K2 Plus profile and Creality Print modifications.
* Fixed filament start g-code for K2 series
K2 Plus filament profiles have additional move for filament start g-code on some filaments. This causes unnecessary moves and make filament profiles non-working on K2 series printers.
As these moves are already mirrored on printer profile and not used in rest of the K2 series they should be removed.
* Update Creality K2 Pro profiles for improved print quality
Added adaptive probing comments to machine start gcode for all nozzle sizes. Adjusted process profiles for various layer heights and nozzle sizes, including changes to bridge speeds, acceleration, wall generator and support line widths according to Creality profiles s to optimize print quality and reliability.
* Revert "Update Creality K2 Pro profiles for improved print quality"
This reverts commit ac84058c33.
* Update Creality K2 Pro profiles for improved slicing
Adjusted speeds, accelerations, line widths, and other slicing parameters for better print quality and compatibility. Updated machine start g-code to include print area comments for adaptive probing (Creality K2 Pro uses these comments to define adaptive probing area)
* Bugfixes
* Reduce size of diff
to avoid merge conflicts when we cherry-pick from upstream :)
* remove extraneous space
---------
Co-authored-by: Andrew Sun <as-com@users.noreply.github.com>
This pull request updates GitHub Actions workflow files to explicitly
set permissions for certain actions. (fixing the permissions issues)
**Workflow permissions updates:**
* Added explicit `issues: write` permission to the `assign.yml` workflow
to ensure it can modify issues as needed.
* Set `contents: write`, `actions: write`, and `checks: write`
permissions in the `build_all.yml` workflow to allow the workflow to
interact with repository contents, manage actions, and update checks.
### IMPORTANT NOTICE
- Every time you download a new PR build, make sure to delete `<orca
config folder>/system/` folder first, otherwise the latest profile
update might not take effect (such as crash during startup, or not able
to find certain printer models in the list). Also it's a good idea to
always backup your config folder before trying any dev builds.
- You MUST **turn on both lan mode AND dev mode on your P2S**, there is
no firmware exists for these printers that allows 3rd party slicer over
cloud unfortunately.
- You MUST **turn off "Use legacy network plugin"** in Orca's
preference.
### HOW TO download the test builds:
1. Click the ["Checks"
tab](https://github.com/SoftFever/OrcaSlicer/pull/11132/checks) on top
of this page
<img width="1450" height="436" alt="image"
src="https://github.com/user-attachments/assets/5453e5ef-4455-4f23-9c76-a45218b9bf03"
/>
2. Click the "Build all" on the left side
<img width="1084" height="1110" alt="image"
src="https://github.com/user-attachments/assets/7caa5dc4-6280-4183-85c1-06cb702d1407"
/>
3. You'll find the build artifacts on the bottom of right side
<img width="2194" height="1316" alt="image"
src="https://github.com/user-attachments/assets/73536c51-2790-4302-9f9c-c3403bcb88d5"
/>
4. If you find the artifact list not complete (can't find the build for
your operating system/platform), try switch to different run and a
different attempt might have the artifact you're looking for:
<img width="1217" height="669" alt="image"
src="https://github.com/user-attachments/assets/7ac09291-2902-4ce2-9626-0d5cba7dfdba"
/>
-----------------------------
# P2S support cherry picked from BBS, with some other updates & fixes.
Thanks Bambu!
# **NOT TESTED** yet since I don't own a P2S.
I've try my best to port changes that are necessary to support P2S, and
features & bugfixes that only affect BambuLab printers.
Noticable changes:
- Added P2S profiles.
- Added some new gcode placeholders `max_additional_fan`,
`hold_chamber_temp_for_flat_print` which are used by the new P2S
profiles.
- Added chamber temp check for BBL printers, show warnings when print
certain filaments with low chamber temp.
- Can now trigger a nozzle type auto-recognition from Orca for supported
BBL printers (basically printer uses chamber camera to scan the code on
the nozzle).
- Highlight potential flush volume value error. The flush volume botton
will be red if flush volume is way too low.
- A1 / A1 mini support for AMS, AMS HT, and AMS 2 Pro.
- Skip Part also skips unnecessary color-change flush.
- Lots of BBL printer/plate image updates.
- Fix bunch of GUI bugs.
- Sync HMS & profiles with latest BBS.
* Reorder max volumetric speed calibration step
Moved the max volumetric speed calibration step after temperature tower in the documentation and updated the calibration menu initialization in MainFrame.cpp to match the new order.
* Update wiki image
* Reorder flow rate and pressure advance calibration steps
Updated documentation and GUI to list Pressure Advance calibration before Flow Rate calibration, reflecting the recommended calibration order. Adjusted menu item order in MainFrame.cpp and updated related documentation and image.
Because total print time is typically a big floating point number and the time of trapezoid is typically a small number, summing those numbers leads to a loss in precision. Switching to doubles reduces the loss of precision.
(cherry picked from commit c5982f40196c178bd824c556ac11e8c6f67d5e7a)
* Added InnovatiQ Vendor Files
* Cover image corrected
* Corrected Texture Image
* Merge branch 'main' into main
* Support Interface Pattern modified
* Merge branch 'main' of https://github.com/InnovatiQ-Additive/OrcaSlicer
* Merge branch 'SoftFever:main' into main
* Merge branch 'main' into main
* Fix file name casing
* Merge branch 'SoftFever:main' into main
* Added new filament(PETG)
* Merge branch 'main' into main
* Merge branch 'SoftFever:main' into main
* Merge branch 'SoftFever:main' into main
* changed three parameters
* Merge branch 'SoftFever:main' into main
* Merge branch 'SoftFever:main' into main
* Added 6 new printer files
0.25, 0.6, 0.8 printer profiles are added to TiQ2 and TiQ8
* Merge branch 'SoftFever:main' into main
* Added 6 new machines in machine list
* 6 new machines added in machine list
* Merge branch 'SoftFever:main' into main
* Modified the PACF filament and process file
* Added two new filament file and one process file
* Modified one filament and one process file
* Update Windows build instructions and images
Revised the Windows build guide to support Visual Studio 2026, added hardware requirements, and simplified command prompts and build script instructions. Updated related screenshots to use generic names instead of version-specific ones.
1.Immediate do lift in eager_lift function
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I931d22e901e2123bb886c31d8d1a5788fddeed42
(cherry picked from commit 6cea772d4f3b2f7e2a43c35a2271e4bdbba9eadd)
* Add script with VS version auto detection
* Add msvc145 toolset support
* Fix issue when build slicer only
* Fix vs2026 OpenCV build
* Set github action to use new build script
* Get vs version from `msbuild --version` so it works for github action
* Update 0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle.json
Change filename_format to include material and print time
* Update filename format in Flashforge profile
* Update 0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle.json
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update filename format in Flashforge profile
* Update 0.18mm Optimal @Sovol SV08.json
This file needs compatible_printers parameter set to a proper, non-empty value. Otherwise it will show up in every Sovol printer profile.
* The 0.30mm layer height configuration for the 0.4 nozzle of the QIDI model has been removed
* Merge branch 'main' into main
* Merge branch 'SoftFever:main' into main
* Revert "The 0.30mm layer height configuration for the 0.4 nozzle of the QIDI model has been removed"
This reverts commit 8d296720b8.
* Update Qidi Q2 0.4 nozzle.json
修改Q2打印高度
* Merge branch 'SoftFever:main' into main
* Merge branch 'SoftFever:main' into main
* change machine_gcode
* Merge branch 'main' of https://github.com/HYzd766/OrcaSlicer
* Merge branch 'SoftFever:main' into main
* Multi-color code compatible with QIDI models
* Merge branch 'main' into main
* toggle axis visibility on canvas (#9666)
* toggle axis visibility on canvas
* set show_axes config on toggle
* fix: Add pause and filament change to machine gcodes for Sovol SV08 MAX (#11214)
* Add fixed Ironing Angle setting for uniform surface finish (#11195)
* Initial working fixed ironing angle implemented with new Fixed ironing angle setting
* update documentation
* Combine Fill.is_using_template_angle and Fill.alternate_fill_direction into Fill.fixed_angle
* Rename SurfaceFillParams.is_using_template_angle to SurfaceFillParam.fixed_angle.
* Initial working fixed ironing angle implemented with new Fixed ironing angle setting
* update documentation
* Combine Fill.is_using_template_angle and Fill.alternate_fill_direction into Fill.fixed_angle
* Rename SurfaceFillParams.is_using_template_angle to SurfaceFillParam.fixed_angle.
* Actually build tests on Linux and allow RelWithDebInfo
They weren't being built.
Also cleaned up --config flags which enables RelWithDebInfo on Linux,
now that Ninja Multi-Config is used, it's quite trivial.
* Remove obsolete Slic3r Perl tests
The directory doesn't exist, they're already gone.
* Add GH job for running unit tests
* Move unit test execution to script and upload test results
* Don't run scheduled builds on forks
* Only deploy from SoftFever/OrcaSlicer
Will stop failures on forks
* Use artifact instead of cache
* Tweak archive and checkout paths
Keep getting error:
```
/home/runner/work/_temp/902d0a0a-6d23-4fe0-a643-8b5cc4efd25b.sh: line 1: scripts/run_unit_tests.sh: Permission denied
```
That seems to be because I didn't use actions/checkout, the working
directory is never setup correctly? So using checkout to get scripts
directory. Unsure if archive will preserve the `build/tests/` prefix;
will find out soon.
* Use tar to package directory and write results to correct directory
Tar preserves filenames and directory structure
* Use tar -xvf not -xzf
Muscle memory failed me
* Add testing wiki page
* Save test logs on failure and choose correct directory for junit
* Consolidate apt install steps, use for unit tests too, disable non-Linux builds
Temporarily disable non-Linux builds to save time while developing
this.
Cache the apt packages to save some time searching apt and downloading
them again (though I realize this is also downloading, but hopefully
by something closer and faster).
Remove all the redundant packages listed in the workflow and debian
distribution lists.
* Remove apt install steps from workflow
`./build-linux.sh -u` is supposed to install all needed packages, so
it should build without needing anything besides that. If I'm wrong
this commit will be dropped.
* Need composite action checked out locally
* Re-enable non-Linux builds now that it's working
* Skip a deploy and a notarize in forks
They only succeed in the main repo.
* Fix multi-build for non-Release builds: share CONFIG
* Correct build errors in unit tests
Indeterminate method signatures resolved. Updated script to build all
the tests.
* Fix -g vs -e for RelWithDebInfo
* Change CONFIG->BUILD_CONFIG
Missed one in prior commits
* Reduce wasteful redundant build artifact copies
1. Don't copy the artifacts and leave them; make a hard link first;
only make a copy only while creating AppImage.
2. Don't tar up the `package` directory; nothing uses this tar AFAICT
* Fix directory name
* Change jigsaw auth test URLs to httpbin.org
No idea why the basic auth doesn't work, but it doesn't work for
`curl` CLI either. This does.
* Remove force-build
It got reverted at
e3f049829b
for unknown reasons.
* Add timeout for unit tests in GitHub Actions workflow (#11146)
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Add option to allow upload to SD-Cards marked as abnormal, also add better error description
+ Adds the options under the Network Settings to allow upload to abnormal SD-Card.
+ If not enabled user will now see why the upload is stuck at 10% depending on the sd_card_state (Readonly/Abnormal)
* Merging with current branch, and updateing "sd-card" to "storage"
* Generate localization and also change remaining sd_card_abnormal states to _storage_abnormal
* Fix issues from merge, and other bugfixes.
* Regenerate localization files.
* Improve Missing Storage Message, Add skip for abnormal storage in printer select dialog
* Add "Replace all from STL" command
this operates on the currently selected plate or on the selection
* Add more translations for "Replace all from STL"
* build fix
* "Replace all with STL" also works with multiple selected plates
* fix build
* replace all from stl: better error handling and a nicer status message box
---------
Co-authored-by: Nils Hasler <hasler@thecaptury.com>
Fix: Fixing the logic of the adaptive layer height for supports
Removing `tree_support_adaptive_layer_height` because its logic duplicates `independent_support_layer_height`
/run/build/BambuStudio/src/slic3r/GUI/DeviceCore/DevFilaAmsSetting.h:16:10: error: ‘optional’ in namespace ‘std’ does not name a template type
16 | std::optional<bool> IsDetectOnInsertEnabled() const { return m_enable_detect_on_insert; };
| ^~~~~~~~
/run/build/BambuStudio/src/slic3r/GUI/DeviceCore/DevFilaAmsSetting.h:4:1: note: ‘std::optional’ is defined in header ‘<optional>’; this is probably fixable by adding ‘#include <optional>’
3 | #include "DevCtrl.h"
+++ |+#include <optional>
4 |
/run/build/BambuStudio/src/slic3r/GUI/DeviceCore/DevFilaSystem.h:174:10: error: ‘optional’ in namespace ‘std’ does not name a template type
174 | std::optional<bool> IsDetectOnInsertEnabled() const { return m_ams_system_setting.IsDetectOnInsertEnabled(); };
| ^~~~~~~~
/run/build/BambuStudio/src/slic3r/GUI/DeviceCore/DevFilaSystem.h:13:1: note: ‘std::optional’ is defined in header ‘<optional>’; this is probably fixable by adding ‘#include <optional>’
12 | #include <wx/colour.h>
+++ |+#include <optional>
13 |
(cherry picked from commit fa482b1c0dc7faa2ad87c37eb7f1ea2ce87a5084)
/run/build/BambuStudio/src/slic3r/Utils/FileTransferUtils.hpp:65:27: error: ‘info’ was not declared in this scope
65 | BOOST_LOG_TRIVIAL(info) << std::string("symbol not found: ") + name;
| ^~~~
/run/build/BambuStudio/src/slic3r/Utils/FileTransferUtils.hpp:65:9: error: there are no arguments to ‘BOOST_LOG_TRIVIAL’ that depend on a template parameter, so a declaration of ‘BOOST_LOG_TRIVIAL’ must be available [-fpermissive]
65 | BOOST_LOG_TRIVIAL(info) << std::string("symbol not found: ") + name;
| ^~~~~~~~~~~~~~~~~
(cherry picked from commit 4c30fb7edd3a4a29db9178685ff276cff2da22f3)
This reverts commit 4f8d3466508f3706e8d3f656294f7c5d3a9a7f88.
Reason for revert: use another method
Change-Id: I2a6465ea507f15ce200ea9cf03994b18bb2f257f
(cherry picked from commit 630248ae566c8cf8c61ceacb74ae3cd31d9e1501)
This reverts commit 576444e746f4de3ab71c91b8a66fa4a64c3427c8.
Reason for revert: <remove high flow of X/P>
Change-Id: I875f649c62d503bdf1321b5fec829bb190b02bce
(cherry picked from commit 0b46acb8e793af883b797f83a9ad72a55dd69f3e)
When the retraction setting is larger than the retraction during the material change, the travel triggered during the material change will make up for the retraction interpolation, but the retracted extruder head will be the wrong one. By moving the travel part in the extruder switch Gcode to after the traditional head change (where m_curr_extruder_id in writer() is updated), the old ID is avoided during travel.
jira: STUDIO-14764
Change-Id: I8af8f66af180f01de2fef5760601ee54e73548c4
(cherry picked from commit 008c436803cdf48d3bdcf6fcd85596fc91b3fc70)
Coincident lines are considered as intersecting
jira:STUDIO-14085
Change-Id: I1487e6e2479e2488a3fd55651b8b4fb1bc1f4ced
(cherry picked from commit 2348328a96a8d805c35cae8f03ebaa0869b1313e)
Modify the machine start gcode for nozzle diameters 0.2, 0.4, 0.6, and 0.8 on the X1, X1 Carbon, and X1E models to move the compensation lines closer to the edge.
jira: STUDIO-14317
Change-Id: Ib0662d5cf9dfd63b960fcb7c458fa35dc0954c1b
(cherry picked from commit 6aaa7ae4ffd2c893ed41a5eed51a6a7dd2d83f7b)
(cherry picked from commit 62bcdd5b1627526035ce3f23ca9999b958fd05b2)
The configuration changes that were previously reverted are now reintegrated
jira: none
Change-Id: I82148ddb9688ffb358018c187ed71accad47529c
(cherry picked from commit 55fad607fd4e66b6b44b1b11b67f8cc5141c3af6)
By using Manhattan distance, a penalty function is constructed by weighting the distance from the safe position to the camera and the distance from the current position, incentivizing safe positions to move away from the camera. The isometric line of the integrated Manhattan distance changes from a circle to a trapezoidal shape, with the Euclidean distance toward the camera being half that away from the camera. This ensures that when selecting a safe position, points with the same Euclidean distance from the current position receive a smaller penalty if they are farther away from the camera.
jira: none
Change-Id: I3c256cfc0c33cecade86c254613063adeac59f91
(cherry picked from commit f86ca36b471dd99d4c1bd21c4e6db3ee10eb5a6d)
Description:By calculating the total area of the first layer (object, support, wipe tower), the flag is true when the area is greater than 200 and the height is less than 0.3 mm. machine_start_code placeholder: "hold_chamber_temp_for_flat_print"
jira: STUDIO-13370
Change-Id: If5982da28afb57e9bbb8a0a1ba69bc45f5cc1c7c
(cherry picked from commit eb942df30e6779acbdf1d330cae5c6ebe0010abf)
(cherry picked from commit 47a242ecd639cc630f70d9b6cf4d1fd91fd511d4)
(cherry picked from commit 87f4741d9caaf33699d647a2ce5b4f60d535f7b1)
* Introduced a new command-line argument `--vendor` to process images from a specific vendor subfolder.
* Enhanced error handling to check for the existence of the vendor path and list available vendors if the path does not exist.
* Updated help documentation to reflect the new functionality.
This change improves the script's usability for users managing multiple vendor-specific cover images.
* Auto generate CMAKE_PREFIX_PATH/DESTDIR
* Auto set CMAKE_INSTALL_PREFIX
* Always default SLIC3R_STATIC to on
* Only allow one value for CMAKE_OSX_ARCHITECTURES
* Set arch for OpenSSL from CMAKE_OSX_ARCHITECTURES
* Set CMAKE_INSTALL_RPATH from CMAKE_PREFIX_PATH
* Default CMAKE_MACOSX_RPATH and CMAKE_MACOSX_BUNDLE to on
* Auto set BBL_RELEASE_TO_PUBLIC based on build config
* Default to GTK 3
* Fix linux debug build
Update find modules to also look for the debug variant of the libraries
* Set DEP_DEBUG and ORCA_INCLUDE_DEBUG_INFO based on CMAKE_BUILD_TYPE
* Add a fallback value for Windows SDK if the env variables are not set
* Reflect CMake changes in the build scripts
* Add missing line
* Fix auto setting DEP_DEBUG and ORCA_INCLUDE_DEBUG_INFO
* Update dep folder name for linux in GH actions
* Invert dep-folder-name conditions
`''` is considered a falsy value, which was causing the value to always be set to 'OrcaSlicer_dep'
* Properly handle finding the debug version of libnoise
* Convert FindNLopt.cmake to a config mode wrapper
* Use separate build directory for debug builds on Linux
* Move find_package for libnoise
* Cleanup and improve linux build script
- Add dry run
- Add build in RelWithDebInfo
- Add function to print and run commands
* Remove linux destdir deprecation and cleanup
* Fix flatpak build
* Disable fail fast for flatpak builds
* Flatpak improvements
- Build wxWidgets using deps cmake
- Improve handling of space freeing commands while building deps
- Allow cmake to directly download deps
- Set needed flags within cmake instead of the build manifest
* Print clean build commands
* Implement shellcheck recommendations
* Cleanup
* Fix CMakeLists.txt syntax by replacing empty elseif with else statement
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
Updated multiple filament profiles to convert fields such as filament_cost, filament_density, and filament_max_volumetric_speed from single values to arrays for consistency. Removed unnecessary fields from filament profiles to streamline data structure. This change enhances compatibility with the updated profile handling logic in the orca_filament_lib.py script.
* The 0.30mm layer height configuration for the 0.4 nozzle of the QIDI model has been removed
* Revert "The 0.30mm layer height configuration for the 0.4 nozzle of the QIDI model has been removed"
This reverts commit 8d296720b8.
* Update Qidi Q2 0.4 nozzle.json
修改Q2打印高度
* change machine_gcode
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Add Vietnamese localization file for OrcaSlicer
* add Vietnamese po file
* Add Vietnamese language support in GUI (#11000)
- Added Vietnamese (vi_VN) to the language mapping in GUI_App.cpp.
- Updated Preferences.cpp to include Vietnamese in the language combobox and display its name in Vietnamese (Tiếng Việt).
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
# Change FillTpmsFK.cpp to use MarchingSquares.hpp.
This is still a work in progress, but it does seem to work fine, and I
thought I'd put this up there for people to have a play with. I also
have a few questions because I'm not 100% familiar with the rest of the
codebase and I'm going to use the review of this to figure a few things
out.
This builds on #10747 which simplified and significantly optimized
MarchingSquares.hpp by replacing most of FillTpmsFK.cpp's implementation
to just use that marching squares implementation instead of
re-implementing it's own.
I don't yet have any solid speed comparisons but it feels a bit
subjectively faster, though I think that most of the delay in previewing
the slicing results is not in the fill-generation so it's a bit hard to
tell. I don't know if there are any tests/benchmarks/etc that I could
use for testing this, but I'm probably going to add some to this PR at
some point.
Even if this doesn't give a significant speed-up, it does significantly
simplify the code and make it easier to re-use for other equation based
fill-patterns. This could re-implement gyroid or TpmsD with about 5
lines of C code to inherit from `ScalarField` and redefine the `float
get_scalar(coordf_t x, coordf_t y, coordf_t z)` function with the
appropriate equation.
I don't think it would be faster than the current gyroid or TpmsD fills
though, since they directly generate a single line using the equation
and then just copy and shift it. However, it might not be much slower
and it would simplify the code to do them all the same way.
But the main reason I'm doing this is this can be used to implement far
more complicated fills that can't really be implemented any other way.
In particular I'm working towards a gyroid fill that dynamically varies
it's density based on how close it is to the walls.
I have a bunch of questions about some of the other bits that I'll post
as comments against the review-diff.
# Screenshots/Recordings/Graphs
I'll add some when I get there... but so far the results look identical
to the previous implementation even when I zoom in close.
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the
changes made in this PR.
-->
Ported part skip from BambuStudio. Thanks bambulab!
<img width="1350" height="902" alt="image"
src="https://github.com/user-attachments/assets/d7f89950-3420-4ea5-bbb6-e53c875e7422"
/>
Haven't fully tested yet!
### Minimum Firmware Requirements (from BambuStudio release page):
- **X1C**: v01.09.02.12 or later
- **H2D**: v01.02.00.00 or later
- **Other models**: Currently not supported. Feature support coming in
future firmware updates.
> ⚠️ Make sure your printer firmware is up to date to use this feature.
This new feature allows users to override flow ratios for the following extrusion path types:
* First layer (excluding Brims and Skirts)
* Outer walls
* Inner walls
* Overhang perimeters
* Sparse infill
* Internal solid infill
* Gap fill
* Support
* Support interfaces
Fixes#11082
Slicing is going to the endless loop when the `Base pattern spacing` value is 0 for `Tree Slim` support.
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Change ironing angle setting to be an offset angle from the top surface angle rather offset from the layer 0 angle that changes on each layer.
* Change Ironing angle offset range from [-1,359] to [0,359].
-1 is redundant because it is the same behavior as 0 offset.
* Change ironing_angle new default value to 0.
* Update existing print profiles' hardcoded ironing_angles from -1 to 0 to reflect new default value.
* Add migration for old -1 ironing_angle settings. Remove logic for -1 ironing_angle.
* Add u8 prefix for degree symbol string
* Use solid_infill_direction instead of infill_direction for top surface infill direction. Use calculate_infill_rotation_angle to add offset to solid_infill_rotate_template if used.
* Update quality settings wiki for Ironing
* Set f->is_using_template_angle when making ironing filler objects
* Update quality_settings_ironing link from #angle to #angle-offset
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
* New materials
* Temps
* Full filament type list
* Improve nozzle temperature range validation messages
Separates minimum and maximum recommended temperature warnings for nozzle configuration + generig °c usage.
Co-Authored-By: Alexandre Folle de Menezes <afmenez@gmail.com>
* Material Updates
Co-Authored-By: Rodrigo <162915171+RF47@users.noreply.github.com>
* petg-cf10 should be petg-cf
options.
* Pla reduced range
* Adjust some temps
* FilamentTempType Temperature-based logic
* chamber temps
* Fromatting
* Filament chamber temperature range support
Introduces get_filament_chamber_temp_range to retrieve safe chamber temperature limits for filament types. Updates ConfigManipulation to use these limits instead of hardcoded values.
* add adhesion coefficient and yield strength
Replaces hardcoded material checks for adhesion coefficient and yield strength with lookup functions using extended FilamentType struct.
* Thermal length
* Fix
* Refactor filament type data to MaterialType class
Moved filament type properties and related lookup functions from PrintConfig.cpp into a new MaterialType class.
* Fix adhesion_coefficient
Co-Authored-By: SoftFever <softfeverever@gmail.com>
---------
Co-authored-by: Alexandre Folle de Menezes <afmenez@gmail.com>
Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Optimize and simplify MarchingSquares.hpp, and fix it's test.
This changes the implementation to get the possible next directions for a cell
when building the tags and clearing them as the cells are visited during the
march, instead of adding the visited previous direction to the tags during the
march. The Dir enum has been turned into bit flags that for the possible next
directions with boolean operators for testing/setting/clearing them. This
simplifies and optimizes many operations during the march and building the
polygons.
The complicated/broken and unused partial support for cell overlap has been
removed, simplifying the overly confusing grid iteration logic.
The broken test has been fixed by removing the now gone `RasterBase` namespace
from `sla::RasterBase::Pixeldim` and `sla:RasterBase:Resolution`, and the
CMakeLists.txt entry uncommented.
make Dir into flags
* Further optimize MarchingSquares.hpp and improve comments.
* Switch from a single byte-vector containing tags and dirs for each cell to a
m_tags vector of bit-packed tags for each grid corner and an m_dirs vector
of packed 4bit dirs for each cell. Since each grid corner tag is shared by
the 4 adjacent cells this significantly reduces storage space and avoids
redundantly calculating each tag 4x. It also significantly improves memory
locality with each phase of calculating tags, calculating dirs, calculating
rings operating only on the tags or dirs data required without them being
interleaved with the data they don't need.
* Change NEXT_CCW to be initialized with a static constexpr lambda instead of
a manually entered table. This avoids typo errors manually building the
table.
* Optimize search_start_cell() so it can efficiently skip over cleared blocks
of 8 dirs in the packed m_dirs vector.
* Change the tags logical labeling to better suit the packed tags vector data.
This makes it a tiny bit more efficient to extract from the m_tags bitmap.
* Remove the now unused SquareTag enum class.
* Add comments explaining the algorithm, including corner-cases in cell
iteration.
* Remove unused Dir operators and get_dirs() argument, and clang-format.
* Fix some bugs and add stream output operators for debugging.
* Fix a bug building tags where `step(gcrd, Dir::right)` was not assigned to
update the gcrd grid point. Perhaps this should be a mutating method, or
even a += operator? Also when wrapping at the end of a row it was updating
the gcrd grid point by mutating the p raster point instead of itself.
Perhaps Grid and Raster points should be different types? Maybe even
templated?
* Fix a bug in get_tags() when the second row tags are packed into any of the
2 LSB's of the uint32_t blocks. In hind-sight obviously `>>(o - 2)` will not
shift left when `o < 2`.
* Move interpolation of the edge-crossings into a `interpolate()` method, and
make it shift bottom and right side points "out" by one to account for
raster pixel width. This makes the results track the raster shapes much more
accurately for very small windows.
* Make `interpolate_rings()` check for and remove duplicated points. It turns
out it's pretty common that two edge-crossing-points at a corner interpolate
to the same point. This can also happen for the first and last points.
* For Coord add `==` and `!=` operators, and use them wherever Coord's are
compared.
* Add `<<` stream output operators for Coord, Ring, and Dir classes. Add
`streamtags(<stream>)` and `streamdirs(<stream>)` methods for dumping the
tags and dirs data in an easy to understand text format. These make
print-debugging much easier.
* Add `assert(idx < m_gridlen)` in a bunch of places where grid-indexes are
used.
* For test_clipper_utils.cpp fix three "ambiguous overloading" compiler errors.
This just adds three `Polygons` qualifications to fix compiler errors about
ambiguous overloaded methods.
Note this file was formated with a mixture of tabs and spaces and had lots of
trailing whitespace. My editor cleaned these up resulting in a large looking
diff, but if you use `git diff -w` to ignore the whitespace changes you will
see it is actually tiny.
errros
* Update SLA/RasterToPolygons.* for MarchingSquares.hpp improvements.
Change the minimum and default window size from 2x2 to 1x1. Also remove the
strange pixel size re-scaling by (resolution/resolution-1).
The old MarchingSquares implementation had complications around a default
minimum 1 pixel "overlap" between cells which messed with the scaling a tiny
bit and meant when you requested a 2x2 window size it actually used a 1x1
window. Both of these meant you had to specify a window 1 pixel larger than
you really wanted, and you needed to undo the strange scaling artifact for
accurate dimensions of your results.
This has been fixed/removed in the new implementation, so the window is the
window, there is no overlap, and no strange miss-scaling.
* Fix test_marchingsquares.cpp and add StreamUtils.hpp.
This fixes the MarchingSquares unittests to both pass and be more strict than
they were before.
It also adds libslic3r/StreamUtils.hpp which includes some handy streaming
operators for standard libslic3r classes used to show extracted polys in the
unittests.
* Change Format/SL1.cpp to support the min 1x1 window for MarchingSquares.
* Fix the ring-walk termination condition.
Terminate the ring-walk when we return to the starting cell instead of when we
reach a cell with no remaining directions. This ensures we don't merge two
polygons if we started on an ambiguous cell.
* Revert the removal of duplicate points in interpolate_rings().
It turns out that duplicate points are only relatively common when using a 1x1
window. These happen when the line passes through the corner pixel on a
top-left corner in the raster, and the probability of this rapidly declines as
the window increases, so in many cases this filtering is just overhead. It can
also be potentially useful to see the points for every edge crossing even if
they are duplicates. This kind of filtering is already done and done better in
the polygon post-processing.
* rename `interpolate()` to `interpolate_edge()`, make it update the point
in-place, and add asserts to ensure the input point is a valid edge
interpolation point.
* Remove the duplicate point filtering from `interpolate_rings()` and simplify
it.
* Optimize directions building.
This optimizes `get_dirs_block8()` to rapidly skip over blocks where the tags
produce no directions (all tags are 1's or 0's), and also to build the
directions faster when it has to by fetching the whole blocks worth of tags at
once instead of cell-by-cell.
* Rename `get_tags()` to `get_tags9()` and make it fetch a row of nine tags
instead of the tags for a single cell.
* Optimize `get_dirs_block8()` to use `get_tags9()` to get the next nine tags
for the current and next rows and then shift through them to generate the
tags and directions for each cell in the block. Also abort early and just
return an empty block if the tags are all 0's or all 1's.
* Tiny optimization for `get_tags_block32()`.
This avoids using the `step()` method for a simple step-right that can be done
with a simple increment of the column. It also avoids re-calculating the
raster-coodinates for every corner, instead incrementing the column by
`m_window.c` until the end of a row.
* Fix svg output in test_marchingsquares.cpp for recreate_object_from_rasters.
These SVG's were not properly centered...
* Fix 2 static_casts for compiling on Windows.
Thanks to RF47 for pointing this out on the #10747 pull request.
* Make edge iteration use O(ln(N)) binary search instead of linear.
This should be much faster when the window size is large.
* Make `CellIt` into a `std::random_access_iterator_tag` so that
`std::lower_bound()` can use a binary search to find the point on the edge
instead of a linear search.
* Change `step()` to support an optional distance argument and make it modify
the `Coord` in-place instead of return a new one.
* Update tests for the `step()` change.
* Add Catch2 BENCHMARK tests for MarchingSquares.
This required enabling the benchmarks in the tests/CMakeLists.txt config.
* Add a _Loop<> specialization for parallel execution using ExecutionTBB.
This is something that could be added wherever you are going to use this, but
I intend on using this in multiple places so we might as add this once in one
place where it can be reused.
* Fix whitespace in messed up by tab-replacements.
My editor renders, and replaces, tabs as 8 spaces. This messed up the
indenting in tests/libslic3r/CMakeLists.txt and
tests/libslic3r/test_clipper_utils.cpp when I made tiny changes in them.
This fixes the indenting using 4 chars. Note it will still show as a diff
because it is replacing tabs with 4 spaces, and removing trailing whitespace.
But at least it's now indented correctly...
---------
Co-authored-by: Donovan Baarda <dbaarda@google.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
Caused by setting wrong value in app config
jira:STUDIO-10399
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Id492e666f78c05a4563d4625b544623c6529aae8
(cherry picked from commit 0dbd5417a831f8af5347cee9ffb4f7857e2396f0)
caused by printer_model missed in the setup stage
jira: STUDIO-10966
Change-Id: I3a887de800c62c5dd355c9dce554e2b5828a1c55
(cherry picked from commit a598ce8d6127f750a0c6e514a51111b247186c41)
use the shared printable area
jira: no-jira
Change-Id: I23e97a06b0ca9573c84fe4081496bae2e8e92382
(cherry picked from commit 3245ea6f6dd54bfaae30e76c903abfd632972544)
and cannot set cali step to 0.001
jira: STUDIO-14042 & STUDIO-14119
Change-Id: I56ecc70d0413398ecacd1c842f7102e810277cfd
(cherry picked from commit c16925931c642d8e27d739a401148bc94c5f3965)
Saved colors now reappear when reopening the picker.
jira: STUDIO-14100
Change-Id: I0348a177fcacb83779cf8c9c21151df5ccfd3e8d
(cherry picked from commit 7c21048b510ea993520e74d7068d17f0a879315f)
report from cloud team
jira: no-jira
Change-Id: I880d0fbf0ee6fac00eded9e8b3f52c0cfb6de870
(cherry picked from commit 1128c0087e980f70865dff6185f1f7ad540cf6db)
1. Use the minimum flush between nozzle volume and flush in datalist
2. Add a new param to decide the datalist to use
3. set for o1s
github:7445
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I7b3b69ee06f984b279ae4be47f70f5a472703b15
(cherry picked from commit 036fa80eea9ef8e02d9c9c9e6e7974d5a9a08131)
This reverts commit 4c091e4ab9ee55990eab8c72ef4e9acbbea65641.
Reason for revert: <miss one patch>
Change-Id: Ieb56c2dba1ead206489cecc3b25f136a00fea8b2
(cherry picked from commit 7632fe1dfa452c3a0e2c1d49aef0308100479c3a)
This reverts commit 07759cf9fdba538a488399abe47a1d417ed27b13.
Reason for revert: <miss one patch>
Change-Id: Ie0ac79b9db0259881ddc20a23feff3e6a4b0c9f6
(cherry picked from commit a09b2cacfbacff5ee26ed757a9f76c9dfb7cca09)
In the safe position calculation for time-lapse photography in traditional mode of piece-by-piece printing, for parts not currently being printed, the maximum expansion radius is used for parts higher than the current layer, and half of the expansion radius is used for parts lower than the current layer height; half of the expansion radius is used for the parts themselves. This reduces unnecessary avoidance.
jira: STUDIO-13194
Change-Id: Id6ce03af29c9ebba974ea57ec41cca757067027a
(cherry picked from commit 68c7f41900049e64d37d792503653ce5302759d8)
The translated strings cannot match the correct config, delete the translation of these two opt_key
jira: STUDIO-13989, STUDIO-13988
Change-Id: I5e8ebf342b5bb18c1ca6a88a3916197941c0cb03
(cherry picked from commit a84d9ab466b1f6b1ccb727d4f34cdb7c2eb8e30a)
When printing by object, not lifted when traveling to the second piece, which causes scratches on the surface of the first piece.
Modify the lift height in GCode.cpp to add a z_hop height to the highest print height to avoid scratches.
jira: STUDIO-14001
Change-Id: I97835fce5b82f405d600f5aa6ce74edae1e97b47
(cherry picked from commit 9282806196e455883b36b17391a404106c4b3c82)
src/slic3r/GUI/DeviceCore/DevLamp.h:22:41: error: ‘string’ in namespace ‘std’ does not name a type
22 | void SetChamberLight(const std::string& status);
| ^~~~~~
(cherry picked from commit abd986164785070dcd39204781a0e5a9d40ce216)
src/slic3r/GUI/DeviceCore/DevManager.h:108:5: error: ‘wxTimer’ does not name a type
108 | wxTimer* m_timer{ nullptr };
| ^~~~~~~
(cherry picked from commit be709a977ea47380135606cccfab325cc5bb9df1)
In file included from /run/build/BambuStudio/src/slic3r/GUI/DeviceCore/DevFilaBlackList.cpp:5:
/run/build/BambuStudio/src/slic3r/GUI/DeviceCore/DevManager.h:23:10: error: ‘mutex’ in namespace ‘std’ does not name a type
23 | std::mutex listMutex;
| ^~~~~
(cherry picked from commit 53dba781011d468f44fc98a564157674220a947f)
In file included from /run/build/BambuStudio/src/slic3r/GUI/DeviceCore/DevFirmware.cpp:1:
src/slic3r/GUI/DeviceCore/DevFirmware.h:33:5: error: ‘wxString’ does not name a type
33 | wxString product_name;
| ^~~~~~~~
src/slic3r/GUI/DeviceCore/DevFilaBlackList.h:10:230: error: ‘wxString’ has not been declared
10 | static void check_filaments_in_blacklist(std::string model_id, std::string tag_vendor, std::string tag_type, const std::string& filament_id, int ams_id, int slot_id, std::string tag_name, bool& in_blacklist, std::string& ac, wxString& info);
| ^~~~~~~~
(cherry picked from commit 8092454b7560150c03bcd6c27c996b33dd52758f)
In file included from /run/build/BambuStudio/src/slic3r/GUI/DeviceCore/DevPrintTaskInfo.cpp:1:
src/slic3r/GUI/DeviceCore/DevPrintTaskInfo.h:15:10: error: ‘string’ in namespace ‘std’ does not name a type
15 | std::string content;
| ^~~~~~
src/slic3r/GUI/DeviceCore/DevPrintTaskInfo.h:16:10: error: ‘vector’ in namespace ‘std’ does not name a template type
16 | std::vector<std::string> image_url_paths;
| ^~~~~~
(cherry picked from commit 1e0ae7d3f8b47d1f8c1bb6b05be54d627bcc95f0)
src/slic3r/GUI/DeviceCore/DevExtruderSystem.h:136:10: error: ‘optional’ in namespace ‘std’ does not name a template type
136 | std::optional<DevExtder> GetCurrentExtder() const;
| ^~~~~~~~
(cherry picked from commit 3c67563639a6c99955e16ac8e5b4042e64b07b73)
In gcode processor, the result check, increased the tolerance of printable area detection to 2mm, to adaption to the requirement of command line slicing.
jira: none
Change-Id: I5be4d6396989c35ae394339376c1133c8862c075
(cherry picked from commit 2f09c98caa9d2afc3e33a0bf17c6a6bb39992e0c)
Added option information to the error prompt to facilitate users to jump to the corresponding option
jira: none
Change-Id: I3f13acac08a1e84625dc22363822989f1eab7ec7
(cherry picked from commit 96b4e6610fa532b74247abe925d8c8d19869bf93)
Add warning about enable_wrapping_detection without prime tower. Note: Only one of this warning, check_multi_filament_valid, and support_enforcer without support can be displayed at the same time.
jira: none
Change-Id: Ic8f0fc7ab62b63af1604e32b7380642741669462
(cherry picked from commit 698c0d16c99e13244101c06d7a3a8ff66ae2e4d0)
0-sized extrusion path are now excluded from the heated bed range check to avoid false positive detection.
jira: none
Change-Id: Ia4bfff77880d107ce6b9542ef770050201ff0d90
(cherry picked from commit 00d9aedabed7e6b25767ddfe9871488f629c0dde)
erCustom extrusions are now excluded from the heated bed range check to avoid initial routing issues.
jira: STUDIO-13885
Change-Id: I706a85113fe7b6f5e1a3b67f5bc16d674ad85577
(cherry picked from commit c8b4f3c778a3c1a023693b9b4961da261507ae8f)
Added a check for Gcode traces outside the printable area after the backend slicer, allowing command-line slicers to detect abnormal results. The GCodeProcessor's m_result.gcode_check_result.error_code now includes not only dual-head print range checks, but also checks for the machine's plate print range, wrapping detection area, and height violations.
jira: none
Change-Id: I44072ece3b4b525c77328cec2f76e205eb559cc4
(cherry picked from commit 054f936243968687f536170374a233ec912e8e42)
The extreme extrusion in the H2D first layer's start code caused the color range in the preview to be too large. Add a constraint to eliminate the effect of this start extrusion.
jira: STUDIO-13830
Change-Id: Ifccbd14449d1c424f0bb3c1e3d254bddffa41a7c
(cherry picked from commit 6b935a9de0f9fe98f041f509ab6d2d72b59e957b)
Because the function in print.cpp mistakenly considers models with different variable layer height configurations to be the same, the layer height configurations of the copied objects are optimized and overwritten. Fixed function: auto is_print_object_the_same = [this](const PrintObject* object1, const PrintObject* object2)
jira: STUDIO-13507
Change-Id: Ic4b3a479e8984b46a2f9557f65826951b8979646
(cherry picked from commit 2d5137914e9699c4fe9ddbbc76f13b85dbc3a1a9)
In print.cpp, logic was added to skip checking for mixed prints when using the byobject mode. This prevented false positives for single-filament objects, but it also failed to detect mixed prints. This detection has been restored, but separate logic for byobject mode has been added to the detection function: StringObjectException Print::check_multi_filament_valid(const Print& print). This will only prompt a warning when a single object contains high- and low-temperature filaments.
jira: STUDIO-13667
Change-Id: I37622e49b76581ea4a2d78c97ebcd655bb7199e6
(cherry picked from commit 7128758056f1fe11bdd953e7f3d91284b15535a9)
Due to the decimal portion of floating-point numbers generated during square root extraction, mismatched matrix sizes were mistakenly considered consistent, resulting in the flush matrix size not being corrected. Now we compare the square value to avoid errors.
jira: STUDIO-13727
Change-Id: I1f3768dab186b25c9ac4e85d4eff24913f15b3dc
(cherry picked from commit d0e9a8c3f3086b4ad2bc14bbfebd3d6ceff9eefc)
Fix the issue that 3mf files containing small thumbnails cause the print page to crash. Due to m_cur_input_thumbnail_data has small size which caused array out of bounds and crash.
jira: STUDIO-13731
Change-Id: Ie3c30287265f635e6afb2b1157c97c5b6863d54e
(cherry picked from commit adffd16e1fbbcba0f1bc33ebd6112e57c88f30e7)
1.Correct the wrong logic for support filament check
jira:STUDIO-13719
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ia0d5dfa210a4335ea2a6a5f5a97ba69fd136c720
(cherry picked from commit 75c75f83679937b1fcd2ef120ac83cc9a67f125b)
In file included from /run/build/BambuStudio/src/slic3r/GUI/DeviceErrorDialog.cpp:1:
/run/build/BambuStudio/src/slic3r/GUI/DeviceErrorDialog.hpp:78:5: error: ‘wxStaticBitmap’ does not name a type
78 | wxStaticBitmap* m_error_picture;
| ^~~~~~~~~~~~~~
(cherry picked from commit 834d2bc8026e38d7ed1d0bafa3e125baf412a322)
/run/build/BambuStudio/src/slic3r/GUI/EncodedFilament.hpp: At global scope:
/run/build/BambuStudio/src/slic3r/GUI/EncodedFilament.hpp:81:10: error: ‘set’ in namespace ‘std’ does not name a template type
81 | std::set<wxColour, wxColorSorter> m_colors;
| ^~~
/run/build/BambuStudio/src/slic3r/GUI/EncodedFilament.hpp:13:1: note: ‘std::set’ is defined in header ‘<set>’; this is probably fixable by adding ‘#include <set>’
12 | #include <chrono>
+++ |+#include <set>
13 |
(cherry picked from commit 9d86c8c15e69158d386596bd860b99b61b2c2e61)
/run/build/BambuStudio/src/slic3r/GUI/EncodedFilament.hpp: In function ‘Slic3r::ColourHSV Slic3r::wxColourToHSV(const wxColour&)’:
/run/build/BambuStudio/src/slic3r/GUI/EncodedFilament.hpp:41:25: error: ‘fmod’ was not declared in this scope
41 | h = 60.0 * (fmod(((g - b) / delta), 6.0));
| ^~~~
(cherry picked from commit 625b661f292fdac9b337365b6792c959f6df59ff)
• Official filament picker now renders semi-transparent colors correctly on macOS.
• Disables the flicker prompt while the default system color picker is open.
jira: STUDIO-13452
Change-Id: I6a83d3cf488114f92813e378b507f293d7c4254e
(cherry picked from commit 4cd2c47f99f956681f41a1af0343efc9ad377684)
Brief flicker reminds users to act on the dialog before proceeding elsewhere.
jira: STUDIO-13492
Change-Id: I3daaa567f4aa738094fc01effcd9b9245aea9d2c
(cherry picked from commit 3decd7a5e4f5a13b7fd1dbb0fc39e0b3849ed6d1)
change: Multiply the flush_volumes_matrix in the exported gcode by the coefficient and output the final value.
Also fixed the issue where the flush matrix page was limited to 900, but the Gcode output value could be greater than 900 (the product of the matrix and the multiplier was limited to 900 before storing the value)
jira: STUDIO-13332
Change-Id: I893f27bec206c3b9da3273241d1cd5f1883e55a9
(cherry picked from commit 8aa91cd86c8c75b3736c616bcfbed4872db9734c)
(cherry picked from commit 038fc1c18220cef8c269d272059afea503fb5d5b)
1. Use the minimum flush between nozzle volume and flush in datalist
2. Add a new param to decide the datalist to use
github:7445
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Id87c98ca5069e7b328974d641d7a81dfbf9c50a0
(cherry picked from commit 2be29b784727330732170b5c2ff0ba9d5e79d82f)
- Add safeguards for invalid idx when opening color picker
- Prevent crash when filament color data is missing or uninitialized
- Simplify private member variable naming in filament picker dialog
jira: STUDIO-12956
Change-Id: I455565bdac769f497f22f884e19cd0cbb04fb8c3
(cherry picked from commit 705ad911ee81395b2162ae67a8f64e237f6a3c5d)
1. Sometimes the first layer is too small and does not have enough space to extrude.That will make first layer extruders empty
jira: STUDIO-13030
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I69b99ab74101c772f4c91e955060e403988bb91c
(cherry picked from commit 9699397858c6d52d027e79e91041a9dac7280bba)
- Use ellipsis to truncate long preset names and type names in the official picker
- Show user-defined name for official filaments by default in the picker
jira: STUDIO-12936, STUDIO-13128, STUDIO-13129
Change-Id: I744b44df32a7108a4273c3746eedddd9cde436e9
(cherry picked from commit dc0a66fd2017d4361d6b5597c36142bb03a92374)
- Display RGB values when a custom color is selected
- Prevent official color picker dialog from closing when custom color dialog is canceled
- Ensure multi-color materials are correctly displayed when importing new 3MF files
jira: STUDIO-12938, STUDIO-12937, STUDIO-12933, STUDIO-13110
Change-Id: Iab410585bf8cc5e9e81c6f0da23fe4ddba561785
(cherry picked from commit 2c20d591b998b02b0b66ac81b048a28fa26bd409)
- Adjust the color of the dividing line to be darker in dark mode.
jira: STUDIO-12982, STUDIO-12935
Change-Id: Icda8dd10dbcc470e55c8760716f5545fb784f194
(cherry picked from commit 60aa221033134dfba19830f71cd307db91119ed6)
- Applied dark theme styling to filament picker dialog
- Fixed color picker background not updating on theme switch
jira: STUDIO-12935
Change-Id: I9c7dcc518e7b0bd2c330f477ee42f4c61ea9fd4b
(cherry picked from commit 66ae7a02b945ff603b2dc699c93e55589481379e)
- Add a filament picker dialog for official color selection
- Enable displaying multiple filament colors in the picker dialog and preview sidebar
- Introduce two new config options:
- `filament_multi_colors`
- `filament_color_types`
to both the application config and the 3MF config
jira: STUDIO-12346
Change-Id: I66f8c1ec9147df4f5948c8a329c1737551280e63
(cherry picked from commit 522dc0bbca49033a1ba9725ca7f6c3ea729691a6)
/run/build/BambuStudio/src/slic3r/GUI/SkipPartCanvas.cpp: In lambda function:
/run/build/BambuStudio/src/slic3r/GUI/SkipPartCanvas.cpp:55:14: error: ‘map’ is not a member of ‘std’
55 | std::map<cv::Vec3b, int, std::function<bool(const cv::Vec3b &, const cv::Vec3b &)>> colorCount(
| ^~~
/run/build/BambuStudio/src/slic3r/GUI/SkipPartCanvas.cpp:13:1: note: ‘std::map’ is defined in header ‘<map>’; this is probably fixable by adding ‘#include <map>’
12 | #include <filesystem>
+++ |+#include <map>
13 |
(cherry picked from commit b9402b5be60188e8867471b64c3bc1d8c1d6bfa7)
/run/build/BambuStudio/src/slic3r/GUI/SkipPartCanvas.cpp: In member function ‘void Slic3r::GUI::_BBS_3MF_Base::log_errors()’:
/run/build/BambuStudio/src/slic3r/GUI/SkipPartCanvas.cpp:598:47: error: ‘BOOST_LOG_TRIVIAL’ was not declared in this scope
598 | for (const std::string &error : m_errors) BOOST_LOG_TRIVIAL(error) << error;
| ^~~~~~~~~~~~~~~~~
(cherry picked from commit dba7f3ad07f530ddce3e75eaf8f357794cfd1935)
/run/build/BambuStudio/src/slic3r/GUI/PartSkipDialog.cpp: In lambda function:
/run/build/BambuStudio/src/slic3r/GUI/PartSkipDialog.cpp:495: error: ‘lexical_cast’ is not a member of ‘boost’
495 | url += "&refresh_url=" + boost::lexical_cast<std::string>(&refresh_agora_url);
(cherry picked from commit fc8537c038a8dcc419f8b5558feb71700b77c996)
JIRA: STUDIO-9372 STUDIO-9374 STUDIO-9368
If the printer version does not support uploading, the original protocol
will be used
Change-Id: I3d47ac2567c2c6709a5b983ff1ad552d9a8606d4
(cherry picked from commit b8dde8ae7f4f5883fc163c57bb607a08ecdabf2b)
Includes (but is not limited to) the following commits:
SPE-2218 - libvgcode - Fixed color of wipe moves for speed range view
SPE-2218 - libvgcode - Fixed detection of fan speed range
SPE-2218 - libvgcode - Fixed detection of temperature range
SPE-2218 - libvgcode - Fixed colors for Actual volumetric flow rate view
SPE-2214 - Fixed detection of toolpaths bounding box in GCodeViewer
SPE-2206 - Modified LibBGCode.cmake to get latest version of libbgcode which fixed parsing of gcode lines G4
libvgcode - Fixed potential out of bound access in ViewerImpl::update_view_full_range()
Tech ENABLE_GL_CORE_PROFILE set as default
Tech ENABLE_OPENGL_ES replaced by build option SLIC3R_OPENGL_ES
libvgcode - Precompiler definition of ENABLE_OPENGL_ES moved into CMakeLists.txt
Added missing include
libvgcode - Textures setup modified to work when building using emscripten
libvgcode - small optimization
libvgcode - fixed OpenGLWrapper::unload_opengl()
libvgcode - CMakeLists.txt modified to work with emscripten
libvgcode - Replace 'glVertexAttribIPointer()' with 'glVertexAttribPointer()' in SegmentTemplate::init() for OpenGL ES
libvgcode - Replace 'xor' with '^' Bitset.hpp
libvgcode - Newer glad library for OpenGL 4.6 and OpenGL ES 3.0
libvgcode - Alternate fix in method ViewerImpl::update_heights_widths() for OpenGL ES
libvgcode - Fixes in glAssertRecentCallImpl()
libvgcode - Fixes in method ViewerImpl::update_heights_widths() for OpenGL ES
Fixed ES shaders so they work with OpenGL ES 3.0
libvgcode - Use multiple plain textures in place of texture buffers for OpenGL ES
libvgcode - Use plain textures in place of texture buffers for OpenGL ES (partial implementation using one texture per buffer)
libvgcode - refactoring of class OpenGLWrapper
libvgcode - small refactoring in shaders
libvgcode - replacement of glMapBuffer() call for OpenGL ES
Fixed warning
libvgcode - Changes into CMakeLists.txt
Fixed debug export of gcode data to be configuration indipendent
Disabled tech ENABLE_NEW_GCODE_VIEWER_DEBUG
Removed obsolete tech ENABLE_GCODE_VIEWER_DATA_CHECKING
Code cleanup and techs removal - completed
Code cleanup and techs removal - step 1
SPE-1872: Implemented G2/G3 lines discretization for gcfMarlinFirmware firmware flavour
SPE-1872: Corrections into GCodeProcessor::process_G2_G3() to match firmware code
SPE-1872: Actual speed profile - Further enhancements of imgui debug window
SPE-1872: Actual speed profile - Rework in its calculation + enhanced imgui debug window
SPE-1872: New imgui widget to show actual speed profile
SPE-1872: Fixed actual speed for seam moves and at extrusion/travel/wipe start
SPE-1872: Fixed rendering of wipe moves when actual speed view is selected
SPE-1872: Actual speed profile extended to travel and wipe moves
SPE-1872: Fixes in function recalculate_trapezoids() and method GCodeProcessor::TimeMachine::calculate_time() to smooth actual speed profile
SPE-1872: Added debug graphic to show move actual speed profile
SPE-1872: libvgcode library: replace volumetric flow rate data with mm3_per_mm to reduce memory usage
SPE-1872: Added visualization of actual volumetric flow rate
SPE-1872: Fixes in calculating actual speed
SPE-1872: Added visualization of actual speed in gcode preview
SPE-2124: Added command line option 'opengl-aa' to allow the user to turn on the automatic selection of max number of supported samples for OpenGL antialising
#12117: Reduced moire patterns by using the highest number of samples available for multisampling
New gcode visualization integration - Partially enabled imgui debug window
New gcode visualization integration - Fixed center of gravity calculation and rendering
New gcode visualization library - Interface for estimated times
New gcode visualization library - Tool marker rendering
New gcode visualization library - Axes aligned bounding boxes calculation
Removed obsolete debug code
New gcode visualization library - Added statistic of used memory
New gcode visualization library - Separation of tool colors and color changes colors to simplify client code
Added missing include
New gcode visualization library - Added print color changes detection
New gcode visualization library - Modified OpenGL ES context detection
New gcode visualization library - Another makefile cleanup
New gcode visualization library - Makefiles cleanup
New gcode visualization library - Added suppression of error 'This function or variable may be unsafe' in VS2022
New gcode visualization library - Compatibility with OpenGL ES
New gcode visualization library - Interface cleanup and documentation
New gcode visualization library - Extended interface to give access to estimated times
New gcode visualization integration - Toggling of top layer only view state
New gcode visualization integration - Removed imperial units from tool position data
Small refactoring
New gcode visualization library - Custom values for travel and wipe moves radius
New gcode visualization library - Allow customization of range colors
New gcode visualization library - Partial update of interface comments/documentation
New gcode visualization integration - Follow-up of 35ee55e29bb231fd01a2eb71ae293832a37ca65d - Better fix for toolpaths visible range when toggling options' visibility
New gcode visualization integration - Fixed toolpaths reset
New gcode visualization library - Fixed method set_option_color()
New gcode visualization library - Fixed method ViewerImpl::set_extrusion_role_color()
New gcode visualization library - Added methods to release gpu resources on demand.
New gcode visualization library - Travel and wipe moves as options
New gcode visualization integration - Fixed toolpaths visible range when toggling options' visibility
New gcode visualization integration - Fixed management of gcode preview view type
New gcode visualization - Fixed wrong include
New gcode visualization - Added missing headers
New gcode visualization - Refactoring + added missing headers
New gcode visualization - New code set as standalone library + embed glad library to load OpenGL functions
New gcode visualization - Fixed errors and warnings when building the new code as a standalone library
New gcode visualization integration - Fixed layers ordering in pre-gcode preview
New gcode visualization integration - Fixed objects' tool colors in pre-gcode preview
Code cleanup
New gcode visualization integration - Tool position properties data window
New gcode visualization integration - Fixed in export toolpaths to obj
New gcode visualization - Inlining in source code
Refactoring
New gcode visualization integration - Export toolpaths to obj
Some refactoring and warning fix
New gcode visualization integration - Customizable travel moves colors
New gcode visualization integration - Customizable options colors
New gcode visualization integration - Customizable extrusion roles colors
New gcode visualization integration - Fixed pre-gcode preview layers times
New gcode visualization integration - Modify pre-gcode preview to use the new toolpaths renderer, objects WIP
New gcode visualization - Modify pre-gcode preview to use the new toolpaths renderer, WIP (brim/skirt/wipe tower)
New gcode visualization integration - Do not reset visible range when toggling options/roles visibility
New gcode visualization - Fixed color of first vertex of top layer (when top layer only option is enabled)
New gcode visualization - Customizable travels and wipes segment radius
New gcode visualization integration - Removed tech ENABLE_GCODE_VIEWER_STATISTICS
New gcode visualization integration - Added check of OpenGL version
New gcode visualization integration - Removed GCodeProcessorResult::spiral_vase_layers
Another bunch of warnings fixes
Fixed warnings
New gcode visualization integration - Removal of old visualization
Fixed includes
New gcode visualization integration - File structure of new code separated in api + src
New gcode visualization integration - View ranges management moved to new visualizer
New gcode visualization integration - Fixed top layer only visualization for MMU printers
New gcode visualization integration - Removed dependency on imgui from new visualizer
Some refactoring
New gcode visualization integration - Removed dependency on Slic3r::GCodeProcessorResult from new visualizer
New gcode visualization integration - Moves' data conversion moved to client side
New gcode visualization: layers times refactoring
A bunch of fixes for the new gcode visualization
New gcode visualization: render in gray color layers containing pause print or custom gcode options when in Color Print view
New gcode visualization integration - Tool colors
New gcode visualization integration - Layers times
New gcode visualization integration - Travels and Extrusion roles times
Fixed detection of start/end of contiguous extrusion paths
New gcode visualization integration - Extrusion roles
New gcode visualization integration - Colors
New gcode visualization integration - Tool position
Center of gravity and tool marker may both be rendered with fixed screen size and a scaling factor
Fixed rendering of options in new gcode visualization
Tool marker NOT rendered by the new visualization code
Center of gravity marker NOT rendered by the new visualization code
Fixed toolpaths_cog shaders
Tool position window for new gcode visualization
Top layer only coloring for neww gcode visualization
Refactoring in preview's new visualization
Hidden imgui debug dialog for new visualization in preview
Synchronization of moves between old and new visualization
Fixed missing gcode window in new visualization
Rendering of debug imgui dialog moved from class libvgcode::Viewer to class libvgcode::Toolpaths + warnings fixing
Some functionality moved from class libvgcode::Viewer to class libvgcode::Toolpaths
Some refactoring and cleanup
Refatoring of PathVertex and Toolpaths::load()
SPE-1982: Tech ENABLE_NEW_GCODE_VIEWER - 1st installment of new toolpaths rendering code (WIP)
/run/build/BambuStudio/src/slic3r/GUI/PrePrintChecker.cpp: In member function ‘void Slic3r::GUI::PrinterMsgPanel::SetLabelList(const std::vector<wxString>&, const wxColour&)’:
/run/build/BambuStudio/src/slic3r/GUI/PrePrintChecker.cpp:182:10: error: ‘set’ is not a member of ‘std’
182 | std::set<wxString> unique_texts;
| ^~~
/run/build/BambuStudio/src/slic3r/GUI/PrePrintChecker.cpp:4:1: note: ‘std::set’ is defined in header ‘<set>’; this is probably fixable by adding ‘#include <set>’
3 | #include "I18N.hpp"
+++ |+#include <set>
4 |
(cherry picked from commit 4c9be9a0e42d5e7b94086bcc696c75aa8319c63d)
/run/build/BambuStudio/src/libslic3r/PrintApply.cpp:313:28: error: ‘diff’ was not declared in this scope
313 | Polygons res = diff(printable_poly, poly);
| ^~~~
/run/build/BambuStudio/src/libslic3r/PrintApply.cpp:317:39: error: ‘intersection’ was not declared in this scope; did you mean ‘Slic3r::line_alg::intersection’?
317 | Polygons all_extruder_polys = intersection({printable_poly}, extruder_polys);
| ^~~~~~~~~~~~
| Slic3r::line_alg::intersection
In file included from /run/build/BambuStudio/src/libslic3r/Polygon.hpp:7,
from /run/build/BambuStudio/src/libslic3r/BoundingBox.hpp:7,
from /run/build/BambuStudio/src/libslic3r/Geometry.hpp:5,
from /run/build/BambuStudio/src/libslic3r/Model.hpp:6:
/run/build/BambuStudio/src/libslic3r/Line.hpp:123:24: note: ‘Slic3r::line_alg::intersection’ declared here
123 | template<class L> bool intersection(const L &l1, const L &l2, Vec<Dim<L>, Scalar<L>> *intersection_pt)
| ^~~~~~~~~~~~
/run/build/BambuStudio/src/libslic3r/PrintApply.cpp: In lambda function:
/run/build/BambuStudio/src/libslic3r/PrintApply.cpp:323:22: error: ‘intersection’ is not captured
323 | if (!intersection(poly, contours[i]).empty()) { result.insert(static_cast<int>(i)); }
| ^~~~~~~~~~~~
(cherry picked from commit 00f4bbef9bcab1d7bb15ccfaf7bb4d3208b4bd12)
1. Should set plate index before send file
jira:STUDIO-12431
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Id7828069a81f5671b0a6b90d7b0c9b703b10a9cc
(cherry picked from commit fd1e17f818c5c8e38d207e1e829dc5c5749e6f65)
The prime tower is not allowed to extend beyond the plate boundary when moving it.
jira: STUDIO-11817 & STUDIO-12313
Change-Id: Icbb85dad26531b0ac01f088fc086b4ff499ac423
(cherry picked from commit 8f4d5f44d721fa9cae70cd9b47735c93151f2b81)
JIRA: none
Change-Id: I163550c2e784a5920dbfeb3ee7d9344506da1567
Signed-off-by: Stone Li <stone.li@bambulab.com>
(cherry picked from commit fc6b447b4ae84901b17431ae1766fc581233e1f1)
1. Remove popup message with PVA
2. Add popup message with PETG
3. Encourage users to print both support base and interface with Supp.PLA
jira: STUDIO-11984
Change-Id: I7be5d033e47939b9b80ddb99635b2abbb8c848d5
(cherry picked from commit c7d05861270f925411256d8ce20093ec1701230a)
This might help improve the quality and strength of supports.
jira: STUDIO-11985
Change-Id: I51644c84b9ede018a08a0f2b8fdca5d271d69991
(cherry picked from commit ba5dbc544b65276d772834305fcca6b5f7536d6e)
This reverts commit e62d66565b2959f4131afe52b3471e7226c42966.
Reason for revert: not ready
Change-Id: I0c5146a19d08315af6816133079e92d902d65044
(cherry picked from commit fda752bb79dd7b9a3312ebac9c5d8479e528982e)
JIRA: STUDIO-9372 STUDIO-9374 STUDIO-9368
If the printer version does not support uploading, the original protocol
will be used
Change-Id: I3d47ac2567c2c6709a5b983ff1ad552d9a8606d4
(cherry picked from commit b8dde8ae7f4f5883fc163c57bb607a08ecdabf2b)
1. Caused by passing sentences to js. If failed, use raw english sentences
jira: NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I48ea55101be26449ca2fd6e2bb5b08c596fe0087
(cherry picked from commit 47f714bf2fe5ab88c906a3fcbb28f1a715565315)
/run/build/BambuStudio/src/slic3r/Utils/WxFontUtils.hpp: At global scope:
/run/build/BambuStudio/src/slic3r/Utils/WxFontUtils.hpp:44:56: error: ‘wxDC’ has not been declared
44 | static void get_suitable_font_size(int max_height, wxDC &dc);
| ^~~~
(cherry picked from commit 7f24d5123766fbcfcec6f1343eefa32edb6254d6)
In file included from /run/build/BambuStudio/src/slic3r/GUI/FilamentGroupPopup.cpp:1:
/run/build/BambuStudio/src/slic3r/GUI/FilamentGroupPopup.hpp:60:17: error: ‘wxBitmapButton’ was not declared in this scope
60 | std::vector<wxBitmapButton*> radio_btns;
| ^~~~~~~~~~~~~~
/run/build/BambuStudio/src/slic3r/GUI/FilamentGroupPopup.hpp:60:32: error: template argument 2 is invalid
/run/build/BambuStudio/src/slic3r/GUI/FilamentGroupPopup.hpp:65:14: error: field ‘checked_bmp’ has incomplete type ‘wxBitmap’
65 | wxBitmap checked_bmp;
| ^~~~~~~~~~~
(cherry picked from commit ab345221437f52606c54c76fd9837bd9dad98d1c)
In file included from /run/build/BambuStudio/src/slic3r/GUI/FilamentGroupPopup.cpp:1:
/run/build/BambuStudio/src/slic3r/GUI/FilamentGroupPopup.hpp:33:18: error: ‘wxTimerEvent’ has not been declared
33 | void OnTimer(wxTimerEvent &event);
| ^~~~~~~~~~~~
(cherry picked from commit b890f0a39fcb48a1f1e1ee01f2aacf5d2fa35ad6)
/run/build/BambuStudio/src/slic3r/GUI/WipeTowerDialog.cpp: In constructor ‘WipingDialog::WipingDialog(wxWindow*, const std::vector<std::vector<int>, std::allocator<std::vector<int> > >&, int)’:
/run/build/BambuStudio/src/slic3r/GUI/WipeTowerDialog.cpp:123: error: ‘wxDisplay’ was not declared in this scope; did you mean ‘wxGetDisplay’?
123 | double scale_factor = wxDisplay().GetScaleFactor();
(cherry picked from commit c6f2b0e950e607b24a74e797534e0aa7f6216d6f)
/run/build/BambuStudio/src/slic3r/GUI/ImGuiWrapper.cpp: In static member function ‘static ImVec2 Slic3r::GUI::ImGuiWrapper::suggest_location(const ImVec2&, const Slic3r::Polygon&, const ImVec2&)’:
/run/build/BambuStudio/src/slic3r/GUI/ImGuiWrapper.cpp:2201: error: ‘intersection’ is not a member of ‘Slic3r’; did you mean ‘PrinterFunction’?
2201 | if (Slic3r::intersection(interest, Polygon(moved_polygon)).empty())
(cherry picked from commit de2b5b74cecda595d75fef894da4a92936e0cb7f)
In file included from /run/build/BambuStudio/src/slic3r/GUI/WipeTowerDialog.cpp:4:
/run/build/BambuStudio/src/slic3r/GUI/WipeTowerDialog.hpp:8:1: error: expected class-name before ‘{’ token
8 | {
| ^
(cherry picked from commit 989d9f36b5a495e2d9b2e3c76d849a3b79f49799)
/run/build/BambuStudio/src/slic3r/GUI/CapsuleButton.cpp: In member function ‘void Slic3r::GUI::CapsuleButton::OnPaint(wxPaintEvent&)’:
/run/build/BambuStudio/src/slic3r/GUI/CapsuleButton.cpp:63: error: ‘wxAutoBufferedPaintDC’ was not declared in this scope
63 | wxAutoBufferedPaintDC dc(this);
/run/build/BambuStudio/src/slic3r/GUI/FilamentMapPanel.cpp: In member function ‘void Slic3r::GUI::FilamentMapBtnPanel::OnPaint(wxPaintEvent&)’:
/run/build/BambuStudio/src/slic3r/GUI/FilamentMapPanel.cpp:182: error: ‘wxAutoBufferedPaintDC’ was not declared in this scope
182 | wxAutoBufferedPaintDC dc(this);
(cherry picked from commit 05d977b553c24338286d9b01d8888e46214216c6)
/run/build/BambuStudio/src/slic3r/GUI/DragDropPanel.hpp:36:5: error: ‘wxGridSizer’ does not name a type; did you mean ‘wxSizer’?
36 | wxGridSizer *m_grid_item_sizer;
| ^~~~~~~~~~~
| wxSizer
(cherry picked from commit 06a146e20cbc9642b3f65a5173ffbee3c052798c)
/run/build/BambuStudio/src/slic3r/GUI/3DScene.hpp: At global scope:
/run/build/BambuStudio/src/slic3r/GUI/3DScene.hpp:65:5: error: ‘FilamentMapMode’ does not name a type
65 | FilamentMapMode mode;
| ^~~~~~~~~~~~~~~
(cherry picked from commit eaec4c997eca8310e9037b70567dceed79dd210c)
/run/build/BambuStudio/src/libslic3r/FilamentGroupUtils.cpp: In lambda function:
/run/build/BambuStudio/src/libslic3r/FilamentGroupUtils.cpp:92:18: error: ‘regex’ is not a member of ‘std’
92 | std::regex r1(R"(^Sup.(\w+)$)");
| ^~~~~
(cherry picked from commit bba6fa71a4a7fb931a93b9e5aa3be02865a0357e)
/run/build/BambuStudio/src/slic3r/GUI/Widgets/DropDown.cpp:281:10: error: ‘set’ is not a member of ‘std’
281 | std::set<wxString> groups;
| ^~~
(cherry picked from commit 842152b65a3584a9a59950f52260b20951dd09a5)
/run/build/BambuStudio/src/libslic3r/GCode/ToolOrderUtils.hpp:14:26: error: ‘numeric_limits’ is not a member of ‘std’
14 | const int INF = std::numeric_limits<int>::max();
| ^~~~~~~~~~~~~~
/run/build/BambuStudio/src/libslic3r/GCode/ToolOrderUtils.cpp:545:66: error: ‘unordered_set’ in namespace ‘std’ does not name a template type
545 | static std::vector<T> collect_filaments_in_groups(const std::unordered_set<unsigned int>& group, const std::vector<unsigned int>& filament_list) {
| ^~~~~~~~~~~~~
(cherry picked from commit 059e18aa38ccc715a6c1f2dc1ceb9af1940c7a17)
/run/build/BambuStudio/src/libslic3r/PrintConfig.cpp: In function ‘std::vector<std::map<int, int> > Slic3r::get_extruder_ams_count(const std::vector<std::__cxx11::basic_string<char> >&)’:
/run/build/BambuStudio/src/libslic3r/PrintConfig.cpp:454:27: error: ‘split’ is not a member of ‘boost::algorithm’
454 | boost::algorithm::split(ams_infos, str, boost::algorithm::is_any_of("|"));
| ^~~~~
(cherry picked from commit bf32b5a489670df588ee2ac217275c6c0b8170ba)
/run/build/BambuStudio/src/libslic3r/PresetBundle.cpp: In member function ‘unsigned int Slic3r::PresetBundle::sync_ams_list(std::vector<std::pair<Slic3r::DynamicPrintConfig*, std::__cxx11::basic_string<char> > >&, bool, std::map<int, Slic3r::AMSMapInfo>&, bool, Slic3r::MergeFilamentInfo&)’:
/run/build/BambuStudio/src/libslic3r/PresetBundle.cpp:1973:49: error: ‘L’ was not declared in this scope
1973 | unknowns.emplace_back(&ams, L("The filament model is unknown. Still using the previous filament preset."));
| ^
(cherry picked from commit a8d792ecf8508c030e27aae139eeaf45884ebdc7)
/run/build/BambuStudio/src/libslic3r/GCode/WipeTower.cpp:3327:26: error: ‘offset’ was not declared in this scope; did you mean ‘off_t’?
3327 | outer_wall = offset(outer_wall, scaled(spacing)).front();
| ^~~~~~
| off_t
(cherry picked from commit c77afa7096c48c2b3e2559b39252bafca3f87b28)
1. For cases where light color switch to dark color, multiply the value
with 1.3
jira : NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I6b5b2f8e9578d031bbf830ecf18f0069865af2e6
(cherry picked from commit cfa54c55058cd9ed2bd76de7a1158b06bf3501a9)
1.Alsoe set default flush from support to 700
jira: STUDIO-10595
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I0d0a85cdac5e63b787c16b35ed6c05afc885a715
(cherry picked from commit 5fea5e6696a28d7ec9edcde38c43700cb3b7f596)
and add wiki link for tpu and brittle materials
jira: none
Change-Id: I15202158cc2ff9b710e80e181bcdf9659e93ff75
(cherry picked from commit a967c41edcc2489e2b348637e4cdfcefa22b2914)
1. Use url for video and wiki
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Id1c195ecb3348f951d00b15273c94c7edd655e33
(cherry picked from commit 9eb5a057d4766b8bae52f2d64696206f768c6c65)
This reverts commit 74f0c8a63c220d688b503bff87f927c94749eef9.
Reason for revert: <add back now>
jira: none
Change-Id: I07c42c264b820fdd5beff1556f6615b22e278b28
(cherry picked from commit cbaf4d9a12d3aaa3507038d93ee5ecee848f8088)
Jira: none
extrude 5 mm in place before drawing the pre-extrusion line
to ensure the filament stick to bed
add a dirty detection feature for carmera
support dual-head high-low temp check
Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: Ia365d99fe764acf4815d24cfb96532b6f1d79990
(cherry picked from commit d17f5586103e4b87c8ae875846253658afb6e42d)
when adding double-head related material parameters
jira: none
Change-Id: I666e1069746d2c284f59ca2ac0f44c664c578a63
(cherry picked from commit 4af6386302ac8daf7349099009f2ad73111d1b0c)
switch configs between single extruder and multiple extruders
jira: no-jira
Change-Id: I3a7ebd590b061f7dec4d8d12d5508e869a941beb
(cherry picked from commit 1e4c82c781ff8a634cecc9e419377c36f0775492)
/run/build/BambuStudio/src/libslic3r/GCode/WipeTower.hpp:31:12: error: ‘TriangleMesh’ does not name a type
31 | static TriangleMesh its_make_rib_tower(float width, float depth, float height, float rib_length, float rib_width, bool fillet_wall);
| ^~~~~~~~~~~~
<snip>
/run/build/BambuStudio/src/libslic3r/GCode/WipeTower.hpp:33:12: error: ‘Polygon’ does not name a type
33 | static Polygon rib_section(float width, float depth, float rib_length, float rib_width, bool fillet_wall);
| ^~~~~~~
<snip>
/run/build/BambuStudio/src/libslic3r/GCode/WipeTower.hpp:200:21: error: ‘Polylines’ was not declared in this scope
200 | std::map<float, Polylines> get_outer_wall() const
| ^~~~~~~~~
<snip>
(cherry picked from commit ea2c021427dddcddb8a4e9e41c0f649dd727fdf9)
1. set wipe tower real height
2. fix wipe tower small arc error
3. add rib_width constraint to ensure that the rib wall of the wipetower are attached to the infill.
jira: STUDIO-10540
Change-Id: Idfdc809f0236121d98587ac2a09a2ebbf5caf945
(cherry picked from commit 3a7dcfd23249571224a4d538c55907a0a5c6154d)
and fix crash on calipresetpage
jira: STUDIO-10669
Change-Id: I93aecdcc360d47baa72ef08af711f3d06206d5e2
(cherry picked from commit 926cfb14d28a196082b2437ace182e960c0c66c2)
enable timelapse and the first layer has no toolchange
jira: STUDIO-10698
Change-Id: Ia503efe4a143fe98f67cd3913b7745d74b113170
(cherry picked from commit a4388010bd289f15d57044b208a2aa2116f76332)
because of 2x nozzlechange width
jira: none
Change-Id: I3a9af777551c54b8bac273bf1f6e06c9f36673bb
(cherry picked from commit 99af2382c4a6d8d942611b4d1145b4d8872a99a8)
because [0,0] will cause the wipetower to disappear in low-layer-height models with enable smooth timelapse type.
jira: none
Change-Id: I6fe3d4128e9b284ae7660f7e0f9f8b62f74cf427
(cherry picked from commit d5b570d8dccd2b96620e0448c3657c1d21cc8844)
1.Also add a new field to mark whether enable high low temp mix
jira: NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I208e0e7a4ce75feccc8659ecf940447e591d9505
(cherry picked from commit e79ba2f1ec64953100319a3d86ef9105cc7c3567)
when enter from plate parameter which lead slice error
jira: STUDIO-10556
Change-Id: Iea15547b5f17a34d0b222000dee990d8dc39bcd8
(cherry picked from commit 0f2d10f35d5e447b89be0c3e39bc532f1a0b687c)
2. Improve the judgment and display of the extruder printing area
jira: none
Change-Id: Ie9e1991904bfbc5bffceedb7810b1d1fa598933b
(cherry picked from commit ca5ec101f9a679d8ea4360d96a2db606923b8429)
and use bridge flow for nozzlechange
jira: none
Change-Id: I9bda1b689d7139819607bace09354ef43d27a970
(cherry picked from commit 147e7bdb50765143074dd8111c24f8c1b61872dc)
and resolve the infinite loop during multiple material changes when printing TPU.
jira: none
Change-Id: I9d0fb142ced6ba894803fd4c9b9b665e2fa93d92
(cherry picked from commit aad1ab2090781e072053dfe16764a3e05bb57178)
and fix conflict checking when the wipe tower's brim fully encloses the model
jira: STUDIO-10237, STUDIO-10296
Change-Id: I6e2a6640c06ddb6b3af700c9048fa26434411631
(cherry picked from commit b36c41e5146168325d8b7ec966eb97f1062442a7)
1.Support auto flush when change printer and nozzle volume type
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I9dfc2fff095bbf1901afe99556d1e57aa225f482
(cherry picked from commit f12305832227940eb0eae05817ad046dd4eff02d)
jira: STUDIO-10467
set the filament selected to visible if it is selected
Change-Id: I376101c7c01b2f6dd85e780abd3ad69c81bcc0d6
(cherry picked from commit b957d5111b28d3d028153f9314b5a53389ef95d8)
when filament printable check is not valid
jira: none
Change-Id: I6d98e3aa27b063d2e7431f7aa5637348978331f2
(cherry picked from commit b0a8dd1014d3184be8ef9f2a4e9bd304cf4bdea3)
when enter "merge result" in cali page
jira: STUDIO-10409
Change-Id: I03c49306342cda9b9c305b188201ec6f5b6ab1f1
(cherry picked from commit 75ab432b124dad3a3d66e3a6a069c8543cf8e0b6)
and fix the nozzlechange's error cleanbox.
and fix some error in interface's nozzlechangle and toolchange.
jira: none
Change-Id: I2fd5c68d90506fcb8f01f09a8246dfb5838baef4
(cherry picked from commit 6c5b63db246a1f42e34225c5561fb8b0975da53b)
and reduce the toolchange speed if it occurs at the contact surface
jira: none
Change-Id: Ic238671366145bc7bff76d18d20c104a201a1f17
(cherry picked from commit fb9f9f41e618c5064032b85351363029307e209c)
when switch printer, we found some filament preset not visible
and we need to allow it to be selected
jira: STUDIO-9979
Change-Id: I9613747a755f449c2f48563082b6893e426f37ea
(cherry picked from commit bc5514bbabbbaddefb33ade556a0f15c051aed7e)
1. Try to merge filaments before grouping
2. Set max match num for machine filamnet in match mode
jira:STUDIO-10392
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I2451d838e07ee02f493fda4dc702f3d13b2ad37b
(cherry picked from commit d15fc37ff2fa048e38a0b132bb3ae525ff666fab)
1. In slice plate mode,force use plate mode
2. In slice all mode, force use global mode
jira:STUDIO-10390
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I3edb559043fdc52339b7f611643b8f5ac116571d
(cherry picked from commit f042c817a7ed21b4b18915e2a649aed733a80f48)
and set the contact surfaces of different material types as solid,
and reduce the nozzlechange speed if it occurs at the contact surface,
and recuce the toolchange speed if it occurs at the contact surface.
jira: none
Change-Id: I884d60f4114544dfa959bd654ecc985f5fb9aac4
(cherry picked from commit ed7bfd3ff6732efe6c7e9eb96901be1db00bb3d0)
In the original logic, the gcodeEditor did not parse gcode lines with
leading spaces. In recent changes, all leading spaces in gcode lines
were removed, causing all gcode to be parsed. However, some certain cmd
perform additional actions, leading to incorrect state recording. As a
result, based on the erroneous state, some gcode lines that should not
be deleted are being removed.
This logic needs to be optimized in the future.
jira:10357,10367
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: If34b9c3b2913768b824030685e0a36708ca3a5ca
(cherry picked from commit 16813aa46092343c70681f3145a4f402ff415042)
1. the nozzle change gcode use double perimeter width
2. fix the error layer height for adaptive layer height
3. limit the nozzle change speed to 50 when a bridge is detected
4. fix the error extrusion flow for filament change gcode when a bridge is detected
jira: STUDIO-10269
Change-Id: I580c618555fe19d000a56e2510a42004722c1b8b
(cherry picked from commit 5c56b43166ab32b09da31b7046efbbcbe3cbc9c8)
from mulit-extruder to single-extruder
jira: none
Change-Id: I0fc00a279dbc7f5d6b1fb6df5556375bfb95782e
(cherry picked from commit 01075411dc81c8d7c34551525f93fecd8829a3c5)
1. Add filament_is_support field. Format the filament type
2. Optimize machine filament info logic
jira:STUDIO-10326
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ia8bfc37095339e73c98209b4e3f1e0804e511e88
(cherry picked from commit 001144400b841629439a890d46fa40a7296689ba)
after enabling the ribbed outer wall
jira: STUDIO-10294
Change-Id: I08bd00c3c3ef643f4226ce0b882cd62ff680ae65
(cherry picked from commit cfeb574422741bbe48747aa7305fea2a13b6d834)
of the wipe tower's outer wall to use the actual outer wall path.
jira: none
Change-Id: Ib45ecbc328c88c1abe6d9e8567f715331a3ddd37
(cherry picked from commit 0a20f1fe6d6d63cdcb13bc19fd9ae553f45b6f59)
1. Add "Sup." prefix for support filament
2. Align the filament group elems
jira:STUDIO-10263
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Idd6d11d14cd378142dff03596eea5efb47dde79f
(cherry picked from commit 038df3180a5b79cde7980b0f3cdecb4bbfffc820)
and fix wipe error when enable timelapse and in single color
and set rib wall as default
jira: none
Change-Id: Ic365bb7ee0ee6715c9d4f4f00b4bca9fd472c61a
(cherry picked from commit 89b59f1c41e0f360457622438a09237bfa1eaa18)
1.Caused by too big tolerance
jira:STUDIO-10236
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I0ba182991bc70ca2d3a34a85b87fa7539c5e50d9
(cherry picked from commit d2ae5ea32c55c0023b27fac73a7479c2bd9a7e1c)
1.Always pop up to switch support type for PVA filaments
2.Rename the old "on_filament_change" to "on_filament_count_change",
add a new function as "on_filament_change"
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ib5a96f2334bbe016db6661864d44e66c1fc5660f
(cherry picked from commit a17aa8c701d05cee57fb9d422a5bcde9f434fd7b)
and reduce the travel speed inside the wipe_tower
jira: none
Change-Id: I3b07ee62623e0cdc2f1824f0011f95776020bee1
(cherry picked from commit 1aad582e08229fad1f935e257c1335dcfdbe406c)
2. use most used extruder for timelapse without wipe tower
3. apply retract_when_changing_layer for multi_extruder
jira: none
Change-Id: I4ff00573fd8a6ee9fa42877e3e7056d547e4d864
(cherry picked from commit 4715fa14edf2bdfc1170b0461da699903a3078a4)
when enable timelapse_print without toolchange;
jira: none
Change-Id: I4c89acc70ee122c0ad504d97c003ebb4016567d1
(cherry picked from commit 6350ebf9b651a933ab8a9030da9cdf9b1608cff0)
for X and P machine
2. remove lift and retract in filament_change_gcode and layer_change_gcode
jira: none
Change-Id: I3da2d3ac7f0100d1963dcbb1228323666a060534
(cherry picked from commit 5c3d804b9fbe65532d2717e60b5f1143710b0ecf)
1. support traditional timelapse for H2D when printing by object
2. insert timelapse gcode when close wipe tower
3. remove hard gcode before filament gcode
jira: none
Change-Id: Ib56c21b1f07832f2cbc8ba5ab7f2e8653b3105bf
(cherry picked from commit 7613474cefd210685d16a5585608c0c7cb7efa95)
(cherry picked from commit fff787345625a0031934e609b1b3709e39decd4a)
1.Add a Trietree to match command instead of the switch sentence.
2.Support VM104 and VM109
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I5f6b3d1bf87baebc0a20c2589a5138538469dfec
(cherry picked from commit 85cb4a41c2a7e42552d7b8c04864e5199ae942e9)
Only update the last group id if there really has filaments
jira:STUDIO-10108
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I646f54c0bc4817f0b64364edc52b7263d2833c3c
(cherry picked from commit c6a12c38c589e15194a13632397754338cc82c93)
1. Remove error tip for unprintable areas if no longer needed
2. Add link for filament map dialog in error tip
jira:STUDIO-10073
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ic3235038de73a85964c6dbcb9b4f435e7aa47d34
(cherry picked from commit 1793060e96cec973d9606bd4fbe36686671e0fee)
when the connected machine is mutli_extruer and is the same as preset
2. fix the filament unprintable check bug
jira: STUDIO-10047
Change-Id: I4e78003f080897d5b43c0a742852078b149eba45
(cherry picked from commit 1fbc179ae4874d24089dc1faf81608b9417481cb)
after matching the untreated material
jira:STUDIO-10062
Change-Id: I699fd843600182bc87b224eee488e752b64ca0b4
(cherry picked from commit 29b0be89eb5190bd83d783bf173f14950aef738d)
1.Add automatic calculation of the wipe_tower's brim width by height;
2.modify the min_depth_per_height and the default ridwidth
jira: none
Change-Id: Idd96bc90e8e631aa8481b559e1e9fec24c6b822f
(cherry picked from commit 4dd4e9e12c02d945a0ac3fd2020f75313c5b2cc9)
also refine the text
jira: STUDIO-9809
Change-Id: Ifce527d3d19ead80b314611de8f3f861dc598188
(cherry picked from commit 014996d4258cef42ce943157d6485fad9cc98ee2)
when enter in prepare page
jira: none
Change-Id: I3dd0ac4fbc283d5c4b8e85d01724251cc1a7131e
(cherry picked from commit 34ed8441a16499f922e82b6c83f140eda58055a5)
If two objects have similar area, sort them by extruder id.
jira: STUDIO-9760
github: #5738
Change-Id: I6041fef4d3bfccce767555ac382688eea59e73c7
(cherry picked from commit ac4873d97686135b773226eb3487f0cc8cfe0503)
The old speed 50mm/s is too high and cause some print quality problems.
Also change the display of overhang speeds to better adhere to the code.
jira: STUDIO-9641
Change-Id: I6efa981db5bf88a9cf5bb70abb443cdfa1783025
(cherry picked from commit 979fefffd528ab1fb4e670fd88f716a3aed2e6f2)
1.Add filament type into consideration when selecting best map for
ams in filament saving mode
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I7d4a4ff66da479ab560eaeea614e5bbf0f930d3f
(cherry picked from commit 4b6f82d042cadbd65e66edbb1c8287791da5caa3)
1. Only check printablily if have explicit filament map
2. Refine some sentences
jira:STUDIO-9753,STUDIO-9727
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I2fc3aa2276dc6f514c50ac2fcaf9509f41e778f3
(cherry picked from commit 73f92d27dab667c8893ab96e47f3832ce9d2de60)
when obj is small, it uses the full build volume to compute the empty cell
we need to use the shared one
jira: STUDIO-9583
Change-Id: I4cc183df38e054a7b94579637a49168c2fb77992
(cherry picked from commit fea423cdad4ee1a24c077cfeed99962e89953d5b)
(cherry picked from commit 06d483ee462f6b1a7a3f39805c81ac0b6f0dfcca)
1. Add tag to mark the global map mode
2. Fix some wrong usage of bmp in code
3. Fix display error in dark mode
jira:STUDIO-9729
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Idb36a5022c403e02c26d7fe23a95dd6877deca90
(cherry picked from commit 5a2abf7e211327cde57717b5ab7b79b63c967bbd)
So objects are auto arranged near the chamber fan.
jira: none
Change-Id: Ia7c76c0b048fad51728d2b24c9dd6530c8c30497
(cherry picked from commit 0f37893bea4961e1461df0c55bb4ad95bd4fb17f)
1.Add sync command. Now gcode and dirrectly add time sync command
2.Add support for ceil and floor in placeholder
3.Update change filament gcode for H2D
jira: NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I6dd97cbd96bae1c2751c08357ff64947876d7471
(cherry picked from commit c99fcd454c2499b0c0e3ed9402a2182c00a9bffa)
1. Enable hover and pop up even if slice btn is disabled. Always
trigger background process schedule
jira: NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ie9c63c952eeb0f8a7611dd9929e656360609d11a
(cherry picked from commit 9340b4f89e3bd33f4f6d826118e90babe0ca694c)
1. the error start position after filament change
2. the error wall depth print with tpu
jira: none
Change-Id: I26d4e1c5c5c3bcae14555f9a875485435cdd6b97
(cherry picked from commit 753e2ac70870b43d52fa28437b9cc3cc0e174624)
2. modify the ams color
jira: STUDIO-9643 STUDIO-9572
Change-Id: I75ddffc6aa18d9b88df823170c44cfe6af905d03
(cherry picked from commit f4bcbfaf4a8594f30f2809cf1c7109824f581f1c)
JIRA: STUDIO-9376 STUDIO-9419
1. Cancel sending during sending and then resend failed
2. Optimization of prompt language after sending failure
Change-Id: I60bc4525b41cd4f803b811f0d1971bfed5cda0c5
(cherry picked from commit 92bd0cd18e4ea79b8b29f147e5ea09663837f7c0)
1. Always change the map and mode in plate if plate mode is not default
2. Always add pop up before slice
3. Fix the mapping issue in gcode viewer
jira: studio-9523,studio-9519,studio-9513,studio-9479
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I0d7d5daf081951ea2d49e06565762ac24064e77c
(cherry picked from commit afaa48520e16b6808f05e511ac1cfe91acadc84b)
and and modify the start position for tpu
jira: none
Change-Id: I75b09e7839ddd3b9fffe77392e573e1d8caa00d5
(cherry picked from commit fce47aa8cb59fb718ff30a7c7eebda30fc83119d)
Set fan speed to 40
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I861f78e2cca4b31daf41e2cba0a4b9b11a658a5d
(cherry picked from commit 4a087ef78070af66d7551aacdca74c9a2d4463f2)
recover the y position when timelapse gcode end
jira:none
Change-Id: I80b9b65395722e0190aa7d50bb064e095d8ec09d
(cherry picked from commit db5e28ddaa1d4d7c58888d817dd77c176556e106)
and modify the path of travel to the wipe_tower after flushing
jira:none
Change-Id: Id4b0571fd12372c59cf522c13e256c7cc4ac3565
(cherry picked from commit 17771d0fbf753dd22411ce490586958bd643264e)
and add most used_extruder for print by object
jira:none
Change-Id: I021069e865992828b098d73c0d704ba7edbd55d8
(cherry picked from commit ae62f7b8e4b4258318c0d941963eddfb70e86c15)
1. Detect unprintable area for extruder when slicing
2. Always do filament map again if object pos changed
jira:STUDIO-9473
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ic01b8be8e3b08ba6b34efb2d3c451c9e985a03e8
(cherry picked from commit f1445ff0477795e9baf3792348ff27d79ee2308c)
1. Add protection for building machine filaments.Sometimes we don't
know the info about maahcine filament
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I3198d3a1a8825aa50aa49734f60a32620fc4f890
(cherry picked from commit 0c60cefe5e188ba966f4c254f833ae81bc5da476)
1. Optimize performance with pop up
2. Optimize display in dark mode
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ic0f72a42e791fb58b84e7a88d7a34ced3a9e8c38
(cherry picked from commit 481ebc4a4b9353d8c9ef9d6bf64cb0006364e839)
when switching between single and multi-extruder printer
jira: none
Change-Id: I2f3bf3677b2a5409021e8c6eec7f49daca0764fd
(cherry picked from commit 99e45a3e66cb9cd61588c330eff728a78ff65d40)
jira:none
code is from PrusaSlicer,thanks for PrusaSlicer and Lukas Matena
commit e04e8c55cfc0498bb665f6fb515f3a8fcea64796
Author: Lukas Matena <lukasmatena@seznam.cz>
Date: Fri Dec 2 14:21:18 2022 +0100
Improved performance of GLModel::render:
The way the OpenGL version was checked was quite inefficient
Change-Id: I6d7c6678e383c5cf2fbfea5b61ef65beab5328f9
(cherry picked from commit 3e938c9216c07ad0c50b763851d7dc9aa906162d)
1.fix crash when deleting filaments after sync ams or inital start up
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I00c96fcebf7e0fbc127414eae44f184e3caf4dd9
(cherry picked from commit 6fb0ef6e68ed673d04c1c2311835e9988b1c70d3)
(cherry picked from commit 78b00bd0e3243bc4a4d1b72547b02ee85bf7a19a)
1.When there are identical materials, try to make the quantity of
materials for each nozzle as similar as possible after grouping.
2.Fix an encoding error
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Iad77d7a995b9c25d004026f409c7e2ecbb8269db
(cherry picked from commit 13d7cd06252678b6b084d17438e99ff808a4191d)
(cherry picked from commit 3cd587d09e066d6c6a27d466b7f663dfd5d674f3)
1.Should use idx in used filaments in filament group algorithm
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I5acc849827d84db090e61a45e80a3df2866b2724
(cherry picked from commit 84c55c10edfda91df16843f317ebc7912205b202)
(cherry picked from commit daaca0368626e68ba5bdb0ce6a90111292454119)
and current plate has no object not need sync nozzle and ams
jira: none
Change-Id: Ic3b724b3f05cce437228bca29ccd25bea021158f
(cherry picked from commit 6fe0dd2a3a9f726bfd255fca4e729249029af639)
1. Initilize the sentences in construct function
2. Fix some ui bugs
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I991df343932bb60d5ba86f41f641661f2159da47
(cherry picked from commit 05383187e02cc0dec6a541859d44237a63d01820)
1.Compare stats of AutoForFlush with other filament map modes
2.Refine the function signature of filament group
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Iec2aff069d8c44343df8b82f045c61354c7d1c2a
(cherry picked from commit 95e49986f32070756182a31843f4f37f863f07ac)
1. Clear filament map info in plate when switch to single extruder
profile
2. Use real filament map when check tpu validality
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I45a3e8c91dd52e7300a563eda3ffb167c19b7074
(cherry picked from commit d27304e5ef2f43424046b1a1fabc8d999508be4e)
1. Check machine sync logic before pop up filament map
2. Switch to auto for flush mode if is not synced
jira: NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I05ef0e610418767f763c5579f5fc85a4e9b79c47
(cherry picked from commit 5d7f8b126789ca4f8f20d5cfbcc70ac24efd4d6c)
1. Add filament group pop up when slice
2. Add more filament modes in filament dialog
3. Add capsule button
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I8bc3a2e08696e406b89e550a0335a1a36728ee65
(cherry picked from commit f1702a5c3604f685a3b35ea0e83d29bdbbd90f70)
1.Add more filament map modes
2.Filament map and mode are set as project config
3.Plate filament map is only valid when plate filament mode is
manual
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I33b2f853e0b77b9d605be1f2f1172b44df43da15
(cherry picked from commit e45f8c6dc2146e1e31a1c21e8aaada540af112d0)
1.Should get value by filament id instead of extruder id
2.Fix many other issues caused by incorrect usage
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I3278d7de0f8976a97c9e5ccef80bba4a58553f5a
(cherry picked from commit 30c51dd1171fc16ba778308745fab2eb246aedd0)
(cherry picked from commit e9027478f8948352d99d33519994b044ca18a65a)
2. fix crash of ams item
3. fix crash in update_sync_status when ams is not calibrated
jira: STUDIO-8934
Change-Id: I4c8acd36e2f921d0750c23d2b8a1d65dfa6b241a
(cherry picked from commit 21865dc0558dd5019fa3e800b51e01a9c923fd82)
and modify some UI part
jira: none
Change-Id: I9462a10adb7017a7038e5cd7e30cf393b63ae77b
(cherry picked from commit da68a52247c3a963b9d5df339da8f80ead617839)
JIRA: STUDIO-7801
Change-Id: I672082d97c5afa144f704959c0c56d70fddd3a6a
Signed-off-by: Stone Li <stone.li@bambulab.com>
(cherry picked from commit 3f94e72cae8e799e25b623e0c0924d7cf813fc5a)
for cut and text object
jira:github 5195
Change-Id: I17cd57fef0e4882167643174ae2ba36023cbe349
(cherry picked from commit f7e49a3846ee9887924b777f5b2cb154d1b5cc1f)
in ObjColorDialog
jira:STUDIO-9057
Change-Id: Iff2c6bcab29d34fdc881439c8cfb4f6c8d6d0838
(cherry picked from commit 1663a5550dc9e5d2882b33be381b4d35cb696ed1)
when update filament configs, we need to use the old filament variant count
jira: STUDIO-9201
Change-Id: Ibc0084997c264d8527dc9998018907c8af4b2043
(cherry picked from commit 462bfb0b6e941e2771440d8ee06cea149162b595)
(cherry picked from commit a54abad44c572cee0e39ef60822033739b3c3306)
jira: STUDIO-9131
reason: sometimes the popup window causes Print::Apply using invalid configs
Change-Id: I1764050f7177a65625f4668b2e1f86c80a4d4e5a
(cherry picked from commit 5a32ce3599883b9976e32ef2c864967efd52fbc2)
(cherry picked from commit e16da5da85bc8b758e79223581c21fdd98a89a25)
when slice one filament with multi_extruder printer
jira: none
Change-Id: Ic8deeb7df9c428e97bf904532362180fc1fd6738
(cherry picked from commit feb9b02067b2e4bbdba7ba429531d4fd6081913c)
JIRA: STUDIO-9111
Change-Id: I5ed619d57b6857f5d4a1e38662d2fe03640222a3
Signed-off-by: Stone Li <stone.li@bambulab.com>
(cherry picked from commit 993228d3e99e7976a3839b29453b53023ec18b71)
JIRA: STUDIO-9079
1. emmc for printer is unavailable
2. When the printer is not inserted with an SD card, it cannot send
either
Change-Id: I59d2429ec2d13a5300e8bda46cb15f241fde614c
(cherry picked from commit d2096efe52704465f649c5b1846b3442ade8f078)
1.Always set filament retract params to filament_num size.In
gcode export module, we can always use filament idx to get
retract params
2. add logic in update_filament_maps_to_config to update the
retraction related params which can be overiden by filament
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ia45dd1401aa3565d062d5da1c9f4a2ba8966f693
(cherry picked from commit 4b083d8d8220b8f65a1b804688cb2d6e238eb4e6)
only compare minor version when major equals
jira: no-jira
Change-Id: I0159c1b15db30238ad05b8ff7c83f6668fd11ac2
(cherry picked from commit e50e6985925582b4b686793244cc88bde3515d07)
1. Set shared retract length size to 2. Filaments in one extruder
shares the param
2. Move toolchange function before unretract function in append_tcr
to get the correct logic
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I215a542ce36107071fad39f1f9e30234fb19a3a0
(cherry picked from commit c4ef6e9e0950c58a8c5f612662145c6a256884ad)
Jira: none
while there is no non support filament
set first print filament to initial_no_support_extruder
Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: If2fee560772c9a7cfa1855efc85116fb7df04760
(cherry picked from commit 361d7489929dfc1a3b266951f0302f25cf48edcc)
when save MW 3mf file as multi-extruder
jira:none
Change-Id: I848e348277fb047c2c3569508d2adbe940e40255
(cherry picked from commit 17edbd8cd57b761027bb3c1f4d318578ab27430e)
The length of default value for extruder printable height
should be same with extruder printable area
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I01bf5e2a9ddb2faadbbe0a01f4ff2c5582b8ac45
(cherry picked from commit 01bb0c6d661f1d72448782523fb612b2aabfec00)
1. add logic in CLI
2. add logic to process height range
jira: no-jira
Change-Id: I8a7ba1a78dacad7131cafa3fb8b742027276c7e8
(cherry picked from commit 9a6624653b7b66101f1a74715227a0f2b4588f16)
also fix the assert
jira: no-jira
Change-Id: I6becb689ff6a1dd2894d5004da796ece8fb23324
(cherry picked from commit ab588003e3bbd844f83b568106f60ef976fc6530)
and modify the min_depth_per_height
jira: none
Change-Id: I4860df661b4dd1f66677112d14e60560bc4a73be
(cherry picked from commit 00810d685d01a91b5373f3315413aaef1fe49cbc)
because the empty value of unprintable_filament_map
jira: none
Change-Id: I223fde51e31c2206b81512737058c7015cb10816
(cherry picked from commit bde01dc1814f7cef812d7f441cd969e0f3ab7747)
2. fix the status cali button of stat page is sometimes incorrect
3. when the nozzle volume type is not the same as printer, prompt user to sync
4. fix the incorrect nozzle volume type of cali preset page
jira: STUDIO-8856 STUDIO-8832
Change-Id: I83569f41533681b3d2f68d7b86be68955bd957f1
(cherry picked from commit 9dffa8d00281e06b24c29d818064e1c55418333d)
1.Only do reorder if requseted.In by object mode,we only need
to collect the filaments in the object for filament grouping
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Id88f2449c6d3c5d45b9ff87513308d997fa72da1
(cherry picked from commit 7b5818fe6c538123373243ec8dfedc3c2fa68e6d)
to support different printable height of multi_extruder
jira:none
Change-Id: I265c65e15fc8f598c3456556557bb6977b5de820
(cherry picked from commit 933adbaaf0eaf361e39f131dd5536dca91214d43)
In some cases, the PA value cannot be saved successfully
jira: STUDIO-8832, STUDIO-8826, STUDIO-8825, STUDIO-8822, STUDIO-8821
Change-Id: I74cd2c6039c104f5e1ef1d03440e0b1914480d62
(cherry picked from commit 482af1849b27e3618a03f70e69844d3321c47d6a)
1.Always do filament group to get correct filament map
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ie4e61c310f6c0cfeacb2a49c4f065f9674b6a35f
(cherry picked from commit 242554557b1ecd72355841826af707580fc583b6)
1. Optimize the message for repeat names
2. Modify the recommended name
jira:none
Change-Id: Iebc5807208dcbe2086f690fda453a2f2abb032f7
(cherry picked from commit 4fe716a9c9268838929bdb8e08372fcd521d4fa2)
1. generate filament_self_index for old files in cli
2. set filament_self_index to default for old files using single extruder
jira: no-jira
Change-Id: I6e3f520723ee7f3a75634121604023ba319ff97a
(cherry picked from commit d050aa4d3609e7ccf072b23fbfe820a839e0c3fd)
1. add repeat pa name check
2. display tray icon in save page
3. incorrect extruder id for left virtual slot
4. fix crash when enter save page
jira:none
Change-Id: Iae00788094d182ae84fff2aa71fedbb35ea938c6
(cherry picked from commit be256c0a6dcdcd29a3fc97edf55435bb65858f1c)
1. modify the start position of wall
2. modify the overlap of wall and infill
3. print wall first
jira:none
Change-Id: I1b3f4a8cb198f84b81aba638cc722dedf84a164c
(cherry picked from commit 50b3d0097e8d4e7c4c112c75a757d25c929a038c)
and the pa profile not display in AMS setting dialog after switch nozzle diameter
jira: 8620
Change-Id: I38b3905b1490edbc8dfe32335a3f8600485050c1
(cherry picked from commit 2322d5f14f3f703a03db3c12c87ef3855b88cf63)
for synchronization of machine information when opening a file
jira:none
Change-Id: I7b3419bb3489a5b6a37a99b5021c7e69ac35a009
(cherry picked from commit 6437437fe0c83f7c14f7ee5b339475d6db559a56)
1. add slicing errors for gcode in unprintable area, also for filament mapping
2. use common area for auto arrange
3. support filament_map/filament_map_mode related params
4. add logic to check the filament maps before slicing
5. uptodate support multi-extruder
6. switch new machine/filament support multi-extruder
7. process config params support transfer between mult-extruder and
single-extruder
8. improve machine-limit logic support multi-extruder
9. flush-volume support multi-extruder
10. add default params to support auto mapping slicing
jira: no-jira
Change-Id: Ice39a365841322ddb586d39c56ff923626822528
(cherry picked from commit f518d6804a9de69deef81c20cd22005a4bbd0cd4)
for some obvious error, we identified it and show to user
JIRA: no-jira
Change-Id: Id0365e89c4121ccccb9b5627a98428704432ab58
(cherry picked from commit 270ae086fbca576b75901313959c92cbfb913db6)
In file included from src/libslic3r/FlushVolPredictor.cpp:1:
src/libslic3r/FlushVolPredictor.hpp:44:34: error: ‘string’ in namespace ‘std’ does not name a type
44 | FlushVolPredictor(const std::string& data_file);
| ^~~~~~
src/libslic3r/FlushVolPredictor.hpp:49:5: error: ‘uint64_t’ does not name a type
49 | uint64_t generate_hash_key(const RGB& from, const RGB& to);
| ^~~~~~~~
In file included from src/libslic3r/FlushVolPredictor.cpp:1:
src/libslic3r/FlushVolPredictor.hpp:44:34: error: ‘string’ in namespace ‘std’ does not name a type
44 | FlushVolPredictor(const std::string& data_file);
| ^~~~~~
(cherry picked from commit 126dfea02729e16f9e64d6634a762da8b665d6e2)
1. Use cie de2000 as color distance
2.Consider colors with de < 5 as the same color when calculating
flush
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I4b451910a21c9db3471c63c270f1f120e3c5d160
(cherry picked from commit 72bc6f44cfab9145aecdb843ac4a03a9338a8cc6)
1. Do not consider empty filament when selecting group for ams
2. Function "collect_filaments_in_groups" is frequently called,
optimize memory allocation to speed up.
jira: NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Iad8c9a257bc2dd832c77e650f8c052fb9d8379a0
(cherry picked from commit 21379e13366fd70f0042e85dcf8ee220185c782d)
1. Machine with multi extruder should set length of extruder offset
to extruder num
2. Register retract_restart_extra
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ic3eb324cb91dc70b091c8922936d2709c361cc38
(cherry picked from commit 13df1ee7bab2bf13c9f5ffca6ad1228ff48e885e)
1.Caused by uninitialized filament map in mapping for AMS
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I71ce6001fc6f2e72eb9303fcaba0bac16ad70dc9
(cherry picked from commit 48023e4c154c118c9396b6065b7e2476970fd441)
1.Only consider groups with a distance within the threshold
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I91526a796a0f7f1ed3e77c41076c1f85620dd944
(cherry picked from commit 1379b838466f9b0a188fc916c31916626b933dc4)
1.Use max flow network to handle limit
2.Support setting master extruder id
3.Fix the issue in the KMedoids algorithm where data is overwritten
after each retry.
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Idd2bedf39f61e7a65eb4199852f60b8fbebe0a7d
(cherry picked from commit 3cfb49a1b9dc2c76066ec441f1028f99a4bf99c4)
1. Modify dragging behavior
2. The swap button is grayed out in automatic mode
jira:none
Change-Id: Idff795bf092c4959c67d0711b0be316fba997684
(cherry picked from commit c7486e1c5e56667cab61ee9a97898f03b65b64b8)
when the ams is 0/0, should not consider the print connect status
jira:none
Change-Id: I2288ff15894d5c734a98b830df6678cab2bd12fc
(cherry picked from commit 20837717d411016251c4831586b0fa61350a08b2)
1.Set the default size of ams filament to 2
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ie985ecfa44cb9fcaf21406303e32bb56e731f351
(cherry picked from commit b4d85663325eb9be1be48e1eee3d3128e31650db)
1.If the group result differs little in flush,we will choose the one
that best fits the ams filaments
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Icd147b406e3494c841ef13564ad1b1231ad798fd
(cherry picked from commit 0b95bdd9d950918ea6979da6b4d62b2d2cd25b99)
1. Caused by setting the current filament to filaments used
in machine start gcode
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: If6789b1e02aadc6d03610b7b7cc4c829ae767a7d
(cherry picked from commit 8c88fabe8f0476280ff18bafc320a1d1e4a01a99)
some param has been changed for the multi-extruder
currently we popup an exception
JIRA: no-jira
Change-Id: I1e892203d34c569a580694c1c28a1c7d695c1c64
(cherry picked from commit 2636e44dc0a276962c77ed0a51128009bbf7608f)
1.Use float to store the weight copmputed in the procedure.Avoid the
issue where filament weight remains at 0 after changing filaments
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Iff0cfc6e22f34affbc232dbfe196f27ee06d2d9e
(cherry picked from commit 994e4f4840a6734ab479e10d39462cc692bc4d77)
1. also remove original nozzle_volume_type from printer
and move into project config
2. support save nozzle_volume_type into appconfig
and load from it at beginning or printer switch
jira: no-jira
Change-Id: I01fc82d142fc633fc59a238796a71b9f8d180efb
(cherry picked from commit fe8b904e7551cde83b1ead75922e9b60278b50ad)
some fix to
Ib37896f9101d93ca63c7edb0b1e6328045a5ddb3
I4b5c8e158b073b302db6faad77bb8ca0f70f766a
Change-Id: Iec62a4df45159bac3db63c48feef16ec1aa35ae7
(cherry picked from commit 6fb06eb7790c1469d433f5ecec97d5be966e94af)
2. modify the filament_flow_ratio to nullable
jira:none
Change-Id: I3f0569ee643cfe9473c6029ca0e04f4b80c8332e
(cherry picked from commit ed61d1d31bdc79f064567deacf35e05bd123880d)
Jira: none
if the fist print filement as same as the filament be set on start gcode
not insert filment change
Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I0114f287fff9be276a90772537d1910df18dec61
(cherry picked from commit 276c797faff1407b2c1606d4bfafe21773901001)
1. Nozzle Volume and Nozzle Type support multi extruder now
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ie171b5105bd3830db3a992cadd365b785008c47a
(cherry picked from commit 2ebd14667e43dc745556f5e7bcbb7c2ccad4a007)
and delete ;nozzle_change_gcode of change_filament_gcode
jira:none
Change-Id: I79c2896afe15b59ba3932240edcb6330e230470f
(cherry picked from commit 8cf72ab46cea16fcd3b988593843b3766b296dc9)
and set 1/4 max_volumetic_speed for TPU
jira: none
Change-Id: I492ce178a88fb702fc051f8a0abec6a4b5706d00
(cherry picked from commit c1dec339dd7b5f9e70d3a9c132654aa589085757)
1. auto mode dragdrop is not allowed
2. not display filament_map when there is no result in auto mode
jira:none
Change-Id: I0800e0d832e27fe459a17bb1aa829b5e72d0ee8f
(cherry picked from commit 9ee85bef34aaabe7a4cef251f07e77f9af693a2f)
1.Use min cost max flow to solve the tool order
jira:NEW
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I909845039b67c7fe3ddd42580ad3f1d71d52262d
(cherry picked from commit 0716b8518ef62e0eac7c45de8bafb1458d8f9a8e)
1.Save multi extruder state in gcode processor
2.Add machine exturder change time
3.Fix some naming issues
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I9785331290515eeb908ff0ff01aad5aac44212d9
(cherry picked from commit b49d4ca1539cd9f473e0ee0c79a4287c0d5fe03b)
1.Caused by missing break of switch case
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ie667eda4069f3e2487ed87081580e2540ae4da7b
(cherry picked from commit 9267bd65aa7a39c3a775890b59611fba7b3883ac)
1.In auto mode,display the statistics of auto mode and single
extruder
2.In manual mode,display the statistics of manual mode and auto mode
3.Support by object mode
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: If54c4db79f33d5278c0f18d01ab0518e8660f9c7
(cherry picked from commit 2dbc5c939666e294c805ee4bf33ec09976688be3)
1.Should calculate cost if filament used in that layer is 1,because
we should consider the last filament used in previous layer
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I5838af77f1d73bfa07c65bd6ee12ae352dc3b571
(cherry picked from commit 0756b51eb2b457a1ddfddc0ab8e445c779737597)
1.Use forcast when filament num in current layer and next layer both
smaller than limit number
jira:NEW
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ia21bb22ce353f0c74eeaf748c6d9f9c4b315ec18
(cherry picked from commit c49c0c8f723e82e4e87cd931b7d5070142fb0781)
after change the filament maps, we should invalidate state
jira:none
Change-Id: If2923d959f5120bd80c5bdf3933609cf8b282523
(cherry picked from commit 5f0bb395ad6464039bdacec58c924044a27587a0)
1.Add filament flush,filament change count reduced by multi
extruder
NTOE: cases when printing by object haven't been handled
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Iaaea5f8ffae2345df5a6f1dc605342d835974d48
(cherry picked from commit ad65cdb909b29210117f690a119ef76b70373da4)
1.When n becomes large,the original algorithm to get best filament
sequence will cost too much time and memory.Use a greedy algorithm
instead.Always select the next filament with fewest flush
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Iabc924e1bdb0a07af0a6ef0bbdd62e54ce54f052
(cherry picked from commit 3167e34e609d0eecb481fd550e6550024b72bb67)
1. always resize filament count when not matched in full_fff_print
2. remove no-use codes in Preset::normalize
jira: no-jira
Change-Id: Ie15a5977d28f28e0f63ba84f27f98f77d16665c0
(cherry picked from commit f122c4f4ef6f476c4e8190a0872e566d690d6c25)
1.During the filament change, the extruder will extrude an extra length
of grap_length for the corresponding detection, so the purge volume can
reduce this length.
jira:NEW
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I14f55a3200c1dd48b1603e50280d0c29e1319ebe
(cherry picked from commit 16cadec565f987e6baae97428d5392c1f8e7ad39)
1. save to appconfig and project setting
2. use it to group
jira: none
Change-Id: Id4048fc1b47f6904b2e9c0154aaa3a2b03590437
(cherry picked from commit da32b878b3d7ca95ae5c4786102848c1e8a5ab2d)
support drag drop to modify the filament map
jira: none
Change-Id: I0ed3180a0fa8e95e7c871bb039eb844faccd1344
(cherry picked from commit 67f67d76889668fdd80ae5e496b6cbca5f771a43)
1.When filament <10, do the reorder with next layer.This can reduce
10% flush in some cases
2.Support custom filament seq
3.Use caches to speed the algorithm
jira:NEW
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ie1af9841f7165802d350eae962efe8febafbb357
(cherry picked from commit cffb4a8564844b1892eb42cfe8e883a52e70fb6a)
1.When capacity is greater than the num of filaments, always choose the
map result that can be accommodated
2.In BestFit strategy,always try to fill up the existing capacity
3.In BestCost strategy, just try the group with fewest flush
jira:NEW
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ifd6d64b77774039e57ffff26cf2243a4d3f89054
(cherry picked from commit cddf8cae27f4320f830b463e92703d3a6cf344e7)
that has different nozzle nums
jira:none
Change-Id: If78571ddf4fa7ac17e7dcf47013075821b8567a6
(cherry picked from commit a6ad5c8be86313085922e3063eec2aba029a5a99)
and fix bug when switching printer preset between single-nozzle and double-nozzle, prompt the modification of extruder_count
jira:none
Change-Id: I1d5f0b2f002493378d2f482d08cfd5a72b35b99f
(cherry picked from commit ed9816397374116db37c2a76d11e0216df5aca1d)
1.When n<10, calc all case cost
2.When n>10, first k-medoids algorithm first
3.Enable setting group size
jira:NEW
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I625f47e0235c70e440c6d489b052a156fbffca3f
(cherry picked from commit 9ec276d3d7114fff7a33213c3b47ce88df85f2ee)
1. backend support multi_extrude data structure
2. Compatible with third-party calibration
3. fix bug when get extruder in gocde export process
Change-Id: I5dac9abdd9907a521a1ba9b480f9e05640591bc1
(cherry picked from commit 21e6271e59ea8e4924866275566617d14a4b2b6e)
jira:[Popup for multi nozzles]
Change-Id: I07e6d8f0469d2dcf0037d53e2ca8e22de78ca233
(cherry picked from commit 0924fce6858654c331eafcb91e43252f62e703bf)
we need to keep the original values and update after pre-slice
jira: no-jira
Change-Id: I232d3c43340b4a23bc42121bd05380746e736f20
(cherry picked from commit 7b7ebf1b959ba5c967baff30fb226c808a2e7d44)
1.Limit of four filaments per row
2.Fix incorrect data
3.Add filament id display
4.Optimised layout
Change-Id: I9ac3701c99597a5ed243dac0e3e371cf9aca4066
(cherry picked from commit 3321277f86dfeb9de80b40c320e20dd5f33eab51)
1. support recommended filament map when print by object
2. placeholder_parser support function filament_change
3. extruder_id of filament_map is start from 1
Change-Id: Ide8019cd4a165a25972f22706ff685c3005aa031
(cherry picked from commit b42d94e1d05236b8b7b2e65b4a24810eecf040cb)
- Current git diff (staged and unstaged changes): !`git diff HEAD`
- Current branch: !`git branch --show-current`
## Your task
Based on the above changes:
1. Create a new branch if on main
2. Create a single commit with an appropriate message
3. Push the branch to origin
4. Create a pull request using `gh pr create`
5. You have the capability to call multiple tools in a single response. You MUST do all of the above in a single message. Do not use any other tools or do anything else. Do not send any other text or messages besides these tool calls.
Find up to 3 likely duplicate issues for a given GitHub issue.
To do this, follow these steps precisely:
1. Use an agent to check if the Github issue (a) is closed, (b) does not need to be deduped (eg. because it is broad product feedback without a specific solution, or positive feedback), or (c) already has a duplicates comment that you made earlier. If so, do not proceed.
2. Use an agent to view a Github issue, and ask the agent to return a summary of the issue
3. Then, launch 5 parallel agents to search Github for duplicates of this issue, using diverse keywords and search approaches, using the summary from #1
4. Next, feed the results from #1 and #2 into another agent, so that it can filter out false positives, that are likely not actually duplicates of the original issue. If there are no duplicates remaining, do not proceed.
5. Finally, comment back on the issue with a list of up to three duplicate issues (or zero, if there are no likely duplicates)
Notes (be sure to tell this to your agents, too):
- Use `gh` to interact with Github, rather than web fetch
- Do not use other tools, beyond `gh` (eg. don't use other MCP servers, file edit, etc.)
- Make a todo list first
- For your comment, follow the following format precisely (assuming for this example that you found 3 suspected duplicates):
---
Found 3 possible duplicate issues:
1. <link to issue>
2. <link to issue>
3. <link to issue>
This issue will be automatically closed as a duplicate in 3 days.
- If your issue is a duplicate, please close it and 👍 the existing issue instead
- To prevent auto-closure, add a comment or 👎 this comment
description: Triage GitHub issues and label critical ones for oncall
---
You're an oncall triage assistant for GitHub issues. Your task is to identify critical issues that require immediate oncall attention and apply the "oncall" label.
Repository: OrcaSlicer/OrcaSlicer
Task overview:
1. First, get all open bugs updated in the last 3 days with at least 50 engagements:
**Thank you for using Orca Slicer and wanting to report a bug.**
Please note that this is not the place to make feature requests or ask for help.
For this, please use the [Feature request](https://github.com/SoftFever/OrcaSlicer/issues/new?assignees=&labels=&projects=&template=feature_request.yml) issue type or you can discuss your idea on our [Discord server](https://discord.gg/P4VE9UY9gJ) with others.
For this, please use the [Feature request](https://github.com/OrcaSlicer/OrcaSlicer/issues/new?assignees=&labels=&projects=&template=feature_request.yml) issue type or you can discuss your idea on our [Discord server](https://discord.gg/P4VE9UY9gJ) with others.
Before filing, please check if the issue already exists (either open or closed) by using the search bar on the issues page. If it does, comment there. Even if it's closed, we can reopen it based on your comment.
@@ -80,31 +116,25 @@ if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
endif()
if(DEFINEDENV{SLIC3R_STATIC})
set(SLIC3R_STATIC_INITIAL$ENV{SLIC3R_STATIC})
set(SLIC3R_STATIC_INITIAL$ENV{SLIC3R_STATIC})
else()
if(MSVCORMINGWORAPPLE)
set(SLIC3R_STATIC_INITIAL1)
else()
set(SLIC3R_STATIC_INITIAL0)
endif()
set(SLIC3R_STATIC_INITIAL1)
endif()
option(SLIC3R_STATIC"Compile OrcaSlicer with static libraries (Boost, TBB, glew)"${SLIC3R_STATIC_INITIAL})
option(SLIC3R_GUI"Compile OrcaSlicer with GUI components (OpenGL, wxWidgets)"1)
option(SLIC3R_FHS"Assume OrcaSlicer is to be installed in a FHS directory structure"0)
option(SLIC3R_WX_STABLE"Build against wxWidgets stable (3.0) as oppsed to dev (3.1) on Linux"0)
option(SLIC3R_PROFILE"Compile OrcaSlicer with an invasive Shiny profiler"0)
option(SLIC3R_PCH"Use precompiled headers"1)
option(SLIC3R_MSVC_COMPILE_PARALLEL"Compile on Visual Studio in parallel"1)
option(SLIC3R_MSVC_PDB"Generate PDB files on MSVC in Release mode"1)
option(SLIC3R_PERL_XS"Compile XS Perl module and enable Perl unit and integration tests"0)
option(SLIC3R_ASAN"Enable ASan on Clang and GCC"0)
# If SLIC3R_FHS is 1 -> SLIC3R_DESKTOP_INTEGRATION is always 0, othrewise variable.
CMAKE_DEPENDENT_OPTION(SLIC3R_DESKTOP_INTEGRATION"Allow perfoming desktop integration during runtime"1"NOT SLIC3R_FHS"0)
CMAKE_DEPENDENT_OPTION(SLIC3R_DESKTOP_INTEGRATION"Allow performing desktop integration during runtime"1"NOT SLIC3R_FHS"0)
set(OPENVDB_FIND_MODULE_PATH""CACHEPATH"Path to OpenVDB installation's find modules.")
set(SLIC3R_GTK"2"CACHESTRING"GTK version to use with wxWidgets on Linux")
set(SLIC3R_GTK"3"CACHESTRING"GTK version to use with wxWidgets on Linux")
set(IS_CROSS_COMPILEFALSE)
@@ -118,6 +148,10 @@ if (${COLORED_OUTPUT})
endif()
if(APPLE)
list(LENGTHCMAKE_OSX_ARCHITECTURES_arch_len)
if(_arch_lenGREATER1)
message(FATAL_ERROR"OrcaSlicer only supports building for one architecture at a time. Please make sure only one architecture is specified in CMAKE_OSX_ARCHITECTURES")
set(CMAKE_PREFIX_PATH"${DEP_BUILD_DIR}/OrcaSlicer_dep/usr/local"CACHEPATH"Path to dependencies install directory"FORCE)
message(STATUS"CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH} (generated automatically and saved to cache)")
set(AUTOGENERATED_PREFIX_PATH${CMAKE_PREFIX_PATH}CACHESTRING"Provides the last autogenerated CMAKE_PREFIX_PATH"FORCE)
unset(REGEN_DESTDIRCACHE)
else()
message(STATUS"CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH} (from cache or command line)")
endif()
set(PREFIX_PATH_CHECK${CMAKE_PREFIX_PATH})
# the CMAKE_PREFIX_PATH environment variable is separate from the CMAKE_PREFIX_PATH cache variable and provides additional paths to search for libraries.
There are several clickbait and malicious websites pretending to be Official OrcaSlicer. These sites may redirect you to dangerous downloads or contain misleading information.
<br><br>
If you come across any of these in search results, please <a href="https://safebrowsing.google.com/safebrowsing/report_phish/?">report them as unsafe or phishing</a> to help keep the community secure.
<strong>⚠️ CAUTION:</strong><br>
Several clickbait and malicious websites, such as <b>orca-slicer[.]com</b> and <b>orcaslicer[.]net</b>, are pretending to be the official OrcaSlicer site. These sites may redirect you to dangerous downloads or contain misleading information.<br>
<b>Our only official website is <a href="https://www.orcaslicer.com/">www.orcaslicer.com</a>.</b><br><br>
If you come across any of these in search results, please <b>report them</b> as unsafe or phishing to help keep the community secure with:<br>
Comprehensive suite: temperature towers, flow rate, retraction & more for optimal performance.
- **[Precise Wall](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_precision#precise-wall) and [Seam Control](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_seam)**
- **[Precise Wall](https://www.orcaslicer.com/wiki/quality_settings_precision#precise-wall) and [Seam Control](https://www.orcaslicer.com/wiki/quality_settings_seam)**
Adjust outer wall spacing and apply scarf seams to enhance print accuracy.
- **[Sandwich Mode](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_wall_and_surfaces#innerouterinner) and [Polyholes](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_precision#polyholes) Support**
Use varied infill [patterns](https://github.com/SoftFever/OrcaSlicer/wiki/strength_settings_patterns) and accurate hole shapes for improved clarity.
- **[Overhang](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_overhangs) and [Support Optimization](https://github.com/SoftFever/OrcaSlicer/wiki#support-settings)**
- **[Sandwich Mode](https://www.orcaslicer.com/wiki/quality_settings_wall_and_surfaces#innerouterinner) and [Polyholes](https://www.orcaslicer.com/wiki/quality_settings_precision#polyholes) Support**
Use varied infill [patterns](https://www.orcaslicer.com/wiki/strength_settings_patterns) and accurate hole shapes for improved clarity.
- **[Overhang](https://www.orcaslicer.com/wiki/quality_settings_overhangs) and [Support Optimization](https://www.orcaslicer.com/wiki#support-settings)**
Modify geometry for printable overhangs with precise support placement.
- **[Granular Controls](https://github.com/SoftFever/OrcaSlicer/wiki#process-settings) and Customization**
- **[Granular Controls and Customization](https://www.orcaslicer.com/wiki#process-settings)**
Fine-tune print speed, layer height, pressure, and temperature with precision.
- **Network Printer Support**
Seamless integration with Klipper, PrusaLink, and OctoPrint for remote control.
- **[Mouse Ear Brims](https://github.com/SoftFever/OrcaSlicer/wiki/others_settings_brim) & Adaptive Bed Mesh**
- **[Mouse Ear Brims](https://www.orcaslicer.com/wiki/others_settings_brim) & [Adaptive Bed Mesh](https://www.orcaslicer.com/wiki/printer_basic_information_adaptive_bed_mesh)**
Automatic brims and adaptive mesh calibration ensure consistent adhesion.
- **User-Friendly Interface**
Intuitive drag-and-drop design with pre-made profiles for popular printers.
Regular updates fueled by continuous community contributions.
- **Wide Printer Compatibility**
Supports a broad range of printers: Bambu Lab, Prusa, Creality, Voron, and more.
- Additional features can be found in the [change notes](https://github.com/SoftFever/OrcaSlicer/releases/).
- Additional features can be found in the [change notes](https://github.com/OrcaSlicer/OrcaSlicer/releases/).
# Wiki
The wiki below aims to provide a detailed explanation of the slicer settings, including how to maximize their use and how to calibrate and set up your printer.
The [wiki](https://www.orcaslicer.com/wiki) aims to provide a detailed explanation of the slicer settings, including how to maximize their use and how to calibrate and set up your printer.
Please note that the wiki is a work in progress. We appreciate your patience as we continue to develop and improve it!
- **[Access the wiki here](https://github.com/SoftFever/OrcaSlicer/wiki)**
- **[Contribute to the wiki](https://github.com/SoftFever/OrcaSlicer/wiki/How-to-wiki)**
- **[Access the wiki here](https://www.orcaslicer.com/wiki)**
- **[Contribute to the wiki](https://www.orcaslicer.com/wiki/How-to-wiki)**
# Download
## Stable Release
📥 **[Download the Latest Stable Release](https://github.com/SoftFever/OrcaSlicer/releases/latest)**
📥 **[Download the Latest Stable Release](https://github.com/OrcaSlicer/OrcaSlicer/releases/latest)**
Visit our GitHub Releases page for the latest stable version of OrcaSlicer, recommended for most users.
## Nightly Builds
🌙 **[Download the Latest Nightly Build](https://github.com/SoftFever/OrcaSlicer/releases/tag/nightly-builds)**
🌙 **[Download the Latest Nightly Build](https://github.com/OrcaSlicer/OrcaSlicer/releases/tag/nightly-builds)**
Explore the latest developments in OrcaSlicer with our nightly builds. Feedback on these versions is highly appreciated.
# How to install
## Windows
Download the **Windows Installer exe** for your preferred version from the [releases page](https://github.com/SoftFever/OrcaSlicer/releases).
Download the **Windows Installer exe** for your preferred version from the [releases page](https://github.com/OrcaSlicer/OrcaSlicer/releases).
- *For convenience there is also a portable build available.*
<details>
<summary>Troubleshooting</summary>
- *If you have troubles to run the build, you might need to install following runtimes:*
- [Alternative Download Link Hosted by Microsoft](https://aka.ms/vs/17/release/vc_redist.x64.exe)
- This file may already be available on your computer if you've installed visual studio. Check the following location: `%VCINSTALLDIR%Redist\MSVC\v142`
All updated build instructions for Windows, macOS, and Linux are now available on the official [OrcaSlicer Wiki - How to build](https://github.com/SoftFever/OrcaSlicer/wiki/How-to-build) page.
All updated build instructions for Windows, macOS, and Linux are now available on the official [OrcaSlicer Wiki - How to build](https://www.orcaslicer.com/wiki/How-to-build) page.
Please refer to the wiki to ensure you're following the latest and most accurate steps for your platform.
OrcaSlicer was originally forked from BambuStudio, it was previously known as BambuStudio-SoftFever.
Open-source slicing has always been built on a tradition of collaboration and attribution. [Slic3r](https://github.com/Slic3r/Slic3r), created by Alessandro Ranellucci and the RepRap community, laid the foundation. [PrusaSlicer](https://github.com/prusa3d/PrusaSlicer) by Prusa Research built on Slic3r and acknowledged that heritage. [Bambu Studio](https://github.com/bambulab/BambuStudio) in turn forked from PrusaSlicer, and [SuperSlicer](https://github.com/supermerill/SuperSlicer) by @supermerill extended PrusaSlicer with community-driven enhancements. Each project carried the work of its predecessors forward, crediting those who came before.
[Bambu Studio](https://github.com/bambulab/BambuStudio) is forked from [PrusaSlicer](https://github.com/prusa3d/PrusaSlicer) by Prusa Research, which is from [Slic3r](https://github.com/Slic3r/Slic3r) by Alessandro Ranellucci and the RepRap community.
OrcaSlicer incorporates a lot of features from [SuperSlicer](https://github.com/supermerill/SuperSlicer) by @supermerill
OrcaSlicer's logo is designed by community member Justin Levine (@freejstnalxndr).
OrcaSlicer began in that same spirit, drawing from BambuStudio, PrusaSlicer, and ideas inspired by CuraSlicer and SuperSlicer. But it has since grown far beyond its origins. Through relentless innovation — introducing advanced calibration tools, precise wall and seam control, tree supports, adaptive slicing, and hundreds of other features — OrcaSlicer has become the most widely used and actively developed open-source slicer in the 3D printing community. Many of its innovations have been adopted by other slicers, making it a driving force for the entire industry.
The OrcaSlicer logo was designed by community member Justin Levine (@freejstnalxndr).
# License
- **OrcaSlicer** is licensed under the GNU Affero General Public License, version 3. OrcaSlicer is based on Bambu Studio by BambuLab.
- **Bambu Studio** is licensed under the GNU Affero General Public License, version 3. Bambu Studio is based on PrusaSlicer by PrusaResearch.
- **PrusaSlicer** is licensed under the GNU Affero General Public License, version 3. PrusaSlicer is owned by Prusa Research. PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci.
- **Slic3r** is licensed under the GNU Affero General Public License, version 3. Slic3r was created by Alessandro Ranellucci with the help of many other contributors.
- **OrcaSlicer** is licensed under the GNU Affero General Public License, version 3.
- The **GNU Affero General Public License**, version 3 ensures that if you use any part of this software in any way (even behind a web server), your software must be released under the same license.
- OrcaSlicer includes a **pressure advance calibration pattern test** adapted from Andrew Ellis' generator, which is licensed under GNU General Public License, version 3. Ellis' generator is itself adapted from a generator developed by Sineos for Marlin, which is licensed under GNU General Public License, version 3.
- The **Bambu networking plugin** is based on non-free libraries from BambuLab. It is optional to the OrcaSlicer and provides extended functionalities for Bambulab printer users.
message(WARNING"You are using an old directory name for dependencies that is being deprecated. "
"Please remove the \"destdir\" directory and rebuild to update to the new name. "
"The current \"destdir\" directory will be used until then.")
endif()
if(NOTUSE_OLD_DESTDIRANDUSE_OLD_DESTDIR_PREV)
set(REGEN_DESTDIRTRUE)
endif()
else()
unset(AUTOGENERATED_DESTDIRCACHE)
endif()
if("${DESTDIR}"STREQUAL""ORREGEN_DESTDIR)
if(USE_OLD_DESTDIR)# backward compatibility for old directory name
set(DESTDIR"${CMAKE_BINARY_DIR}/destdir"CACHEPATH"Path to dependencies install directory"FORCE)
else()
set(DESTDIR"${CMAKE_BINARY_DIR}/OrcaSlicer_dep"CACHEPATH"Path to dependencies install directory"FORCE)
endif()
set(DESTDIR_MSG"(generated automatically and saved to cache)")
set(AUTOGENERATED_DESTDIR${DESTDIR}CACHESTRING"Provides the last autogenerated destdir"FORCE)
unset(REGEN_DESTDIRCACHE)
else()
set(DESTDIR_MSG"(from cache or command line)")
endif()
if(NOTFLATPAK)
set(DESTDIR"${DESTDIR}/usr/local/")
endif()
@@ -56,15 +92,32 @@ get_property(_is_multi GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
if(_is_multi)
option(DEP_DEBUG"Build debug variants (only applicable on Windows)"OFF)
option(ORCA_INCLUDE_DEBUG_INFO"Includes debug information in a release build (like RelWithDebInfo) in a way that works with multi-configuration generators and incompatible dependencies. DEP_DEBUG option takes priority over this."OFF)
option(AUTO_DEBUG_WORKAROUND"Automatically sets DEP_DEBUG and ORCA_INCLUDE_DEBUG_INFO based on CMAKE_BUILD_TYPE"ON)
if(AUTO_DEBUG_WORKAROUND)
set(DEP_DEBUGOFF)
set(ORCA_INCLUDE_DEBUG_INFOOFF)
if(CMAKE_BUILD_TYPESTREQUAL"Debug")
set(DEP_DEBUGON)
message(STATUS"DEP_DEBUG has been automatically turned ON due to CMAKE_BUILD_TYPE being set to Debug")
elseif(CMAKE_BUILD_TYPESTREQUAL"RelWithDebInfo")
set(ORCA_INCLUDE_DEBUG_INFOON)
message(STATUS"ORCA_INCLUDE_DEBUG_INFO has been automatically turned ON due to CMAKE_BUILD_TYPE being set to RelWithDebInfo")
endif()
endif()
endif()
if(CMAKE_SYSTEM_NAMESTREQUAL"Linux")
option(DEP_WX_GTK3"Build wxWidgets against GTK3"OFF)
option(DEP_WX_GTK3"Build wxWidgets against GTK3"ON)
endif()
set(IS_CROSS_COMPILEFALSE)
if(APPLE)
list(LENGTHCMAKE_OSX_ARCHITECTURES_arch_len)
if(_arch_lenGREATER1)
message(FATAL_ERROR"OrcaSlicer only supports building for one architecture at a time. Please make sure only one architecture is specified in CMAKE_OSX_ARCHITECTURES")
A C++ port of [earcut.js](https://github.com/mapbox/earcut), a fast, [header-only](https://github.com/mapbox/earcut.hpp/blob/master/include/mapbox/earcut.hpp) polygon triangulation library.
[](http://isitmaintained.com/project/mapbox/earcut.hpp "Average time to resolve an issue")
[](http://isitmaintained.com/project/mapbox/earcut.hpp "Percentage of issues still open")
The library implements a modified ear slicing algorithm, optimized by [z-order curve](http://en.wikipedia.org/wiki/Z-order_curve) hashing and extended to handle holes, twisted polygons, degeneracies and self-intersections in a way that doesn't _guarantee_ correctness of triangulation, but attempts to always produce acceptable results for practical data like geographical shapes.
It's based on ideas from [FIST: Fast Industrial-Strength Triangulation of Polygons](http://www.cosy.sbg.ac.at/~held/projects/triang/triang.html) by Martin Held and [Triangulation by Ear Clipping](http://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf) by David Eberly.
## Usage
```cpp
#include<earcut.hpp>
```
```cpp
// The number type to use for tessellation
usingCoord=double;
// The index type. Defaults to uint32_t, but you can also pass uint16_t if you know that your
// data won't have more than 65536 vertices.
usingN=uint32_t;
// Create array
usingPoint=std::array<Coord,2>;
std::vector<std::vector<Point>>polygon;
// Fill polygon structure with actual data. Any winding order works.
// Returns array of indices that refer to the vertices of the input polygon.
// e.g: the index 6 would refer to {25, 75} in this example.
// Three subsequent indices form a triangle. Output triangles are clockwise.
std::vector<N>indices=mapbox::earcut<N>(polygon);
```
Earcut can triangulate a simple, planar polygon of any winding order including holes. It will even return a robust, acceptable solution for non-simple poygons. Earcut works on a 2D plane. If you have three or more dimensions, you can project them onto a 2D surface before triangulation, or use a more suitable library for the task (e.g [CGAL](https://doc.cgal.org/latest/Triangulation_3/index.html)).
It is also possible to use your custom point type as input. There are default accessors defined for `std::tuple`, `std::pair`, and `std::array`. For a custom type (like Clipper's `IntPoint` type), do this:
```cpp
// struct IntPoint {
// int64_t X, Y;
// };
namespacemapbox{
namespaceutil{
template<>
structnth<0,IntPoint>{
inlinestaticautoget(constIntPoint&t){
returnt.X;
};
};
template<>
structnth<1,IntPoint>{
inlinestaticautoget(constIntPoint&t){
returnt.Y;
};
};
}// namespace util
}// namespace mapbox
```
You can also use a custom container type for your polygon. Similar to std::vector<T>, it has to meet the requirements of [Container](https://en.cppreference.com/w/cpp/named_req/Container), in particular `size()`, `empty()` and `operator[]`.
In case you just want to use the earcut triangulation library; copy and include the header file [`<earcut.hpp>`](https://github.com/mapbox/earcut.hpp/blob/master/include/mapbox/earcut.hpp) in your project and follow the steps documented in the section [Usage](#usage).
If you want to build the test, benchmark and visualization programs instead, follow these instructions:
### Dependencies
Before you continue, make sure to have the following tools and libraries installed:
* Compiler such as [GCC 4.9+, Clang 3.4+](https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test), [MSVC12+](https://www.visualstudio.com/)
Note: On some operating systems such as Windows, manual steps are required to add cmake and [git](http://blog.countableset.ch/2012/06/07/adding-git-to-windows-7-path/) to your PATH environment variable.
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.