Compare commits

..

3236 Commits
v2.3.1 ... main

Author SHA1 Message Date
Rodrigo Faselli
cfc2e9b62a Fix "Access Violation" (#12704) (#12856)
Co-authored-by: Kiss Lorand <50251547+kisslorand@users.noreply.github.com>
2026-04-05 15:10:09 -03:00
Rodrigo Faselli
aa51d1965f Don't steal focus from text inputs on mouse (#12834)
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>
2026-04-05 13:53:41 +03:00
Kiss Lorand
362ddec743 Fix overhang reverse threshold being ignored (#13061) 2026-04-04 16:56:42 -03:00
Eldenroot
d7dbe6a0ed UX: Convert 'Change type' to submenu with checkmarks (#12205)
* UX: Convert 'Change type' to submenu with checkmarks

* Update GUI_ObjectList.cpp

* Update GUI_ObjectList.hpp

---------

Co-authored-by: yw4z <ywsyildiz@gmail.com>
2026-04-04 04:31:26 +03:00
Heiko Liebscher
e4a207891d Fix typo in German translation: change "SETP Dateien" to "STEP Dateien" (#13100) 2026-04-04 02:45:12 +03:00
Olof Larsson
d1a7802637 fix: update stl and texture for Creality K2 (#13098)
* fix: update stl and texture for k2

* fix: bump profile version
2026-04-03 15:32:00 +03:00
SoftFever
c948d87102 Fix flush_multiplier type mismatch: use ConfigOptionFloats instead of ConfigOptionFloat (#13062) 2026-04-01 14:43:12 +08:00
SoftFever
0a762dfede udpate flatpak metainfo for flathub build 2026-03-30 21:48:09 +08:00
Eyal Levin
44faf142f9 Fix: generic locale fallback on all platforms when language is unavai… (#12948)
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>
2026-03-30 19:26:00 +08:00
Noisyfox
239253ecb1 Fix title bar resize grabber on Windows (#13020)
Make sure the title control passes all mouse events to its parent
2026-03-30 19:18:56 +08:00
SoftFever
a475e35730 Fix non-ASCII path corruption on Windows using from_path() helper (#13036) 2026-03-30 14:51:45 +08:00
SoftFever
8248b06337 Updated wxWidgets to 3.3.2 (#12941)
# 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.
-->
2026-03-30 13:54:45 +08:00
SoftFever
b9952b39ad Fix slice/print panel background to use theme-transformed color 2026-03-30 12:29:14 +08:00
SoftFever
094dfc14bd Fix missing commas in vendor string arrays causing silent concatenation 2026-03-30 12:29:14 +08:00
SoftFever
9563f6500b Fix missing commas in vendor string arrays causing silent concatenation 2026-03-30 12:26:59 +08:00
SoftFever
d62aa42e61 Fix macOS WebView script-handler cleanup after wxWidgets 3.3 upgrade
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.
2026-03-30 11:53:48 +08:00
mosfet80
c3f52bb3ca Add Opensuse distro (#12976)
Add Opensuse distro
2026-03-30 10:36:28 +08:00
Mitchell Mashburn
c036ce059a Add re:3D printer profiles (#12935)
# Description

* Add re:3D printer profiles.

# Screenshots/Recordings/Graphs

<img width="404" height="275" alt="image" src="https://github.com/user-attachments/assets/b7a747a8-4d1a-440f-a214-4a98619e6723" />


## Tests

* Tested build on Linux Ubuntu.
* Ran profile validation script:

<img width="439" height="74" alt="image" src="https://github.com/user-attachments/assets/ad10e0a0-de9b-45c6-a40e-6cacb6e7b779" />
2026-03-30 10:36:28 +08:00
mosfet80
5d432f48b9 Add Opensuse distro (#12976)
Add Opensuse distro
2026-03-30 08:06:31 +08:00
SoftFever
7d7f26ed69 fix a bug that switching from dark mode to light mode didn't work on Windows 2026-03-29 23:51:17 +08:00
Mitchell Mashburn
ebcefdf037 Add re:3D printer profiles (#12935)
# Description

* Add re:3D printer profiles.

# Screenshots/Recordings/Graphs

<img width="404" height="275" alt="image" src="https://github.com/user-attachments/assets/b7a747a8-4d1a-440f-a214-4a98619e6723" />


## Tests

* Tested build on Linux Ubuntu.
* Ran profile validation script:

<img width="439" height="74" alt="image" src="https://github.com/user-attachments/assets/ad10e0a0-de9b-45c6-a40e-6cacb6e7b779" />
2026-03-29 18:17:36 +08:00
SoftFever
eefdabcd98 Fix maximized window not filling desktop after wxWidgets 3.3.2 upgrade
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.
2026-03-29 01:08:06 +08:00
SoftFever
c06a0223a7 Fix 3D canvas blank area during window resize after wxWidgets 3.3.2 upgrade 2026-03-28 15:46:34 +08:00
SoftFever
779a36bf8b fix a regresion that the "search in preset" popup dialog will dismiss itself when move the cursor out of the dialog.
The regression is casued by 382cf57166 ("Fix hotkeys blocked in Prepare view when notification is shown")
2026-03-28 13:04:20 +08:00
SoftFever
bf397a0632 fix an issue that white boarder is visible for context/file menu on Windows when dark mode is enabled 2026-03-28 00:54:59 +08:00
SoftFever
c8a53a219a fix split button separator color in light mode on macOS 2026-03-27 17:23:44 +08:00
SoftFever
88eb2ab8df reapply wxALIGN_CENTER_VERTICAL 2026-03-27 14:53:56 +08:00
SoftFever
c443129f34 fix build errors on latest xcode 2026-03-27 14:32:40 +08:00
Simonas
97d5bf89d0 Bump webkit2gtk version for Fedora builds (#12844)
The webkit2gtk-4.0 API version will no longer be built. Packages that depend on it will fail to build from source and eventually be retired. 

https://fedoraproject.org/wiki/Changes/Remove_webkit2gtk-4.0_API_Version
2026-03-27 14:32:40 +08:00
dependabot[bot]
52d5210f7e Bump actions/upload-artifact from 6 to 7 (#12544)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-27 14:32:40 +08:00
dependabot[bot]
25fed7553e Bump actions/cache from 4 to 5 (#12545)
Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-27 14:32:40 +08:00
dependabot[bot]
8baf2f622e Bump actions/download-artifact from 7 to 8 (#12543)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7 to 8.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v7...v8)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-27 14:32:40 +08:00
SoftFever
78a186ff1a disable lfs as we don't use it anymore 2026-03-27 14:32:40 +08:00
SoftFever
f45cea6145 bump version to 2.4.0-dev 2026-03-27 14:32:40 +08:00
SoftFever
f72de427cb fix build errors on latest xcode 2026-03-27 14:32:02 +08:00
Simonas
b59985593a Bump webkit2gtk version for Fedora builds (#12844)
The webkit2gtk-4.0 API version will no longer be built. Packages that depend on it will fail to build from source and eventually be retired. 

https://fedoraproject.org/wiki/Changes/Remove_webkit2gtk-4.0_API_Version
2026-03-27 11:50:24 +08:00
dependabot[bot]
325a63ef8d Bump actions/upload-artifact from 6 to 7 (#12544)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-27 11:47:54 +08:00
dependabot[bot]
5c6ca282f7 Bump actions/cache from 4 to 5 (#12545)
Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-27 11:47:36 +08:00
dependabot[bot]
94c7c1beeb Bump actions/download-artifact from 7 to 8 (#12543)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7 to 8.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v7...v8)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-27 11:47:00 +08:00
SoftFever
b6184a540e reduce the sidebar's width a bit 2026-03-27 00:27:39 +08:00
SoftFever
8961883eab fix flatpak build errors 2026-03-26 18:20:53 +08:00
SoftFever
6d7b16c725 disable lfs as we don't use it anymore 2026-03-26 17:16:20 +08:00
SoftFever
a8f7745d61 bump version to 2.4.0-dev 2026-03-26 16:36:11 +08:00
SoftFever
fe55b260b4 suppress: gtk_style_context_add_provider: assertion 'GTK_IS_STYLE_CONTEXT (context)' failed 2026-03-26 16:22:07 +08:00
SoftFever
6148ba16b3 Fix GTK negative content width warnings for bitmap toggle buttons
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.
2026-03-26 16:05:58 +08:00
SoftFever
9493c5d222 fix flatpak 2026-03-26 14:14:39 +08:00
SoftFever
e70fe6c1df fix Windows build errors 2026-03-26 14:10:10 +08:00
SoftFever
fd47370c5c fix Windows build errors - wip 2026-03-26 10:17:19 +08:00
SoftFever
67fb0c8c83 tidy up a bit 2026-03-25 16:05:50 +08:00
SoftFever
80c958d98b Remove macOS text position fudge factors (no longer needed with wx 3.3) 2026-03-25 15:58:39 +08:00
SoftFever
f77e7d833b Copy wx/private headers after wxWidgets install
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.
2026-03-25 12:49:35 +08:00
SoftFever
7658cf9076 Disable wxWidgets bundled NanoSVG to avoid duplicate symbols
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.
2026-03-25 12:44:02 +08:00
SoftFever
ed88cbe3f5 Use wxWebView::New() factory on macOS (direct ctor removed in wx 3.3) 2026-03-25 12:44:02 +08:00
SoftFever
11a80a1e1c Disambiguate state_handler.attach() call in Button.cpp 2026-03-25 11:35:25 +08:00
SoftFever
2b3328c2b2 Fix char + wstring concat in Search.cpp tooltip builder 2026-03-25 11:34:45 +08:00
SoftFever
1765d296a8 Fix wxArrayString ctor, wstring concat, and wxList::Node for wx 3.3
- 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)
2026-03-25 11:33:50 +08:00
SoftFever
7cbd9bfb3c Fix ambiguous overload, wxScopedCharBuffer comparison, and wxArrayString ctor
- 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
2026-03-25 11:31:44 +08:00
SoftFever
0af0327d60 Fix narrow/wide string concat in SyncAmsInfoDialog.cpp
Same pattern as earlier fixes: const char[] + std::wstring fails in
wx 3.3 where wxUSE_STD_CONTAINERS=ON. Wrap with wxString().
2026-03-25 11:30:21 +08:00
SoftFever
7ea69199fd Fix wxDynamicCast on wxComboPopup for wxWidgets 3.3
wxComboPopup no longer inherits from wxObject in wx 3.3, so
wxDynamicCast (which casts through wxObject) fails. Use dynamic_cast
directly instead.
2026-03-25 11:29:40 +08:00
SoftFever
7de8fbb0da Remove _wx_opengl_override from wxWidgets dep cmake
wxWidgets 3.3 handles OpenGL discovery natively via imported targets
(OpenGL::GL, OpenGL::OpenGL). The override was corrupting wx-config
output with malformed "-framework OpenGL" entries, causing
FindwxWidgets.cmake to fail.
2026-03-25 11:28:23 +08:00
SoftFever
d9c229ca35 Fix narrow/wide string concatenation errors for wxWidgets 3.3
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
2026-03-25 11:28:00 +08:00
SoftFever
5f365b5c6b Fix BitmapComboBox for wxWidgets 3.3 (wxBitmap -> wxBitmapBundle)
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.
2026-03-25 11:26:32 +08:00
SoftFever
85390a9da0 Guard wxToolTip::GetToolTipCtrl() for wx 3.3 and add explicit wx/utils.h includes
- 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.
2026-03-24 21:02:37 +08:00
SoftFever
ba867cc534 Add Show() before Raise() calls for wxWidgets 3.3 compatibility
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().
2026-03-24 20:57:58 +08:00
SoftFever
026b105dcb Remove wxTRANSPARENT_WINDOW flag for wxWidgets 3.3 compatibility
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)
2026-03-24 20:56:04 +08:00
SoftFever
1065d85dbc Fix wxEXPAND | wxALIGN_* sizer flag conflicts for wxWidgets 3.2+
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.
2026-03-24 20:50:44 +08:00
SoftFever
024d5dc64d Remove wxCHECK_VERSION(3,1,x) guards and legacy wxinit.h macros
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)
2026-03-24 20:44:32 +08:00
SoftFever
5be5185d17 Remove OSX 10.9.5 crash workaround (dead code with wxWidgets 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().
2026-03-24 20:39:45 +08:00
SoftFever
8dcc3cd20d Remove const_cast workarounds for wxExecute (wxWidgets 3.1+)
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.
2026-03-24 20:34:32 +08:00
SoftFever
5f13f0893c Remove remaining pre-3.1.3 DPI dead code in GUI_Utils.hpp
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.
2026-03-24 20:30:40 +08:00
SoftFever
195d22d5cb Remove pre-wxWidgets 3.1.3 DPI fallback code
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
2026-03-24 20:28:12 +08:00
SoftFever
2d7e26292b Update build system for wxWidgets 3.1.5 → 3.3.2 upgrade
- deps/wxWidgets/wxWidgets.cmake: Add GIT_TAG v3.3.2 to track the
  correct branch; remove -DwxUSE_UNICODE=ON (unicode-only in 3.3,
  option removed)
- src/CMakeLists.txt: Bump find_package minimum version from 3.0/3.1
  to 3.3; remove SLIC3R_WX_STABLE conditional (3.0 no longer supported)
- CMakeLists.txt: Remove SLIC3R_WX_STABLE option definition
- scripts/flatpak/com.orcaslicer.OrcaSlicer.yml: Update wxWidgets
  source URL to v3.3.2 branch archive; remove sha256 (placeholder
  TODO); remove -DwxUSE_UNICODE=ON
2026-03-24 20:22:19 +08:00
SoftFever
f4224e9780 tidy up and bump profile version (#12889)
* tidy up and bump profile version

* fix error

* tidy up

* fix

* tide up more

* fix errors

* fix more errors
2026-03-23 01:17:34 +08:00
Ezzeldin Ahmed
3b7b3f4cf2 Add Anet A8 Plus (#12792)
* Add Anet A8 Plus support because the folks in OrcaSlicer didn't

* Fix the structure also import the orca_printer file to get the process

* asdsadasd
2026-03-23 00:03:39 +08:00
liutang
fa744e39b9 Set exclude objects to enabled by default to support dynamic MBL (#12869)
Set exclude objects to enabled by default to support dynamic mesh bed leveling.
2026-03-23 00:02:14 +08:00
liuyingmo
3d4aff5ea8 Optimised for the Artillery M1 Pro printer (#12885)
* Optimised for the Artillery M1 Pro printer

* tidy up

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-03-22 23:58:34 +08:00
SoftFever
73be083ac5 update flatpak app id and add migration code (#12879)
* update flatpak app id and add migration code

* tweak some text
2026-03-22 23:49:23 +08:00
Heiko Liebscher
4f87e52379 New de translation (#12875)
* 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
2026-03-22 15:18:20 +08:00
Rodrigo Faselli
d24985abb2 Attempt to fix OrcaSlicer_zh_TW.po (#12867) 2026-03-20 21:59:29 -03:00
SoftFever
1681f96a59 fixed an issue that some translations are not used 2026-03-20 23:47:37 +08:00
SoftFever
4689dd810e update locale and complete some missing translations for some language(AI) 2026-03-20 23:37:19 +08:00
Alessio Tudisco
d99c3ec0aa feat: add winget_updater github action (#12807)
Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-03-20 22:11:39 +08:00
Kiss Lorand
c02ccecc3a Follow-up for PR #12773 (#12800)
Adapt language files to PR #12773

- Language files are adapated for the new msgid from PR #12773
- changes from PR #12773 applied to APPLE build also
2026-03-20 22:04:46 +08:00
Jakub Hencl
53b261c066 Update error Czech translations in OrcaSlicer_cs.po (#12641)
Thanks
2026-03-20 21:16:04 +08:00
GlauTech
e3fda68a6e Update TURKISH translations (#12838)
* Update TURKISH translations

* Update TURKISH translations
2026-03-20 21:12:19 +08:00
SoftFever
be5741d822 Security fix: path traversal in 3MF import (#12860) 2026-03-20 17:11:22 +08:00
SoftFever
f201997d9e Feature/cicd selfhost2 (#12840)
# 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.
-->
2026-03-20 00:31:37 +08:00
SoftFever
cbdfc770ab simplify mac download 2026-03-19 23:55:33 +08:00
SoftFever
a9c5748d30 print build time 2026-03-19 23:17:03 +08:00
SoftFever
acbe5c708e respect clang flag for all deps 2026-03-19 23:14:47 +08:00
SoftFever
7dcba3f537 use different cache key for linux clang 2026-03-19 22:09:02 +08:00
SoftFever
594e4a297d use clang and lld 2026-03-19 21:59:37 +08:00
SoftFever
5c20da796c skip flatpak 2026-03-19 18:52:28 +08:00
SoftFever
6828111a82 clean 2026-03-19 18:44:07 +08:00
SoftFever
8dabfa8829 tweak 2026-03-19 18:34:45 +08:00
SoftFever
8c5063881a skip flatpak arm64 for self hosted runners 2026-03-19 18:27:47 +08:00
SoftFever
70e076151b Merge branch 'main' into feature/cicd_selfhost2 2026-03-19 18:19:48 +08:00
SoftFever
e00fcbb44e update cmake to 4.3.x (#12842)
# 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.
-->
2026-03-19 18:17:33 +08:00
SoftFever
838605690b minor change 2026-03-19 16:08:44 +08:00
SoftFever
1c237ba5b3 CMake: Ignore /opt/local (MacPorts). (#12813)
# 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`).
2026-03-19 16:04:42 +08:00
SoftFever
4ffe260228 update cmake to 4.3.x 2026-03-19 15:48:32 +08:00
SoftFever
2fe3d80a81 fix errors 2026-03-19 12:25:00 +08:00
SoftFever
5afb30d7dd Revert "Revert "Extend self-hosted runner support to all platforms" (#12827)"
This reverts commit f2eab542a4, reversing
changes made to 7565b279ad.
2026-03-19 11:58:39 +08:00
SoftFever
89172bc710 Merge branch 'main' into ignore-macports 2026-03-19 11:05:15 +08:00
Kevin J. Lynagh
882af4d1fe CMake: Accept ignored prefixes from build_release_macos.sh
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
2026-03-18 21:51:54 +01:00
SoftFever
f2eab542a4 Revert "Extend self-hosted runner support to all platforms" (#12827)
Reverts OrcaSlicer/OrcaSlicer#12825
2026-03-19 00:07:25 +08:00
SoftFever
dc90dda976 Revert "Extend self-hosted runner support to all platforms" 2026-03-19 00:07:12 +08:00
SoftFever
7565b279ad Extend self-hosted runner support to all platforms (#12825)
# 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.
-->
2026-03-19 00:02:53 +08:00
SoftFever
504b9be774 Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-19 00:02:11 +08:00
SoftFever
2868255658 Extend self-hosted runner support to all platforms 2026-03-18 23:42:21 +08:00
SoftFever
4c57492bdb Add FILL3D PLA Turbo filament profile (#12801)
Add FILL3D PLA Turbo filament profile to OrcaFilamentLibrary.

Vendor: FILL3D
Type: PLA
Nozzle temp: 230°C (first layer) / 235°C
Bed temp: 55°C (hot plate)
Pressure advance: 0.036 (adaptive PA enabled)
Max volumetric speed: 32 mm³/s
Validated with OrcaSlicer_profile_validator.exe and
orca_extra_profile_check.py — no errors
2026-03-18 18:18:59 +08:00
SoftFever
1bac6a58a8 Update HU language (#12795)
Update HU language after the adjustments of #12681.
2026-03-18 18:16:27 +08:00
SoftFever
f059472c0a Feature/optimize warnings (#12821)
# 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.
-->
2026-03-18 17:52:35 +08:00
SoftFever
991464ed95 Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-18 17:52:24 +08:00
SoftFever
eb5082f37b Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-18 17:51:29 +08:00
SoftFever
70b9bedf94 Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-18 17:50:39 +08:00
SoftFever
13b08385c8 check precise_z_height and enable_prime_tower conflicts in print validate 2026-03-18 16:59:20 +08:00
SoftFever
bcd89aba5e Skip flushing volume validation for multi-tool printers
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.
2026-03-18 15:39:07 +08:00
SoftFever
7b075524ef Fixes in Russian localization (#12734)
- Added workarounds for line breaking
(https://github.com/OrcaSlicer/OrcaSlicer/pull/12702#issuecomment-4034006735)
- Fixed filament/nozzle incompatibility notification
- Optimized some places with shorter variants
- Updated tooltips
- Some more updates
2026-03-18 14:51:42 +08:00
SoftFever
54f8d332bc Feature/fix wipetower pos issues (#12820)
# 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.
-->
2026-03-18 14:46:19 +08:00
SoftFever
62ffbfd33d revist fixes for wipe tower pos issues 2026-03-18 14:42:40 +08:00
SoftFever
6399d88015 Revert "Fix wipe tower loaded outside of plate boundaries (#12191)"
This reverts commit e14e186bb7.
2026-03-17 19:16:09 +08:00
SoftFever
c8070b67d5 Revert "Fix wipe tower placed outside bed boundary on first slice (#12777)"
This reverts commit 494601eea5, reversing
changes made to d28e964e04.
2026-03-17 19:14:50 +08:00
SoftFever
c224b3f94b Ensure slice / print buttons visible on frame (Accordion tabs) (#12772)
Fixes
https://github.com/OrcaSlicer/OrcaSlicer/issues/12723#issuecomment-4033223440

## NOTES
• Icons easy to discern so its not an issue
• User will explore this feature while resizing window so its ok as well
• maybe will add a tooltip while button compacted on future

## PROBLEM
print / slice buttons not visible in frame and not usable. bbl machines
uses much more tabs and issue gets worse

**regular printer on minimum window size**
<img width="766" height="96" alt="Screenshot-20260315014602"
src="https://github.com/user-attachments/assets/965e72d2-64d6-462e-abbf-f3c355783da0"
/>

**bbl printer on minimum size**
<img width="764" height="93" alt="Screenshot-20260315014708"
src="https://github.com/user-attachments/assets/1250afd1-45c3-42d9-bda3-334671ec7dc5"
/>

## SOLUTION
tabs uses only icons to reduce space usage dynamically depends on
available space

**regular printer**

![explorer_PoszqO4wyw](https://github.com/user-attachments/assets/848331ee-0206-41a8-961f-e65e68ca5f56)

**bbl printer with multi device enabled**

![explorer_WznxxHVgIJ](https://github.com/user-attachments/assets/3e3a0414-71c2-436d-be3d-d1f380d5d299)

**worst case scenario without issue. (minimum window width + multi
device + Export sliced plate button)**
<img width="772" height="97" alt="Screenshot-20260315015216"
src="https://github.com/user-attachments/assets/8b21d693-4119-4f91-b16d-d734e4633b87"
/>

**adapts automatically to used layout**

![firefox_W80FMQaHee](https://github.com/user-attachments/assets/3f9eed31-2f8d-4763-8911-bf765175d30d)
2026-03-17 18:34:59 +08:00
SoftFever
9e32aec938 Support longer project names on title and fix window buttons not visible on minimum window size (#12730)
fixes https://github.com/OrcaSlicer/OrcaSlicer/issues/12723

tested on windows, ubuntu

## CHANGES
• Created a painted control because AddLabel method has fixed size.
**new control expands and uses all available space**
• removed invisible publish button to get perfect center. i assume this
feature already not in use on orca

## WINDOW BUTTONS NOT VISIBLE ON MINIMUM WINDOW WIDTH
• This issue only exist on windows

**Before**- causes window buttons not fitting to frame. 
**After** - all fits to frame
<img width="759" height="203" alt="Screenshot-20260311141345"
src="https://github.com/user-attachments/assets/99da00ea-48f9-449b-9dd0-0bd023e041d8"
/>

## ADDS SUPPORT FOR LONGER PROJECT NAMES
**Before** - title not showing all name because it has a fixed size with
300px
**After** - shows all name because it uses all available space
<img width="1263" height="216" alt="Screenshot-20260311141612"
src="https://github.com/user-attachments/assets/f0b4d16a-882f-46c0-8918-d0b8a7c34007"
/>

## ELLIPSIZES LONG NAMES WHEN REQURIED
**Before** - method was static

![explorer_6M2Lqu7Sla](https://github.com/user-attachments/assets/b0aedc44-6bb8-4b25-a4e3-8e3fea25fd44)

**After** - supports longer names and ellipsizes end dynamically

![explorer_l92JNSeq3v](https://github.com/user-attachments/assets/aa0b3ff1-c155-46b5-abc8-cf8167db18a7)

## FIXES THIN TITLEBAR ON LINUX
Left windows Right one Linux
**Before - Linux titlebar uses less height for titlebar**
<img width="806" height="84" alt="Screenshot-20260312013547"
src="https://github.com/user-attachments/assets/3507016c-e46b-4fb1-86de-29978ee48e2b"
/>
**After- Heights almost matches**
<img width="819" height="110" alt="Screenshot-20260312013531"
src="https://github.com/user-attachments/assets/3b28d32b-d054-406e-85bc-939609ba1aef"
/>
2026-03-17 18:28:00 +08:00
Felix14_v2
8df73358d0 Merge branch 'OrcaSlicer:main' into main 2026-03-17 01:36:52 +03:00
Felix14_v2
4d7dee77df Update OrcaSlicer_ru.po 2026-03-17 01:36:15 +03:00
julianramirezarango-source
bcf40ddab5 Add FILL3D PLA Turbo filament profile to OrcaFilamentLibrary 2026-03-16 10:41:08 -05:00
yw4z
3eac0a86e4 update 2026-03-16 15:10:36 +03:00
SoftFever
0f25137853 Add wipe_tower_type printer setting (#12781)
# 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.
-->
2026-03-16 18:57:02 +08:00
SoftFever
ba18b67e12 small tweak 2026-03-16 18:56:17 +08:00
kisslorand
e27ba72c33 Update HU language
Update HU language after the adjustments of #12681.
2026-03-16 11:49:41 +02:00
SoftFever
55ddf158e5 Merge branch 'main' into feature/wipetower-option 2026-03-16 17:41:00 +08:00
SoftFever
d7a3091b70 Flow ratio instead flow rate calib (#12773)
# Description

Point II - 5 of #12684


# Screenshots/Recordings/Graphs

<img width="558" height="265" alt="image"
src="https://github.com/user-attachments/assets/fe8212b2-3062-4f21-8912-a9aaa87b3df1"
/>
2026-03-16 17:39:55 +08:00
SoftFever
ccbaca0033 Fix PR comment posting for fork contributors by splitting into two workflows
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.
2026-03-16 15:52:22 +08:00
SoftFever
14c40d7120 Fix height calculation for preferred filament area height (#12660)
## 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
2026-03-16 15:06:14 +08:00
SoftFever
d0d0440b8e Fix plurals on some GUI strings (#12681)
# Description
Some terms were singular and should be plural, and vice-versa.
2026-03-16 14:53:51 +08:00
SoftFever
0fef28ee28 Fix Flatpak missing locale support (#12751)
# 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.
-->
2026-03-16 14:38:54 +08:00
SoftFever
bfeccc7a55 small tweak of the script to support Mac 2026-03-16 14:36:35 +08:00
SoftFever
8168d0a4e0 fix crash when opening preference dialog 2026-03-16 00:18:39 +08:00
SoftFever
0cc4b442e3 Fix Flatpak missing locale support (#12714)
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.
2026-03-15 23:32:28 +08:00
SoftFever
112bec6bd2 Fix calibration dialogs not sizes properly on linux (#12752)
Fixes https://github.com/OrcaSlicer/OrcaSlicer/issues/12737 and
confirmed in here
https://github.com/OrcaSlicer/OrcaSlicer/issues/12737#issuecomment-4050896603

Only occurs on X11. tested on mint

`v_sizer->SetSizeHints(this);` was the real fix

issue starts to appear when dialog height higher then 280px
Removed height limitation on creating dialog as solution since dialogs
already resized with its content

• also fixes clipped text on bottom
|BEFORE|AFTER|
|---|---|
|<img width="330" height="456" alt="Screenshot-20260312203213"
src="https://github.com/user-attachments/assets/c6b0e577-f1e1-4da7-ba02-808d157ebee6"
/>|<img width="342" height="443" alt="Screenshot-20260313010726"
src="https://github.com/user-attachments/assets/a78605fa-ed75-4b42-a484-a2376d1b2982"
/>|

|BEFORE|AFTER|
|---|---|
|<img width="263" height="365" alt="Screenshot-20260312204651"
src="https://github.com/user-attachments/assets/ff04692e-3fd6-4fe1-bb6e-90594599c459"
/>|<img width="261" height="393" alt="Screenshot-20260313011644"
src="https://github.com/user-attachments/assets/be01936d-753a-4b95-99cb-c16228f8706f"
/>|
2026-03-15 23:21:51 +08:00
SoftFever
1a7f5d4f98 Fix infinite loop with zero top solid infill density (#12762)
# 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%.
2026-03-15 23:20:47 +08:00
SoftFever
13c267936a Fix non-bbl printer filament grouping by mapping all filaments/tools to group 0 (#12767)
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 #12449
Fix #12766
2026-03-15 23:19:47 +08:00
SoftFever
7f9ddda01d feat: swap the mmu detection to prefer the more generic moonraker database (#12764)
# 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.
-->
2026-03-15 23:09:10 +08:00
SoftFever
9b9950c4c2 Disable arc fitting for Qidi processes (#12761)
# 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.
2026-03-15 23:06:18 +08:00
SoftFever
c16c7de908 Merge branch 'main' into disable_arc_fitting 2026-03-15 23:05:37 +08:00
SoftFever
fe75c2c0fa Allow cancel during beam interlocking generation (#12759)
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)
2026-03-15 23:03:04 +08:00
SoftFever
a54c00e9ee chore: translate comment for ignoring truncating casts warning (#12757)
# 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
2026-03-15 23:01:26 +08:00
SoftFever
458882647f Add the filament id for the box of the Generic PC (#12756)
Add the filament id for the box of the Generic PC
2026-03-15 23:00:16 +08:00
SoftFever
d58d9be07b Add wipe_tower_type printer setting to replace vendor-based wipe tower selection
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.
2026-03-15 22:19:53 +08:00
SoftFever
494601eea5 Fix wipe tower placed outside bed boundary on first slice (#12777)
# 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.
-->
2026-03-15 17:41:07 +08:00
SoftFever
65d4be8cea Merge branch 'main' into fix/wipe-tower-outside-boundary-on-first-slice 2026-03-15 17:40:56 +08:00
SoftFever
ad0cce4c38 Fix wipe tower placed outside bed boundary on first slice
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.
2026-03-15 17:38:44 +08:00
Branden Cash
189bcafee0 feat: swap the mmu detection to prefer the more generic moonraker database
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.
2026-03-14 20:20:27 -07:00
RF47
43285a493c Flow ratio instead flow rate calib 2026-03-14 22:17:04 -03:00
yw4z
1f18be9ff2 fix compacting when app open with home tab 2026-03-15 04:16:45 +03:00
yw4z
20f8d478aa init 2026-03-15 01:42:28 +03:00
Noisyfox
478e8bda16 Fix non-bbl printer filament grouping by mapping all filaments/tools to group 0 (#12449, #12766) 2026-03-14 23:30:37 +08:00
TheLegendTubaGuy
3d1e96e74d Merge branch 'main' into disable_arc_fitting 2026-03-14 07:48:15 -05:00
SoftFever
d28e964e04 Fix crash in DiffPresetDialog::update_tree() on preset selection change (#12765)
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.
2026-03-14 20:47:56 +08:00
RF47
1528c2cf3b Skip top surfaces with non-positive density
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.
2026-03-13 22:44:31 -03:00
TheLegendTubaGuy
ccf1442c8c Disable arc fitting for Qidi processes
Qidi printers run Klipper and we don't want arc fitting enabled for
these.
2026-03-13 16:38:03 -05:00
Noisyfox
485917461a Allow cancellation during beam interlocking generation 2026-03-13 23:33:19 +08:00
Bent Hillerkus
3c0f5c7e59 chore: translate comment for ignoring truncating casts warning 2026-03-13 16:05:46 +01:00
Max Paperno
1aed7dfe5b FIX: Divide by zero exception in InterlockingGenerator when invalid configuration parameters are used. (fixes https://github.com/bambulab/BambuStudio/issues/9910 )
(cherry picked from commit cdd60ab71f8a3895fcb1345b2ccc2f2f472bf968)
2026-03-13 21:13:29 +08:00
HYzd766
5a3523325d Add the filament id for the box of the Generic PC 2026-03-13 15:15:26 +08:00
HYzd766
e3d70933f9 Merge branch 'OrcaSlicer:main' into A2 2026-03-13 15:02:27 +08:00
Felix14_v2
71aeb3aaf5 Update OrcaSlicer_ru.po 2026-03-13 02:49:22 +03:00
yw4z
7399b5d9e6 Update calib_dlg.cpp 2026-03-12 23:58:23 +03:00
yw4z
3a98890e53 Update calib_dlg.cpp 2026-03-12 20:45:30 +03:00
SoftFever
845baaefbb Feature/fix crash on linux when clicking assemble feature (#12739)
* fix crash on Linux when clicking Assemble gizmo

* some qol changes for dev

* Revert "some qol changes for dev"

This reverts commit ffe321370b.
2026-03-12 19:38:36 +08:00
Niccolo
40bf2157e3 Fix CLI segfault (SIGSEGV) when using --info, --slice, or --export-3mf (#12719)
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.
2026-03-12 19:36:45 +08:00
TheLegendTubaGuy
e6dfd2d8cb Update CC2 Profiles from elegoo slicer (#12215) 2026-03-11 23:57:40 +08:00
yw4z
e1d844f71a Merge branch 'main' into titlebar-buttons-fix 2026-03-11 17:16:09 +03:00
Rodrigo Faselli
25740788e7 fix flatpak build (#12738)
remove duplicated code
2026-03-11 11:00:01 -03:00
yw4z
aabbc41527 Update BBLTopbar.cpp 2026-03-11 15:36:19 +03:00
HYzd766
909aea3150 Update Qidi X-Max 4 0.4 nozzle.json (#12716)
Update Qidi X-Max 4 0.4 nozzle.json
2026-03-11 20:17:41 +08:00
yw4z
ef2f7ca22a simplify solution 2026-03-11 15:14:21 +03:00
yw4z
42fa706655 Merge branch 'main' into titlebar-buttons-fix 2026-03-11 14:48:05 +03:00
yw4z
e5a1020fcb fix shaky text while resizing 2026-03-11 14:43:27 +03:00
Felix14_v2
c06d596a0d Update OrcaSlicer_ru.po 2026-03-11 10:17:04 +03:00
SoftFever
322b44d84a Feature/flatpak clang llvm21 (#12727)
* 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
2026-03-11 14:59:29 +08:00
SoftFever
2ebc0aa6c1 Fix GIT_COMMIT_HASH not set in Flatpak builds (#12725)
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.
2026-03-11 13:32:29 +08:00
yw4z
eab3139268 update 2026-03-11 06:56:03 +03:00
Felix14_v2
e36fe7606b Fixes 2026-03-11 06:55:19 +03:00
yw4z
d48585c715 Update BBLTopbar.cpp 2026-03-10 22:16:06 +03:00
Felix14_v2
2f8e1c7864 Merge branch 'main' of https://github.com/Felix14-v2/OrcaSlicer 2026-03-10 22:02:08 +03:00
VOLUMIC
fbe2aeaa2e VOLUMIC profils update (#12721)
* VOLUMIC profils updates

* Delete resources/profiles/Volumic/EXO42 IDRE_cover.png

* VOLUMIC profils updates

* VOLUMIC profils updates

* Profils bug fix

* VOLUMIC profils updates

* Fix SC2 Stage 2

* Update Volumic.json
2026-03-11 00:15:09 +08:00
yw4z
5f54e694c4 Calibration dialog Fixes (incorrect validators, scaling issues, UI refinements) (#12702)
* Update calib_dlg.cpp

* match validators

* update

* add missing linebreak

* update
2026-03-10 23:56:17 +08:00
Valerii Bokhan
b919148c66 Fix: Added a warning if the Hollow base pattern is selected for the non-tree supports (#12710)
Fixes point 4 of #12684
2026-03-10 23:56:00 +08:00
yw4z
c9bf6f088a Remove duplicate items from actual speed plot (#12711)
* init

* update
2026-03-10 23:54:44 +08:00
HYzd766
9034a74454 Update Qidi X-Max 4 0.4 nozzle.json 2026-03-10 16:22:52 +08:00
SoftFever
382cf57166 QoL: Fix hotkeys blocked in Prepare view when notification is shown (#12715)
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.
2026-03-10 15:57:15 +08:00
tome9111991
97da125d62 FIX: hidden Line Type Linux (#12364)
Fix(GCodeViewer): Resolve z-fighting for wipe, seam, and retract markers using shader depth bias

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-03-10 15:28:21 +08:00
HYzd766
535241264c Merge branch 'OrcaSlicer:main' into A2 2026-03-10 14:51:34 +08:00
Valerii Bokhan
e6f3eb7fe9 QoL: Default values in tooltips for Percent, FloatOrPercent, String and Bool options (#12508)
QoL: Default values in tooltips for Percent, String and Bool options
2026-03-10 10:21:10 +08:00
yw4z
a16f8e2cc0 Merge branch 'main' into fix-height-calculation 2026-03-09 20:02:23 +03:00
SoftFever
f310bebf9a Fix an issue that on Linux the project name or model file name was not displayed in titlebar (#12706)
* 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
2026-03-10 01:02:18 +08:00
SoftFever
6049c6e234 Optimize linux experience (#12705)
* 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
2026-03-10 00:55:09 +08:00
Rodrigo Faselli
80db8edbfb Fix errors OrcaSlicer_cs.po (#12701) 2026-03-09 11:41:27 -03:00
yw4z
e22c8b6648 update 2026-03-09 17:09:09 +03:00
gaaat98
3ad9e242c8 Add support for esthetic filament sub-types in Snapmaker Printer Agent (#12699)
# 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.
2026-03-09 20:53:51 +08:00
SoftFever
db7507b84e Some QoL tweaks (#12700)
* 1. Calculate `FilamentTempType` based on `filament_info.json`, with a fallback to the temperature range.
2. Clean up some strings.

* Update src/slic3r/GUI/ObjColorDialog.cpp

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-09 20:52:12 +08:00
Alexandre Folle de Menezes
d7ea6daae2 Standardize strings (#12665)
* Standardize view actions

* Standardize the term for "first layer"

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-03-09 20:36:36 +08:00
Olof Larsson
3842511068 fix: round flush_volumes_matrix values to integers (#12672)
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>
2026-03-09 20:35:56 +08:00
Kiss Lorand
ac5c93ef2d Update HU language (#12686)
HU language update
2026-03-09 19:52:01 +08:00
Olof Larsson
2a7a3d0cd7 feat: add Creality K2 Support (#12662)
* feat: add K2 support

* fix: remove k2 pro from k2 process json

* fix: set correct start gcodes for the nozzles
2026-03-09 19:48:43 +08:00
Schildkroet
d222d804ff Added eSUN Filament PLA Basic, Marble, Matte (#12657)
# 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
```
2026-03-09 19:43:12 +08:00
Alexandre Folle de Menezes
439ce085fd Translate more pt-BR strings (#12664)
# Description
Ditto
2026-03-09 19:37:26 +08:00
Jakub Hencl
e9a69a0982 Update translate CZ (#12640)
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.
-->
2026-03-09 19:33:23 +08:00
Derrick
d09699cf34 Fix conversion to wxstring (#12698)
Fix obj import dialog encoding for non ASCII letters by making the correct conversion to wxstring

JIRA-137
2026-03-09 19:32:11 +08:00
Derrick
1bcc239a9a Added check for esc key to close dialog (#12697)
Added wx event for esc to close dialog for filament grouping dialog

JIRA-139
2026-03-09 19:31:27 +08:00
Kiss Lorand
afc2fe5428 Remove leftover Bambu warning caption from dialogs (#12696)
### 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" />
2026-03-09 19:30:07 +08:00
Derrick
8b15ec44f0 Fix flushing windows dialog able to move around using trackpad and added esc to close dialog (#12694)
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
2026-03-09 19:28:59 +08:00
Sabriel-Koh
ca85d8ade3 Disable filament grouping button logic when when not Bambu H2D (#12693)
# 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" />
2026-03-09 18:24:24 +08:00
Derrick
e8b2fa3a32 Fix zoom button tooltip width miscalculation (#12692)
wx strings to be converted to utf-8 before doing width calculation for consistency.
 
 JIRA-127
2026-03-09 18:22:37 +08:00
Derrick
b9e0cb355d Fix for notifications unable to be interacted after gcode viewer collapsed (#12689)
JIRA-126
2026-03-09 18:01:44 +08:00
Sabriel-Koh
48b85b37d4 Move adaptive flowrate to developer mode and clarified tooltip (#12688)
* Set Adaptive Volumetric Speed as a developer mode setting, and further clarified in the tooltip

* Fixed typo
2026-03-09 14:39:54 +08:00
SoftFever
eb6da907a9 Fix crash when slicing multi-material print with wipe tower (#12682)
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.
2026-03-09 13:31:11 +08:00
SoftFever
4f8097f7f7 Fix three regressions in the multi-tool extruder tab system: (#12680)
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:
2026-03-09 10:48:53 +08:00
Alexandre Folle de Menezes
da3c4b50c9 Fix plurals on some GUI strings 2026-03-08 12:37:28 -03:00
yw4z
e6f90b1c7a update 2026-03-08 02:20:31 +03:00
yw4z
d129c1d9cb Update Plater.cpp 2026-03-07 19:40:39 +03:00
yw4z
6d0d787467 Update Plater.cpp 2026-03-07 19:30:16 +03:00
yw4z
ccea80482e Update Plater.cpp 2026-03-07 04:32:05 +03:00
Jakub Hencl
d6761fedc6 New translate with Menu complete (#12243)
New translate

New translate with Menu .Thx

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-03-06 12:10:44 +08:00
SoftFever
0f92dec77d update profile version 2026-03-06 11:44:20 +08:00
Rodrigo Faselli
01a2193ad9 Fix artifact classic wall generator painted fuzzy skin (#12632)
fix artifact classic fuzzy

Co-authored-by: Ian Bassi <12130714+ianalexis@users.noreply.github.com>
2026-03-06 11:27:46 +08:00
SoftFever
624a55ec98 update CN translations 2026-03-06 11:09:43 +08:00
Noisyfox
7952721931 Fix unable to load DRC file if path contains non-ascii characters (#12619)
Fix issue that failed to load DRC file if path contains non-ascii character
2026-03-06 10:24:06 +08:00
HYzd766
5ac382a9cd Update Qidi X-Max 4 0.4 nozzle.json (#12618)
* Q2C model and new consumables

* Update Qidi X-Max 4 0.4 nozzle.json
2026-03-06 10:23:17 +08:00
InfimechOfficial
57aac709e9 Infimech image update (#12616) 2026-03-05 19:17:03 -03:00
Ian Bassi
570043509f Fix %% (#12630) 2026-03-05 17:49:00 -03:00
Felix14_v2
089073b292 Update Russian localization (#12608) 2026-03-05 17:01:44 -03:00
Ian Bassi
a0f1f3db73 Update Trendshift badge link in README (#12629) 2026-03-05 16:57:54 -03:00
Felix14_v2
8dd57b0c98 Restore merged changes 2026-03-05 21:16:40 +03:00
Ian Bassi
1205903eec Text.js spanish update (#12627) 2026-03-05 14:23:54 -03:00
Rodrigo Faselli
a5b8f4608f Flatpak Crash Fix when Fuzzy skin (#12611)
Co-authored-by: Ian Bassi <12130714+ianalexis@users.noreply.github.com>
2026-03-05 14:22:47 -03:00
Felix14_v2
8c98143932 Merge branch 'main' of https://github.com/Felix14-v2/OrcaSlicer 2026-03-05 19:36:30 +03:00
Felix14_v2
2a30344d05 Tweak before merging upstream changes 2026-03-05 19:25:52 +03:00
Ian Bassi
28649f498d Extend and Update localizations (#12610) 2026-03-05 11:33:07 -03:00
SoftFever
2ed249a81b flatpak changes (#12606)
* update flatpak for flathub
2026-03-05 17:35:08 +08:00
HYzd766
bc610e6e32 Merge branch 'OrcaSlicer:main' into A2 2026-03-05 14:08:12 +08:00
HYzd766
7fd4649d48 Merge branch 'A2' of https://github.com/HYzd766/OrcaSlicer into A2 2026-03-05 14:06:46 +08:00
HYzd766
8c895a4b7f Update Qidi X-Max 4 0.4 nozzle.json 2026-03-05 14:06:22 +08:00
Felix14_v2
f9bbfd5ea2 Unfix unnecessary line break 2026-03-04 21:56:10 +03:00
Felix14_v2
d6ba6cb8f9 Minor tweaks 2026-03-04 21:40:54 +03:00
SoftFever
52a2c033d3 Remove upstreamed wxWidgets dark theme patch for Flatpak
The GNOME dark style support patch has been submitted upstream to wxWidgets, so the local Flatpak patch is no longer needed.
2026-03-05 01:13:26 +08:00
Felix14_v2
490072310a Merge local changes with upstream ones 2026-03-04 19:34:24 +03:00
Vovodroid
1218711adb Use non-deprecated triangulate_hole method (#12592) 2026-03-04 12:25:54 -03:00
SoftFever
008cfd1f86 Linux: prefer discrete GPU on dual-GPU systems via PRIME environment variables (#12602)
* 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
2026-03-04 22:48:40 +08:00
SoftFever
d50b4cbf3d 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
2026-03-04 22:29:27 +08:00
HYzd766
7b48cf18e2 Merge branch 'OrcaSlicer:main' into A2 2026-03-04 20:11:04 +08:00
panther757
47ab79041b Linux: add Gentoo dependency installation script (#12558)
Co-authored-by: Alan Vogt <panther7@frocat.com>
2026-03-04 15:51:16 +08:00
Noisyfox
29addf5ca1 Fix issue that fan speed not reset to normal after ironing (#12595)
Fix issue that fan speed not reset to normal after ironing (OrcaSlicer/OrcaSlicer#11824)
2026-03-04 15:46:14 +08:00
Noisyfox
d390524db0 Fix issue that pressure equalizer moves pass the original end of the line when processing very short movements (#12575) 2026-03-04 15:44:37 +08:00
HYzd766
0a84934639 Q2C model and new consumables (#12599) 2026-03-04 15:42:33 +08:00
HYzd766
4f620cb6b4 Q2C model and new consumables 2026-03-04 13:37:55 +08:00
Ian Bassi
ee52b83217 Localization update (#12572)
* Update OrcaSlicer_es.po

* ? added in code

* Spanish Update

* save your filament profile.

* Downward machines settings

* type and color.

* Update OrcaSlicer_es.po

* illegal characters

* which layer being ironed.

* Update OrcaSlicer_es.po

* by chosen filament count."

* unnecessary bridges."

* Update OrcaSlicer_es.po

* Spanish Pressure advance restore

* bandeja -> cama

* RU: Restore Pressure Advance

* Calibration text

Co-Authored-By: Felix14_v2 <75726196+Felix14-v2@users.noreply.github.com>

* Updated Localization

* Input Shaping test

* Suggestion wrapper

* Added embossJob

* Updated all

* Emboss missing marks

* Missing preset values

* Action Required

---------

Co-authored-by: Felix14_v2 <75726196+Felix14-v2@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-03-04 12:50:33 +08:00
Heiko Liebscher
d8f3950059 fix: update German translations for filament presets and related terms (#12542)
* fix: update German translations for filament presets and related terms

* fix: correct typo in German translation for printer and filament profiles
2026-03-04 12:48:54 +08:00
Noisyfox
6d6f7451d4 [Emboss] Fix issue that font search not working on macOS (#12531)
Fix issue that font search not working on macOS
2026-03-04 12:46:50 +08:00
Alexandre Folle de Menezes
d54adafdaa Grammar and spelling fixes on GUI strings (#12410) 2026-03-03 17:36:42 -03:00
Alexandre Folle de Menezes
17e534cac4 Add missing space after extruder name (#12547) 2026-03-03 17:25:33 -03:00
SoftFever
90646276f8 Fix Bambu LAN printing with legacy network plugin (#12582) 2026-03-03 19:30:22 +08:00
SoftFever
b7033a4c92 WIP: Parallelize macOS CI builds by splitting arm64 and x86_64 into separate jobs (#12562)
* Parallelize macOS CI builds by splitting arm64 and x86_64 into separate jobs

* fix shell errors

* Delete intermediate per-arch artifacts
2026-03-03 19:29:59 +08:00
VOLUMIC
1f19ff67a3 VOLUMIC profils updates (#12565)
* VOLUMIC profils updates

* Delete resources/profiles/Volumic/EXO42 IDRE_cover.png

* VOLUMIC profils updates

* VOLUMIC profils updates
2026-03-03 18:54:51 +08:00
Ian Bassi
d017250d9c Fix wiki redirection (#12569) 2026-03-02 18:13:01 -03:00
Alexandre Folle de Menezes
dba8a6d88b Fix Celsius symbol not showing on G-code viewer (#12567) 2026-03-02 14:11:45 -03:00
Andrew Sun
49d2a326db Revert "Revert "Set NSWindow color space to sRGB on macOS"" (#12546)
re: https://github.com/OrcaSlicer/OrcaSlicer/pull/10827#issuecomment-3713871962

Let's give this another try :)
2026-03-02 20:31:14 +08:00
Alexandre Folle de Menezes
abd3bce88a Improve and complement the pt-BR translation (#12550) 2026-03-02 09:11:32 -03:00
SoftFever
b908bab904 fix build errors on Linux with Clang 20 and GTK warnings (#12507)
* guard -Wno-error=enum-constexpr-conversion behind compiler flag check

* Fix: Suppress GTK critical warnings and prevent multiple URI scheme registrations in WebView
2026-03-01 18:43:15 +08:00
Ian Bassi
04018980e1 Fix "Glidlines" "gridlines locale (#12529) 2026-02-28 23:44:52 -03:00
gerchowl
899bcf2e5f fix: typo "Glidlines" → "Gridlines" in View menu tooltip (#12527) 2026-02-28 23:42:51 -03:00
Rodrigo Faselli
0ef8a79cd2 Fix missing infill layers (fill_surface_by_multilines & fill_surface_trapezoidal bug fix) (#12516)
* FillRectilinear bugfix

* cleaning

* Revert "cleaning"

This reverts commit 0de21ada78.

* Filltrapezoidal is OK

* Filltrapezoidal fix 2
2026-02-28 18:52:05 -03:00
SoftFever
a38af4d85a fix missing translations for Canvas Toolbar Menu 2026-03-01 01:15:14 +08:00
SoftFever
7cabde6ca6 update profile version 2026-03-01 00:41:54 +08:00
SoftFever
6725e657ab update locale 2026-03-01 00:36:16 +08:00
yw4z
095b5116ac Add option for hiding / showing gridlines (#10545)
Might be useful who want to use custom grid line system with textures. or a clean look

### PROBLEM / SCENARIOS
• Custom made textures overlapping with grid system. so it might be confusing for user if want to use specific markings
• User may found its a distracting item and wants a clean look

### SOLUTION
added to view menu
<img width="477" height="434" alt="Screenshot-20251230192707" src="https://github.com/user-attachments/assets/e298d9b2-5f8f-4e33-af22-ea7c84c9b5b8" />

added to canvas menu
<img width="278" height="297" alt="Screenshot-20251230192717" src="https://github.com/user-attachments/assets/a9952408-a361-4e64-ad9a-72e2480c74cf" />

Clean look without gridlines
<img width="1669" height="1157" alt="Screenshot-20250827144140" src="https://github.com/user-attachments/assets/9229f330-9543-4d39-a8fc-01deb9b61336" />

<img width="1669" height="1157" alt="Screenshot-20250827144212" src="https://github.com/user-attachments/assets/ab3848fb-74d7-4618-8bc7-0cdff10a3804" />


Few Examples with custom made textures / markings without gridlines
<img width="1669" height="1157" alt="Screenshot-20250827140008" src="https://github.com/user-attachments/assets/5d7b17ab-e97a-489c-9e4d-99157a37b6b7" />

<img width="1669" height="1157" alt="Screenshot-20250827141904" src="https://github.com/user-attachments/assets/a7e0f360-a85a-489d-9bc2-39286984643a" />
2026-03-01 00:19:04 +08:00
SoftFever
60a63c63eb update locale and Simplified/Tranditional Chinese translation 2026-02-28 22:00:48 +08:00
Valerii Bokhan
5e30783dcf Enhancement: Enabling base patterns (infill) for Organic supports (#12141)
Enhancement: Enabling base patterns for Organic supports
2026-02-28 18:25:21 +08:00
Valerii Bokhan
5c07cb5c39 I18n: Preview translations minor fix (Ukrainian) (#12504) 2026-02-27 15:24:06 -03:00
SoftFever
a2528fee10 update locale 2026-02-28 01:14:05 +08:00
Ian Bassi
ae828cbde3 Fix: Init Serialized options (#12489)
Update Tab.cpp
2026-02-28 00:02:30 +08:00
Ian Bassi
3f819005cc Preview translations (#12503)
Updated new preview options missing
+ Ru improvements (thanks @valerii-bokhan )
2026-02-27 23:59:30 +08:00
Ioannis Giannakas
25d07eac8f Fix wipe tower first layer leaving gaps when spacing other than 100pc is specified (#12491)
Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-02-27 23:57:08 +08:00
Heiko Liebscher
e57733a5ff add new de translations (#12501)
add new translations
2026-02-27 23:49:16 +08:00
Molly K
8a2a778557 Simplified Chinese translation improvement (≈ lines after 16500) (second minor update) (#12453)
* SAVE line 20K+ ~ 16573

* fix syntax errors

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-02-27 23:41:22 +08:00
Alexandre Folle de Menezes
72a4597107 Fix GUI strings that should start with uppercase (#12499) 2026-02-27 11:19:22 -03:00
SoftFever
2806398e79 Skip uploading cache for PR build (#12494) 2026-02-27 13:42:19 +08:00
SoftFever
1d24470918 Feature/mac_build (#12493)
* fix deps cache miss for Mac PR build
2026-02-27 12:48:47 +08:00
tome9111991
f2c8b46af6 Fix: crash in PA calibration pattern generation (#12406)
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>
2026-02-27 12:44:40 +08:00
yw4z
c3bb4347da Filament Selection dialog Fixes / Improvements (#12325)
* Update 22.js

* fix printer list empty

* switch to vertical scrolling on custom filaments

* Update 23.css

* add stats

* fix uncommon filament types

* fix setup wizerd styling

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-02-26 23:42:49 +08:00
Ian Bassi
72db7fa4df "None (allow paint)" to "Painted Only" (#12487)
Co-authored-by: Valerii Bokhan <80919135+valerii-bokhan@users.noreply.github.com>
2026-02-26 12:05:24 -03:00
Felix14_v2
c3365e0478 Update Russian localization (#12001) 2026-02-26 11:54:46 -03:00
SoftFever
479fbc85cd Change bed temperature type to use highest temp by default (#12486)
## 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" />
2026-02-26 21:05:54 +08:00
Valerii Bokhan
76436bb29a Fix: Fixed the values comparison for Float-based config options (#12478) 2026-02-26 09:28:45 -03:00
Argo
3a61fefa3a Wipe tower "infinite out of bed line" fix (#12267)
Fix wipe tower out-of-bed moves

Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
2026-02-26 16:11:13 +08:00
Boštjan Čadež
d604cc9697 Fix: macOS 2 finger tap moves moves slider instead of opening context menu (#12375) 2026-02-25 11:20:57 +00:00
SoftFever
db1fe73e85 Fix wipe tower skirt alignment by computing bbx from actual first-layer polygon (#12457) 2026-02-25 12:37:05 +08:00
Ian Bassi
ce56ad5590 Minor export text change (#12461) 2026-02-24 15:05:57 -03:00
Alexandre Folle de Menezes
ad57020139 Fix spacing issues (#12404) 2026-02-23 23:31:23 -03:00
Ioannis Giannakas
96be9f94ef Fix wipe tower Y offset for SEMM (#12442) 2026-02-23 19:44:46 -03:00
Ian Bassi
6a831c5e78 JD processor upgrade (#12440)
* Update GCodeProcessor.cpp

Co-Authored-By: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>

* Fix

Co-Authored-By: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>

* get_axis_max_jerk_with_jd

* get_get fix

Co-Authored-By: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>

---------

Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
2026-02-23 19:32:04 -03:00
Alexandre Folle de Menezes
ec7a5f5140 Add translation markers to measure units (#12403)
# Description
Some units were missing the translation markers, others were not in the standard format.
2026-02-23 22:53:19 +08:00
Rodrigo Faselli
eeb2ec7871 Added Junction Deviation support to time estimation (#12417)
# 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" />
2026-02-23 22:48:24 +08:00
Sabriel-Koh
1f4fce974f fix: filament remap should not "paint" unpainted triangles (#12437)
fix: filament remap should not "paint" unpainted triangles and should update the object extruder UI
2026-02-23 22:45:26 +08:00
Kellwa
3b350a93f0 Anycubic Kobra Neo printer profiles (#12341)
* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload

* fix

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-02-23 22:26:15 +08:00
mlugo-apx
ea5db3aae8 Add Elegoo filament profiles to OrcaFilamentLibrary (#12359)
* 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>
2026-02-23 22:14:29 +08:00
Derrick
b89f67e433 Fix Intra-layer "As Object List" not working. (#12368)
Added checks in ByLayer print sequence to handle ordering for Intra-layer ordering option. Prevents new ordering setup when "As object list" is enabled.
2026-02-23 22:05:47 +08:00
SoftFever
e7d2bbd6a9 Fix preheat regression bugs (#12438)
Fix preheat regression bugs
revert 769fc137c7
2026-02-23 21:48:11 +08:00
Sezgin AÇIKGÖZ
872d184860 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>
2026-02-23 15:21:57 +08:00
Valerii Bokhan
4343ddf823 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>
2026-02-23 13:06:07 +08:00
yw4z
5e6a8e4daf 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" />
2026-02-23 12:56:09 +08:00
Alexandre Folle de Menezes
386aab9f94 Add and update pt-BR translations (#12409) 2026-02-23 09:04:12 +08:00
SoftFever
b2399ac909 update error message when plugin upgrade failed 2026-02-22 16:55:44 +08:00
SoftFever
c085eb845c 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
2026-02-22 16:13:06 +08:00
SoftFever
859f401df5 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.
2026-02-22 13:08:23 +08:00
minicx
7e1b2d99d3 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>
2026-02-21 13:10:08 +00:00
SoftFever
528e7c6780 tweak legacy library migration from rename to copy in BBLNetworkPlugin (#12400)
* tweak legacy library migration from rename to copy in BBLNetworkPlugin
2026-02-21 20:49:09 +08:00
SoftFever
1827a03d17 Fix an issue that on Windows the Bambu legacy plugin is 01.10.01.09 (#12380) 2026-02-21 00:15:48 +08:00
Kiss Lorand
a717597003 Fix filament override changes not appearing in Unsaved Changes and showing as “Undef category” in preset comparison (#12298) 2026-02-19 14:48:42 -03:00
Rodrigo Faselli
a5a5cad09b 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
2026-02-18 18:38:20 -03:00
SoftFever
1745e8b910 Reapply "Switch to self hosted mac runner (#12024)" with proper fix (#12278)
* Reapply "Switch to self hosted mac runner (#12024)" with proper fix

This reverts commit 783f9926e3.

* use conditional logic for self-hosted runners

* improve readbility
2026-02-17 16:31:40 +08:00
SoftFever
a81537f43d fix flatpak CI build cache 2026-02-16 21:07:09 +08:00
SoftFever
29325e3561 tweak: adjust max volumetric speed for PETG profiles to improve print quality (#12329)
* tweak: adjust max volumetric speed for PETG profiles to improve print quality
2026-02-16 11:56:15 +08:00
Argo
0604aa5c76 Fix 3MF import crash for silent-mode machine limits with legacy vector sizes (#12289)
Normalize printer_options_with_variant_2 (stride=2) machine limit vectors during preset merge to handle legacy 3MF/projects that store only a single (normal,silent) pair despite multiple printer variants, preventing set_with_restore() size-mismatch crashes.

Crash error message during 3MF import as project:

<img width="833" height="274" alt="image" src="https://github.com/user-attachments/assets/f92148a9-98c6-47b7-a0ab-d5ac8b1f2be4" />

3MF attached that causes the bug. 
[cube.3mf.zip](https://github.com/user-attachments/files/25318309/cube.3mf.zip)
2026-02-15 20:47:04 +08:00
Matthias Blaicher
bf59fe458f Fix EGL/GLX mismatch causing blank 3D preview on Linux (#12308)
- 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>
2026-02-15 16:26:16 +08:00
Branden Cash
055f24ca7a feat(MoonrakerPrinterAgent): support Happy Hare as alternative to AFC for filament sync (#12307)
# Description


# Screenshots/Recordings/Graphs


https://github.com/user-attachments/assets/5558b4be-24eb-4f2d-83fd-8482560a0014

<img width="445" height="285" alt="Screenshot 2026-02-14 at 7 31 57 PM" src="https://github.com/user-attachments/assets/e71fee66-05da-4f9c-8123-0f52e93f0ebb" />


## Tests

Removed configured filaments and pressed the sync button. Observed the filaments configured in my system were populated.
2026-02-15 14:29:58 +08:00
SoftFever
06cee7ffe7 bump profile version to "02.03.02.40" (#12309) 2026-02-15 14:24:36 +08:00
Ian Bassi
5ec4874b33 Linux: Repaired VFA tower (#12290)
* Update CalibUtils.cpp

* VFA.drc case to vfa.drc
2026-02-14 23:23:25 -03:00
SoftFever
783f9926e3 Revert "Switch to self hosted mac runner (#12024)"
This reverts commit f1212be6bb.
2026-02-14 18:14:28 +08:00
Ian Bassi
2fae370e52 Spanish minor update (#12268) 2026-02-13 16:03:56 -03:00
Ian Bassi
cef69307e7 Spanish Update (#12254)
* Spanish Update
2026-02-13 15:07:17 -03:00
Argo
769fc137c7 Ported Bambu Studio wipe tower interface features (with improved preheat and cooldown behaviour) - NEW (#12266)
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.
2026-02-13 22:53:25 +08:00
Yves
1952442e18 Restore select all plates as its own action (#12256)
restore select all plates as its own function

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-02-13 16:24:59 +08:00
Boris Samorodov
5093a3dab3 Add Rectilinear Interlaced Support for Normal support type. Fix issue #9508. (#10739)
* 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>
2026-02-13 15:30:53 +08:00
SoftFever
dfbdcad766 Revert "Raft, support interface fix and overhaul (#10947)"
This reverts commit 4692661631.
2026-02-13 15:22:03 +08:00
Kiss Lorand
4692661631 Raft, support interface fix and overhaul (#10947)
* Support interface fix

* Tree support true interlace

* remove pure format changes

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-02-13 14:34:12 +08:00
SoftFever
f681f7a2c0 Update more CHS and CHT translations (#12263) 2026-02-13 14:06:28 +08:00
Ian Bassi
f38324d521 Fix: Nozzle list (#11836)
* 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>
2026-02-13 12:24:24 +08:00
Ian Bassi
6c900535e5 Fix chinese-traditional (#12257) 2026-02-12 18:12:21 -03:00
SoftFever
e090ec0e63 Update Chinese(Traditional) translation 2026-02-13 00:32:22 +08:00
Heiko Liebscher
1421d03394 fix typos for german (#12249) 2026-02-12 09:40:07 -03:00
SoftFever
d0f5b64428 Update Chinese (Simplified) localization for Orca Slicer 2026-02-12 16:49:06 +08:00
Alexandre Folle de Menezes
a0a84f7e2d Adding more pt-BR translations (#12177)
Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-02-12 16:44:25 +08:00
Molly K
346361d634 Simplified Chinese translation improvement (minor update) (#12204)
* Update OrcaSlicer_zh_CN.po

1

* Update OrcaSlicer_zh_CN.po

2

* Update OrcaSlicer_zh_CN.po

2.1

* Update OrcaSlicer_zh_CN.po

2.2

* fix error

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-02-12 08:53:53 +08:00
Jakub Hencl
652f180945 Czech New translation (#12241)
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.
-->
2026-02-12 08:44:56 +08:00
Ian Bassi
68fdfcf0eb BBS Port: Mesh Subdivision (#12150)
Ported from BBS
You can now right-click a part and choose Subdivide Part to apply Loop subdivision with multiple iterations. This is useful for models with low original mesh resolution.

> [!NOTE]
> 1. Only meshes without non-manifold edges are supported.
> 2. Color attributes will be lost after subdivision. We recommend subdividing first, then painting and applying colors.

Not perfect and it can break some features but a nice to have and we can improve it.
https://github.com/user-attachments/assets/33f10e49-f6dc-44d3-8c21-9e12e1fe23dc

Best case scenario a sphere:
Each picture is a Mesh subdivision step over the other
<img width="541" height="495" alt="260202_164257_orca-slicer" src="https://github.com/user-attachments/assets/e62b3f4d-ee6b-4451-95a4-40a154d3a405" />
<img width="541" height="495" alt="260202_164302_%pn" src="https://github.com/user-attachments/assets/f7399457-be8d-45e7-b93f-f42064dadd64" />
<img width="541" height="495" alt="260202_164306_%pn" src="https://github.com/user-attachments/assets/55370035-219f-4b7f-94f4-9b31733820d6" />
<img width="541" height="495" alt="260202_164310_%pn" src="https://github.com/user-attachments/assets/3be8c904-cc6f-4efe-b4f8-f390b50d310c" />
2026-02-12 08:42:01 +08:00
Dipl.-Ing. Raoul Rubien, BSc
aa8b8620da Fixes 1 Bug and 8 Compiler Warnings (#10654)
* 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'
2026-02-12 08:41:35 +08:00
SoftFever
8e84d21b7f Update unsigned studio dialog with LAN/Developer mode setup instructions 2026-02-12 01:37:56 +08:00
Kiss Lorand
5c9f6a82fc Fix incorrect support style labels in unsaved-changes dialog for Tree supports (#12164) 2026-02-11 13:28:17 -03:00
yw4z
b02a50add0 Filament selection dialog > Switch to column browser UI with search boxes (#12167)
* init

* update

* add ability to select / unselect filtered items

* update

* update

* match icon placements on filter / search boxes

* add clear button

* add ability to filter checked / unchecked items

* update

* update

* update

* update

* remove use of :has selector for better browser support

* increase contrast on light mode

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-02-11 17:42:57 +08:00
Yves
89eb0b26d1 Highlight selected objects (#12115)
# 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
2026-02-11 17:16:14 +08:00
Yves
08afbefa56 Change Ctrl+A behavior from all plates to current plate only (#12236)
Change CTRL-A behavior from ALL Plates to current plate only
2026-02-11 16:08:21 +08:00
discip
49413e7990 fixing typo in #12218 (#12239)
Change slope global use configuration to show overhang

Unfortunately there was a typo in #12218

This should fix it.
2026-02-11 16:07:23 +08:00
Heiko Liebscher
d06159a0c4 New locale for all translation of new features (#12217)
* build new locale for Translation new features

done for german

* fix: Update German translation for network connection error messages
2026-02-11 16:05:59 +08:00
Ocraftyone
0683013a7e Improve the look of new version release notes (#12231)
# Description
Adds md4c to parse release notes to HTML

# Screenshots/Recordings/Graphs
<img width="695" height="580" alt="image" src="https://github.com/user-attachments/assets/8eaf2874-34f8-479a-b38c-2f9754297299" />

## Tests
Tested on Windows
2026-02-11 16:00:04 +08:00
Ian Bassi
cf31d05d26 Import step guide movement (#12235) 2026-02-10 11:44:30 -03:00
Sabriel-Koh
9950662ddf Fix: box selection selecting wrong object in orthogonal view (#12230)
# Description
When using box selection with the orthogonal view, unexpected objects end up getting selected.
Fixed by setting the selection camera to use the same view as the display camera.

Fixes #5895

# Screenshots/Recordings/Graphs
Bugged:

https://github.com/user-attachments/assets/e98fcbb1-0f01-43dd-a3d5-cb0af97e226e

Fixed:

https://github.com/user-attachments/assets/f84e801c-d595-4394-b42f-ed8758413980

## Tests
Tested the selection in both perspective and orthogonal.
2026-02-10 22:31:51 +08:00
SoftFever
55883bdb76 Revert "Improve the look of new version release notes (#12229)"
This reverts commit 38e67ff090.
2026-02-10 19:24:18 +08:00
Ocraftyone
38e67ff090 Improve the look of new version release notes (#12229)
# Description
Adds md4c to parse release notes to HTML

# Screenshots/Recordings/Graphs

<img width="691" height="574" alt="image" src="https://github.com/user-attachments/assets/1ecd9bf4-6e26-4702-880e-c6f585c145ce" />


## Tests

Tested on Windows
2026-02-10 13:53:11 +08:00
Ocraftyone
abefb0e698 Fix thumbnail rendering in CLI (#12129)
* Fix thumbnail rendering in CLI

* Remove OSMesa context flag

* Add stringified error message for glfwInit and glewInit

* micro refactor

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-02-10 13:08:22 +08:00
Argo
ed3f0e2898 Fix issue #10971 (#12108)
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" />
2026-02-10 10:56:38 +08:00
paxx12
039a693b25 Update Snapmaker U1 printer profile and G-code sequences (#12219)
* Sync Snapmaker U1 profiles with upstream v2.2.1

* Customize Snapmaker U1 start gcode: auto bed leveling and adaptive mesh

* fix bed mesh min/max  regression issues

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-02-10 10:54:57 +08:00
Argo
ffc8a3e307 Adds (AMS) filament sync options: Only sync color / sync all (#12169)
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" />
2026-02-10 09:12:30 +08:00
Sabriel-Koh
cae1567726 fix: Show Labels and Show Overhang toggles not being saved (#12218)
* fix: Show Labels and Show Overhang toggles not being saved

* refactor: use get_bool and add comments
2026-02-09 22:27:03 +08:00
Derrick
e14e186bb7 Fix wipe tower loaded outside of plate boundaries (#12191)
* 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
2026-02-09 22:25:41 +08:00
yw4z
9604b01656 Fix: tool position window glitch on Linux (#12195)
fill buffer
2026-02-09 11:07:51 -03:00
Rodrigo Faselli
084c58f365 500C temp tower Calib (#12103)
* 500C temp tower

* better model

* draco temp tower

Co-Authored-By: Ian Bassi <ian.bassi@outlook.com>

---------

Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
2026-02-09 10:03:32 -03:00
Ian Bassi
ed1b03fe6d Reduce Orca weight: Resources to Draco (#12194)
# 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.
2026-02-09 10:48:29 +08:00
davyd
2f2f0df6af feat: Add File header G-code option and print_time_sec/filament_length_m placeholders (#12186)
## 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) |
|---|---|
| ![IMG_5285](https://github.com/user-attachments/assets/fdd2cc96-6593-4108-83f4-e272d5547467) | ![IMG_5286](https://github.com/user-attachments/assets/6cb4091a-4560-4596-93d9-49f2ff8f0a2b) |

## 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)
2026-02-08 23:56:28 +08:00
Finn Bosholm
1663dab6ff fix wrong inheritance for idex profiles (#12009)
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.
2026-02-08 23:46:17 +08:00
wrathernaut
506ab3ed14 Correct pressure advance syntax in startup GCODE for Taz Pro S (#11981) 2026-02-08 23:44:18 +08:00
FlyingbearOfficial
cca8dc9790 Update bed temp for Flyingbear Ghost7 machine (#12199)
Update fdm_filament_pla @Ghost7.json
2026-02-08 17:45:17 +08:00
InfimechOfficial
8fd556e4b0 Add new models named EX and EX+APS (#11776)
# 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.
-->
2026-02-08 17:24:24 +08:00
Sezgin AÇIKGÖZ
8a77b4269d Add Elas filament profiles (PLA, PLA Pro, PETG, ASA) (#11758)
* Add Elas filament profiles (PLA, PLA Pro, PETG, ASA)

Signed-off-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>

* Re-add missing filament profiles to global library

Signed-off-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>

* Update Elas filament profiles

Signed-off-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>

---------

Signed-off-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>
2026-02-08 17:23:17 +08:00
Noisyfox
d46cd65d7c Add Elegoo CC 2 profiles (#11240)
### NOTE: NOT TESTED

<img width="789" height="601" alt="image" src="https://github.com/user-attachments/assets/f0057c21-d169-4269-8bf1-ab9cb2f5d10d" />
<img width="1567" height="1065" alt="image" src="https://github.com/user-attachments/assets/5f4e3fcf-b294-4b56-810e-59d85caff4ef" />
2026-02-08 17:00:52 +08:00
LGT-WX
48b8edc2bb [PROFILE] Add LONGER printer profiles (#11161)
# Description

Add printer profiles for LONGER LK10 and LK10 Plus by LONGER

# Screenshots/Recordings/Graphs

<img width="1920" height="965" alt="lk10 plus" src="https://github.com/user-attachments/assets/1a7667a2-1473-459c-8a15-21db709f94a9" />
<img width="1920" height="965" alt="lk10" src="https://github.com/user-attachments/assets/d3f49715-e825-41a1-9bf5-a5fc05fd07ad" />
<img width="1920" height="1039" alt="xz" src="https://github.com/user-attachments/assets/f6b92b28-679c-4c9c-825e-4da4826b5838" />


## Tests

Profiles have been tested and used with the latest OrcaSlicer 2.3.1.
Verified by Python as shown in the figure
<img width="854" height="145" alt="py" src="https://github.com/user-attachments/assets/0fa50e01-1b56-4dc4-882a-c63c294ba5ec" />
2026-02-08 16:45:08 +08:00
Azi
e025860b2c feature:added option to save a profile as detached(no inheritance) (#7071)
* 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>
2026-02-06 23:02:48 +08:00
Maeyanie
bb30999673 Add support for Draco (.drc) format (#10681)
* 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>
2026-02-06 18:27:17 +08:00
Ian Bassi
dffaa5c0a9 Calibs: Process layer height (#11835)
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.
2026-02-06 17:37:24 +08:00
Derrick
78a5caf83b remove duplicate of warning notification for wipe tower and precise z (#12192)
Fix duplicate of confirmation window for prime tower and precise z warning notification

JIRA-23
2026-02-06 17:22:37 +08:00
Derrick
e6e6210120 Fix extruder name >2 extruder printers (#12190)
Fix for memory access violation when using printers other than bbl printers with >2 extruders.

JIRA-24
2026-02-06 16:55:35 +08:00
SoftFever
9e2cf00f0c Fix Bambu Lab camera feed / Add IsShown() check (#12156) (#12173) 2026-02-06 09:21:26 +08:00
SoftFever
5d121b12ee Fix a regression where the login panel is displayed even when the plugin is disabled (#12185)
Update GUI_App to show or hide the login panel based on the "installed_networking" setting.
2026-02-06 09:18:52 +08:00
Valerii Bokhan
98cb91110e Fix: Free camera panning/rotating fixed (#12174)
Fixes #10266
2026-02-05 19:57:23 +00:00
Ioannis Giannakas
1a156e419c Update Reduce infill retraction tooltip to include effect on Z-hop (#12184) 2026-02-05 15:10:42 +00:00
Ioannis Giannakas
aa4eb9de13 Fix printer selection cursor on Mac (#12183) 2026-02-05 13:37:50 +00:00
Argo
1aee0cf526 AMS Filament sync fix for locked Tool 1 & 2 (#12180)
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
2026-02-05 18:18:59 +08:00
SoftFever
bab3c72e4f Fix compare dialog alternate background color on windows (#10781)
**PROBLEM**
• Row colors not updating after switching dark mode and opening dialog again
• Fixes https://github.com/SoftFever/OrcaSlicer/issues/9902 and https://github.com/SoftFever/OrcaSlicer/issues/966

**IMPORTANT NOTE**
• Main source of problem: dialog not destroyed after closing

**BEFORE**
<img width="769" height="682" alt="Screenshot-20250918134833" src="https://github.com/user-attachments/assets/dd77696c-ad2d-4de7-aaab-f85dd558dbbe" />

**AFTER**
<img width="757" height="677" alt="Screenshot-20250918134857" src="https://github.com/user-attachments/assets/fd28941d-996d-410f-ab04-b13f1dd0170f" />
2026-02-05 18:04:15 +08:00
Ioannis Giannakas
f9101a18f0 Fix wipe dialogue pointer on mac (#12172) 2026-02-04 14:25:56 +00:00
yw4z
d608d7dffe UI Fixes / Improvements (#12069)
* clone dialog - spin input stuck on selected

* fix advanced toggle label

* fix scrollbar appearing on project page welcome screen

* create slicing section on preferences

* reduce margins on tabs

* bbl part skip dialog

* Update filament_not_mactch.svg

* Update icon_qusetion.svg

* match hyperlink color on notifications

* fix position of notifications on slicing errors

* match background color of BBL > Calibration tab > Sidebar

* match look of BBL sidebars

* match bbl monitor icons

* match multi-device page margins

* bbl > monitor > print control buttons

* fix flush dialog showing text selection on buttons

* Printer network dialog > match combo box width
2026-02-04 11:40:02 +00:00
yw4z
ea3685aacb Tool position window Fixes / Improvements (#12068)
* init

* fix fold/unfold button direction

* remove window border

* remove unused icons

* add scaling support

* match libvgcode roles with orca terms

* fix expanding table window

* Update GCodeViewer.cpp

* fix translation support

* fix translations

* fix imgui styles
2026-02-04 11:38:05 +00:00
Rodrigo Faselli
72a2eaf82e Small memory optimization for some infills (#12063) 2026-02-03 12:46:31 -03:00
Ian Bassi
b954749310 Fix instance preview movement speed (#12154) 2026-02-03 12:46:02 -03:00
Ian Bassi
7c598841b8 AutoSlice Only on preview Tab (#12153) 2026-02-03 12:45:43 -03:00
Kiss Lorand
c302355467 Isolate narrow regions in internal solid surfaces for non-line infill patterns (#12107) 2026-02-03 12:44:56 -03:00
SoftFever
c12912e0df Fix Setup Wizard stuck on "Loading..." on Wayland (#12159)
# 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
2026-02-03 23:10:17 +08:00
SoftFever
9b4af7ca1a Fix hangs when trying to edit printer on Linux (#11714) (#11854)
On linux, some users report that attempting to edit the printer caused
OrcaSlicer to hang.
Fixes #11714
2026-02-03 23:10:02 +08:00
SoftFever
d9edc4ba75 Modularize printer agent architecture and add filament sync for third-party AMS-style systems (#12086)
# 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. -->
2026-02-03 15:42:46 +08:00
SoftFever
56f1f05f12 Fix Setup Wizard stuck on "Loading..." on Wayland
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
2026-02-03 14:47:08 +08:00
SoftFever
86d54863f7 rename agent 2026-02-03 12:01:19 +08:00
SoftFever
cf3d9118ab Merge branch 'main' into feature/orca_network_refactor 2026-02-02 23:51:39 +08:00
Noisyfox
b9d4b782c2 Fix crash when open AMS 2 humidity popup (#12123) 2026-02-02 23:50:12 +08:00
SoftFever
84faac2dd4 fix an issue the bbl printer not working 2026-02-02 23:48:22 +08:00
SoftFever
431943408b fix UI block issues 2026-02-02 18:12:19 +08:00
SoftFever
d817a4d5d4 Fix an issue that sync ams btn is not show/hide after printer agent changes 2026-02-02 12:21:41 +08:00
SoftFever
86421c6378 Use visible preset lookup for AMS filament fallback to ensure persistence across restarts 2026-02-01 23:54:21 +08:00
SoftFever
3da6f3bf77 Add SnapmakerPrinterAgent with filament sync support
Introduce SnapmakerPrinterAgent as a MoonrakerPrinterAgent subclass
that handles Snapmaker UI -specific filament detection
2026-02-01 21:51:36 +08:00
SoftFever
977a66be39 Fix active filament preset not matching wizard selection on first run (#12132)
* 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.
2026-02-01 21:34:14 +08:00
liutang
3a056f2aa3 Snapmaker U1: switch wall_generator to arachne (#12121) 2026-02-01 00:10:09 +08:00
SoftFever
1e1ffe72f6 Merge branch 'main' into feature/orca_network_refactor 2026-02-01 00:08:11 +08:00
SoftFever
c37132768a Make the generic filament the default fallback instead of using filaments sorted alphabetically by name. (#12124) 2026-02-01 00:06:39 +08:00
SoftFever
d782141ca5 Add handling for unknown filament IDs and improve filament type resolution 2026-01-31 19:32:35 +08:00
SoftFever
5935832143 clean up 2026-01-31 01:04:27 +08:00
SoftFever
8d22fad30b badge support 2026-01-31 01:04:21 +08:00
SoftFever
7059789578 fix badge mark 2026-01-30 16:14:41 +08:00
SoftFever
01eed59ee2 try to fix flatpak 2 2026-01-29 22:28:25 +08:00
SoftFever
a6719041a5 try to fix flatpak 2026-01-29 19:19:37 +08:00
SoftFever
7494c6da7d fix a crash bug when trying to add a filament after sync ams list 2026-01-29 19:10:44 +08:00
SoftFever
95ea712f3c fix issues with AFC 2026-01-29 15:35:52 +08:00
SoftFever
006e7d6c28 fix a few bugs 2026-01-28 19:04:56 +08:00
yw4z
0bf531ace8 add safe guard 2026-01-28 03:13:51 +03:00
Rodrigo Faselli
f27605eac1 3d honeycomb bug fix (with infill combination) improve bridge direction (#12062)
* fill 3d honeycomb bugfix

* fix bridges

Co-Authored-By: tome9111991 <57866234+tome9111991@users.noreply.github.com>

* Fix typo

* cleaning

* Remove bridging angle adjustment for ip3DHoneycomb

* Adjust layer height scaling for infill consistency

* PR comments

---------

Co-authored-by: tome9111991 <57866234+tome9111991@users.noreply.github.com>
2026-01-27 19:12:18 -03:00
SoftFever
9c21744cd1 fix Windows build 2026-01-27 21:21:44 +08:00
SoftFever
da9f3fdf80 Merge branch 'main' into feature/orca_network_refactor 2026-01-27 21:04:14 +08:00
SoftFever
eb56cf1ce1 add ninja option for Windows build 2026-01-27 21:02:37 +08:00
SoftFever
570d0ec7b6 Merge branch 'main' into feature/orca_network_refactor 2026-01-27 20:59:07 +08:00
SoftFever
9233005725 refactor 2026-01-27 17:41:29 +08:00
mrmees
b9ada2542a fix: adaptive layer height profile uses uncompensated Z height (#12080)
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>
2026-01-26 20:04:21 -03:00
Ian Bassi
a5f3656463 Update src/slic3r/GUI/Plater.cpp 2026-01-26 18:30:46 -03:00
Ian Bassi
c7d157514d Update src/slic3r/GUI/Plater.cpp 2026-01-26 18:29:44 -03:00
SoftFever
722d5f8aa7 refactor 2026-01-27 00:42:23 +08:00
Vovodroid
a254bec6b2 Check instances for collision (#11866) 2026-01-26 12:07:44 -03:00
SoftFever
997b2154c8 disable api 2026-01-26 21:11:52 +08:00
Ian Bassi
e0192ae437 Update documentation links in hints.ini (#12075)
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>
2026-01-26 09:51:00 -03:00
SoftFever
e93f50702e clean up 2026-01-26 20:12:55 +08:00
SoftFever
3ed07d5f9b Merge branch 'main' into feature/orca_network_refactor 2026-01-26 19:34:20 +08:00
SoftFever
978e3b79b5 refactor 2026-01-26 19:34:14 +08:00
tome9111991
8abf0f761d enh: Remap filament (#12016)
# Description

This Pr improve the Remap filament feature.
It now recognizes the filaments used in the object and makes them available only for remapping.
You can also see a small preview, showing which color will be changed to which.

Before PR:
![before](https://github.com/user-attachments/assets/e13f3622-2420-478e-a22c-9d7cdc12b24c)


After PR:
![after](https://github.com/user-attachments/assets/38d94230-f5bd-45f2-b9cd-c5bdff5ee801)
2026-01-26 15:21:18 +08:00
SoftFever
1a696173c0 1 2026-01-25 12:17:25 +08:00
SoftFever
3da2bf1bd8 refactor QidiPrinterAgent 2026-01-24 22:36:35 +08:00
SoftFever
9c6b8edcb1 select machine 2026-01-24 15:48:32 +08:00
SoftFever
9703a6b4d7 init 2026-01-23 17:05:56 +08:00
Ian Bassi
e81e7b9a23 Calibs: Disable reverse on even (#11988)
* 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
2026-01-23 07:05:30 +00:00
SoftFever
12f51f906e try to fix build errors #2 2026-01-22 18:26:24 +08:00
SoftFever
6419d0ebd9 fix build error 2026-01-22 17:12:48 +08:00
SoftFever
f1212be6bb Switch to self hosted mac runner (#12024)
# 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.
-->
2026-01-22 16:03:13 +08:00
Dmitrii
f3f752d0be Prusa CORE One L (C1L) Profiles (#11447)
# Description

This adds support for Prusa CORE One L.

Prusaslicer commit: 5bda77520e

# Screenshots/Recordings/Graphs

<img width="762" height="289" alt="image" src="https://github.com/user-attachments/assets/ff117547-daaa-46c1-a964-996d533613cc" />

(no i'm not sure if it's meant to be this wide)

## Tests

None yet, plz help
2026-01-22 15:34:43 +08:00
Ian Bassi
27f2f2be62 Update help link for symmetric_infill_y_axis option (#12034)
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.
2026-01-21 17:24:44 -03:00
Kiss Lorand
ecc2c91e32 Fix aligned back seam positioning for mirrored objects (#12028)
* 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
2026-01-21 16:00:32 -03:00
Ioannis Giannakas
d9c48c3d53 Clarify shrinkage compensation warning message & tooltips (#12031) 2026-01-21 15:17:19 +00:00
Sabriel-Koh
5ce5e8df37 Refactor: move Printer dependencies data validation from Preset to Tab (#12026)
# 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.
2026-01-21 21:32:18 +08:00
luzpaz
a036de042b Fix various typos in source documentation (#11553)
* Fix various typos in source documentation

* Delete cmake/modules/Catch2/CatchAddTests.cmake

* Delete tests/example/example_tests_main.cpp

* Revert test_config.cpp

---------

Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
2026-01-21 09:19:25 -03:00
Kiss Lorand
4c90144b98 Fix zigzag symmetry (#12022)
### Description

ZigZag infill didn't respect the "Symmetric infill Y axis" parameter's setting. This PR fixes it.

Fixes #12015

### Screenshots/Recordings/Graphs
- **Before:**
<img width="611" height="612" alt="image" src="https://github.com/user-attachments/assets/1f6fc3f9-ec37-4974-86fc-fd4fe6dd9329" />

&nbsp;

- **After:**
<img width="587" height="582" alt="image" src="https://github.com/user-attachments/assets/088715c2-5d12-4596-aab6-3a1eca353abe" />
2026-01-21 12:38:15 +08:00
Valerii Bokhan
9ed8848c9d Fix: The correct build plate is being selected in the UI on project loading (#11985)
# Description

Fixes: #11966

Fixed the build plate type setting during project load.

Implemented the code solution suggested by @kisslorand
2026-01-21 12:19:56 +08:00
Sabriel-Koh
c906075148 Fix: GCodeViewer displaying inconsistent data in title and body (#12014)
* 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
2026-01-21 00:32:52 +08:00
Jan Pagel
d3d161235d Fix typo in German translation for "Number of slow layers" (#11895)
Fix typo in "Number of slow layers"
2026-01-20 09:29:33 -03:00
Nanashi
b64f29b233 Update screenshot URLs and formatting in metainfo.xml (#11994) 2026-01-18 19:25:44 +08:00
Ian Bassi
97c8da4d03 Fix \n not displayed (#11978) 2026-01-16 19:06:07 -03:00
Rodrigo Faselli
eac352f95d Non manifold edges calibration bug-fix (#11861)
* fix non manifold edges calib

Update Plater.cpp

* remove unused model

* Model Fix

Co-Authored-By: yw4z <yw4z@outlook.com>

---------

Co-authored-by: yw4z <yw4z@outlook.com>
2026-01-16 18:27:22 -03:00
tome9111991
9abe42c503 Fix: UI Overriding some settings per object (#11977)
* 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
2026-01-16 18:18:53 -03:00
tome9111991
d69620a716 Fix: Change filament for a specific object instance (#11963)
Fix: Crash when setting filament for object instance
2026-01-16 16:09:47 -03:00
tome9111991
cf54ad58ed Fix/blackcolor gcode preview (#11912)
* 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
2026-01-16 16:05:48 -03:00
Kiss Lorand
95c6cd05fa Fix incorrect layer and time shown in Preview legend for pause/custom G-code entries (#11968)
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.
2026-01-16 14:20:17 -03:00
Kiss Lorand
304ea7867e QoL: Enable Enter key to confirm Clone dialog and run cloning action (#11422)
Enter key confirms Clone dialog

Co-authored-by: yw4z <ywsyildiz@gmail.com>
2026-01-16 01:25:29 +03:00
SoftFever
0c3055fd13 Fix "[warning] option: attempt to access option with wrong type: downward_check " warning 2026-01-16 00:48:50 +08:00
Kiss Lorand
cc585a646b Fix: Bring back "Only lift Z below" can be disabled (#11440)
Let "Only lift Z below" to be disabled
2026-01-15 11:39:19 -03:00
Valerii Bokhan
e6b93f9b90 Fix: Correct overriding for Support and Support Interface flow ratios per printing object (#11872)
Fixes #11859
2026-01-15 11:37:55 -03:00
Neo
a5f00c4138 Small Loop Memory Optimizations (#11887)
# 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.
2026-01-15 22:09:30 +08:00
SoftFever
01596888c7 Re-enable discrete GPU detection, as it’s no longer causing issues. 2026-01-15 19:58:13 +08:00
discip
b37f68d778 make Fuzzy skin options only available when Fuzzy skin is not disabled (#10312)
Mimicking the behavior of Ironing.

![demo](https://github.com/user-attachments/assets/443aa8c3-8b7c-4ab1-8445-4796185273d4)
2026-01-15 19:40:15 +08:00
Kiss Lorand
5c05e036c4 Fix: Apply bed–filament compatibility checks to all printers (#11432)
### 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.
2026-01-15 19:02:58 +08:00
SoftFever
9b8f3e2662 Fix multi-tool printer filament UI issue (#11957) 2026-01-15 11:09:28 +08:00
Jingxi-Polymaker
8225d642d0 Add CoPE material type (#11867)
# 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.
2026-01-14 19:51:13 +08:00
Hanan V
6d926c80cb Fix assign-issue-action: revert to v2.2 (v3.0.0 is broken) (#11904)
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/426

Fixes #11873

Co-authored-by: Hanan <okets78@hotmail.com>
2026-01-13 18:54:43 -03:00
Ian Bassi
f18854fb14 Update Wiki Guide hyperlink in StepMeshDialog (#11945)
Changed the URL for the Wiki Guide hyperlink to point to the updated 'prepare_stl_transformation' page instead of 'stl-transformation'.
2026-01-13 23:55:26 +08:00
SoftFever
3410d38475 Update check_profiles.yml to suppress output during unzip operation 2026-01-13 23:16:33 +08:00
bdunks
9561b9e8c0 Fix Gtk-CRITICAL assertions creating noise and occasional lag in Linux/GTK (#11897)
* 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"
2026-01-13 21:13:51 +08:00
SoftFever
8c2f3290f2 Misc profile fixes (#11944)
* fix errors in Qidi profile

* update U1 profile

* Add permissions for pull requests and contents in check_profiles.yml
2026-01-13 21:06:48 +08:00
axtox
f47f7a6288 Fixed wrong tool change at the starting G-Code for the multicolor Geeetech printers (#11926)
* 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
2026-01-13 20:23:32 +08:00
SoftFever
e173ad8df1 QoL: exclude handy model dir from recent list (#11934)
* 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
2026-01-13 09:40:55 +08:00
SoftFever
ccb7416a6d Fix crashes when loading old 3MF project (#11933)
Enhance backward compatibility for filament extruder variants in 3MF project files
Fix crashes when loading old 3MF project
2026-01-13 09:40:42 +08:00
Chiheb Madiouni
7bab2c2785 Add WEMAKE3D 3DPrinters Profiles (#11880)
# 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.
-->
2026-01-10 23:06:41 +08:00
Ioannis Giannakas
a83b005f8b Bug fix: Display max_junction_deviation warning dialogue only on marlin printers (#11891)
# Description

max_junction_deviation value is only available for marlin2 printers. Update warning dialogue conditions to only display it for Marlin 2 printers.

Fixes #11889

# Screenshots/Recordings/Graphs

Before:
![image](https://github.com/user-attachments/assets/62f5bbf0-b726-43b0-9c89-7aaee65e35ce)

After:
![image](https://github.com/user-attachments/assets/ec9b83d6-b07d-4885-ba5a-a723387838f5)
2026-01-09 23:33:34 +08:00
Kiss Lorand
b74335e15e Fix UTF-8 corruption in Custom G-code editor (°C and other Unicode characters) (#11521)
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
2026-01-09 21:25:48 +08:00
HYzd766
c400640197 QIDI MAX4 (#11888)
New Machine QIDI X-Max4
2026-01-09 20:36:57 +08:00
Kiss Lorand
0a9cab3991 Fix: remove extra padding from GCode window (#11871) 2026-01-09 09:02:09 +00:00
SoftFever
779f4a890d QoL: improve gcode marker (#11881)
QoL: Improve gcode marker
2026-01-09 11:52:30 +08:00
Ioannis Giannakas
7ac84b1f17 Revert "Double seam paint on fuzzy skin bug-fix" (#11882)
Revert "Double seam paint on fuzzy skin bug-fix (#11808)"

This reverts commit 86c6cf7b91.
2026-01-08 19:42:47 +00:00
Ioannis Giannakas
4af168bac7 Fix erroneous interpolation on speed, flow rate in speed and flow views (#11848)
# Description

Reverts to default orca behaviour of showing the gcode speeds and flow values instead of an interpolation to the next segment.

The existing behaviour incorrectly shows the next G1 XY command following a bridge or overhang as interpolated when using the speed and flow views. This is inconsistent with both actual speed (as its limited to a single segment) and gcode view (as it shows a speed gradient where there is none in the gcode).

Before / after
![image](https://github.com/user-attachments/assets/f3dc1130-40cf-48e6-8da4-ef4b7df15721)
![image](https://github.com/user-attachments/assets/a14c88f7-07dd-4076-be82-dbc13b05ad00)

![image](https://github.com/user-attachments/assets/7876e297-2f59-4adf-bd13-c1da75117d33)


Actual speed and flow views are unaffected

![image](https://github.com/user-attachments/assets/c71d6361-9190-4bb4-8b44-40131b1c4b8f)
![image](https://github.com/user-attachments/assets/e97bf6cc-e2ab-4aed-8130-b41f3e4a7ed2)
2026-01-08 23:14:46 +08:00
coryrc
6d3e0de4d9 Fix assign-issue-action and modify reminder days (#11874)
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).
2026-01-08 20:40:14 +08:00
SoftFever
1d6595597d Remove range checks for bed_exclude_area and never used printable_area checks (#11877)
# 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.
-->
2026-01-08 20:36:09 +08:00
SoftFever
2486bdfbce Remove range checks for bed_exclude_area and never used printable_area checks 2026-01-08 20:35:42 +08:00
SoftFever
2ca3a85d15 Feature/post-error-to-PR-for-check-profile (#11862)
Post detected errors as a comment to the PR.
2026-01-07 13:58:26 +08:00
SoftFever
fe227b93bb Revert "test error"
This reverts commit cb786d95a6.
2026-01-07 13:57:15 +08:00
SoftFever
99aef17723 fix 2026-01-07 13:55:36 +08:00
SoftFever
cb786d95a6 test error 2026-01-07 11:28:28 +08:00
SoftFever
eef9794d92 Post check_profiles error message to PR 2026-01-07 11:28:06 +08:00
SoftFever
6d7f32d03b Added 0.12, 0.16 and 0.28mm Anycubic Kobra 2 neo profiles #profile (#11627)
Added 3 profiles using some values of the Anycubic Slicer Next
2026-01-07 11:26:31 +08:00
Christopher R. Palmer
3fecf916c1 Fix hangs when trying to edit printer (#11714)
On linux, some users report that attempting to edit the printer
caused OrcaSlicer to hang.

Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>
2026-01-06 14:55:36 -05:00
Dan Martí
e175f8582c Merge branch 'main' into main 2026-01-06 12:44:23 -03:00
Dan Martí
71c1e741ee Fixed a typo 2026-01-06 12:43:42 -03:00
SoftFever
ba5f0e707d Port libvgcode/improved G-code viewer from PrusaSlicer 2.8.0 (#10735)
# Description

Fixes #6813 
Fixes #7782 
Fixes #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
2026-01-06 23:15:16 +08:00
SoftFever
3b4600d65b fix some minor issues 2026-01-06 18:19:50 +08:00
Neo
eb72dce9aa Fix typo in filament_sbs_template.json (#11837)
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)
2026-01-06 08:34:34 +00:00
SoftFever
39df09be8b fix build errors 2026-01-06 16:31:54 +08:00
Dan Martí
98f6467942 Merge branch 'main' into main 2026-01-06 02:46:32 -03:00
Dan Martí
128ef60bf3 Add profiles for Anycubic Kobra 2 Neo
Added the 0.12, 0.26 and 0.28 profiles for Anycubic Kobra 2 Neo 0.4
2026-01-06 02:40:29 -03:00
SoftFever
1b355be432 Merge branch 'main' into libvgcode 2026-01-06 11:09:09 +08:00
Byeon Ho cheol.
57dd572427 Add support for Cubicon xCeler-Plus printer and profiles. (#11771)
# 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
2026-01-06 10:56:00 +08:00
Dan Martí
89c58a7429 Merge branch 'main' into main 2026-01-05 20:53:01 -03:00
Ioannis Giannakas
eab86797dd Relax flushing volume thresholds for printers needing higher purge. (#11778)
* Relax flushing volume thresholds for printers needing higher purge.

* Revert multiplier UI color handling
2026-01-05 22:41:04 +00:00
SoftFever
03d9dea12c Allow selecting specific network plugin versions (#11645)
# 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.
2026-01-06 00:28:27 +08:00
SoftFever
883c095a53 Remove the warning message for legacy version to keep it consistent with the original "legacy option." 2026-01-06 00:04:59 +08:00
SoftFever
b908c33eea Improve hot reload plugin 2026-01-05 23:29:28 +08:00
SoftFever
01f5c4caaa Fix an error that AppConfig::save is called from non main thread 2026-01-05 23:29:28 +08:00
SoftFever
ac482935ea Merge branch 'main' into feat/configurable-bambu-network-lib 2026-01-05 21:06:39 +08:00
SoftFever
044a1d5ba4 Fixed an issue where the wipe tower did not account for z_offset, especially when "No sparse layers" is enabled. (#11833)
# 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.
-->
2026-01-05 20:33:13 +08:00
Rodrigo Faselli
ef876fe577 Wipe Tower Auto Brim bug-fix (Non BBL printers) (#11831)
# 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.
2026-01-05 20:15:23 +08:00
Pepe-Polymaker
8670bb65f2 Refactor Polymaker folder within Snapmaker profile directory and add more profiles (#11613)
# 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
2026-01-05 18:12:56 +08:00
SoftFever
57f9112b7c Update GitHub Actions workflows to use actions/cache@v5 and actions/upload-artifact@v6 2026-01-05 17:54:59 +08:00
SoftFever
1893712063 Revert "Fix missing force-build, use non-docker publish action, be nice to cache (#11688)"
This reverts commit 8989e2102d.
2026-01-05 17:49:52 +08:00
SoftFever
cf9de8e444 Revert "pack deps artifact to better support symbolic links"
This reverts commit c8a4a7db29.
2026-01-05 17:45:15 +08:00
SoftFever
c8a4a7db29 pack deps artifact to better support symbolic links 2026-01-05 16:48:34 +08:00
SoftFever
541f3bb93b Merge branch 'main' into feat/configurable-bambu-network-lib 2026-01-05 08:39:21 +08:00
Maciej Wilczyński
1b782d82bc Fix fresh install issues 2026-01-04 15:25:44 +01:00
Rodrigo Faselli
0c5f6c9865 🧹Fix some compile warnings (#10158)
Fix  some compile warnings
<img width="1489" height="1161" alt="image" src="https://github.com/user-attachments/assets/da2d592f-b6d5-4706-9c97-ec6a0da4292f" />
2026-01-04 14:16:30 +08:00
Sezgin AÇIKGÖZ
03c8541b09 Update machine profile for OpenEYE Peacock V2 (#11790)
# 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.
2026-01-04 14:15:31 +08:00
mjfsch
ad88d43db8 CoPrint Profiles Update (#11818)
# 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.
2026-01-04 14:14:54 +08:00
SoftFever
2e53e9db02 doxygen doc are too big for pages, use R2 2026-01-04 11:12:38 +08:00
Rodrigo Faselli
86c6cf7b91 Double seam paint on fuzzy skin bug-fix (#11808)
* double seam fuzzy bugfix

* Update FuzzySkin.cpp

* 3 point minimum for loop

* Update FuzzySkin.cpp

* close the loop is redundant

* cambio minimo

* Update FuzzySkin.cpp

* Update FuzzySkin.cpp
2026-01-03 16:48:45 +00:00
SoftFever
fed4a120e4 enable swap for doxygen 2026-01-03 23:29:53 +08:00
SoftFever
9d39f5a5a1 update .doxygen 2026-01-03 23:13:01 +08:00
yw4z
0bee82cee5 Hyperlink class (#9947)
### FIXES
• 3mf file version check dialog opens bambu releases page instead Orca

### CODE COMPARISON

<img width="112" height="36" alt="Screenshot-20251128125737" src="https://github.com/user-attachments/assets/73718a18-8159-43d5-bb80-0eb90d59a8f6" />

**wxHyperlinkCtrl**
• System decides what colors to use. so blue color is visible even with colors set
• No need to use SetCursor()
```
auto wiki_url = "https://github.com/OrcaSlicer/OrcaSlicer/wiki/Built-in-placeholders-variables";
wxHyperlinkCtrl* wiki = new wxHyperlinkCtrl(this, wxID_ANY, _L("Wiki Guide"), wiki_url);
wiki->SetToolTip(wiki_url); // required to showing navigation point to user
wiki->SetFont(Label::Body_14); // not works properly
wiki->SetVisitedColour(wxColour("#009687")); // not works properly
wiki->SetHoverColour(  wxColour("#26A69A")); // not works properly
wiki->SetNormalColour( wxColour("#009687")); // not works properly
```

<img width="132" height="39" alt="Screenshot-20251128125847" src="https://github.com/user-attachments/assets/f6818dc0-5078-498a-bf09-1fd36e81ebe5" />

**wxStaticText**
• Works reliably on colors and fonts
• All event has to defined manually
```
wxStaticText* wiki = new wxStaticText(this, wxID_ANY, _L("Wiki Guide"));
auto wiki_url = "https://github.com/OrcaSlicer/OrcaSlicer/wiki/Built-in-placeholders-variables";
wiki->SetToolTip(wiki_url); // required to showing navigation point to user
wiki->SetForegroundColour(wxColour("#009687"));
wiki->SetCursor(wxCURSOR_HAND);
wxFont font = Label::Body_14;
font.SetUnderlined(true);
wiki->SetFont(font);
wiki->Bind(wxEVT_LEFT_DOWN   ,[this, wiki_url](wxMouseEvent e) {wxLaunchDefaultBrowser(wiki_url);});
wiki->Bind(wxEVT_ENTER_WINDOW,[this, wiki    ](wxMouseEvent e) {SetForegroundColour(wxColour("#26A69A"));});
wiki->Bind(wxEVT_LEAVE_WINDOW,[this, wiki    ](wxMouseEvent e) {SetForegroundColour(wxColour("#009687"));});
```

<img width="132" height="39" alt="Screenshot-20251128125847" src="https://github.com/user-attachments/assets/f6818dc0-5078-498a-bf09-1fd36e81ebe5" />

**HyperLink**
• Fully automated and single line solution
• Colors can be controllable from one place
• Works reliably on colors and fonts
• Reduces duplicate code
```
HyperLink* wiki = new HyperLink(this, _L("Wiki Guide"), "https://github.com/OrcaSlicer/OrcaSlicer/wiki/Built-in-placeholders-variables");
wiki->SetFont(Label::Body_14) // OPTIONAL default is Label::Body_14;
```


### CHANGES
• Unifies all hyperlinks with same style and makes them controllable from one place
• Replaces all wxHyperlink with simple custom class. Problem with wxHyperlink it mostly rendered as blue even color set
• Reduces duplicate code
• Adds wiki links for calibration dialogs
• Probably will add "Wiki Guide" to more dialogs overtime

<img width="349" height="238" alt="Screenshot-20251127212007" src="https://github.com/user-attachments/assets/69da2732-ea35-44de-8ebc-97a01f86328f" />

<img width="355" height="459" alt="Screenshot-20251127212021" src="https://github.com/user-attachments/assets/c0df40f8-c15d-47fa-b31a-cf8d8b337472" />

<img width="442" height="382" alt="Screenshot-20251127212046" src="https://github.com/user-attachments/assets/5d94242b-6364-4b0a-8b2f-a1f482199bd1" />

<img width="225" height="241" alt="Screenshot-20250824171339" src="https://github.com/user-attachments/assets/39ca6af3-6f8a-42ee-bf1d-c13d0f54bb63" />

<img width="442" height="639" alt="Screenshot-20251127212403" src="https://github.com/user-attachments/assets/c1c580f8-3e1b-42f0-aa8e-bac41c2ff76b" />

<img width="476" height="286" alt="Screenshot-20251127212515" src="https://github.com/user-attachments/assets/28b130ce-c7c0-4ada-9842-ff7154c00c21" />

<img width="1460" height="245" alt="Screenshot-20251127212541" src="https://github.com/user-attachments/assets/3fca2649-9cd3-4aea-9153-b2f508fdfefe" />

<img width="401" height="291" alt="Screenshot-20251127213243" src="https://github.com/user-attachments/assets/82b4ec1f-6074-4018-9efa-a1b6b819ae28" />
2026-01-03 23:06:57 +08:00
SoftFever
06544bce9d Update Doxygen workflow to set DOT_NUM_THREADS to 1 to prevent parallel processing issues 2026-01-03 18:02:42 +08:00
SoftFever
a2c90e2de4 deploy doxygen doc to internals.orcaslicer.com 2026-01-03 17:52:19 +08:00
Dipl.-Ing. Raoul Rubien, BSc
bed3cf154a Fixes 11 Compiler Warnings (#10753)
* fixes: wxTimerEvent not supposed to be created by user code [-Wdeprecated-declarations]

* use wxTimerEvent instead of wxCommandEvent.

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-01-03 16:30:14 +08:00
mosfet80
504a5d3b70 Update Qhull.cmake (#10848)
# 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.
-->
2026-01-03 00:36:04 +08:00
neo-jayfeather
af9688e619 Small Printer Thumbnail Orientation and Typo Fixes (#11807)
# Description
- Centered P2S image and removed unnecessary padding (different source image). 
- Renamed Ginger Additive G1 (ginger --> Ginger, no image change).
- Renamed Magic maker hj SK (sk --> SK, no image change).
- Renamed Wondermaker ZR Ultra S (ULtra --> Ultra, no image change). 
- Replaced Geeetech A10M (to hide spool on top, better framing)
- Edited M3D Enabler so the white background is transparent (same image, edited & cropped).

> [!NOTE]
> All images were edited using GIMP on Linux, are 240x240 px @ 144 dpi. 
> (and no AI was used for this description or image processing, if that matters)
# Screenshots/Recordings/Graphs
| Printer | Old | New |
|----|-----|----|
|P2S|<img width="373" height="203" alt="image" src="https://github.com/user-attachments/assets/49e441b0-b2bf-4ec4-b63d-a6a53736181a" /> | <img width="369" height="208" alt="image" src="https://github.com/user-attachments/assets/ce10d552-d238-453e-8ee0-d1382203c7e7" /> |
|Ginger Additive G1|<img width="185" height="221" alt="image" src="https://github.com/user-attachments/assets/d97998cb-7385-4cca-a747-05860b47ea0f" />|<img width="187" height="207" alt="image" src="https://github.com/user-attachments/assets/07054674-9358-4d50-9db1-690542d66ffb" />|
|Magic Maker hj SK|<img width="170" height="211" alt="image" src="https://github.com/user-attachments/assets/795dfb48-749b-4fbb-8005-49689a11fcc7" />|<img width="189" height="210" alt="image" src="https://github.com/user-attachments/assets/5d0f60d8-8c64-4881-baee-ee7089970c25" />|
|Wondermaker ZR Ultra S|<img width="171" height="208" alt="image" src="https://github.com/user-attachments/assets/40618ef8-ec2e-4dd8-8257-907dab1537eb" />|<img width="178" height="207" alt="image" src="https://github.com/user-attachments/assets/ba5ec44c-9aac-41f6-b8b4-8fd96edb489c" />|
|Geeetech A10 M|<img width="186" height="206" alt="image" src="https://github.com/user-attachments/assets/f5db21c0-e8e1-4f24-bdc7-ac46db8cd646" />|<img width="181" height="205" alt="image" src="https://github.com/user-attachments/assets/b008e2f6-4409-43d4-9463-4258e0b07be7" />|
|M3D Enabler|<img width="204" height="228" alt="image" src="https://github.com/user-attachments/assets/697f0c25-d4de-4e23-94e4-de78b57865cf" />|<img width="209" height="231" alt="image" src="https://github.com/user-attachments/assets/95dc6a0e-bb3d-4c63-bdef-0bdfb7209e50" />|

## Tests

No code was changed, so no logic was tested. I have tested the import UI and have made sure that the images follow previous standards (appears to be 240x240, 144 ppi).
2026-01-02 17:26:27 +08:00
innovatiQ
11018ba0f3 Polymaker Polymax PETG updated - Grauts HPP4GF25 added (#11665)
* 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>
2026-01-02 10:06:53 +08:00
dependabot[bot]
8147f8d5fa Bump actions/download-artifact from 4 to 7 (#11799)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 7.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4...v7)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-02 10:05:47 +08:00
dependabot[bot]
d021da1487 Bump actions/cache from 4 to 5 (#11798)
Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-02 10:05:41 +08:00
dependabot[bot]
a30fa08e1b Bump actions/upload-artifact from 5 to 6 (#11797)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-02 10:05:33 +08:00
SoftFever
d1f4e8abe1 New OrcaSlicer wiki URL (#11800) 2026-01-02 10:04:56 +08:00
Ioannis Giannakas
263b592885 Revert "Fix float number not working properly for option min/max" (#11794)
Revert "Fix float number not working properly for option min/max (#11211)"

This reverts commit 69861b57f9.
2025-12-31 22:37:58 +00:00
Noisyfox
69861b57f9 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
2025-12-31 21:23:46 +00:00
SoftFever
32cf44fc0a Don't emit the preheat command if ooze_prevention is disabled. (#11791) 2025-12-31 23:36:32 +08:00
Ian Bassi
7c91459c37 Emit Disable Power Loss Recovery (#11616)
* 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>
2025-12-31 00:16:47 +08:00
yw4z
0330e86007 Introduce canvas menu (#11618)
* init

* update

* Update GLCanvas3D.cpp

* Update GLCanvas3D.cpp

* cleanup

* fix icon size

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-12-31 00:02:48 +08:00
Ian Bassi
81dd153798 Small area flow compensator improvements (#11716)
* 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.
2025-12-30 13:34:14 +00:00
Rodrigo Faselli
2877c6032d Improve connect infill for multiline (#11765)
* Improve connect infill for multiline
* Simplify multiline infill connection logic
2025-12-30 09:30:35 +00:00
Ioannis Giannakas
0f397492e7 Fix non bambu wipe tower issues (skirt overlapping with tower, extreme travel moves outside plate boundary) (#11748)
* Fix prime/purge tower extreme travel for non BBL printers
* Fix wipe tower skirt not generating correctly for non bambu printers
2025-12-30 09:28:09 +00:00
yw4z
e8af78d032 Custom grouping options for user filament presets (All, None, By Vendor, By Type) (#11681)
* Update PresetComboBoxes.cpp

* add option on preferences

* simplify changes

* update

* Update PresetComboBoxes.cpp

* Update PresetComboBoxes.cpp

* support lowercase on sorting non submenu list

* minor changes

---------

Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-12-29 23:37:36 +08:00
Kiss Lorand
3dc80593bd Brim: optionally generate brim from Elephant Foot Compensation outline (#11760)
* 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>
2025-12-29 09:35:44 +08:00
Dan Martí
04dfbc3e39 Merge branch 'main' into main 2025-12-28 22:05:28 -03:00
SoftFever
0e5a816318 Migrate legacy networking configuration to new network plugin versioning system. Remove legacy networking setting and update related GUI components to reflect the changes. Implement auto-migration for legacy libraries to ensure compatibility with the new versioning scheme. 2025-12-28 19:57:08 +08:00
Ian Bassi
b93112c674 Move Clipper2 dependency to deps_src directory (#11736)
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>
2025-12-28 11:19:02 +02:00
SoftFever
5f18efa9e2 Merge branch 'main' into feat/configurable-bambu-network-lib 2025-12-27 23:40:35 +08:00
coryrc
8989e2102d Fix missing force-build, use non-docker publish action, be nice to cache (#11688)
* Fix missing force-build and use non-docker publish action

Fixes #11687
Fixes #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.
2025-12-27 21:14:55 +08:00
Sezgin AÇIKGÖZ
1ca20469d7 Add OpenEYE Peacock V2 vendor, printer and process profiles (#11745)
* Add OpenEYE Peacock V2 vendor, printer and process profiles

Signed-off-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>

* change url keys

Signed-off-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>

* Update OpenEYE Peacock V2 profile parameters

Signed-off-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>

---------

Signed-off-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>
2025-12-27 21:12:54 +08:00
Bilal7828
1a3b8dc6a2 Adds M3D D8500 Enabler Pro Profiles V1 (#11503)
* 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>
2025-12-25 00:21:41 +08:00
Ioannis Giannakas
2026a0cf0c Fix defaulting to filament preview when multiple tools are available but only 1 is used (#11734) 2025-12-24 14:50:48 +02:00
Ioannis Giannakas
2a0cfdb356 Fill Adaptive disconnecting from walls at low density. Disable rotation as infill type does not support it (#11728)
Fix adaptive fill issues
- Disconnecting from walls at low density
- Not supporting rotation

Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
2025-12-24 12:26:50 +02:00
Rodrigo Faselli
506fde8f86 Clipper 2 multiline Infill (#11435)
* 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>
2025-12-23 22:53:09 +02:00
discip
a240478c30 make support speed visible independent of support state (#10916) 2025-12-23 22:43:14 +02:00
Kiss Lorand
b1d659bad5 FIX: Refresh filament setting overrides on preset change (#11712)
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.
2025-12-23 19:06:29 +02:00
Noisyfox
0aac0478e7 GCode Macro: Fix placeholder parser bugs and enable tests (#11485)
* Support creating vector variable

* Add tests for placeholder parser variables

* Fix placeholder line width substitution & tests

* Enable PlaceholderParser tests

* fix build errors

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-12-23 23:44:43 +08:00
SoftFever
3c47b60063 fix a build error 2025-12-23 19:48:21 +08:00
Brandon Wees
baf5f286c3 feat: update CORE One profiles for to Prusa 2.4.2 (#11453)
* feat: update CORE One profiles for to Prusa 2.4.2

* fix: top surface acceleration

* fix: top surface acceleration duplicates

* fix: incorrect overhang speed mappings

* fix: duplicate keys

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-12-23 12:56:53 +08:00
Kuran Kaname
f08cae6c5a Adjust resonance avoidance speed calculation (#11462)
* 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>
2025-12-23 12:55:55 +08:00
yw4z
7fa6175b4f Compact Printer Selection UI - part 3 (#11676)
* init

* Update ImageDPIFrame.cpp

* Update Plater.cpp

* update

* update

* Update PresetBundle.cpp

* ensure 0.25 returned as 0.25 instead 0.2

* Merge branch 'main' into compact-printer-selection-UI-part-3

* Merge branch 'main' into compact-printer-selection-UI-part-3

* Merge branch 'main' into compact-printer-selection-UI-part-3
2025-12-23 01:30:03 +08:00
Ocraftyone
9092389ef9 Show printer bed based on BBL vendor, not network (#11610)
* Show printer bed based on BBL vendor not network

* add comment

---------

Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-12-23 00:54:54 +08:00
mosfet80
3da093b756 Update CGAL.cmake (#10850)
* Update CGAL.cmake

* Delete deps/CGAL/0001-clang19.patch

* Update CGAL.cmake

* Update CGAL.cmake

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-12-23 00:44:36 +08:00
Tanuj Goswami
6a3e41035c Add Eolas Prints filament profiles (18 profiles) (#11101)
* 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.
2025-12-22 18:38:14 +02:00
Kiss Lorand
ace2bd1349 FIX: Embossed text edit not reflected in Objects list (#11692)
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.
2025-12-22 18:23:41 +02:00
Kiss Lorand
b2a2b71b92 Fix filament preset undo tracking (#11693)
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.
2025-12-22 18:18:41 +02:00
Noisyfox
e69daea3c3 Fix filament override checkbox not update after click (#11517)
* Fix filament override checkbox not update after click

* Event args should be references otherwise `e.skip()` won't work

* Fix bool option override
2025-12-22 18:17:32 +02:00
Kiss Lorand
8e9daad2e8 Fix: Misaligned undo icons across all field types (#11431)
Align undo icons
2025-12-22 17:47:15 +02:00
scaiper
b30d7fb0fa fix probe count for adaptive bed mesh (#11491)
fix probe_count in adaptive bed mesh
2025-12-22 17:41:50 +02:00
Bernhard Koppensteiner
74c547f94f Reworked support settings in processes (#11683)
* 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
2025-12-22 16:55:15 +02:00
SoftFever
11c9794faa Merge branch 'main' into feat/configurable-bambu-network-lib 2025-12-19 22:18:19 +08:00
SoftFever
8d8ab5911d Update build_orca.yml to disable cache miss failure 2025-12-19 22:16:34 +08:00
Rodrigo Faselli
e32dbd3802 🧹delete unused icon param_zig-zag (#10298)
delete unused icon. Since #10055 this icon is not longer needed.
2025-12-19 08:36:24 +00:00
yw4z
380ea7e2e8 Fix fill bed and disable arranging after adding / removing instances (#11619) 2025-12-19 08:32:14 +00:00
VigilantGardener
4d8581cd47 Update filament change G-code for Anycubic Kobra S1 (#11650) 2025-12-19 08:28:18 +00:00
Rodrigo Faselli
29f4e66715 Line type by default for single extruder single material (#11397)
* 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.
2025-12-18 16:55:19 +00:00
Kiss Lorand
ad7fe3785a Fix: Timelapse Z-hop logic used when timelapse was disabled (#11444)
No timelapse gcode if no timelapse
2025-12-18 14:34:32 +00:00
Ioannis Giannakas
d6815653f4 Merge branch 'main' into libvgcode 2025-12-18 12:55:11 +00:00
Noisyfox
e4f6499663 Fix issue that per-extruder settings doesn't work properly for non-bbl printers (#11165)
* 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
2025-12-18 12:50:14 +00:00
Ian Bassi
d092d6d9a7 Autoslice + SliceDelay (#11407)
* 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
2025-12-18 12:44:31 +00:00
John Brady
2be0f0e05e Correct Typo (#11472)
* Correct Typo

* Fix the OrcaSlicer_en.po file

* Update OrcaSlicer.pot to revert the change in this auto generated file
2025-12-18 12:38:59 +00:00
Noisyfox
7f36a02f37 Fix cut memory leak (#11476) 2025-12-18 12:37:13 +00:00
Ian Bassi
c126aae902 PA Calib Values check (#11493)
* 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
2025-12-18 12:36:10 +00:00
Kiss Lorand
f9d5519294 Scale emulated spiral Z-hop segments based on slicing resolution (#11556)
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.
2025-12-18 12:30:41 +00:00
Ian Bassi
0e6fc7a92b Add Cali Cat handy model (#11663)
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>
2025-12-18 12:25:59 +00:00
yw4z
22d2fe9b37 UI fixes / improvements (#11617)
* fix margins on titlebar fold

* update

* Update Plater.cpp

* update

* Update toolbar_double_directional_arrow.svg

* Update toolbar_double_directional_arrow.svg

* object list variable height icon

* Update tab_multi_active.svg

* update ams icons

* match popup border color

* Update param_advanced.svg

* Update custom-gcode_advanced.svg

* match label & parameter box width on object table

* revert changes for orange colors

* match sizes of radio buttons on widgets

* Update GLGizmoSVG.cpp
2025-12-18 12:17:29 +00:00
yw4z
00ff06a5d3 Match button styles on whole UI and fixes for button class (#11233)
* init

* web buttons

* Bind Dialog & Fix states

* update

* update

* Update common.css

* objcolordialog

* privacy update dialog

* Update CaliHistoryDialog.cpp

* Update MultiMachineManagerPage.cpp

* Update AMSControl.cpp

* TipsDialog

* Update AMSMaterialsSetting.cpp

* extrusion calibration

* Update UpdateDialogs.cpp

* recenterdialog

* update

* Update Calibration.cpp

* update

* update

* update

* fix

* update

* ReleaseNote

* update

* update

* fix remember checkbox position

* add comments
2025-12-18 12:14:56 +00:00
Maciej Wilczyński
f232c9cf08 Port all plugin error messages from Studio 2025-12-14 16:49:17 +01:00
Maciej Wilczyński
0df673b0d3 Implement support for loading custom plugin binaries 2025-12-14 16:05:55 +01:00
Maciej Wilczyński
a4d4bfff27 Allow selecting specific network plugin versions 2025-12-14 14:26:16 +01:00
Ian Bassi
59ad126b48 Fix: Replace with STL to Replace with 3D file: Support STEP (#11637)
* 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
2025-12-14 13:20:14 +08:00
Andreas Rammhold
b2822b6861 Enable IPv6 usage in curls resolve code (#11639)
* 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.
2025-12-14 11:43:04 +08:00
Matthew
7ec3d85a02 Allow 'Change Type' to be used with Multiple Parts Selected (#11544)
* 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>
2025-12-13 22:36:47 +08:00
Ian Bassi
54c876222e Minor Tab.cpp redirection fixes + PowerLoss recovery link (#11608)
* Update Tab.cpp

* Readme Fix

* Update Tab.cpp
2025-12-12 23:32:28 +08:00
Alexandre Folle de Menezes
c9ea433cd5 Complement the pt-BR translation (#11620) 2025-12-12 21:50:37 +08:00
Rodrigo Faselli
83a64559a2 Update default Windows SDK include path version (Fix netfab mesh repair service for local compilation) (#11450)
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.
2025-12-12 21:48:46 +08:00
Dan Martí
e38013c7f6 Added 0.12, 0.16 and 0.28mm Anycubic Kobra 2 neo profiles
Added 3 profiles using some values of the Anycubic Slicer Next
2025-12-11 12:43:44 -03:00
Michael Rook
5c547ea4a1 Add ability to disable Power Loss Recovery on BBL machines (#11582)
* 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>
2025-12-10 23:19:57 +08:00
dependabot[bot]
d8de54dfca Bump actions/checkout from 4 to 6 (#11547)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-09 23:58:02 +08:00
Ian Bassi
25bc45c8f5 Tab.cpp Machine + Material: Linking Wiki update (#11548)
* 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
2025-12-09 23:57:03 +08:00
Nanashi
bb537f97f2 Update release details from metainfo.xml (#11539)
* Remove release details from metainfo.xml

this fixes the error pointed out on the discord https://discord.com/channels/1137181739773603922/1443808926523981975

* Add release details to OrcaSlicer metainfo

Added release information and description to metainfo.

* fix typo from sticky shift key (oops)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-09 23:49:15 +08:00
SoftFever
d453de3912 exclude resources 2025-12-09 23:41:34 +08:00
tntchn
0b83a0c8ad Update zh_TW translations (#11514)
* 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`
2025-12-09 23:38:12 +08:00
yw4z
7760000aaf Fix RolohaunDesign Delta Flyer Refit process visible for every printer (#11594)
init
2025-12-09 01:06:57 +08:00
yw4z
db64def4c2 Compact Printer Selection UI - part 2 (#11401)
* update

* match bbl covers with profile folder

* Update printer_placeholder.png

* match vertical margins

* improve logic for showing bed type preview

* fix focus

* fix conflict

* fix conflict

* Update printer_placeholder.png

* Update Plater.cpp

* Update printer_placeholder.png

* revert changes for margins

* Update Plater.cpp

* Update Plater.cpp

* Revert "Update Plater.cpp"

This reverts commit f73e482081.

* Update Plater.cpp

* fix badges not visible

* fix badge

* Update Plater.cpp

* update sync icon

* improve cover auto hide logic

* Update Plater.cpp

* delete bed type images

* simplify events

* hide nozzle selector for ToolChangers

* fix bed type not remembers value after printer change
2025-12-09 01:05:03 +08:00
coryrc
52c2a85d28 Fix tests (#10906)
* 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>
2025-12-08 22:42:11 +08:00
Ian Bassi
02c8bba8b4 Fix typo in extruder clearance resource name (#11569)
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>
2025-12-05 12:03:12 +00:00
Mark Richins
bd6cfd6cec Fixed a spelling mistake (#11523)
Corrected a spelling error

Changed "Raparando" to "Reparando"
2025-11-30 12:28:03 +08:00
Ian Bassi
f71e09a8c6 Fix Flatpak build: Add fallback URL for MPFR source download (#11512)
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.
2025-11-29 15:53:40 +08:00
Ian Bassi
7ec32fc484 Delete validate-documentation.yml (#11477) 2025-11-26 09:08:13 +08:00
Andrew Sun
1165c5632d Merge branch 'main' into libvgcode 2025-11-25 15:19:57 -05:00
Kiss Lorand
9a30704194 GPU overdrive fix (#4) 2025-11-25 12:25:03 -05:00
artillerylab
f3e486c1a9 Update printer profiles for Artillery (#11284)
* Update printer profiles for Artillery

* Revert "Update printer profiles for Artillery"

This reverts commit 5dc7083089.

* Update printer profiles for Artillery

* Update printer profiles for Artillery

* resolve workflow failures in profile validation

* resolve workflow failures in profile validation
2025-11-25 13:27:35 +00:00
Kiss Lorand
855870e256 Fix emulated spiral Z-hop XY offset on multi-plate slicing (#11468) 2025-11-25 11:23:37 +08:00
SoftFever
f0d79b99eb Move WIKI to new repo 2025-11-24 23:50:54 +08:00
Noisyfox
4c1b6445d3 Validate invalid fields for hidden system profiles (#11455)
* Fix issue that for invisible system profiles, invalid fields are not removed

* Fix wrong note field
2025-11-24 20:11:42 +08:00
SoftFever
f57d0d1442 ci: Increase timeout for dedupe-issues workflow from 10 to 30 minutes 2025-11-23 21:22:07 +08:00
SoftFever
b78381e4f5 Fix CICD AI dedupe 2025-11-23 20:47:07 +08:00
SoftFever
b8cb62fb10 Change runner from self-hosted to ubuntu-latest 2025-11-23 18:06:54 +08:00
SoftFever
b843b36d8f Check duplicated issues. ported from Claude code repo (#11454) 2025-11-23 18:03:28 +08:00
yw4z
9304cc35db UI fixes / improvements (#11413)
* init

* flushing volumes

* vertical margins

* fix titlebar scaling

* fix filament section

* flushing volumes

---------

Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
2025-11-22 22:54:36 +08:00
Kiss Lorand
f48a438b27 Fix Spiral Z-Hop arc handling (#11430) 2025-11-22 22:09:29 +08:00
Kiss Lorand
589eb2cfeb FIX: Open provided file at startup (#11419) 2025-11-22 21:49:51 +08:00
Noisyfox
8d3b3645e7 Merge branch 'main' into libvgcode 2025-11-22 19:35:32 +08:00
Ian Bassi
3367648ec0 Re-include BBS's Clipperutils2 (#11415)
* 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
2025-11-22 15:39:12 +08:00
Noisyfox
61931d23a4 Fix filament profile import if inherit from vendor generic (#11398)
* Why log user id when importing profile?

* Use `find_preset2` when importing profiles
to properly handle renamed system profiles
2025-11-22 15:38:12 +08:00
Noisyfox
7b0cdd3ec6 Fix crash after syncing printer (#11428)
Fix crash after syncing printer (OrcaSlicer/OrcaSlicer#11427)
2025-11-22 15:37:28 +08:00
Ian Bassi
4c00966ca3 Wiki 16 (MiniUpdate): Updated by Stable cmake 4.2 release + VS2026 First (#11423)
* 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
2025-11-21 15:18:22 +00:00
Andrew Sun
daf3038f2f Merge branch 'main' into libvgcode 2025-11-21 08:47:25 -05:00
SoftFever
3a7309a1b2 Revert "fix GITHUB_TOKEN permissions in workflows (#11392)"
This reverts commit aa5350a6fe.
Revert "correct oversight in #11392 (#11404)"

This reverts commit fb3b2aadac.
2025-11-21 19:02:42 +08:00
Nanashi
fb3b2aadac correct oversight in #11392 (#11404)
* correct oversight in #11392

https://github.com/OrcaSlicer/OrcaSlicer/pull/11392#issuecomment-3548174739

* correct oversight in #11392
2025-11-21 16:55:38 +08:00
Sibis
ac483df749 Profiles for Creality K2 Pro printer (#11315)
* 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)
2025-11-21 06:41:48 +00:00
Kiss Lorand
36fcf17358 Reduce artifacts from short travel moves before external perimeters (#10722)
Accel to extloop

Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-11-20 22:11:12 +08:00
Hangtimehippie
e5f7722f57 [Profiles] Add printer profiles for Eryone Er20 (Marlin and Klipper configuration) (#10607)
* add printer profiles for Eryone Er20 (Marlin and Klipper) :
- machine_model_list: ER20, ER20 Klipper
- nozzle printer profiles: 0.2, 0.4, 0.5, 0.6, 0.8
- added Bambulab and Sunlu filament profiles per nozzle size
- cover images
- buildplate_model

* changed machine configuration: gcode flavur marlin to marlin2, gcodes and limits

* changed process configuration: added more values as default , fixed speeds and accel

* changed process configuration: fixed width values for 0.5 nozzle

* process configuration syntax fix

* deleted default print profile

* changes machine config: added  default standard print profile to each nozzle size

* machine conf: fixed nozzle size and variant

* machine conf: fixed max yerk settings

* process conf: fixed layer height

* process confs reorganized , tuned jerk, accel values

* process conf: changed initial layer speed

* cover images without background color

* process conf klipper: changed default jerk settings

* deleted duplicate of generic pla filament

* filaments: deleted filament start/end code

* removed incorrect filament retraction length values ​​for the filaments

* deleted Bambulab and Sunlu filaments

* process conf: set default skirt_loop  to 0

* machine conf: changed retract wipe settings, modified start /end code

* machine conf: changed retract /wipe settings

* deleted Bambulab / SUNLU filaments from Eryone.json

* version number adapted and reorganized

* Update Eryone.json merge commits

* fix duplicate, conflict key errors

---------

Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
2025-11-19 22:20:16 +08:00
yw4z
964408a7fa Merge branch 'main' into datalist-row-color 2025-11-19 13:53:36 +03:00
yw4z
6d70fdd150 update 2025-11-19 13:51:52 +03:00
Alexandre Folle de Menezes
e2baeae0d9 Improve pt-BR translation (#11232)
Complement the pt-BR translation

Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
2025-11-19 11:28:10 +08:00
Andrew Sun
e4d354b673 Merge remote-tracking branch 'upstream/main' into libvgcode
# Conflicts:
#	src/libslic3r/GCode/GCodeProcessor.cpp
2025-11-18 20:22:57 -05:00
Kiss Lorand
a87df7f0b5 Bugfixes (#2)
* 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>
2025-11-18 19:50:48 -05:00
Nanashi
aa5350a6fe fix GITHUB_TOKEN permissions in workflows (#11392)
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.
2025-11-18 23:22:47 +08:00
SoftFever
8b812e0b18 H2S profile and new features ported from BBS (#11174)
### 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.
2025-11-18 23:21:40 +08:00
Noisyfox
760f66d3d7 Merge remote-tracking branch 'upstream/main' into dev/p2s-pr
# Conflicts:
#	src/slic3r/GUI/Plater.cpp
#	src/slic3r/GUI/PrePrintChecker.cpp
#	src/slic3r/GUI/StatusPanel.cpp
2025-11-18 09:17:13 +08:00
Ioannis Giannakas
2440d669f0 Merge branch 'main' into libvgcode 2025-11-17 17:48:25 +00:00
Ioannis Giannakas
c9e6c51213 Merge branch 'main' into datalist-row-color 2025-11-17 17:44:39 +00:00
Rodrigo Faselli
4046e39ff3 Adjusted density multiline infill for adaptive cubic, support cubic, lightning patterns (prevent crash) and minor GUI correction. (#10967)
* FillAdaptive density adjusted
* Fill lightning multiline density adjust
* Gui corrections by IanAlexis
2025-11-17 17:27:55 +00:00
Ian Bassi
73b1d1def5 Reorder Calibrations list (#11389)
* 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.
2025-11-17 17:21:03 +00:00
ProodjePindakaas
5fa38e16f4 Update MK3 profiles (#11386)
* Fixed MK3S 0.25 nozzle diameter
* Fixed MK3S min/max layer heights
* Added missing MK3 overhang speeds
2025-11-17 17:08:47 +00:00
Ian Bassi
c0c1ddfda0 Filament Ironing Override (#11194) 2025-11-17 15:56:39 +00:00
yw4z
73b93d2ed0 Compact Printer Selection UI (#11196) 2025-11-17 15:30:35 +00:00
Nanashi
d6936ec32a fix: update Flatpak GitHub Actions reference to the correct repository (#11382) 2025-11-17 20:47:19 +08:00
Nanashi
a24785ee39 Update GNOME runtime and SDK to version 48 (#11384) 2025-11-17 20:46:44 +08:00
Alexandre Folle de Menezes
77f7514d97 Fix spacing and punctuation issues (#11244) 2025-11-17 09:35:53 +00:00
Ian Bassi
c11053dfe7 Retraction Calib: Set wall_sequence to InnerOuter (#11372)
Set wall_sequence to InnerOuter in calib_retraction
2025-11-17 09:32:40 +00:00
Noisyfox
5e2a7fbf35 Merge branch 'main' into dev/p2s-pr 2025-11-17 14:56:09 +08:00
Denis Šaško
3cd229098f Anycubic Predator machine and print profiles (#11252)
* feat: anycubic predator

* buildplate texture & cover image

* Newlines

* buildplate texture and model

* modified printable area

* added to custom printers list

* flip buildplate model

* Merge branch 'SoftFever:main' into feature/anycubic-predator-profile

* make profile safe (speed, acceleration, jerk), added better start gcode with prime line

* rotate texture to avoid confusion

* updated start gcode

* rotate the texture back

* Merge branch 'main' into feature/anycubic-predator-profile

* Merge branch 'main' into feature/anycubic-predator-profile

* Update cover image & fix gcode flavor
2025-11-17 12:20:26 +08:00
Andrew Sun
7408f333a6 Merge remote-tracking branch 'upstream/main' into libvgcode
# Conflicts:
#	src/slic3r/GUI/GLCanvas3D.cpp
2025-11-16 22:53:04 -05:00
Ian Bassi
4b1ddcdc55 Url update: SoftFever/OrcaSlicer -> OrcaSlicer/OrcaSlicer (#11371)
* SoftFever/OrcaSlicer -> OrcaSlicer/OrcaSlicer

* Revert for deps
2025-11-17 11:17:54 +08:00
Alexandre Folle de Menezes
8ec2454835 Standard units need translation for CIS Languages (#11376)
* Standard units need translation for CIS Languages
2025-11-17 10:29:44 +08:00
Andrew Sun
32ce7494c0 Adjust shaders to increase shadows/contrast between layers 2025-11-16 11:34:56 -05:00
Morton Jonuschat
8a1e0ee9bb feat: Reduce size of option marker in G-Code preview 2025-11-16 11:22:39 -05:00
Andrew Sun
7de779a0e0 Remove unnecessary requires_extra_frame call 2025-11-15 12:00:24 -05:00
Andrew Sun
fcdd3d3b2a Don't hide some properties for non-extrusion moves 2025-11-15 11:11:25 -05:00
enricoturri1966
e0cdae0cb4 SPE-2359: Added speed and volumetric flow rate to imgui vertex properties dialog (#12840)
(cherry picked from commit 0602723695664eb77570c1ea04971f55a8779d6c)
2025-11-15 11:11:25 -05:00
Andrew Sun
6e9fbc90e7 Fix incorrect display of flow rate changes 2025-11-15 11:11:25 -05:00
Lukáš Hejl
bdbeb34158 Accumulate the total estimated print in doubles instead of floats.
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)
2025-11-15 11:11:25 -05:00
Lukáš Hejl
bec883e667 SPE-2441: Fix discontinuity between the processed blocks' exit speed and the new first block's entry speed.
This discontinuity affected both time estimation and actual speed visualization.

(cherry picked from commit 90073dce70fb05bda80421158175b851855f0a8f)
2025-11-15 11:11:25 -05:00
enricoturri1966
acd3c94955 SPE-2397: Fixed order of traversing time blocks in GCodeProcessor::TimeMachine::calculate_time() to match what is done in firmware
(cherry picked from commit 9b7961ddcb824c5b18cb414ed5b975d999a24641)
2025-11-15 11:11:25 -05:00
Andrew Sun
7814605906 Merge remote-tracking branch 'upstream/main' into libvgcode
# Conflicts:
#	src/libslic3r/GCode/GCodeProcessor.cpp
#	src/libslic3r/GCode/GCodeProcessor.hpp
#	src/slic3r/CMakeLists.txt
#	src/slic3r/GUI/GCodeViewer.cpp
#	src/slic3r/GUI/GCodeViewer.hpp
#	src/slic3r/GUI/GLCanvas3D.cpp
#	src/slic3r/GUI/GLCanvas3D.hpp
#	src/slic3r/GUI/GUI_Preview.cpp
2025-11-15 11:11:20 -05:00
innovatiQ
e5cbd2da24 Filament and process files added/modified for TiQ2 (#11356)
* 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
2025-11-15 19:32:19 +08:00
Ian Bassi
25791cc685 Wiki: Update Windows build instructions and images (#11355)
* 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.
2025-11-15 15:40:22 +08:00
Noisyfox
95c901768e Merge remote-tracking branch 'upstream/main' into dev/p2s-pr
# Conflicts:
#	src/libslic3r/GCode.cpp
2025-11-14 18:48:32 +08:00
Noisyfox
c2c796ef25 Fix initial filament loading (#11350)
* Fix initial filament loading for non-bbl printers (SoftFever/OrcaSlicer#11218)

* Add missing initial PA for bbl printers

* Reset APA after toolchange
https://github.com/SoftFever/OrcaSlicer/pull/5609#issuecomment-3532029620
2025-11-14 18:46:34 +08:00
Ioannis Giannakas
122934d8da Enforce seam_position: aligned for retraction calibration (#11346)
Set seam position to aligned instead of profile default for retraction calibration
2025-11-14 08:25:30 +00:00
Ioannis Giannakas
074a3bd8ab Merge branch 'main' into main 2025-11-14 08:24:14 +00:00
Noisyfox
416b447ab0 Fix compile 2025-11-14 15:05:27 +08:00
Noisyfox
1bc5832efd Merge remote-tracking branch 'upstream/main' into dev/p2s-pr 2025-11-14 14:55:41 +08:00
xun.zhang
21399999f1 ENH: add eager lift function
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)
2025-11-14 11:08:08 +08:00
Noisyfox
7f1aad8bc1 Support Visual Studio 2026 (#11349)
* 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
2025-11-13 23:11:56 +08:00
Noisyfox
0c810c817f Fix filament end gcode missing for non-bbl machines 2025-11-13 22:33:26 +08:00
Noisyfox
9d944fd1bd Merge branch 'main' into dev/p2s-pr 2025-11-13 10:11:10 +08:00
Ian Bassi
d94fa0a95d Wiki: Update windows build CMake 4 (#11345)
* Update windows build wiki CMake 4

* 2026 Ready

* Revert "2026 Ready"

This reverts commit 534b9198ba.

* Minor fixes
2025-11-13 09:58:22 +08:00
Andrew N Golovkov
43c48a265d Enforce seam_position: aligned for retraction calibration 2025-11-12 19:13:10 +02:00
Noisyfox
c0ad4f4e1c Revert "Fix: Correcting the behavior of the camera panning." (#11337)
Revert "Fix: Correcting the behavior of the camera panning. (#11111)"

This reverts commit 08bd21310c.
2025-11-12 13:09:39 +08:00
Rodrigo Faselli
61bc6193ab CMake 4.x. windows (#10820)
* cmake 4 windows

Update CMakeLists.txt

cmake 4 windows

Update build_release_vs2022.bat

minimum version 3.5

* Update CMakeLists.txt
2025-11-12 10:40:49 +08:00
Noisyfox
83738cacd8 Merge branch 'main' into dev/p2s-pr 2025-11-10 08:55:30 +08:00
Noisyfox
a7adeb6305 Fix crash on printer error when stealth mode is enabled (#11225)
Fix crash on printer error when stealth mode is enabled (SoftFever/OrcaSlicer#11203)
2025-11-10 08:54:06 +08:00
Noisyfox
5197358183 Merge branch 'main' into dev/p2s-pr 2025-11-09 20:47:51 +08:00
yw4z
4501bf6f57 Fix combo box vertical text alignment (#11217)
* init

* update condition

* Merge branch 'main' into fix-combobox-text

* Update TextInput.cpp
2025-11-09 20:40:30 +08:00
Asim Siddiqui
394d1a330d Add official Numakers PLA+ filament profiles (#11303)
* Add official Numakers PLA+ filament profiles

Official Numakers PLA+ filament profiles for Orca Filament Library and BBL X1, P1, A1 series printers
2025-11-09 16:31:47 +08:00
Diogo Santos
e20dc30c97 Fix(RatRig): add V-Core 4 IDEX variants to the filament profiles (#11304)
* Fix(RatRig): add V-Core 4 IDEX variants to the filament profiles
2025-11-09 16:30:40 +08:00
Noisyfox
8f5a5a9b16 Fix extrusion rate smoothing unnecessarily slowing down the entire line (#11249)
* Fix typo & code style

* Fix calculation of the min acc time

* Avoid slowing down the entire line if both end of a single line has been slowed down
2025-11-09 12:47:50 +08:00
Noisyfox
614612ed38 Merge branch 'main' into dev/p2s-pr
# Conflicts:
#	src/slic3r/GUI/DeviceErrorDialog.cpp
2025-11-09 12:35:32 +08:00
Valerii Bokhan
08bd21310c Fix: Correcting the behavior of the camera panning. (#11111)
* Fix: Correcting the behavior of the camera panning.

Fixes #11107
2025-11-09 12:29:27 +08:00
Alexandre Folle de Menezes
14dd1078bf Spellcheck translatable strings (#11242)
* Spellcheck translatable strings
2025-11-09 11:52:27 +08:00
Alexandre Folle de Menezes
b1bb08b096 Fix casing on file extensions (#11265)
* Fix casing on file extensions
2025-11-09 11:38:45 +08:00
Alexandre Folle de Menezes
a151ac931d Add missing translation markers (#11243) 2025-11-08 22:58:32 +08:00
Alexandre Folle de Menezes
2bcbb688a1 Fix casing of axis' names (#11258) 2025-11-08 22:36:03 +08:00
Noisyfox
df734857cc Merge branch 'main' into dev/p2s-pr 2025-11-08 20:46:30 +08:00
yw4z
b62187f076 Match UI of filament grouping & fixes (#11238)
* init

* update

* match radio icons

* fix background

* Show only on "summary" and "filament" tab

* delete unused icons
2025-11-08 20:44:37 +08:00
Noisyfox
bc008ff2f0 Merge branch 'main' into dev/p2s-pr 2025-11-08 17:17:31 +08:00
Noisyfox
716d85f635 Avoid duplicated call of request_user_handle 2025-11-08 14:49:29 +08:00
Noisyfox
28184a96a1 Enable log auto-flush, this should not really affect performance because by default the log level is warning 2025-11-08 11:49:54 +08:00
Noisyfox
bfe4b78b0e Make sure app version is output in log regardless of log level, also show build git hash in log 2025-11-08 11:07:24 +08:00
Noisyfox
0b2778e670 Fix max_bridge_length for organic tree (#11295)
* Remove outdated duplicated support code

* Orgainc tree no longer use `bridge_no_support` since #8212
2025-11-08 01:27:15 +08:00
Mister Anderson
8fce6c68b8 Flash forge ad5m gcode filename update (#11278)
* 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
2025-11-08 01:21:56 +08:00
innovatiQ
b88aee4c0b 3 new machine files added to both TiQ2 and TiQ8 machines (#11297)
* 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

---------

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>
2025-11-08 01:00:32 +08:00
Alexandre Folle de Menezes
c3e03a0955 Remove markers from strings that don't need translation (#11234)
* Remove markers from strings that don't need translation
2025-11-08 00:53:56 +08:00
Alexandre Folle de Menezes
210bc47173 Fix "..." at the end of "Replace with STL" menus (#11247) 2025-11-08 00:32:02 +08:00
Noisyfox
f4d8130451 Fix emboss crash when displaying warning information (#11299)
Revert "FIX:ImGuiInputTextFlags_Multiline should manual input"

This reverts commit bb3f59e18f.
2025-11-08 00:28:22 +08:00
xin.zhang
058b6143a6 FIX: update dark mode color
jira: [STUDIO-9689]
Change-Id: I4f0f3f468d6f08195896a9948e4f3636489cbe79
(cherry picked from commit bb74d32de96f5a4090d06481ae51dec65c5b7447)
2025-11-07 23:26:18 +08:00
Heiko Liebscher
13f94b0559 fix some de translations (#11290)
* fix some de translations

* fix space
2025-11-07 17:32:00 +08:00
Noisyfox
0115cfbdd0 Merge remote-tracking branch 'upstream/main' into dev/p2s-pr 2025-11-07 10:42:06 +08:00
Anson Liu
e8464dd69c Fix AMS Material Selection to sort by both filament vendor and type (#11261)
Fix AMS Material Selection dialog combo box sorting to also sort by filament types.
2025-11-07 10:40:47 +08:00
MakeSometh1ngWonderful
4b7e95d81d Increase Bridge Density Maximum (#11283)
* Increase bridge density maximum and updated External Bridge Density tool tip.
2025-11-07 09:38:26 +08:00
thebodzio
eb02e9fbf4 Update 0.18mm Optimal @Sovol SV08.json (#11291)
* 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.
2025-11-07 09:29:26 +08:00
Valerii Bokhan
ead6f9d763 Fix: Hiding the ironing_angle_fixed setting in the UI if the ironing is disabled (#11286)
* Fix: Hiding the `ironing_angle_fixed` setting in the UI if the ironing is disabled
2025-11-06 23:53:57 +08:00
dependabot[bot]
d82f88bee8 Bump actions/upload-artifact from 4 to 5 (#11230)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-06 11:47:11 +08:00
dependabot[bot]
ccd542b19d Bump actions/download-artifact from 4 to 6 (#11229)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 6.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-06 11:47:04 +08:00
Noisyfox
55f677ef21 Try free more disk spaces for flatpak build 2025-11-06 09:28:52 +08:00
Noisyfox
55d97420f2 Fix issue that dev printers no longer sync calib & filament info from AMS 2025-11-05 22:54:49 +08:00
Noisyfox
258799674f Merge branch 'main' into dev/p2s-pr 2025-11-05 20:55:28 +08:00
Noisyfox
5eecb82cf5 Fix translations (#11282)
* Revert i18n changes from commit 4b7b81a0a2

* Delete unnecessary files

* Reformat files
2025-11-05 17:51:50 +08:00
Ian Bassi
69afe093bf IF-enable PA in IS and Cornering Calibs (#11178)
* Re-enable PA in Calibs

* Disable APA if Disabled PA
2025-11-04 21:45:14 +08:00
Noisyfox
4efaee4c98 Merge branch 'main' into dev/p2s-pr 2025-11-04 10:26:47 +08:00
yw4z
3c65617139 Fixes / Improvements for Covers & Printer Selection dialog (#11151)
* init

* update

* Crop cover images

* match setup wizard UI

* update

* tiertime

* anycubic

* anycubic

* construct3d

* update

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-11-04 10:16:06 +08:00
Nanashi
ebb89a583d Fix httpbin.org 503 by switching to maintained httpbingo.org (#11250) 2025-11-03 23:57:24 +08:00
Noisyfox
664a34f129 Fix initial filament loading for non-bbl printers (SoftFever/OrcaSlicer#11218) 2025-11-03 23:53:13 +08:00
Noisyfox
763bdb5dee Fix gcode viewer wrong layer count when selected printer model is BBL while gcode is not 2025-11-03 23:53:12 +08:00
HYzd766
a351aa8cb0 Multi-color code compatible with QIDI models (#11185)
* 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.
2025-11-03 21:34:11 +08:00
zhimin.zeng
43693ebba9 FIX: cannot select k value when connect 2 printer
github: 4085
Change-Id: I660f20032535ad8ab1f218224af68f7cc0dc3395
(cherry picked from commit dc94ad4fb63c4907993e6970511bed90337b6c30)
2025-11-03 20:36:47 +08:00
Anson Liu
c6e4ac1c4d 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.
2025-11-03 17:21:01 +08:00
Ari Gato
c105d42d09 fix: Add pause and filament change to machine gcodes for Sovol SV08 MAX (#11214) 2025-11-02 20:53:24 +08:00
githubber4ever
2ae3378605 toggle axis visibility on canvas (#9666)
* toggle axis visibility on canvas

* set show_axes config on toggle
2025-11-02 00:23:26 +08:00
Noisyfox
9a37c45e35 Merge branch 'main' into dev/p2s-pr 2025-11-01 20:37:00 +08:00
Noisyfox
bcb0387e0e Fix Github action syntax error (#11227)
Fix syntax error in c106350143
2025-11-01 20:36:28 +08:00
Noisyfox
ffddfb0559 Merge branch 'main' into dev/p2s-pr 2025-11-01 20:29:55 +08:00
coryrc
c106350143 Cancel root jobs (#11192)
Maybe this will help cancel happen faster.
2025-11-01 20:24:35 +08:00
Noisyfox
398c72dd68 FIX: crash when xy_dist=0 in organic tree (#11189)
jira: STUDIO-11158
Change-Id: Id98a196daf5fdc128e0c10de7d0a8f19c9014c3b
(cherry picked from commit 7ac6cedff80b810350aaf3261c62131ceff4ca75)

Co-authored-by: jiaxi.chen <jiaxi.chen@bambulab.com>
2025-11-01 20:22:43 +08:00
EmilVitus
6ab6b37c4a Changed slash to backslash in before_layer_change_gcode (#11226) 2025-11-01 20:22:17 +08:00
yw4z
2b02a19404 Fix plate icons & filament grouping (#11222)
* init

* Update PartPlate.cpp
2025-11-01 20:20:25 +08:00
Noisyfox
f198ac306b Fix tool change time settings 2025-11-01 14:58:47 +08:00
Noisyfox
a594e5fa01 Fix failed to retrive PA calib result 2025-11-01 14:23:32 +08:00
Noisyfox
ea85db92ba Fix sd card state detection
follow up of 4b7b81a0a2
2025-11-01 13:58:14 +08:00
Noisyfox
f6a4ebe87c Fix auto calib crash 2025-11-01 13:52:41 +08:00
Noisyfox
320d8e435e Revert "FIX: the pa pattern is not work"
This reverts commit 64766860df.
2025-11-01 12:49:59 +08:00
Noisyfox
9568d471af Warn if attempt to access option with wrong type 2025-11-01 12:10:13 +08:00
Noisyfox
93c4838efe Merge branch 'main' into dev/p2s-pr 2025-10-31 16:54:45 +08:00
Noisyfox
05533a7fd3 Fix black bed texture if svg file (#11166)
* Fix blank bed texture if svg file

* Refresh scene once the texture compression is completed
2025-10-31 16:53:08 +08:00
Noisyfox
c734c1cdf1 Hardcode first_x_layer_fan_speed to 0 when parsing gcode template 2025-10-31 09:30:23 +08:00
Noisyfox
420ac69e5b Log error when image resource not found 2025-10-31 09:00:22 +08:00
Noisyfox
8c4dd9db37 Fix dialog icon title 2025-10-31 08:53:54 +08:00
Noisyfox
95a6a8c0c5 Merge branch 'main' into dev/p2s-pr 2025-10-30 15:04:18 +08:00
qian.wang
493a92c7c8 ENH:sync petg basic with master branch
Change-Id: If8f5ff4cece198dcc1c921f99424222fb86f98a2
(cherry picked from commit 27d158b41608d9fec07a58986cb7c5ee30467b3a)
2025-10-30 14:56:50 +08:00
qian.wang
6ae4cfb6df Fix:fix inherit err of a1m
Change-Id: I070a3800d513e29191f025a12e03eb930edfeb68
(cherry picked from commit 1adc8b88248711151cd46f167b9fd4e9c117361f)
(cherry picked from commit 0cd4a30a96e75721a180337d006bc7cf882734c8)
2025-10-30 14:56:50 +08:00
qian.wang
7bea0dabee Fix:fix inherit info err
Change-Id: I932c3fc6daf05cd83d800b4183414a8db8fc4879
(cherry picked from commit 387c78d04cb0fd477a9f825ed8b4f34ee153fff1)
(cherry picked from commit d9ff8d4037e0c6af68d3a14f3eefb56051fb41b2)
2025-10-30 14:56:50 +08:00
milk
b2dd9aa196 FIX:reslove polish translation cover other select use tooltips
jira:[STUDIO-15128]

Change-Id: I148eaa6245b18359597c3b96f205639ae66bbc8a
(cherry picked from commit 3eb422faaf99956001941839c4dd2b55235d3053)
(cherry picked from commit 4a65fef5dc7cf3cfe312d7ed3706d9ff5b6ee58d)
2025-10-30 14:56:49 +08:00
Noisyfox
1aad85aee4 Remove print tracking 2025-10-30 14:56:49 +08:00
changyu.chen
96ad19c53f FIX: fixed o1s wiki link redirection
jira:[STUDIO-15077]

Change-Id: Iebef0043bf1eaf814fa8efa91c2d94e6903cac0e
(cherry picked from commit 6caf8821f8843e698256f7c108a2e310e754f895)
2025-10-30 14:56:49 +08:00
zhou.xu
3d294de33f FIX:Add pointer protection
jira: STUDIO-15102
Change-Id: I08c7039ba7c12e20cff1c28c7d588614d86ff9ff
(cherry picked from commit 0e806a4a242c463accfe78cf165de0d1193fa1e6)
2025-10-30 14:56:49 +08:00
lane.wei
5d84c38b09 FIX: CLI: fix the crash issue when load user config
jira: no-jira
Change-Id: I7b20c9c807150b45798aa036a1cbcb3c5aa1c9ae
(cherry picked from commit cb63ddfb6875bfa1fdbe6276d3e7a72a6776a4bc)
2025-10-30 14:56:49 +08:00
xin.zhang
dd7d12ed8b FIX: only A series with old protocol display as AMS_LITE
JIRA: [STUDIO-15101]
Change-Id: I340c14e88c57ca81c0bfb2f3087a46ee88ab4f31
(cherry picked from commit fa9181386b0e973785900b21962b40217e9585bd)
2025-10-30 14:39:57 +08:00
Noisyfox
99863163b2 Fix unit tests (#11199)
* Fix tests build issue on Windows

* Fix `Http digest authentication` 404 error

* Fix `libnest2d_tests` missing dlls on Windows
2025-10-30 14:36:24 +08:00
SoftFever
e349cccdb9 Merge branch 'main' into dev/p2s-pr 2025-10-29 22:28:09 +08:00
SoftFever
b9ab8e55be Fix conditional logic for OrcaSlicer build job in GitHub Actions workflow 2025-10-29 22:26:19 +08:00
Noisyfox
ab7e782809 set_user_selected_machine no longer works for local machines 2025-10-29 21:51:01 +08:00
Noisyfox
d2e914b7f0 Show app build information in crash log 2025-10-29 21:20:30 +08:00
Noisyfox
00122a9de5 Merge branch 'main' into dev/p2s-pr
# Conflicts:
#	src/slic3r/GUI/Jobs/PrintJob.cpp
#	src/slic3r/GUI/SelectMachine.cpp
#	src/slic3r/GUI/SendToPrinter.cpp
#	src/slic3r/Utils/CalibUtils.cpp
2025-10-29 21:03:22 +08:00
coryrc
275f3a7f1e Build and run a test in CI (#10835)
* 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>
2025-10-29 20:56:06 +08:00
SoftFever
bb9c3bb87a Reapply "Add a once-daily Build All which skips caches (#10731)"
This reverts commit e3f049829b.
2025-10-29 20:47:46 +08:00
Seref
4b7b81a0a2 Add setting to enable uploads to abnormal Storage; improve sd_card_state error reporting (#10981)
* 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
2025-10-29 20:32:38 +08:00
Noisyfox
9b015c9d45 Update bambu network plugin version 2025-10-29 17:28:33 +08:00
SoftFever
431cd47182 workaround to trigger build. 2025-10-29 16:47:04 +08:00
nilshasler
dedfd9d4ed Replace all with stl (#11145)
* 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>
2025-10-29 16:30:23 +08:00
SoftFever
50d93afc25 Merge branch 'main' into dev/p2s-pr 2025-10-28 23:51:39 +08:00
SoftFever
e3f049829b Revert "Add a once-daily Build All which skips caches (#10731)"
This reverts commit b56cefc4b7.
2025-10-28 23:51:16 +08:00
SoftFever
0767d3a363 Merge branch 'main' into dev/p2s-pr 2025-10-28 22:19:27 +08:00
SoftFever
d69aaeef3c Update GitHub Actions workflow concurrency group format 2025-10-28 22:19:03 +08:00
SoftFever
4ca62922e2 Remove Claude Code Review and Claude workflows from GitHub Actions 2025-10-28 22:01:21 +08:00
Valerii Bokhan
790bb39783 Fix: The fix of the adaptive layer height logic for supports (#10697)
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`
2025-10-28 17:31:49 +08:00
Noisyfox
435dba580c Fix profile 2025-10-28 15:30:06 +08:00
zhou.xu
07427de46b FIX:update svg
jira: STUDIO-13919
Change-Id: I92d8df5747cb2148f02a4ff3807c79c5f56d7537
(cherry picked from commit 8cf6c0e716c7f133664e5c10c8322c4ad89cc611)
2025-10-28 15:30:06 +08:00
Noisyfox
06fbd3c087 Update color 2025-10-28 15:30:06 +08:00
milk
7c7d80479d FIX:change translation
jira:[none]

Change-Id: Ife277664dab5ad85cd39825ee1e163b21e5765a2
(cherry picked from commit d8fd4e23acf946c4c9adfd3c03642433dba27eb4)
2025-10-28 15:30:06 +08:00
milk
bfd8a0cbd7 FIX:add darkmode of thermalprecondition
jira:[STUDIO-14662]

Change-Id: I75998ff04e1073d07e23ff6970dce90627b7b860
(cherry picked from commit 93fc862f7e74c52d7a9cfb75d24ecf0685788341)
2025-10-28 15:30:06 +08:00
milk
2e19dfea93 FIX:reslove mac compatibility question
jira:[STUDIO-14604][STUDIO-14660][STUDIO-14662]

Change-Id: I71833726fb3533960e38f87324b7d3da566730d7
(cherry picked from commit 7e6a18c81d92517e5f421569d103502e44c703a5)
2025-10-28 15:30:06 +08:00
weizhen.xie
cb9cbea742 ENH: Support skipping flushing when skipping object in sequential (by-object) printing.
Jira: O1-16971

Change-Id: I6b80f062f69bf02a77b2f8a3f9fa300a40b23e26
(cherry picked from commit 1679f0dd6121d6198b01e020799b3352579504f9)
2025-10-28 15:30:06 +08:00
weizhen.xie
c93d345d2a Fix: Modify the method of obtaining the first_layer_time.
Jira: None

Change-Id: I0ef83d8f47f9d7b235b88caaa8b895367729f3e9
(cherry picked from commit 1de8d5c0d3bb6742219963bd7297286a937e0ed5)
2025-10-28 15:30:05 +08:00
weizhen.xie
9f7ff97be6 ENH: add initial layer time to plate_x.json and slice_info.config
Jira: STUDIO-14504
Change-Id: I32460f1c19cce7c729806e35370e8b4b57aa069e
(cherry picked from commit 04a487d210134c28245c1f0f7d0986266a1c66f2)
2025-10-28 15:30:05 +08:00
milk
778874aa01 FIX:remove underline of thermal preconditioning
jira:[STUDIO-14597]

Change-Id: Ibf43718060b47cc4890b491500b6795d57bf6f8e
(cherry picked from commit 16df0fa6f9eb8049b0eb46bef81445112df10767)
2025-10-28 15:30:05 +08:00
milk
5cccdc7078 FIX:remove play of icon
jira:[none]

Change-Id: I64aa43ddf3088bde9296385f36db3e2782d0c280
(cherry picked from commit db2d72cc42f564e37c1de13340555dd2ae745045)
2025-10-28 15:30:05 +08:00
weizhen.xie
3480bf728d FIX: Bug caused by passing an empty ordering to process_layer in sequential (per-object) printing mode.
Jira: STUDIO-14550
Change-Id: I22a24f674370b3c04fb92b48cb9f229123e41e8a
(cherry picked from commit 7597a4a95e19d882eabb404f20f98955752b5730)
2025-10-28 15:30:05 +08:00
weizhen.xie
ca34800cad ENH:Object skipping supports skipping flushing of filament change
Jira:[STUDIO-12781]

Change-Id: Ia21d07b0ef107867cce55631d99bd03caebd6387
(cherry picked from commit d74849d499078f87d14282e92f48b2c02355d96c)
2025-10-28 15:30:05 +08:00
milk
ffab04262d ENH:Add thermal precondition
jira:[STUDIO-13970][STUDIO-13904]

Change-Id: I4b4fa27da1a65e0019c5f4c1dcc099c92189bf50
(cherry picked from commit 92dbde8385fec9719e0e9cfde764421793decd4d)
2025-10-28 15:30:05 +08:00
Bastien Nocera
69ecdeba71 FIX: Fix missing std::optional declaration
/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)
2025-10-28 15:30:05 +08:00
Bastien Nocera
54f17fc5af FIX: Fix missing BOOST_LOG_TRIVIAL declaration
/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)
2025-10-28 15:30:04 +08:00
weizhen.xie
a50f14c6ce Fix: Fix the abnormal temperature display issue in the G-code viewer for the P2S
Jira: None

Change-Id: I7b7f21bbab400ebec8aa10219120b938ff7bf174
(cherry picked from commit 8e4384d80e5b44260921a40ac226fe99f0d0ba43)
2025-10-28 15:30:04 +08:00
hemai
967b7a5050 ENH: support nozzle refresh for H2D Pro
Jira: [STUDIO-13185]
Change-Id: Ib8b5905c32f83b1f849ad4ed327c9d77826d6a18
(cherry picked from commit c603e0f88be71a301ed2fc7f6fff2a34398b6708)
2025-10-28 15:30:04 +08:00
hemai
d4e6b73de1 FIX: update tips msg for single extuder printer
Jira: [STUDIO-15067]
Change-Id: Ieddce97efd740747cec67beb5d13d8a05f9554e2
(cherry picked from commit 98f5d3af5f4f5f47a3f7098fddcd5a2c4e3b7eae)
2025-10-28 15:30:04 +08:00
haolin.tian
9013254def FIX: Prevent refresh during connection
jira: none
Change-Id: I84fda87d4b62d6cf2b22614336336aae5229feca
(cherry picked from commit 920bb3da0160c63cee66958a7b59d3ae5314ca88)
2025-10-28 15:30:04 +08:00
hemai
2db929a805 FIX: delete old error code
Jira: [STUDIO-15017]
Change-Id: Ib2e5d3b658b156de8bf0b4ccc32f66b3bb22a642
(cherry picked from commit ef9598cbd52b99ce147a0a5a877d7b3403e4335c)
2025-10-28 15:30:04 +08:00
shsst
1e71d22cee ENH:[Process/Filament] P2S PLA Silk Cooling Parameters Profile Edited by lianhu.xiong
Change-Id: Icf5a452f2fbc2a9090ca17e77f17b981ae0b7481
(cherry picked from commit 99f4670e53cc14a8a048b550cdc6089235ec7a1c)
2025-10-28 15:30:04 +08:00
shsst
669d53df17 ENH:[Process/Filament] Modify the PETG HF consumables fan of the H2D model Profile Edited by wenwei.huang
Change-Id: I0bd3d2377572d45ff9ecc58b6f401255710a4429
(cherry picked from commit 4b761df1f287a355f04ef3abe392d065686356e8)
2025-10-28 15:30:04 +08:00
七喜
8cec2a854e Revert "Revert "ENH:[filament/process]add high flow of X/P""
This reverts commit 4f8d3466508f3706e8d3f656294f7c5d3a9a7f88.

Reason for revert: use another method

Change-Id: I2a6465ea507f15ce200ea9cf03994b18bb2f257f
(cherry picked from commit 630248ae566c8cf8c61ceacb74ae3cd31d9e1501)
2025-10-28 15:30:04 +08:00
xin.zhang
e686424e8c FIX: FanControlPopupNew::init_names
JIRA: [STUDIO-14993]
Change-Id: Ie33bcde858ef379deaaeea99f790fd880eb0184e
(cherry picked from commit 3b7016d5598b2e655446019d8ad710e1612281a2)
2025-10-28 15:30:03 +08:00
xin.zhang
d852ceddc6 FIX: PrintStatusFilamentWarningHighChamberTempCloseDoor
JIRA: [STUDIO-13676]
Change-Id: Ia9405ebbbad69ccc2407fdecb4a15b39c1caec58
(cherry picked from commit a81d8720b9f8c157faa55300b3f1afd4c0e46ea9)
2025-10-28 15:30:03 +08:00
窝头
88222a5f64 Revert "ENH:[filament/process]add high flow of X/P"
This reverts commit 576444e746f4de3ab71c91b8a66fa4a64c3427c8.

Reason for revert: <remove high flow of X/P>

Change-Id: I875f649c62d503bdf1321b5fec829bb190b02bce
(cherry picked from commit 0b46acb8e793af883b797f83a9ad72a55dd69f3e)
2025-10-28 15:30:03 +08:00
shsst
438d80521b ENH:[Process/Filament] P2S TPU Retraction_Length Profile Edited by lianhu.xiong
jira:none
Change-Id: I2240f2cbe42c75750d46ae5b1781cd177b2f0359
(cherry picked from commit fec0c53059812be103371589d794921d55501caf)
2025-10-28 15:30:02 +08:00
milk
bf5a0c0084 FIX:change dark mode color of send page
jira:[none]

Change-Id: I21e4d76628315944f55e3df17b40208aa63fd9ec
(cherry picked from commit f66994b1bb1bc95739b1a9b8952f82d62abf0a36)
2025-10-28 15:30:02 +08:00
xin.zhang
223eaa5d2f ENH: add notice for PrintStatusAmsMappingInvalid
JIRA: [STUDIO-14577]
Change-Id: Ibcd742c109970490998fcf90f5520afcda5a4244
(cherry picked from commit 662338ab0e2e82db48dc173f3413a11302285132)
2025-10-28 15:30:02 +08:00
xin.zhang
011d7041a5 ENH: update HMS for 22E
JIRA: [STUDIO-14731]
Change-Id: I818b0a580939fe46c94f2f669584ef02033dfec3
(cherry picked from commit 67050fc0709461b59af79f715f4f679d2ca83896)
2025-10-28 15:30:02 +08:00
zhou.xu
0eca9eefb8 FIX:add m_new_project_and_check_state flag
jira: STUDIO-14994
Change-Id: I068b18cfb29622de1641bc34c671d4710c1a07d3
(cherry picked from commit 670fb1764748e0d69cb2b4e657bfbd5c92daff9f)
2025-10-28 15:30:02 +08:00
milk
f63cdc30e4 FIX:change interface for send
jira:[none]

Change-Id: Ia59bb1bb606399541aa191991ff0fb3f106d75d1
(cherry picked from commit b22af6cfe0a589ae5fa2e95a01ebe47f6742ee99)
2025-10-28 15:30:02 +08:00
shsst
a561c1bf13 ENH:[Process/Filament] Modify the volumetric flow rate of H2D ABS ASA PC PLA Basic PLA Matte PETG HF consumables Profile Edited by wenwei.huang
Change-Id: Ic357be722985d84e9ad91b2746f196e168f7f47e
(cherry picked from commit 65ee359304e6f634bab435e4e431aad7cb55045f)
2025-10-28 15:30:01 +08:00
shsst
05599d65af ENH:[Process/Filament] Modify H2D high-flow hot-end process parameters Profile Edited by wenwei.huang
Change-Id: Ib8311231756c47f3f1c6ab807cd0cac0772f946a
(cherry picked from commit 9ca7d20318a8ad3a16f9096306e718f3cf30d356)
2025-10-28 15:30:01 +08:00
weizhen.xie
edced8d5a6 Fix: When the flushing multiplier is 0, a warning popup should also be displayed.
Jira: STUDIO-14962

Change-Id: Iee6887fb6ed6941bbd58d9d2b834b6654ee9c806
(cherry picked from commit 43dbb7f228afb4304b6ea398991efd2659feafbe)
2025-10-28 15:30:01 +08:00
shsst
34b25be058 ENH:[Process/Filament] H2S Aesthetic Filaments Slow_Down_Layer_Time Profile Edited by lianhu.xiong
Change-Id: Iac19827a9f49164989afaa0e47e5a38e8038e116
(cherry picked from commit 830c0602f7b09efeef0f23e62cc1aeb3c8894437)
2025-10-28 15:30:01 +08:00
hemai
a2d113111b FIX: ams PA display for A series printer
Jira: [STUDIO-14883]
Change-Id: Icdaf5350772fc6420421b13868d973d99c7831b8
(cherry picked from commit 6b15a2bb0c5ca9df8835c55f48bbbb613d4770f5)
2025-10-28 15:30:01 +08:00
weiting.ji
d7f66b289d FIX: Mode switch button animation lost
Jira: STUDIO-14878
Change-Id: I53f7009ac3db692c7218a86cd7333261a2423c5b
(cherry picked from commit ec43e13d3907bc2b120f796f8a9b1df767291c5b)
2025-10-28 15:30:01 +08:00
milk
9e1b142ed5 ENH:change send mode(master three patchs merged in this)
jira:[STUDIO-14427]

Change-Id: I1081e5252be3d932b2ffa29f70cbf93fee57eef9
(cherry picked from commit 662b7fdac8a999e54942cc9be0e5e2c2b8a90f06)
2025-10-28 15:30:01 +08:00
shsst
5e279118d0 ENH:[Process/Filament] N7 modify start.gcode Profile Edited by yuran.wang
Change-Id: Ia7beff3329948ce3e59c365fa91ba9b762768b94
(cherry picked from commit 1f54bbd93d233e1a80f0c77cbffd0532e00e95a0)
2025-10-28 15:30:01 +08:00
chunmao.guo
0dfe185cad FIX: XML_SetEntityDeclHandler
Change-Id: I8d125ac31f68730ed79d95a912a14837d7433ee8
Jira: BUGMGT-481
(cherry picked from commit 1541ee0af68cecccea9bab6fae734aaa1087f2f1)
2025-10-28 15:30:00 +08:00
hemai
104cbb7b9b ENH: support E3D print parts display
Jira: [STUDIO-14908]
Change-Id: Ie8273eb6f74a3e7508f440d2092bb48f2e1dbb10
(cherry picked from commit a4218e991e6367e3f1ee3802e785802df2ad6d41)
2025-10-28 15:30:00 +08:00
xin.zhang
c382a8a9c3 ENH: support_clump_position_calibration
jira: [STUDIO-14896]
Change-Id: I2913a1e4022686889aaa94ee31b787930200d02d
(cherry picked from commit 14370c8910878c2182189b42e013c1323615c310)
2025-10-28 15:30:00 +08:00
qian.wang
3d482ce4a0 ENH:batch sync eng_plate_temp with textured_plate_temp
Change-Id: Ia504053d12f357f443dddfb140c561c83308dac3
jira: None
(cherry picked from commit 57239bb8f3ea6fe9310ecf98b4af8f76b3c8ba05)
2025-10-28 15:30:00 +08:00
hemai
0b805a7145 FIX: add protection for rescale_camera_icons
Jira: [STUDIO-14633]
Change-Id: Ic88bc5ec6f49e644304f8db374a930d663825819
(cherry picked from commit 8bd642de670fa709dcd3ec0e852599e596da4cb4)
2025-10-28 15:30:00 +08:00
weiting.ji
7eaabc4856 FIX: Trigger project restore when opening local files
Jira: STUDIO-13977
Change-Id: I9f3a14bbc699337f11e2f44464525c183e4ebce8
(cherry picked from commit 2ce94980f15b2cd19e735a1c723bb7eae45be859)
2025-10-28 15:30:00 +08:00
milk
5f26bc9e6e FIX:Change model name for upgradepanel
jira:[STUDIO-13910]

Change-Id: I2afad42cdd8907252203fe6d1a552d8d3cf2c2df
(cherry picked from commit 5aa8921e4ab4d687a2ec93b73489f6215b72dbd2)
2025-10-28 15:30:00 +08:00
milk
0313680701 FIX:Change exceed 16 colors text
jira:[STUDIO-13236]

Change-Id: Ife045717889713d476fcf377beb50bcb5f88df91
(cherry picked from commit cb0c120653d9b958a0fede3c1cb66f00e17f5e84)
2025-10-28 15:29:59 +08:00
shsst
c52ca2a442 ENH:[Process/Filament] Fixed P2S HF nozzle Profile Speed Profile Edited by xiao.lu
Change-Id: Ifaba95905ca716793fb15404f6192da01d327723
(cherry picked from commit 9f9b0a8eae4b134e56be45572387d87883c35a38)
2025-10-28 15:29:59 +08:00
shsst
e5f08a7173 ENH:[Process/Filament] Fixed P2S Filament HF nozzle Parameters Profile Edited by xiao.lu
Change-Id: Ied9339cac2854b5394ae27aebab4ae0597038da9
(cherry picked from commit 023b79590868d23b169402c7a3f8980e2ade2e22)
2025-10-28 15:29:59 +08:00
lane.wei
14fed10ce6 ENH: CLI: set -1 to default value of filament_map
jira: no-jira
Change-Id: I12300737061acd1c3e024a3424d3d46a53cf526f
(cherry picked from commit 190904c68f9ddb49df31d7d7e757d780c7876d6e)
2025-10-28 15:29:59 +08:00
zhimin.zeng
213aa92f8d FIX: add auto_pa_cali_thumbnail_image for O1E
jira: STUDIO-14933
Change-Id: Ib9cf365eca55374ed66e5c51b871542a2004f39f
(cherry picked from commit e167a492a1e784311f118b28acf8b3255d10936f)
2025-10-28 15:29:59 +08:00
xin.zhang
efc2da6549 ENH: add notice for PrintStatusAmsMappingInvalid
jira: [STUDIO-14577]
Change-Id: I9c875ef07da8f7b56eee1923afd9fa5e9f346255
(cherry picked from commit ad0c04c57848325dcd3e57a67a29207f57f0207d)
2025-10-28 15:29:59 +08:00
milk
f4848a5782 FIX:Add print option for a1
jira:[STUDIO-14870]

Change-Id: I0d550e15dba4ccc6a30faad56041f476bfe0fd07
(cherry picked from commit 309a01f1853c52630ba2206d2927f4113cf0fa6b)
2025-10-28 15:29:59 +08:00
zhimin.zeng
0f7e6cc442 FIX: load config file failed
jira: none
Change-Id: I0264eaee3eacf13e57cc0918984f02d04327342c
(cherry picked from commit 07ce2a3f021241532f3260c4b45e9d290fac09ca)
2025-10-28 15:29:59 +08:00
weizhen.xie
bc25e28860 Fix: The flushing multiplier state is not updated when changing the extruder.
Jira: STUDIO-14890

Change-Id: Iff62fd578436783372acd8c71cf6ebcbb446ccf9
(cherry picked from commit de13bba204dc6f74225ab1a7c9fc6d3cec167a1f)
2025-10-28 15:29:59 +08:00
zhou.xu
a4fe4633ce FIX:delete cool plate
jira: STUDIO-14877
Change-Id: Ia65fcc706c255072dd78bfcfc80abc6e17fe213a
(cherry picked from commit 501991eaf9ac7cb1bf7b0bafa1213014e6b09e2e)
2025-10-28 15:29:59 +08:00
songwei.li
7f81c31936 FIX: The retract error generated by the travel
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)
2025-10-28 15:29:59 +08:00
shsst
edb46704aa ENH:[Process/Filament] Modify:endgcode turn off left aux fan Profile Edited by peiyu.yao
Change-Id: I3db016a15e877fb44c0023a6ce3f9c0a2b56d9a7
(cherry picked from commit f1787c34502fde5b1d141f61bc4e234f0ef8aa61)
2025-10-28 15:29:59 +08:00
zhimin.zeng
0964a9a85c FIX: the bed_type is incorrect for flowrate cali
jira: STUDIO-14901
Change-Id: I8a1fcdf5eb051a81f0fcd0c5d9a590bce2646994
(cherry picked from commit 49edbe52572137ff79f1b17dab261d5b800b2499)
2025-10-28 15:29:59 +08:00
zhimin.zeng
d4e1d7dfb2 FIX: the nozzle volume type is not correct for manual cali
jira: STUDIO-14759 & STUDIO-14758
Change-Id: I4496583d1ddce8802aac11b1d094ae7bce640eb2
(cherry picked from commit f50d4e346eea362a1ca9de16d8bcf7b9f2cd0cd3)
2025-10-28 15:29:59 +08:00
shsst
642cf3c09c ENH: modify N7 start and end gcode
Change-Id: Ic058fc9e35ded7dd5693097660d4847d837fc22b
(cherry picked from commit 2e534e594405a32b66d6fe92fbe72e37de2571c4)
2025-10-28 15:29:58 +08:00
weizhen.xie
80f4a7a40f Fix: Fix the bug where switching languages on macOS caused a freeze.
Jira: STUDIO-14688

Change-Id: Iadbaa91e8ed9259f514428bcd7dd66308cdcc388
(cherry picked from commit 84c7fafcca503c00a8ef92f23ade2c2ce871849e)
2025-10-28 15:29:58 +08:00
qian.wang
91393cddfb FIX:fix a1m param length err
Change-Id: I833cf95c475c0a1cb4a77157e28fe3402c1ed43f
jira:None
(cherry picked from commit 5677ce89b3a748a447a74af65a6a462a992ddcb7)
2025-10-28 15:29:58 +08:00
haolin.tian
0d01352658 FIX: fix typo error
jira: none
Change-Id: I46ec6aba4af57e3dfb8ef84f2f897bb24c064730
(cherry picked from commit 5c1f8f50ede08c822040d2fe2dd0c49e05a0d553)
2025-10-28 15:29:58 +08:00
shsst
f2c9acbd58 ENH:[Process/Filament] Modify:P2S add left aux fan gcode Profile Edited by peiyu.yao
Change-Id: I10e844b81f7651ff55e4d3fc59ba56f96668a9dc
(cherry picked from commit 5ad83d9aa423410dacccab480068874383e17210)
2025-10-28 15:29:58 +08:00
shsst
3c829f4df2 ENH:[Process/Filament] P2S add clumping_detection gcode Profile Edited by yuran.wang
Change-Id: I36a54fa4508f854cf2e7215896532ec7cc03c802
(cherry picked from commit 33191488f9b584134187660628dfbebe92d50235)
2025-10-28 15:29:58 +08:00
xin.zhang
ff1e48a9c4 FIX: the event should be skipped, so that the CheckBox could be toggled
JIRA: [STUDIO-14861]
Change-Id: I72e9e77c0e81e9cf64de7258ca09c225d5c3f807
(cherry picked from commit 9861c3d6bcd7e2720d1fccaacb820e13b5d7adb7)
2025-10-28 15:29:58 +08:00
shsst
f2996a529b ENH: modify N7 start.gcode
Change-Id: I14737df6eb8829308002849193b2257a8f1a9084
(cherry picked from commit 1a3fef5d0f3a2520fd0b94cd8c55a9433848cfb4)
2025-10-28 15:29:58 +08:00
shsst
f34ee83f69 ENH:[Process/Filament] fix a1m params length err Profile Edited by qian.wang
Change-Id: Iee1538aabaf5f16af507599b978f5958dd72b1f9
(cherry picked from commit 17ffb9abcd78edb4ec0e210ad6a2a2d6a9f6e4cc)
2025-10-28 15:29:58 +08:00
xin.zhang
8d3da67254 FIX: the sorting of AMS list
JIRA: [STUDIO-14738] [STUDIO-14651]
Change-Id: I6d4b89edc77383be8afacf9823567bc756c8e2ed
(cherry picked from commit 8defa1f50b4b556c6ebaf2ad533ba09ad3f23e38)
2025-10-28 15:29:58 +08:00
xin.zhang
2234b227c4 ENH: the old protocol only support AMS_LITE
JIRA: [STUDIO-14841]
Change-Id: I6040d54490a79b323fcd7000a638e5fc4b45b0b4
(cherry picked from commit b6274332d7dc8077b2612ef4518a9cbaf12123d9)
2025-10-28 15:29:58 +08:00
xin.zhang
9d73426c0a ENH: remove Remove unnecessary restrictions when Load or Unload
JIRA: [STUDIO-14269]
Change-Id: I1663f664d7e3248fa3be29f6040247c0ab3b03c4
(cherry picked from commit 79689556eb247240cf57323706411d3d9f6116a5)
2025-10-28 15:29:58 +08:00
qian.wang
901bdea706 ENH:[filament/process]add high flow of X/P
Change-Id: Id4b1c9ee6c99cc4f95970ff94eac1f68f661ad86
jira:None
(cherry picked from commit ca9d5a226a07ecd5454046e6e45e52bf2ccb4936)
2025-10-28 15:29:57 +08:00
qian.wang
4def2e846e ENH:remove third-party filament files for model P2S
Change-Id: I069f0ee3047ed73f065d73220158e1c2a4be25c3
jira:None
(cherry picked from commit 3b0d4699b4ab0a57d9349ac29ebf5ebdbe2eaa23)
2025-10-28 15:29:57 +08:00
haolin.tian
62bf7d1355 FIX: pass try_emmc_print flag when print
jira: [STUDIO-14427]
Change-Id: I3b765e4ea3f290bbc95616f07b416a72f60c7bc5
(cherry picked from commit 39aa7ede7f4cfee20db8f6040a17317a72c9c95e)
2025-10-28 15:29:57 +08:00
hemai
4a51ef7f91 FIX: update proceed action ack param
Jira: [STUDIO-14689]
Change-Id: If424997b9ed05ab95f048424b8950f927ea9b608
(cherry picked from commit 8c712f49caf7a7f0d0fcef7a7c392170ae699ba4)
2025-10-28 15:29:57 +08:00
xin.zhang
1ea5aa9017 FIX: FanControlPopupNew update the Layout and Refresh
JIRA: [STUDIO-14785]
Change-Id: I91c930d0e1b92dd5f2e4d21f3d851e5826307071
(cherry picked from commit 2f25351f330c1c3c6f2bda7a178946b923a4cc2f)
2025-10-28 15:29:57 +08:00
zhimin.zeng
55d8685952 FIX: Should not enable wrapping detection when switch to X/P/A
jira: STUDIO-13992
Change-Id: I5912891bb0b839e64f9d49aa9ed91d2bfd922dcb
(cherry picked from commit 8c4598d4764aa4126a415efd6ab3d51ab78dedb0)
2025-10-28 15:29:57 +08:00
haolin.tian
aa75c444aa NEW: print with emmc
jira: [STUDIO-14427]
Change-Id: I8b0c56ce1c2b7b90949b72c49acfdbb31c876df1
(cherry picked from commit 76e45bde2540ee418719e00b999c5fd724baec71)
2025-10-28 15:29:57 +08:00
milk
d6e40352c2 FIX:Add colors exceed message
jira:[STUDIO-13236]

Change-Id: Id5b761a661c4b0d47cb8cd600a061b403dce0ae8
(cherry picked from commit 7a11f7e8ca0cb08c08b8a1e62f77b670b61aa094)
2025-10-28 15:29:57 +08:00
hemai
34a6100fe6 FIX: add ui_op_lock for cali history operation
Jira: [STUDIO-14419]
Change-Id: I5242a0a56c9fd2459bd681fc32e3d1edd3b19d66
(cherry picked from commit ea7a39ecf0955efe7781f44ec7d3ea3900a43711)
2025-10-28 15:29:57 +08:00
weizhen.xie
a2a9f95b6b Fix: Fix the issue of inconsistent initial_layer_flow_ratio across multiple objects
Jira: STUDIO-14795
Change-Id: I202bdaa70ea7d997e617e757ea95f759a9bb18de
(cherry picked from commit 3da903e492216685d74b621cb4966f5a06ff885e)
2025-10-28 15:29:56 +08:00
xin.zhang
46fd6c9794 ENH: ColorPicker use the bmp size
JIRA: [STUDIO-13908] [STUDIO-14242]
Change-Id: Iac008bcc483b31e3f7e7278a0eea20823eb3bf70
(cherry picked from commit ad9902537c4b1842fd29cfd9fb9eb70681c78327)
2025-10-28 15:29:56 +08:00
xin.zhang
d5da6b834b ENH: AMSSetting do not show insert read for A with AMS Lite
JIRA: [STUDIO-14575]
Change-Id: Id5593a4c034ba067cf2f40f3b632e55291468189
(cherry picked from commit ea4629b1cdb8479e6f69e37b497eb292ef415c06)
2025-10-28 15:29:56 +08:00
xin.zhang
934f32bd8c FIX: remove some warnings
jira: [none]
Change-Id: I0e74b7316d0efe38c65e1f695b2a09eb09103552
(cherry picked from commit 766c6e004145325bcc7a6addfce27842ee9504de)
2025-10-28 15:29:56 +08:00
xin.zhang
fabc681442 ENH: update how to load_ams_list
JIRA: [STUDIO-14255]
Change-Id: I204f881b72185ee16f8ff204feb6469504f9f86b
(cherry picked from commit 4150ff5c178de02dfa67e6bd90765e35c6a64e99)
2025-10-28 15:29:56 +08:00
xin.zhang
8b640a148e FIX: When printing is paused, filament loading and unloading are only supported for external slots.
JIRA: [STUDIO-14776]
Change-Id: I7d8115f4424ce5d2453ce47d29da0c616c7e22bc
(cherry picked from commit 9e9ef9ed0d13eca985fbb59609f198dccd43dd47)
2025-10-28 15:29:56 +08:00
weizhen.xie
6161c5c9bc Fix: The skirt data cache of the object was not cleared, causing the skirt paths to be duplicated.
Jira: STUDIO-14819

Change-Id: Id8716bc54b0b0ae027cfab7e924eb6f8daaf478c
(cherry picked from commit eac888093102bca0056780ebd285e868db9ab64b)
2025-10-28 15:29:56 +08:00
milk
721c93e3d8 FIX:Add ams hub name
jira:[STUDIO-13910]

Change-Id: I2c22f4f468ab7cfa77ebb91338fbd5d09114cf80
(cherry picked from commit 3d300f92b07bfa35e975d84ce2d16b5edba03156)
2025-10-28 15:29:56 +08:00
weizhen.xie
7ab6a22601 Fix: Fix the bug where automatic flushing calculation did not work
Jira: STUDIO-14814

Change-Id: Idd2762e52e1deb9ce4f47b5f6c4473cd98aaa534
(cherry picked from commit 88157485072df23505eab0cf15ccabc6d1c6aa7e)
2025-10-28 15:29:56 +08:00
zhimin.zeng
85f01d2294 FIX: Some unnecessary timelapse photography commands
jira: STUDIO-14775
Change-Id: I301508b3b25ae9d43fbf93bc976d1f8c3556bc52
(cherry picked from commit cfeaa7257b156ea395c905fe797bd7e1052700ff)
2025-10-28 15:29:55 +08:00
haolin.tian
528960bef8 NEW: support printer storage manage
jira: [STUDIO-14427]
Change-Id: Ibfbbb849d9aa30dbc62ddf8aecffad6681d2c894
(cherry picked from commit dbad9dfd4adc0ea7553c9cda6d06959387762e7d)
2025-10-28 15:29:55 +08:00
zhou.xu
a57cc4aa58 FIX:Fix the display issue of dropdown boxes at different resolutions
jira: STUDIO-14605
Change-Id: Ib15b721be1b0e56652bea38d4754032f9a056792
(cherry picked from commit 2044bc85596177c8df4d74299d25498007b5213f)
2025-10-28 15:29:55 +08:00
xin.zhang
491100a9d2 ENH: support AMS switching for A series; clean class AMSSetting
jira: [STUDIO-14068] [STUDIO-14330]
Change-Id: I6281fbf56f3bf406ef28103998790a2a98c3f5c0
(cherry picked from commit 8ee02ec73076691c482ea6d089a49ea1c99ad10c)
2025-10-28 15:29:55 +08:00
shsst
8534cf5fce ENH:[Process/Filament] [N7]Adjust clumping exclude area Profile Edited by yuanzhe.shen
Change-Id: I4753301dace1b017a4350414642d026a4bd20a25
(cherry picked from commit 574702cc4be361cde6d18d72d7d90b5847d69bc1)
(cherry picked from commit 04b1588fe5918e15e530b0bb6220efbcfdb6915d)
2025-10-28 15:29:55 +08:00
xin.zhang
420bdc8907 ENH: page faults when device page idle
jira: [none]
Change-Id: I4dc95ae6332b81e571fb5ef09c75dcf01e77170e
(cherry picked from commit cefe973772c7f7045713470d61cc85221574d9c5)
2025-10-28 15:29:55 +08:00
lane.wei
16a6138263 FIX: CLI: don't set wipe_tower_pos to default if set before
jira: no-jira
Change-Id: Ib9cc006e5b9e3c2dd728d629bad1beb9f9130491
(cherry picked from commit 6a3672c3cf9777f27c04e19a01d8e1e2accbddba)
2025-10-28 15:29:55 +08:00
jiangkai.zhao
3a8269f9d4 ENH:Frontend limits rib width to less than half the tower side length
jira: STUDIO-14681
Change-Id: Id303ae07cacf36059d6de8570fa5ddf7802829ee
(cherry picked from commit 919a57eef5d05066c4a804448cad69bdd3102456)
2025-10-28 15:29:55 +08:00
jiangkai.zhao
b9cd05dc86 FIX:When a smaller negative number is entered for the primer_tower_extra_rib_length, the program crashes.
jira: STUDIO-14677
Change-Id: I67477535ce2e88a2bded23959195ba9b95abf75a
(cherry picked from commit 21e01c87b678bc4f639293363591142fc9884f2d)
2025-10-28 15:29:55 +08:00
jiangkai.zhao
6923230495 Fix:path conflictcheck
Coincident lines are considered as intersecting
jira:STUDIO-14085

Change-Id: I1487e6e2479e2488a3fd55651b8b4fb1bc1f4ced
(cherry picked from commit 2348328a96a8d805c35cae8f03ebaa0869b1313e)
2025-10-28 15:29:55 +08:00
songwei.li
69b2b5d86d ENH: Optimizing the extrusion compensation pattern of the X series
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)
2025-10-28 15:29:55 +08:00
hemai
c6db0f0f85 ENH: limit chamber temperature setting in cooling filt mode
Jira: [STUDIO-14035]
Change-Id: I894ecc3f1628bbdaa86fcfd8a4420e59111af7bb
(cherry picked from commit 5e95c6bcc8aa0b89661f27a4f123442857f7fec7)
2025-10-28 15:29:55 +08:00
hemai
2c675b1365 FIX: fit proceed action change
Jira: [STUDIO-14689]
Change-Id: Ia6a842b5b3bd542c25e67545528b847513d533f1
(cherry picked from commit 4cd33fded68797eb3098cb359ba1708b7f0c8bee)
2025-10-28 15:29:54 +08:00
shsst
d3bf96f067 ENH:[Process/Filament] [X1/X1C/X1E/P1P/P1S/A1/A1 mini]Change the purging temperature and speed to independent variables(Requires the latest slicer). Profile Edited by pi.chen
The configuration changes that were previously reverted are now reintegrated

jira: none

Change-Id: I82148ddb9688ffb358018c187ed71accad47529c
(cherry picked from commit 55fad607fd4e66b6b44b1b11b67f8cc5141c3af6)
2025-10-28 15:29:54 +08:00
zhimin.zeng
970a226b94 FIX: crash when send cali due to cannot find nozzle_volume_type
jira: none
Change-Id: I8598088b46016ccf5fa241b7abe1ce36689161ac
(cherry picked from commit 50b9ee50aeb2e288c05a81204de4280fb7b395c9)
2025-10-28 15:29:54 +08:00
hemai
32af91cf61 FIX: speed switch popup window display bug
Jira: [STUDIO-14642]
Change-Id: If95ca1b448b2d3a03c2f6d6c0b5faad4a3c04e8c
(cherry picked from commit 08943207564c0256d5a5efea9440e55efb7ccea0)
2025-10-28 15:29:54 +08:00
xin.zhang
ada573a1fd ENH: update fan control mode sequence
jira: [STUDIO-14589]
Change-Id: I40f71ffe0ec65d7ebb945a06753b03c93135fa55
(cherry picked from commit c2d2bdc9349692a12b7cb0198864b6f6c7e88205)
2025-10-28 15:29:54 +08:00
xin.zhang
abefa5ec4d ENH: update text for Fans
jira: [STUDIO-14707]
Change-Id: I46a8ea876e2fb6f7dc985729bb3aee5a27889743
(cherry picked from commit 4b9a9f6463c7be55c9070b1847f7f545574d0fe5)
2025-10-28 15:29:54 +08:00
milk
837d2af7e0 FIX:image alignment
jira:[STUDIO-14555][STUDIO-14125]

Change-Id: Iefd35c16fce9396d54bcb847291094346f987b28
(cherry picked from commit 2f1d921d8d76bc0235eca139801a106fca3c3cf6)
2025-10-28 15:29:54 +08:00
milk
6724ec56ba FIX:add log for send thumbnail
jira:[STUDIO-13865]

Change-Id: Icf0823a83b028af7d0c87b1bccfea335fd27989e
(cherry picked from commit a911c30ab1996b261fae1cdb69d407c464ad287b)
2025-10-28 15:29:54 +08:00
xin.zhang
f0c03be324 ENH: remove json exception ->the message which processed by process_network_msg is not json
jira: [none]
Change-Id: I770a2c89809d97bdd17c194a556d2c5461cc0cbd
(cherry picked from commit 23f4dd625234918bffaa2ffefb7e65f516e1d870)
2025-10-28 15:29:54 +08:00
milk
7608195e17 FIX:add idel heating protection
jira:[STUDIO-14359][STUDIO-14431]

Change-Id: I2ecb6c78c4b28d6f14c45dbb1f905b95a9d8c4ab
(cherry picked from commit f6eee61915b47321c1cb44e3ff2306875c32466b)
2025-10-28 15:29:54 +08:00
shsst
434d2142e4 ENH:[Process/Filament] [N7] Add clumping exclude area Profile Edited by yuanzhe.shen
Change-Id: I90aa1eab6f4b5adfc17ba907919e9189b8407f8f
(cherry picked from commit e8a367e4ec54d24dfc5334e10b352b7d82508855)
2025-10-28 15:29:54 +08:00
haolin.tian
99c6b2d9ba FIX: update cert status when disconnected
jira: [STUDIO-14243]
Change-Id: Ibb55ad69cc5eeadb55d4b8187bb38a7a16717527
(cherry picked from commit 48df8a6905d9b487dcb590da1cddf621b46237d4)
2025-10-28 15:29:54 +08:00
zhou.xu
4603d4a2c9 FIX:check_ams_status api should put in "wxEVT_NOTEBOOK_PAGE"
jira: STUDIO-14512
Change-Id: I5220934590b02ccbcc93281bbd83a2dd846d4bce
(cherry picked from commit 4de749501dfbb817ee0158e80cebbc690263f4bd)
2025-10-28 15:29:54 +08:00
zhou.xu
be88fc5a84 ENH:modify svg
jira: STUDIO-13916
Change-Id: I1248bd0c367f49b6c3b6a9d8a3e5226cd7fac7e0
(cherry picked from commit 77278dc34175875e15f802e8e6023c6087e3a6c9)
2025-10-28 15:29:53 +08:00
zhou.xu
4e63907f72 ENH:modidy bed type
jira: STUDIO-13919 STUDIO-13920
Change-Id: I8e9e6bda972d294b91add1eeaf15061188bcdb2d
(cherry picked from commit a436da8930d631e094eef3b7829d270a027a9ac4)
(cherry picked from commit 5468697ff4ac4546111afdfd1f7eb43bd899f1de)
2025-10-28 15:29:53 +08:00
qian.wang
dfa59a5c00 ENH:[Process/Filament] Modify upward_compatible_machine of P2S
Change-Id: I3dd6eea8abb7904391077ad6ca38976661349701
(cherry picked from commit cd015b9fdcdd7c2aa8f166cdf8ad94b9743974a4)
2025-10-28 15:29:53 +08:00
tao wang
a40f3ed85f NEW:support nozzle mapping
Change-Id: I1b9e906d99bc7a3172dc31976422f67e08cfdcd3
(cherry picked from commit 24fcf7d25c54e571627ce3383888e5d4deb01851)
2025-10-28 15:29:53 +08:00
tao wang
e218e43aba NEW:add nozzle mapping
Change-Id: Idb9b183b2f93205de20053e8a3833e1e65c5da28
(cherry picked from commit 80271986bd567d27278759f6f30e1239087f4b7d)
(cherry picked from commit f48dd6f43d96b71bbbfb2487328c016f3307931f)
2025-10-28 15:29:53 +08:00
shsst
2cd92165f6 ENH:[Process/Filament] add p2s to cli_config Profile Edited by lane.wei
Change-Id: Ibb5fdb10a82fe35908ac8a68fdfc5143fa7d270b
(cherry picked from commit 1c673a4ad89de54cc6295285a00ca957c60a6d01)
2025-10-28 15:29:53 +08:00
hemai
dd8fe9436e FIX: nozzle flow info wrong in Printer Parts
Jira: [STUDIO-14582]
Change-Id: I29048f430faa651a9a6b0c18145d7826088f0de2
(cherry picked from commit 13694e237f5787a92f738898856e5a29bd6e08be)
2025-10-28 15:29:53 +08:00
weiting.ji
c8fac7158a FIX: Some machine parameter won't update when opening custom presets
Jira: None
Change-Id: I70a76887ff91ba9196d370109cd1d5ccb2cad35e
(cherry picked from commit 49956263076d18589178abac1f9b310d6e465b4d)
2025-10-28 15:29:53 +08:00
zhimin.zeng
c7b4a0b089 FIX: the nozzle volume type is incorrect
jira: 14502
Change-Id: Id57a775488d36d95df166a673d63b218edd3dc80
(cherry picked from commit 1c45ed7c87fed2a4dc452d78096f4c7202cc14e0)
2025-10-28 15:29:53 +08:00
zhou.xu
11345d6b54 NEW:modify svg name
jira: STUDIO-13919
Change-Id: I8a7ae0df8c4203c8f00a0c0da83e98c1ec7be605
(cherry picked from commit 926809b06fe15e486f24c671af576d0a4dd13c37)
2025-10-28 15:29:53 +08:00
hemai
833de25b29 FIX: update dev_name when connect mode switch
Jira: [STUDIO-13463]
Change-Id: I3e90d31660ff0d24439584a1e00c15449c425548
(cherry picked from commit 4f4689d7fde21afcf667d35fa62e9f444afed436)
2025-10-28 15:29:53 +08:00
weizhen.xie
2959f7549c FIX:Flushing volume button interaction optimization
Jira:STUDIO-14583

Change-Id: Ic1a600e92fb408b690febbd3f7a78924aed42e7a
(cherry picked from commit 672b3b54119b46c8e19f635520d4f78710128815)
2025-10-28 15:29:53 +08:00
zhimin.zeng
21cd25d5af FIX: the return cali value of filament is incorrect
jira: STUDIO-14552
Change-Id: Ic48445942afb66f674c92c12e7ab2b9510f7ac03
(cherry picked from commit c771bb2dbeb61ed8871cce01230735ddb9e69b8b)
2025-10-28 15:29:53 +08:00
zhou.xu
38faa0ae46 FIX:support different picture for different machine
jira: STUDIO-13919
Change-Id: I391887c637345795d3af82b3d274fb995c03b190
(cherry picked from commit 8979c2fbc10f49e257aa30b660ef9d09f00c90a1)
2025-10-28 15:29:52 +08:00
hemai
2fd2ad0e8a FIX: A1 printer cali result default name missing
Jira: [STUDIO-14272]
Change-Id: Idbac8156e296e9ab5ec7bcd4b69eb0f58b351a60
(cherry picked from commit c2f38e7b0cef800a18f04dc6e8394b7bde4db626)
2025-10-28 15:29:52 +08:00
xin.zhang
6f47a241c5 ENH: only enable vertical scroll on SelectMachineDialog
JIRA: [STUDIO-14534]
Change-Id: I9d8f3594553c28bd5fa9ea1b855a748faece53c0
(cherry picked from commit 9084a91bef24878ae6e11892796842f268444d8d)
2025-10-28 15:29:52 +08:00
xin.zhang
6b7d14b98b ENH: update HMS for N7
jira: [STUDIO-14545]
Change-Id: I7a75f6e053025c15ba66d3398e63fa760fe478f6
(cherry picked from commit c575cb1ffdac2e55c3d50610000c2f5126820b3d)
2025-10-28 15:29:52 +08:00
zhimin.zeng
14716da0c3 FIX: sync some differences from master
and cherry pick I6d6b337176bb1dd9e99b51b67065e103d054201d
jira: none

Change-Id: I0902ab2986ec1b604eeb67062e886f9fe2151b6a
(cherry picked from commit 90291d550b96de31c9c50814b19d88a453c57290)
2025-10-28 15:29:52 +08:00
zhimin.zeng
a941895fe7 FIX: support set cali nozzle volume type when new cali value
jira: STUDIO-13784
Change-Id: I69278c05af4c1577b1be125f37155452711f851c
(cherry picked from commit 80d8bc07fe64d5567133e16c715c7809b558a629)
(cherry picked from commit 07bb88b8dae5860b132bb3ed6ee765c81e9a9a7d)
2025-10-28 15:29:52 +08:00
maosheng.wei
3b2da3451a FIX: Fix damaged presets when loading presets
Jira: none

Change-Id: I16ca340b13f31e390d63f0cb83a5fc036f7e3ab1
(cherry picked from commit f3d5873245258d05890dd0f563e0f921ad335c1f)
2025-10-28 15:29:52 +08:00
maosheng.wei
68e08a5bee FIX: Fix decimal point issue during the process of creating a custom printer
github: #7714

Change-Id: I95034becee15befaa6843e27dbc4df2355d008f8
(cherry picked from commit 49ebaca7fcbcf308fef2cc7f71ce8927ea8250f0)
2025-10-28 15:29:52 +08:00
shsst
66263839dc ENH:[Process/Filament] modify P2S end/start/filament_change.gcode Profile Edited by yuran.wang
Change-Id: I36a21e14e2b67fc8db8c53820d1b1294ed2417cb
(cherry picked from commit a2810f510386234ca344df9d7b5abdba6cbfd715)
2025-10-28 15:29:51 +08:00
shsst
6e16f3403a ENH:[Process/Filament] Fixed P2S Silk+ layer time & HF nozzle parameters Profile Edited by xiao.lu
Change-Id: Ie7a976a236963c9789149e235f57a8a6f72accde
(cherry picked from commit 13a4655c7abd07e19eaa11050e79f8c121ee8824)
2025-10-28 15:29:51 +08:00
songwei.li
eafe57d8c6 ENH: TimelapsePosPicker, make timelapsePos far away from the camera
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)
2025-10-28 15:29:51 +08:00
xin.zhang
8863631c92 FIX: filament loading steps
jira: [STUDIO-14428]
Change-Id: I68612346ef9cb50e302323daa47421c22a87be97
(cherry picked from commit 9fb4b9b6a3a16b08d9dc52a4d6dbc15044275dcf)
2025-10-28 15:29:51 +08:00
hemai
21407e91de FIX: clear uiop when close window
Jira: [STUDIO-14196]
Change-Id: I8d701a7897acbc52fdae180fb47cadabb8e4dcc6
(cherry picked from commit 11f0285b17ffaabeb2ef2d4b9090005710bf8a87)
2025-10-28 15:29:51 +08:00
hemai
c9f0bdb4b8 FIX: support retry when flow rate cali failed
Jira: [STUDIO-14271]
Change-Id: I0aa52e97412f29de1630e19c13f57e93763f4c7c
(cherry picked from commit 161daf87cf1e80a7c6f8f9bc6d07435bf8b0f9d1)
2025-10-28 15:29:51 +08:00
milk
164bd76762 FIX:add x1c and x1e picture
jira:[STUDIO-13716][STUDIO-14124]

Change-Id: Ia793986f1891c2ee57c95a6db536e71f725ddb3c
(cherry picked from commit e29b9cf3a319666c896fc839329448dde435c46d)
2025-10-28 15:29:51 +08:00
weiting.ji
c2938827ac FIX: error message not closing
Jira: STUDIO-14424
Change-Id: I188b720b03440ac88169e54b5bb95fdd070bc236
(cherry picked from commit 549b66f1edd7410dcb997c43b4de55dabc65e3dd)
2025-10-28 15:29:51 +08:00
xin.zhang
6fcb6be65f ENH: update N7 images
jira: [STUDIO-12075]
Change-Id: Ia002bf1cd944b9a5e36f639eb80088327b446a60
(cherry picked from commit 0f31c70a832aeccbbfb6f712ef0a490951c3529c)
2025-10-28 15:29:51 +08:00
xin.zhang
776b8b63b9 ENH: update resources/printers/N7.json
jira: [NONE]
Change-Id: Ie1b7bf52800a364e52044b311816a7d5b340e259
(cherry picked from commit 9adef7f956405cdb03c5d98e9400cef371371816)
2025-10-28 15:29:51 +08:00
xin.zhang
35999b7110 FIX: fail to connect default machine when start studio
jira: [none]
Change-Id: Iec546016ec2852899a64c927c57ef3e79d62f9a8
(cherry picked from commit aa5cf6e0636511352bfd6c4c4ffd23cea42a8a70)
2025-10-28 15:29:51 +08:00
xin.zhang
13613a1831 ENH: update HMS files for 22E
jira: [STUDIO-14250]
Change-Id: I2480ea62ec46a04c47cf9d309362e955c38f2f58
(cherry picked from commit 574a3192bb9a76d27d7b49434ad486b50575be01)
(cherry picked from commit f5ecfb8a7c227b119cabdc9f890fd25574c3554e)
2025-10-28 15:29:51 +08:00
xin.zhang
6ebb3b8215 ENH: update the PrintOption tooltip style
jira: [STUDIO-14409]
Change-Id: I790257dea5de6aa9ed24ed21cd5f0ce1a61ad719
(cherry picked from commit d16d8efb21677b1ca2b6d928fc4ee2f1aca83ecb)
2025-10-28 15:29:50 +08:00
shsst
27acf8fbe8 ENH:[Process/Filament] Fixed P2S PLA Matte Layer time Profile Edited by xiao.lu
Change-Id: I35e5b5b8515c6bc3563fd59f3946e65a232afe04
(cherry picked from commit c82b28ceb1cbc144efcf3b86d7e6f40532f66da6)
2025-10-28 15:29:50 +08:00
xin.zhang
55ed67ef23 ENH: support extension fan check
jira: [STUDIO-14122]
Change-Id: I67c2dff7853fb9f8d1098364f2ecec6dee1a18f1
(cherry picked from commit 022fb9d2e27402c51529b477c75af417c43ead17)
2025-10-28 15:29:50 +08:00
chunmao.guo
8e82c0f086 FIX: TabPrinter toggle_option with variant_index
Change-Id: I9d3a2f2d4707add057c881d20830f9fc1b4a4a89
Jira: STUDIO-13499
(cherry picked from commit efa38cd598b27f76e620becc981e2cde93e9c4b6)
2025-10-28 15:29:50 +08:00
milk
299c7c0bac NEW:Add safety button
jira: [STUDIO-14064]

Change-Id: I6a9be69033ea80c2242561c4e1b0ca5626bc7a51
(cherry picked from commit ac4af3aa1de453330fbf2d58988a6e1ea8d5d445)
2025-10-28 15:29:50 +08:00
qian.wang
ac69e7cfbc ENH:[Process/Filament] [P2S] Modify the PETG-HF flush temperature Profile Edited by haoqian.liu
Change-Id: Ib1c5ca814c15d68ca4d47509183fafdbe746c63c
(cherry picked from commit c5461a251cf2a82b86e48d650fc6e3716a7810e1)
2025-10-28 15:29:50 +08:00
maosheng.wei
94cde0fb3a FIX: Refresh the dialog after changing the preset size of the Filament interface
Jira: STUDIO-13998

Change-Id: Ib57db4b9b64d815c3a6731f8a4a99ae2237f4473
(cherry picked from commit 41f3333aacd59788c25034ed4a94461a7b6a8e54)
2025-10-28 15:29:50 +08:00
xin.zhang
299b821c5f ENH: support mix mapping
jira: [STUDIO-13673]
Change-Id: Ic1c89457f5154c108dbab41850ed49561aa34fde
(cherry picked from commit 12942e0545424e2528cc3f3c9aa6947b76469b3d)
2025-10-28 15:29:50 +08:00
xin.zhang
964a35e9b0 ENH: update filaments_blacklist.json
jira: [STUDIO-14159]
Change-Id: Idde4d1c366024b49d474d8802d9f912711ea3991
(cherry picked from commit 5bdf315e6f68e2e27036e348e70402df38f4c49f)
2025-10-28 15:29:50 +08:00
hemai
9360733661 ENH: support proceed action
Jira: [STUDIO-13620]
Change-Id: I4ec96fc3adab517196b9725a54241575288c3bbf
(cherry picked from commit 240e26147917c32749427f31ebe7623500334ed6)
2025-10-28 15:29:50 +08:00
zhou.xu
d8cd5d4ceb FIX:load not bbs 3mf which can load in https://imagetostl.com/view-3mf-online#convert
jira: STUDIO-12000
Change-Id: I80ddc4988807d67e9549c75ccc94744889b9e2ac
(cherry picked from commit a742ed722271909ece4a6d7827f311e9fe104488)
(cherry picked from commit 6e095141b66309983d4df8c8fce12d779e25d262)
2025-10-28 15:29:50 +08:00
zhou.xu
3bfeb2dc0b FIX:add "printable_bounding_box" api
jira: STUDIO-13765
Change-Id: I748ad0371ce80a3ac1a7774fea14d47beb79a187
(cherry picked from commit 1368c67499a0d0f273c824e916bf66980a526203)
2025-10-28 15:29:50 +08:00
zhou.xu
59c2e222d8 FIX:Fix the image error of the hot bed
jira: STUDIO-14278
Change-Id: I3d0ee519b7ab057480cfde88be6b52d4f902b522
(cherry picked from commit af66ccee4e63074d4242f05792c1bc927c9ea2f8)
2025-10-28 15:29:49 +08:00
zhou.xu
e89817b263 ENH:modify bed type for machine
jira: none
Change-Id: I6ea5bd463918109763f6550188adbbc0733cedc6
(cherry picked from commit 41551af46371a5b7e340d8674d333b738b7f9d05)
2025-10-28 15:29:49 +08:00
zhou.xu
e4418731eb FIX:Fix the issue of incorrect support material index in override mode
jira: github 7997
Change-Id: I1963a69b34037f41efe2e044361c9ca1cd581977
(cherry picked from commit 3f8af5c858b455c734f72dae601456a7b98a5f97)
2025-10-28 15:29:49 +08:00
qian.wang
4f12f83ba1 ENH:[Process/Filament] sync p2s profile file with master branch Profile Edited by qian.wang
Change-Id: I86385ec154ad4c2a2e4cb4e637221b3289881651
(cherry picked from commit 3c80e8a8b85109a215ad4b1d0fdb579333f553ff)
2025-10-28 15:29:49 +08:00
xin.zhang
d4c885bf23 ENH: add resources for N7/O1S
JIRA: [none]
Change-Id: I20d5fc8f77e6d679ed28928997f1e07534f9dad7
(cherry picked from commit 4f9f0e034ddbcc9464a10e2d9d170d937204553d)
2025-10-28 15:29:49 +08:00
zhimin.zeng
1fa0e600b8 FIX: fix crash when auto cali for o1s
jira: none
Change-Id: I89b0bd3bc4c0b0c7e17f4f53779a2ec786eff605
(cherry picked from commit 14f041a2527509f779e5345390c0268c5dcaf6eb)
2025-10-28 15:29:49 +08:00
zhimin.zeng
7fc8992978 ENH: add P2S parameter config files
jira: none
Change-Id: I619c9a2859759caaeeebf38b54983c093e1d6cad
(cherry picked from commit cc0d9d35d39474015d6ee31de92aa1cf108ffd3b)
2025-10-28 15:29:49 +08:00
songwei.li
99cb888421 NEW: Add temperature-hold flag to machine_start_gcode
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)
2025-10-28 15:29:48 +08:00
zhimin.zeng
a0f52e2c74 FIX: the cali thumbnail of device page is incorrect
jira: STUDIO-12173
Change-Id: Idc320704813f6e627d043d22e0f68d8b9de901a8
(cherry picked from commit e5f7678e8bf1c640b306530752e75e53bdae0f85)
(cherry picked from commit 9eea94115a9b191e2617c9aed5e8b5b4cc2287be)
2025-10-28 15:29:48 +08:00
zhimin.zeng
8ca6484e58 FIX: Configuring auto calibration thumbnail using a configuration file
jira: STUDIO-12173
Change-Id: I16e984b679c0c6c169f4c4d208805237f97a3a25
(cherry picked from commit b61d4194311a09eca0294fe0aa3f11471ba924b3)
(cherry picked from commit f7c2223b71e0b7aaf7520501a96e0e120a373504)
(cherry picked from commit 96ddca220d8ff13941ebe13152a09cb7a1dd63a7)
2025-10-28 15:29:48 +08:00
xin.zhang
27599a998f ENH: support HMS for N7
jira: [none]
Change-Id: I5598d9d426bbe731b5d449a489417a61f460a520
(cherry picked from commit 6e1ea3ae1dec80b89ca0f530e34e66f8ddffa52b)
(cherry picked from commit a21522fa3b1d3f290283de2d67e5d48857514057)
(cherry picked from commit c7cf98f33dc8c5de61a316dde3ceea32eff00572)
2025-10-28 15:29:48 +08:00
qing.zhang
3bd9fe995b ENH: get max additional fan
Jira: none

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: Idffeb2000936e0b72d2d4cfd2c397eea03cd0319
(cherry picked from commit 772780bcca58300a02546605db414e41731c45f6)
(cherry picked from commit 0aa3a4a215c11d3ed20d968f65e1c51938fee7d2)
(cherry picked from commit 7f6eae184eb296deea96f700af03e5902cf59992)
(cherry picked from commit f86b6a19585199b24848a49b50ca6ccd46f3381d)
2025-10-28 15:29:48 +08:00
xin.zhang
29eec843eb ENH: update printer view
jira: [STUDIO-12075]
Change-Id: I3b18940513b2628a45fb51d707921607ac1511a3
(cherry picked from commit acbc1fa3406563872ab4a4f79546fb7f530aef4b)
(cherry picked from commit 79f0f1a1fbede91df82175e6b8fe22457a622229)
2025-10-28 15:29:48 +08:00
hemai
6d9ad4412b FIX: delete old error code
Jira: [STUDIO-14160]
Change-Id: I70b2928ffcf84fa864e0906efb079857b3e69e81
(cherry picked from commit f2e5ed1a1aaaa6a1c17637377dd65e48e09591c8)
2025-10-28 15:29:48 +08:00
hemai
cdd1c22857 FIX: print warning msg wrong in use brass nozzle
Jira: [STUDIO-14325]
Change-Id: Ie84083a3673fc1300996b1564d26d1b58e2b55ee
(cherry picked from commit e8bb9e674115f7da01ba26c1f704e37e739b21a2)
2025-10-28 15:29:48 +08:00
haolin.tian
e6d8339406 FIX: Improve device switching logic for disconnect and reconnect
jira: none
Change-Id: If9b4081581da7bb7c9cdcc44adcb1b9f490afb3f
(cherry picked from commit 725799eec1aad721e74ec956d14b30369d75446a)
2025-10-28 15:29:48 +08:00
hemai
e774104f87 ENH: disable calibration button in 2d mode
Jira: [STUDIO-12455]
Change-Id: Ibf8a0478f19ddd8997b1719e6c6e78fed49da016
(cherry picked from commit d48f90103553598e1519ddbac648454aeae1cbe1)
2025-10-28 15:29:48 +08:00
xin.zhang
27a23a8baf ENH: support new feature of AMS
jira: [STUDIO-14067][STUDIO-14069]
Change-Id: Ib51f9ec6b387418f1817619973e926d3c9494935
(cherry picked from commit e2f63a8d1e3a1ea1f53578c611300ead12052b39)
2025-10-28 15:29:47 +08:00
xin.zhang
84dd0449b7 ENH: support cold pull for TPU
jira: [STUDIO-13529]
Change-Id: I6a44da3b2774305db179cfed0781d67e9b5a7e2e
(cherry picked from commit 0225c329c8eb8fee332d2cf9732b83ccd0c1dbb3)
2025-10-28 15:29:47 +08:00
xin.zhang
9b5190ca37 ENH: comment the asserts
jira: [none]
Change-Id: I41884dcc407b7c0c9083cd4a354a053c77d9a5ff
(cherry picked from commit a174e3f3ca40931e12cb6519bfc594a2b6217acf)
2025-10-28 15:29:47 +08:00
xin.zhang
fedcfc4ea5 ENH: support extension tool; support check extension tool
JIRA: [STUDIO-14122] [STUDIO-14162]
Change-Id: I147d335420fcc7c9a190f570863e38e138cdadcf
(cherry picked from commit db83b9fb6c6399d917b27b74cc573d668737c705)
2025-10-28 15:29:47 +08:00
hemai
b5b64265b2 FIX: reset temp icon when printer disconnected
Jira: [STUDIO-14170]
Change-Id: I0931c862e55eea0606c165207ec33068f067335d
(cherry picked from commit 0f97d125d0c00f8f04f7a2aa8aad2224eb4f1e62)
2025-10-28 15:29:47 +08:00
weizhen.xie
06acdf2609 ENH:Give a warning when the flushing value changes or is zero.
Jira: STUDIO-13175
Change-Id: Ibc5a912464322d2bc40514c310dfc4859bbd79b3
(cherry picked from commit 3fa4b149a0a529d8a2b1c6b6b80415161c13b2c3)
(cherry picked from commit f6c03caaa744b774ffc9d6150b3691d232ced472)
2025-10-28 15:29:47 +08:00
hemai
a397a7378a ENH: refresh nozzle info from studio
Jira: [STUDIO-13650]
Change-Id: I12dc26d5730c761ccc91d3a4a5f120d422d8a0ff
(cherry picked from commit 2bd7cd9a6a4d9c3370491fb4323a1aabe9a45578)
2025-10-28 15:29:47 +08:00
haolin.tian
7df679fba7 FIX: Sync cali data after device certificate installation
jira: STUDIO-14191
Change-Id: I794bdeaf454f60bacad6539c7314bf9f1456deb3
(cherry picked from commit ce8a1c53331c6b7a6475f354a1b7d573433eceee)
2025-10-28 15:29:47 +08:00
xin.zhang
f4ba9e7fd5 FIX: transparent while send print in some platform
JIRA: [STUDIO-12867] [STUDIO-12529] [STUDIO-13313]
Change-Id: Ia36b3b1c9835f9d1d30d0178f27837836a6b8175
(cherry picked from commit afcd0a0cc8f28485395aa6c212c4bb862522c2fc)
2025-10-28 15:29:47 +08:00
weiting.ji
f1f6758411 FIX: mac printer & filament guideframe crash
Jira: STUDIO-14240 STUDIO-14238
Change-Id: Iaec55a36b09ee0c501c374efc985e369b54ba555
(cherry picked from commit 1de29784003d25bd962dff9b3da770edab444da6)
2025-10-28 15:29:47 +08:00
xin.zhang
2d69a71b15 FIX: update version.txt
jira: [none]
Change-Id: I34fa021528d6968323edbf2a1e261500e497a77e
(cherry picked from commit ca486329ca809a0c7f65e3e99a5e1b1fedd6c830)
2025-10-28 15:29:47 +08:00
xin.zhang
1494731eab FIX: check with internal filament type
jira: [STUDIO-14216]
Change-Id: I89e0d62b572872d7e2ea8e6e57ac662b64baf92b
(cherry picked from commit 6767c2334bbfcffa41d4d020ee4f2e183a327cee)
2025-10-28 15:29:47 +08:00
xin.zhang
2339f5a789 ENH: update airducts
jira: [STUDIO-13298]
Change-Id: I95905b6fd8a29617eeaff24e01bc64b4d7008a7d
(cherry picked from commit f212752cfcfde27d38444d77eda2938990a6cf78)
2025-10-28 15:29:47 +08:00
xin.zhang
fb2266f901 ENH: update airducts
jira: [STUDIO-13296]
Change-Id: If5805345b0429504eba551a3115d8fcedd199c6d
(cherry picked from commit c586f91e63e46ab8910bb7aca1537ba4cf47396a)
2025-10-28 15:29:47 +08:00
xin.zhang
2626a6bc3b FIX: check close chamber temperature
JIRA: [STUDIO-13676]
Change-Id: I5c2712ade24d20d361d00a0b763dd16479aa5fb1
(cherry picked from commit 7ac3c82fbaf0337351d41f5d65c2ae088f755744)
2025-10-28 15:29:47 +08:00
Eryoneoffical
21cfc7edeb add profile of 0.2mm nozzle to Eryone X400 (#11115)
Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-10-27 21:53:37 +08:00
Heiko Liebscher
fd7c1ad1b5 MEGA Fix de translation (#11160)
* big update for de translation

* fix typos

* fix more translations

* fix msg format
2025-10-27 21:43:53 +08:00
Frida Rosenaa
0066aacfdb Fix typo in elegoo print ack enum (#11152) 2025-10-27 21:42:33 +08:00
Noisyfox
61991f8296 Fix extruder page title (#11147)
(cherry picked from commit abb8ec8a28)

Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-10-27 21:08:26 +08:00
Ian Bassi
a839b81fdf Calibration Cornering Jerk Test + Generic interpolator + Fix (#10962) 2025-10-26 20:44:19 +08:00
Vovodroid
e922411371 Add instances (#6237)
* Add instances

* - Added a new menu item for converting instances to objects,

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-10-26 16:13:14 +08:00
SoftFever
ca064dee1d Update locale 2025-10-26 10:40:26 +08:00
Heilonggongzi
3079ef1db2 Wiki - Elephant foot compensation in detail (#11106)
* Elephant foot compensation in detail

* Elephant Foot Compensation in detail

* Update quality_settings_line_width.md

* Update doc/print_settings/quality/quality_settings_precision.md

Co-authored-by: Ian Bassi <ian.bassi@outlook.com>

* Update doc/print_settings/quality/quality_settings_precision.md

Co-authored-by: Ian Bassi <ian.bassi@outlook.com>

* Update doc/print_settings/quality/quality_settings_precision.md

Co-authored-by: Ian Bassi <ian.bassi@outlook.com>

* Update doc/print_settings/quality/quality_settings_precision.md

Co-authored-by: Ian Bassi <ian.bassi@outlook.com>

* Update doc/print_settings/quality/quality_settings_line_width.md

Co-authored-by: Ian Bassi <ian.bassi@outlook.com>

* Update doc/print_settings/quality/quality_settings_precision.md

Co-authored-by: Ian Bassi <ian.bassi@outlook.com>

---------

Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
2025-10-26 10:38:55 +08:00
Heiko Liebscher
d221432a62 fix german after changes in po files (#11059) 2025-10-26 10:01:56 +08:00
sharanchius
1f0428dc29 Lithuanian translation (#11142)
* Full last Lithuanian translation

* Fixed Lithuanian translation
2025-10-26 10:00:24 +08:00
Elijah Fronzak
f4d9e9159a Russian translation update (#11091) 2025-10-26 09:59:34 +08:00
SoftFever
ae10b4c09e Add vendor option to optimize_cover_images script
* 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.
2025-10-25 23:26:56 +08:00
RH3D
1ba247bf71 [PROFILE] Add E3NG printer profiles (#11067) 2025-10-25 23:24:22 +08:00
Johan Ohly
9fb02f21b0 Set is_BBL_printer flag before validation in CLI slicing path (#11018)
Set `is_BBL_printer` flag before validation as validation depends on it

Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-10-25 23:11:08 +08:00
FlyingbearOfficial
fda946918a Add new filaments and fix some params (#11042)
* ADD NEW FILAMENTS

* Update 0.20mm Standard @FlyingBear Ghost7.json

fix exclude_object param

* Update fdm_process_common_Ghost7.json

* Update FlyingBear PLA Basic profile to include renamed_from field

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-10-25 22:52:48 +08:00
Ocraftyone
026499c5b7 Better CMake Defaults (#10294)
* 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>
2025-10-25 22:05:09 +08:00
SoftFever
ce854fa3de Update filament profiles to use arrays for cost, density, and max volumetric speed
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.
2025-10-25 17:21:51 +08:00
HYzd766
9d69d37c5a change machine gcode (#11136)
* 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>
2025-10-25 16:29:16 +08:00
yw4z
ff0507e5a3 Profile folder optimizations (Anycubic, Artillery, Bambu Lab, BIQU, Creality, Flashforge, Prusa, Ratrig, Sovol, Volumic, Voron, VzBot, Z-Bolt, Wanhao and more) (#10806)
* init

* voron covers

* voron models

* qidi hotends

* ultimaker

* seckit

* kingroon

* Update kp3s_bed.stl

* default hotend

* VzBot

* Update goliath.stl

* Construct3D

* comgrow

* biqu

* artillery

* anycubic

* bambulab

* flashforge

* chuanying

* update

* ratrig

* snapmaker

* Update sovol_zero_buildplate_model.stl

* sovol

* sovol

* Update wm_3dp_hotend.stl

* Update magicmaker_hotend.stl

* flsun

* iQ

* wanhao

* deltamaker

* phrozen

* MagicMaker covers

* z-bold

* volumic

* VzBot covers

* custom printers

* custom printer covers

* orca arena

* Update Orca Arena X1 Carbon_cover.png

* creality

* sovol sv08 max

* qidi texture

* Update qidi_xplus_buildplate_texture.png

* bump versions

* folgertech

* twotrees

* VzBot

* dremel

* FlyingBear

* Wanhao

* wanhao

* Delete 230 - Mono320x320.png

* voron

* voron

* voron

* seckit

* ultimaker

* kingroon

* default hotend

* Update qidi_xseries_gen3_hotend.stl

* Update deltamaker_2_buildplate_texture.svg

* vzbot

* Update goliath.stl

* biqu

* anycubic

* folgertech

* geetech

* ginger additive

* anycubic

* Update Wanhao D12-300_hotend.stl

* phrozen

* bump versions

* fix missing files on linux & add new models for sv07

* fix missing files

* Prusa

* update

* Update ultimaker_2_buildplate_model.stl

* fix all cover images

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-10-25 15:41:29 +08:00
Hải Nguyễn
6725a9db89 Add Vietnamese translation (#10929)
* 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>
2025-10-25 13:35:16 +08:00
Alexandre Folle de Menezes
433c1feb47 Complement pt-BR translation (#10960)
Improve pt-BR translation
2025-10-25 11:50:48 +08:00
GlauTech
6e967563eb Update TURKISH translations (#10934) 2025-10-25 11:20:59 +08:00
Donovan Baarda
f5bbe52ac9 Optimize FillTpmsFK using optimized MarchingSquares from #10747. (#10876)
# 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.
-->
2025-10-25 11:17:43 +08:00
SoftFever
339636b91f H2D/H2S support (#10780)
### 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 H2D/S**, 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/10780/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"
/>

-----------------------------------

Huge PR that cherrypicked everything Bambu did for H2D/H2S support.
Thanks BambuLab!

<img width="1626" height="1322" alt="image"
src="https://github.com/user-attachments/assets/1e88332c-4adf-42b4-bca3-865c18ce8615"
/>
<img width="2560" height="1504" alt="image"
src="https://github.com/user-attachments/assets/514da990-4957-47ef-996f-1dbeb8fc88ae"
/>
<img width="2560" height="1504" alt="image"
src="https://github.com/user-attachments/assets/e6063330-3a6d-48fe-beb5-588b6e9fc90c"
/>
<img width="2560" height="1504" alt="image"
src="https://github.com/user-attachments/assets/270fcdf8-d2ee-4025-aeaf-9b12ddf69135"
/>
<img width="1508" height="906" alt="a30a310bb9857b2c4fa5b9cc134a16e7"
src="https://github.com/user-attachments/assets/5f42279a-c1ef-4079-bd3c-6cd2e008f2fe"
/>
2025-10-24 21:22:54 +08:00
Noisyfox
9510b1a930 Disable filament merge option if not SEMM 2025-10-24 19:43:23 +08:00
SoftFever
2915e3035f bump profile version 2025-10-24 17:23:26 +08:00
Noisyfox
497ff94e09 Disable filament delete option if not SEMM 2025-10-24 14:51:06 +08:00
Noisyfox
b2047ba563 Merge branch 'main' into dev/h2d-2
# Conflicts:
#	localization/i18n/list.txt
#	src/slic3r/GUI/CalibrationWizardPresetPage.cpp
#	src/slic3r/GUI/DeviceManager.cpp
#	src/slic3r/GUI/DeviceManager.hpp
#	src/slic3r/GUI/Printer/PrinterFileSystem.cpp
#	src/slic3r/GUI/Printer/PrinterFileSystem.h
#	src/slic3r/GUI/SelectMachine.hpp
#	src/slic3r/GUI/SendToPrinter.cpp
#	src/slic3r/GUI/SendToPrinter.hpp
#	src/slic3r/GUI/StatusPanel.hpp
#	src/slic3r/GUI/Widgets/AnimaController.cpp
2025-10-24 09:59:00 +08:00
SoftFever
3cb6da6f61 Part skip from Orca for Bambu printers (#10875)
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.
2025-10-23 23:46:39 +08:00
Ian Bassi
f0b89eadf4 Remove to Ignore small overhangs: Full update (#11073)
Ignore small overhangs

Co-authored-by: Briella Bugs <72235413+briellabugs@users.noreply.github.com>
2025-10-23 23:43:57 +08:00
frmdstryr
d87f8e3a88 CalibrationWizardPresetPage: Skip adding null combobox (#11092) 2025-10-22 23:51:52 +08:00
frmdstryr
4a05ac547a ProgressDialog: Fix DoSetSize using incorrect superclass (#11095)
Fix ProgressDialog using incorrect superclass
2025-10-22 23:49:35 +08:00
Noisyfox
3d80ca3d85 Merge remote-tracking branch 'upstream/main' into dev/h2d-2
# Conflicts:
#	resources/profiles/BBL.json
2025-10-21 14:42:44 +08:00
bonninjd
0e30dab638 Add Coex 3D filament profiles to Orcaslicer (#10924)
* Fix some errors (e.g., missing instantiation, missing commas, wrong order) and remove unnecessary parameters.

* Fix filament profiles to use arrays for vendor, cost, density, type, temperature, and speed attributes across COEX materials.

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-10-21 00:40:24 +08:00
Noisyfox
972026f0a5 Merge branch 'main' into dev/h2d 2025-10-20 23:15:29 +08:00
Kiss Lorand
f2e6a4c08e Fix Z offset for 1st layer (#11011) 2025-10-20 21:49:06 +08:00
Valerii Bokhan
e6a4ddf32d Feature: Ability to change flow ratios by extrusion path types (Code + Docs) (#10641)
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
2025-10-20 21:45:52 +08:00
Valerii Bokhan
0bdb114881 Fix: A proper handling of the support_base_pattern_spacing = 0 for the Tree Slim support (#11084)
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>
2025-10-20 16:32:19 +08:00
Ian Bassi
a6d9fa49b4 Limit Shrinkage values (#10930)
* Limit Shrinkage values

Co-Authored-By: Rodrigo <162915171+RF47@users.noreply.github.com>

* Min 50 Max 150

---------

Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
2025-10-20 11:00:20 +08:00
Noisyfox
3b1a420b4e Merge remote-tracking branch 'upstream/main' into dev/h2d-2 2025-10-20 09:37:23 +08:00
Anson Liu
fcb640bee1 Set Ironing angle setting to be a relative degree offset from top surface infill direction (#10841)
* 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>
2025-10-20 09:01:53 +08:00
Ian Bassi
d786aec255 Input Shaping Calib: Types, RepRap + Improvements (#10913)
* IS Freq duplicated as Base

* IS jerk to 5

* JD jerk to 0

* Base 1 layer + MINIMUM_CRUISE_RATIO=0

* Tab

* Remove IS BASE

* Update Plater.cpp

* Klipper Jerk 5, Others 10

* JD in Marlin2

* Types

* Horizontal

* Different lists

* RepRap IS writer

* Smart Flavors and axis

* RepRap values lowercase

* Hide Y axix for RepRap

* Max Jerk or JD

* Reorder

* Removed dual list + Default

* RepRap show UpperCase use LowerCase

* RepRap P"type" Type of input shaping to use, not case sensitive.

* RepRap DAA

* Reorder Klipper

* Custom Firmware Note

* Better Display

Co-Authored-By: yw4z <28517890+yw4z@users.noreply.github.com>

* Better notes

* Update + Clean Wiki

Co-Authored-By: gregmatic <60957555+gregmatic@users.noreply.github.com>

* Wiki Update

Update Images
Improve guide

Co-Authored-By: Cameron D <30559428+cdunn95@users.noreply.github.com>

* Fix G-code generation issue and refine input shaping calibration documentation

---------

Co-authored-by: yw4z <28517890+yw4z@users.noreply.github.com>
Co-authored-by: gregmatic <60957555+gregmatic@users.noreply.github.com>
Co-authored-by: Cameron D <30559428+cdunn95@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-10-20 00:31:51 +08:00
Noisyfox
8e0e8ce461 Merge remote-tracking branch 'remote/main' into dev/h2d-2
# Conflicts:
#	src/libslic3r/PrintConfig.cpp
#	src/slic3r/GUI/ConfigManipulation.cpp
2025-10-19 23:11:13 +08:00
Ian Bassi
a754387566 Wiki 13: Layer time variability + Minor Improvements (#10677)
* Layer time Variability

Co-Authored-By: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com>

* Layer time Variability ++

Co-Authored-By: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com>

* Infill gcode analysis tool

* Infill calculator project

* 2 Sigma

Co-Authored-By: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com>

* Layer Time Variability improved calculation, grouping % and New names

Co-Authored-By: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com>

* Fix Applies to lines

* Reorder, icons and descriptions

* #10687 comment

* Update phishing site reporting instructions in README

README now advises users to report malicious sites using both Google Safe Browsing and Microsoft Security Intelligence, improving community security guidance.

* Ziped analysis gcodes

* Klipper estimator + 3mf klipperized

* Klipper estimator Corrected

* Reformat MD generator

* extra-solid-infill.gif Size Optimized

* Analysis Refactor

* cleaned outliers

* imagefix

* Images with accurate values

* Project specific Machine, Material and Process

* Notes

* Update extra-solid-infill.gif

* Update profiles images and fix using same name

* Zipped analysis files

* Add note on Avoid Crossing Walls and Timelapse mode

Co-Authored-By: Rodrigo <162915171+RF47@users.noreply.github.com>

* Update VS build instructions

Co-Authored-By: Anson Liu <546458+ansonl@users.noreply.github.com>

* Added IPThreat report links in README

* DEFA[.]NG

Co-Authored-By: Nanashi <53353250+NanashiTheNameless@users.noreply.github.com>

---------

Co-authored-by: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com>
Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
Co-authored-by: Anson Liu <546458+ansonl@users.noreply.github.com>
Co-authored-by: Nanashi <53353250+NanashiTheNameless@users.noreply.github.com>
2025-10-19 23:04:16 +08:00
Noisyfox
9e889afb53 Fix issues with non-bbl multi-head printers 2025-10-19 22:54:48 +08:00
Ian Bassi
c79e89d30b Validation Action comment Remove + Improvement (#10617)
* pull request target

* Skip images in link valitadion

* Revert "pull request target"

This reverts commit dc05d53c140fe8a0d07a9bf4eeed75bc20136a0c.

* Remove PR comment step from documentation validation workflow

* Update .github/workflows/validate-documentation.yml

Tested and looks good

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-19 22:39:29 +08:00
Ian Bassi
a48235691e Material Type standarization + Technical Filament Types (#10553)
* 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>
2025-10-19 21:57:34 +08:00
Donovan Baarda
2a3e761ab9 Optimize and simplify MarchingSquares.hpp. (#10747)
* 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>
2025-10-19 19:27:55 +08:00
Noisyfox
1bbdb3fa8e Fix dialog icon 2025-10-19 11:41:50 +08:00
Noisyfox
1a0979988a Fix pin code dialog dark color 2025-10-19 10:09:04 +08:00
Noisyfox
01c02051f2 Merge branch 'main' into dev/h2d 2025-10-18 19:20:09 +08:00
Noisyfox
f12602c0bc Fix several imgui UTF8 related issues (#11078)
* FIX:add  tooltip(const std::string &label, float wrap_width) api

jira: none
Change-Id: I2372f57177a362f540e509747552a4a27f23fe8f
(cherry picked from commit 9d690cddd60245cd3c16498e6c83183ec8446241)

* Fix crash when rendering text icons

---------

Co-authored-by: zhou.xu <zhou.xu@bambulab.com>
2025-10-18 19:17:50 +08:00
Noisyfox
712febf3fb Update H2D transparent cover image
---------

Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
2025-10-17 21:06:44 +08:00
zhou.xu
f6784a2dda FIX:add set_only_support_model_part_flag api for support negative_volume and so on in boolean gizmo
jira: none
Change-Id: Id4bc54ff27652b587227c98c8fb4dc27c34da666
(cherry picked from commit 512012c8d2aaf5f91748b2b6cf9a491ca351d5cc)
2025-10-16 19:37:54 +08:00
Noisyfox
b29174f767 Merge branch 'main' into dev/h2d 2025-10-16 19:16:40 +08:00
Noisyfox
e20113402c Make top resizing grabber larger on Windows (#11023) 2025-10-16 11:20:27 +08:00
Noisyfox
ea83a0f337 Update text 2025-10-15 20:22:11 +08:00
xun.zhang
baf0588d43 FIX: auto flush option dont work
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)
2025-10-15 20:14:04 +08:00
Noisyfox
af32339e1a Update color & text 2025-10-15 20:10:40 +08:00
Noisyfox
6f36556eaa Merge branch 'main' into dev/h2d-2
# Conflicts:
#	src/slic3r/GUI/Preferences.cpp
2025-10-15 19:43:14 +08:00
yw4z
0493ed03a5 Preferences dialog redesign / improvements / fixes (#10665)
* init

* update

* update

* update

* update

* tooltips

* update

* fix tab colors

* update

* Update Preferences.cpp

* Update Preferences.cpp

* Update Preferences.cpp

* Update Preferences.cpp

* update "Auto backup" and "Downloads folder"

* cleanup

* update

* update

* update

* update

* update

* update

* Update Preferences.cpp

* update

* update

* update

* update

* Update MainFrame.cpp

* Update text.js

* log level selection

* move NetworkTestDialog to cpp

* Update Preferences.cpp

* Update Preferences.hpp

* cleanup create_item_switch

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-10-15 17:34:08 +08:00
Noisyfox
be18ff3c6f Update color 2025-10-15 16:57:40 +08:00
zorro.zhang
c6163ebcf3 ENH: Update GreenCheck SVG
JIRA: STUDIO-10718
Change-Id: I0f0c1c12a0126dee18c92baf7da8494c5b280ae1
(cherry picked from commit e28346c0356aeb42c4e53661d2ccd72135d4dede)
2025-10-15 16:57:40 +08:00
lane.wei
45f6d3cf95 FIX: gui: fix the crash after first loading configs
caused by printer_model missed in the setup stage
jira: STUDIO-10966

Change-Id: I3a887de800c62c5dd355c9dce554e2b5828a1c55
(cherry picked from commit a598ce8d6127f750a0c6e514a51111b247186c41)
2025-10-15 16:57:40 +08:00
chunmao.guo
8de11c2f01 ENH: select first order variant for newly enabled printer_model
Change-Id: I841a15f908cb74e6bfa594e017349a967ab4cf0a
Jira: STUDIO-10791
(cherry picked from commit f1365df997083a018a511e7581d73b4a4064601a)
2025-10-15 16:45:22 +08:00
zorro.zhang
adf85c5080 NEW: Ignore Nozzel Select in UserGuide
JIRA: none
Change-Id: I507a92abb9137167dbcbe1def8276f868529c4ab
(cherry picked from commit 99a8139c1b915709a854296f22a222bac07a47ce)
2025-10-15 16:42:23 +08:00
Noisyfox
12226c472b Merge branch 'main' into dev/h2d-2 2025-10-15 14:48:45 +08:00
Alexandre Folle de Menezes
4e79527bf8 Add the u8 marker to UTF-8 strings (#10666) 2025-10-15 14:35:39 +08:00
Noisyfox
3a5a49b23d Merge branch 'main' into dev/h2d-2
# Conflicts:
#	src/slic3r/GUI/PartPlate.hpp
2025-10-14 19:43:33 +08:00
Noisyfox
cbc41501b4 Add static assert for bed number related values (#11035) 2025-10-14 08:56:18 +08:00
Rodrigo Faselli
ac75c69ddf BUG-FIX avoid crossing perimeters ingonore holes <=2mm (#10942)
Fix avoid crossing perimeters 2
2025-10-13 19:41:07 +08:00
Aleksandra M
9c1c439cfc [Profiles] Fix Prusa XL overhang speed (#10931) (#10933)
Fix reverse order of overhangs slowdown settings
2025-10-13 16:46:13 +08:00
Daazed McFarland
1786e3f5e4 overflow inital setup screen (#11007)
allow overflow on setup

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-10-13 16:21:41 +08:00
SoftFever
295758f0fc Clarify warning about malicious websites 2025-10-12 23:33:50 +08:00
Azi
6feb99bd2d bugfix for Invalid speed "G1 F-2147483648" (#10944)
added non zero safety check for feedrate calculation
2025-10-12 22:03:38 +08:00
Noisyfox
592a3aea37 Merge branch 'main' into dev/h2d 2025-10-12 14:05:44 +08:00
Noisyfox
2582c65bb5 Merge branch 'main' into dev/part-skip 2025-10-12 12:52:56 +08:00
Noisyfox
cf26243740 Update color 2025-10-12 12:53:13 +08:00
Noisyfox
abe3cd48f9 Attempt to get the correct PR commit hash (#10900)
* Attempt to get the correct PR commit hash

* Add commit hash to flatpak

* Use given hash if `git_commit_hash` env variable is present
2025-10-11 21:37:46 +08:00
Noisyfox
fc8f183151 Fix issue that certain modal dialog cannot be dismissed 2025-10-11 21:30:06 +08:00
Noisyfox
2fa386cbdb Treat extruder_clearance_max_radius as extruder_clearance_radius, and raise error if both options are present 2025-10-11 16:34:58 +08:00
Noisyfox
6ea106f754 Update gcode legend window to match orca style, also make it more space efficient 2025-10-11 10:27:12 +08:00
Noisyfox
ca6d1d37ee Fix AMS road position 2025-10-10 20:11:40 +08:00
Noisyfox
f658aad7ca Fix dark mode visibility of the AMS dry icon 2025-10-10 19:51:52 +08:00
Noisyfox
cad5996446 Merge branch 'main' into dev/h2d 2025-10-10 19:30:50 +08:00
Noisyfox
56d8bd8fbe Fix option nullable 2025-10-10 16:57:16 +08:00
Noisyfox
dd08cca05e Make bool option compatible with array input 2025-10-10 09:47:39 +08:00
Noisyfox
59bca995fb Fix filament grouping color #2 2025-10-09 23:13:09 +08:00
Noisyfox
fa238016ce Fix crash when switching to profile that has filament count less than used by current project 2025-10-09 22:04:39 +08:00
Noisyfox
6b4975da72 Sync with latest bbl profiles 2025-10-09 20:37:31 +08:00
Noisyfox
95f90a32da Fix filament grouping color 2025-10-09 10:11:52 +08:00
Noisyfox
3ea51fc41f Fix crash when sync ams 2025-10-08 22:43:22 +08:00
noisyfox
8d9050d99a Fix build issue with PCH off 2025-10-08 21:21:02 +08:00
Noisyfox
9e44fe0cd2 Update tooltips & units 2025-10-08 19:14:31 +08:00
Noisyfox
754e602b53 Fix color & position of device info sync dialogs 2025-10-08 18:03:20 +08:00
Noisyfox
83c167450b Some dark mode fix 2025-10-08 17:05:55 +08:00
Noisyfox
651afe8825 Update text & color of flush volume matrix dialog 2025-10-08 16:18:23 +08:00
Noisyfox
4897fd5ea2 Apply extend_default_config_length to system profiles too
so we don't need to worry about default values for different variants
2025-10-08 15:19:25 +08:00
zhimin.zeng
b30716a996 FIX: first layer print sequence is incorrect when print by object
Change-Id: I6943a2d59eeb10db176dbb5cbe8567b5320d7cb1
(cherry picked from commit e9b33cfcb97a23a09405ce6515d2d5e5d8911964)
2025-10-08 13:04:04 +08:00
lane.wei
c4adf70e45 ENH: config: set default 'extruder_printable_area' to empty
JIRA: no-jira
Change-Id: I5d574a12684281faabbd1cf96e68e9b9ad593edc
(cherry picked from commit 2d791aea17bc6607d68df4f88c8481f5a8aa139e)
2025-10-08 10:36:33 +08:00
Noisyfox
45bf4a99f1 Fix issue that connection failed dialog keeps popping up if lan device is offline 2025-10-07 09:57:17 +08:00
Noisyfox
4ee98b1807 Fix crash due to modify same collection concurrently 2025-10-07 09:56:39 +08:00
Noisyfox
fb4bb83546 Fix issue that when swtiching to other printer from H2D/H2S, an empty preset dirty dialog will pop up 2025-10-06 20:25:34 +08:00
noisyfox
551be1c18b Fix build issue with PCH off 2025-10-05 22:53:58 +08:00
Noisyfox
fdf3e88032 Refine badge rendering 2025-10-05 22:00:01 +08:00
Noisyfox
38f51bd77f Update static box label size after font change 2025-10-05 21:55:37 +08:00
Noisyfox
687286ccac Refine badged static box 2025-10-05 21:45:49 +08:00
Noisyfox
a8482a1138 Fix AMS and filament list load when switching printer profiles 2025-10-05 21:24:41 +08:00
Noisyfox
8ed77beaa0 Hide sync btn for BBL printers if 3rd print host is used 2025-10-05 20:16:23 +08:00
chunmao.guo
a9145ca641 FIX: always use diameter from printer preset
Jira: STUDIO-9911
Change-Id: Ibf34863f3ec282874be0d9b95975492fb4b70e83
(cherry picked from commit 2ca7a8deebb97444dcdd6668e64a031e6f4180db)
2025-10-05 20:13:16 +08:00
Noisyfox
6b24a977ca Fix nozzle temp settings layout 2025-10-05 19:45:02 +08:00
Noisyfox
da2934d02a Revert "ENH:instead of prime_volume by filament_prime_volume"
This reverts commit e7e6405ad3.
2025-10-05 19:16:05 +08:00
Noisyfox
6346d3001a Fix value type 2025-10-05 18:49:06 +08:00
Noisyfox
1dc8460621 Update profile 2025-10-05 18:47:58 +08:00
Noisyfox
63dd696908 Fix profile checker 2025-10-05 16:46:11 +08:00
Noisyfox
42d2965093 Fix option link 2025-10-05 16:28:17 +08:00
bytedream
9061b12aee Fix timelapse crash
(cherry picked from commit 1600f476bb8461fbc8b23c538880731977bd3211)
2025-10-05 16:06:55 +08:00
Noisyfox
df1c5722ef Revert "OpenCV don't build its own libjpeg, to avoid symbol conflict"
This reverts commit 7a90b26e57.
2025-10-05 16:06:40 +08:00
Noisyfox
804c569b07 Merge branch 'main' into dev/h2d-2 2025-10-05 16:03:58 +08:00
Noisyfox
a9c0490c68 Update color 2025-10-05 16:02:17 +08:00
Noisyfox
24fe8a9fa7 Fix switch button color 2025-10-05 14:26:19 +08:00
dependabot[bot]
ad0ed95b85 Bump tj-actions/changed-files from 46 to 47 (#10922)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 46 to 47.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/v46...v47)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-version: '47'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-05 14:02:07 +08:00
dependabot[bot]
9f99aa14a2 Bump actions/setup-python from 5 to 6 (#10921)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 6.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-05 14:01:58 +08:00
dependabot[bot]
5e3f84acc0 Bump actions/github-script from 7 to 8 (#10920)
Bumps [actions/github-script](https://github.com/actions/github-script) from 7 to 8.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v7...v8)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-05 14:01:53 +08:00
dependabot[bot]
735cd4f1d9 Bump actions/stale from 9 to 10 (#10919)
Bumps [actions/stale](https://github.com/actions/stale) from 9 to 10.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/v9...v10)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-version: '10'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-05 14:01:26 +08:00
zhimin.zeng
e5bd736def FIX: should not emit get result message for manual flowrate_cali
jira: STUDIO-14288
Change-Id: I20f6a28ec9f017ac562d7684d232e0d109f628ca
(cherry picked from commit f4213a6672d4be2386708e1f90068cbf039733d0)
(cherry picked from commit 2a9e23a4ae7ca4ced3dee33f6714ce477a48292a)
2025-10-05 00:10:09 +08:00
xin.zhang
eac358046c FIX: update the implementation of model series
JIRA: [STUDIO-13728]
Change-Id: Ib9091a0b2b253fa4bdad11e07f8910f6045594ad
(cherry picked from commit b250f817f80ea17e7c1cc37e6c98810e8cfc6cd8)
(cherry picked from commit 4d00f9e32541df9817ef131dc2eb7225675e102f)
2025-10-05 00:10:01 +08:00
songwei.li
e8d8fb5c7a FIX: the exported Gcode file is stuck when imported on Mac
suppressed_backround_processing_update when loading gcode to prevent deadlock.

jira: STUDIO-13899
Change-Id: Iad4f20cd5249bb5133146197bb1bc32101b08bdf
(cherry picked from commit 2579cdc7adb98c1f21c3169a9fcebba60597fb43)
(cherry picked from commit 13b14414e03e3907d9d1662cdab570c754200618)
2025-10-05 00:09:09 +08:00
bytedream
6c74e5f45a Fix timelapse crash
(cherry picked from commit 1600f476bb8461fbc8b23c538880731977bd3211)
2025-10-05 00:08:52 +08:00
milk
6df1cde6d0 FIX:Add resource of printer
jira:[STUDIO-14273]

Change-Id: I2a0e5c638077ff732c23115366fd5410d331a812
(cherry picked from commit 13184e0a5d4a762f5bd50a8500f47d7de5199ce5)
(cherry picked from commit 3d56d1410f4942c0f0b1e10190a062193b8f42b1)
2025-10-05 00:07:41 +08:00
zhimin.zeng
2d273b43b6 FIX: the display name of auto cali is incorrect
jira: none
Change-Id: I873a6a74babe63ad05bc7f74eaa698b08987d375
(cherry picked from commit 316829c8de708b8b555fd1ca176aae834253cd65)
2025-10-05 00:07:30 +08:00
zhimin.zeng
0a09c32e31 FIX: the use ams flag is incorrect for cali
github: 7998
Change-Id: I6511969ad50db0d3cf01ecbe8261e461092da1e3
(cherry picked from commit d25405ed8d85e4a80822dddab515795984d7b924)
(cherry picked from commit af7a8350e3726aa7d122eaaefc089bd440433e76)
2025-10-05 00:07:23 +08:00
zhimin.zeng
1653cb0bda FIX: crash when cali
jira: STUDIO-14212
Change-Id: I6123b51987451f0281dad383ec0ea85f8bc1243c
(cherry picked from commit 62fc7f54b8c444f74d44680ce4b72ed8b287ccd4)
2025-10-05 00:05:37 +08:00
zhimin.zeng
82b9b5dc80 FIX: crash when cali with ext slot for single extruder printer
jira: STUDIO-14212
Change-Id: I4e7a7a7617c6f6fba216f5cd72857a89069461d0
(cherry picked from commit 9633d47fcd7d0dade73725ad9d45f16d8f9c7f9c)
2025-10-05 00:05:29 +08:00
hemai
8bf60469b4 FIX: update ams select handler for single extruder
Jira: [STUDIO-14218]
Change-Id: I92ae9192162fbd614ddc8d0f640de5940f7cd24f
(cherry picked from commit c46e6f2b9f68c30268a5c8f557f793935919a6df)
2025-10-05 00:05:16 +08:00
weiting.ji
8dd88df97b FIX: Daily tips display issue in CJK
Jira: STUDIO-13921
Change-Id: I5c4fef910749a31acff4650413390051d2aabf84
(cherry picked from commit 9e5f2a89fe1ce7f7eeee892be8c48099a288646f)
2025-10-05 00:05:09 +08:00
chunmao.guo
3d7bf13932 FIX: _add_auxiliary_dir_to_archive crash on empty path
Change-Id: I940fab66ce9512225968510c1f1dc8868c6790ad
Jira: STUDIO-14005
(cherry picked from commit 5f6b4b58a5bda65369b95fa7dc5ed7ad793040e8)
2025-10-05 00:04:18 +08:00
xin.zhang
e511d8d862 ENH: update hms for 093
jira: [STUDIO-14210]
Change-Id: Icd9eb8ebd88168aeca14bdaf12000e1ad78f95a4
(cherry picked from commit 301131f8560a29b2510ea57cea7d5df67f2cee3a)
2025-10-05 00:04:06 +08:00
haolin.tian
90830ab2ea FIX: Sync AMS settings after device certificate installation
jira: STUDIO-14191
Change-Id: If4a02ed6f2c5ef111f0c7086b138e3dabc8ed1dd
(cherry picked from commit 172824c4b93f6b3eb197481efc38a262774ef313)
2025-10-05 00:03:56 +08:00
shsst
f36f73e518 ENH:[Process/Filament] H2S TPU slow_down_min_speed_20 Profile Edited by lianhu.xiong
Change-Id: I9f064d27cfc120dbcf4b693da40d113b054a5249
(cherry picked from commit 925504180af7e5001956f04525217c4c74c9fac0)
2025-10-05 00:02:37 +08:00
xin.zhang
b473b34ddd FIX: the display of n3s humidity
jira: [STUDIO-14195]
Change-Id: I6b49df928bdb1ce36450006805dd5d152ca7ad96
(cherry picked from commit 1e7cd2340c3c67a6a49e61dc7645428203d4df56)
2025-10-05 00:02:30 +08:00
lane.wei
e441a9f62e FIX: CLI: refine the download check logic for multi-extruder printer
use the shared printable area
jira: no-jira

Change-Id: I23e97a06b0ca9573c84fe4081496bae2e8e92382
(cherry picked from commit 3245ea6f6dd54bfaae30e76c903abfd632972544)
2025-10-05 00:02:23 +08:00
zhimin.zeng
0b9bd42766 FIX: crash when delete cali value
jira: STUDIO-14176
Change-Id: I3d59c8ab60842509c1166cff92ff329d1a673038
(cherry picked from commit 45d4e584228e50026117a83f61afee45dcee09b1)
2025-10-05 00:00:56 +08:00
weizhen.xie
895d33f690 Fix: Fix the length of "filament_adaptive_volumetric_speed" in Polymaker filament.
Jira: None

Change-Id: I1178feccbb13c4d5fb35879ebc82581986d101c2
(cherry picked from commit c56cea495edfad41b292dfd5e25f6717ae1f287d)
2025-10-05 00:00:38 +08:00
weizhen.xie
247a811900 Fix: Modify the string delimiter of parameter “volumetric_speed_coefficients”: change “;” to “ ”
Jira: none

Change-Id: Iabe29c14b5d4dadc97d3ea72c4be4104a0e48720
(cherry picked from commit 3a3ed5816b7a70669561d0a33ca6fb9761ab40d2)
2025-10-05 00:00:31 +08:00
shsst
093367a58e ENH:[Process/Filament] MOD:[H2D/H2DP][start] increase z avoid distance to avoid impact Profile Edited by xuanquan.liang
Change-Id: I8f8b5d9d27e204615c9380898da86d4d7ae4b132
(cherry picked from commit 0c6e34feec768e9a00aebf54d4b2d9f75773607f)
2025-10-04 23:59:20 +08:00
weizhen.xie
757d1f4cb1 ENH: Modify filament jsons to support parameter “filament_adaptive_volumetric_speed”
Jira: None
Change-Id: Iddd9fdf1ab39ad1e72da4040b7bb7dd0d1375652
(cherry picked from commit 900d0b5f6e6738eae12e2418dbb6ea1051e131c0)
2025-10-04 23:57:54 +08:00
Noisyfox
f45d13dfc9 Fix plate stl origin point 2025-10-03 23:44:01 +08:00
zhimin.zeng
c1e4876793 FIX: auto cali send failed
and cannot set cali step to 0.001
jira: STUDIO-14042 & STUDIO-14119

Change-Id: I56ecc70d0413398ecacd1c842f7102e810277cfd
(cherry picked from commit c16925931c642d8e27d739a401148bc94c5f3965)
2025-10-03 23:28:58 +08:00
weizhen.xie
7bc01c625d ENH: Add a button to control whether to enable volumetric-speed fitting
Jira: None
Change-Id: I8d9fd3468dbfb8904d164b289f9d5223e476145c
(cherry picked from commit 3acf97f1b3cf12d34a3679eef550cc26e03eb86c)
2025-10-03 23:28:58 +08:00
xin.zhang
d9d2814b24 Fix: load ext filament for A/P series
JIRA: [STUDIO-14047]
Change-Id: I28736dc7c55a842744b2d3f8731e92384c2ea929
(cherry picked from commit 602541e42b0a7ad6faa3ff604435bc36a1cc1f3f)
2025-10-03 23:13:42 +08:00
qian.wang
aebf303122 FIX:correct param length err
Change-Id: I65ec4e606a280671b84c9e9d6d83bccc0f7c182f
(cherry picked from commit 26063855ce1360fb66c977df3f0c614e43bfa7e7)
2025-10-03 23:13:07 +08:00
weizhen.xie
bd5c7b38b1 FIX: Fix incorrect usage of “an/a” in the text
Jira: STUDIO-13941
Change-Id: I5fbd29130773041423c7e8a6686d92c4508989eb
(cherry picked from commit bab99bf26e6fddfc65892409d7fdb3209821cecd)
2025-10-03 23:11:19 +08:00
qian.wang
bac1473116 FIX:correct param length err
Change-Id: Ifbbdaa465d75cf39f224d7030b4910a7db87eb84
(cherry picked from commit a57dbe82cb65570ebc12bc80c648a9c09c556844)
2025-10-03 23:11:14 +08:00
weizhen.xie
fa832b7539 FIX:Fix the crashes when users import 3MF files that use third-party printers.
Jira:STUDIO-13586

Change-Id: I977e9e426e2f2b98da389e7bfa8fb57388c55628
(cherry picked from commit 9d170ebd52a94579a81a9e8bc8eb19ae27ba3076)
2025-10-03 23:11:03 +08:00
Tartare
95c63e2534 FIX: Persist custom colors in default filament color picker
Saved colors now reappear when reopening the picker.

jira: STUDIO-14100

Change-Id: I0348a177fcacb83779cf8c9c21151df5ccfd3e8d
(cherry picked from commit 7c21048b510ea993520e74d7068d17f0a879315f)
2025-10-03 23:09:48 +08:00
weiting.ji
17d463c841 FIX: support raft filament choice not correct after changing filament color
Jira: STUDIO-14092
Change-Id: Ida78c86dc7bb607d4cfdb4a6c4a6644ff9c7eb69
(cherry picked from commit 7c0c20ab20f1b1c0816a98227ffaf1bc1d9ff1ce)
2025-10-03 23:08:56 +08:00
zhimin.zeng
811060aabb FIX: the wipe tower should not show for printer which is not support clumping
jira: none
Change-Id: Ife535adb406224252fe8b0b3e7807a3e84752cc2
(cherry picked from commit 2f2bc935bfeb325de548e4cf867eb2d3a5d67879)
2025-10-03 23:08:56 +08:00
zhimin.zeng
f33fe05101 FIX: pa pattern gcode display after loading new project file
jira: STUDIO-13942
Change-Id: Ice3d1d36846f972775cda0bca8d83a8dc0797b48
(cherry picked from commit e06c582f285dee49f717531cc12077be08848470)
2025-10-03 23:08:56 +08:00
shsst
f46c456a49 ENH:[Process/Filament] [H2S] Supports independent setting of flushing temperature and speed; Add a retraction after the extrusion compensation is complete; Supports foreign object detection on areas other than the textured plate. Profile Edited by haowen.wu
Change-Id: I475334e300ae0776936b74d673245c3dff74ca01
(cherry picked from commit 8ca2907df46c36337ff1f0ce48b64076671550a6)
2025-10-03 23:08:56 +08:00
lane.wei
eac836b74f FIX: CLI: fix a crash issue when slicing
report from cloud team
jira: no-jira

Change-Id: I880d0fbf0ee6fac00eded9e8b3f52c0cfb6de870
(cherry picked from commit 1128c0087e980f70865dff6185f1f7ad540cf6db)
2025-10-03 23:08:56 +08:00
weizhen.xie
1ce594f4df FIX:Fix the length of parameter “volumetric_speed_coefficients”
Jira:None

Change-Id: I227f17e404ad96d8c4246a93e0fd1b0a5e61f664
(cherry picked from commit 3e4fa9748293a8e6cb1ad0fe957290e649aea13b)
2025-10-03 23:08:56 +08:00
qian.wang
625d02661b ENH:[Process/Filament] fix repeat setting_id and miss pla tough+ of h2s Profile Edited by qian.wang
Change-Id: I43be2a716b282a1f60042c5b07ffeed85fda36d1
jira:None
(cherry picked from commit b3e158e7d297899e5c6d8e60d809dda6e2199675)
2025-10-03 23:08:55 +08:00
zhou.xu
c4b9349d9d FIX:Fix array out of bounds switch between coloring and text tools
jira: STUDIO-13303
Change-Id: Ic80224dc371247c4571a2f5471b68c011344621b
(cherry picked from commit 0ac418508c86709cd91b18268a1b33d209008f3d)
(cherry picked from commit b7f9cd292cb352891045f4b26924669ba0252231)
2025-10-03 23:08:55 +08:00
qian.wang
574f597382 ENH:batch modify upward_compatible_machine of x/p/a
Change-Id: I58d15781591fc0a382f55bf53e67e74dd7a08988
(cherry picked from commit 686393c2cd4471cb33d8b7d3e13b285305f1a862)
2025-10-03 23:08:55 +08:00
shsst
c348556235 ENH:[Process/Filament] add cli config for h2s Profile Edited by lane.wei
Change-Id: I17a5ca7ac0b6972b6f6393770a139972fca94da3
(cherry picked from commit 5384e301ff61faaf4a4ae3584fce860f994ed0e8)
2025-10-03 23:08:55 +08:00
milk
72a64d7966 FIX:add interface line draft
jira:[STUDIO-13716][STUDIO-13717]

Change-Id: Ib8a4d919ebfab85e07b80e60c80e9271013d05b9
(cherry picked from commit cf3c37abc2629165bfcdb1eee5b00567acde3c83)
2025-10-03 23:08:55 +08:00
Noisyfox
2eb607bf2c Update BBL.json 2025-10-03 23:08:55 +08:00
zhimin.zeng
62d94b1a73 ENH: support new auto cali method
jira: STUDIO-10798
Change-Id: Icb47d8502739f0d4217486e2d1805cd609cee67b
(cherry picked from commit 6c2841e57f083cbc6d75eea2af55a8f78d2fa8df)
2025-10-03 23:08:55 +08:00
zhimin.zeng
1943f128bb FIX: O1S skip auto cali
jira: none
Change-Id: I50551800eaccd94874bb66cc580658d9a2768bad
(cherry picked from commit 2b3284c4e51a177402c8a6450d7bb3ece9d2d1d9)
2025-10-03 23:08:55 +08:00
shsst
cd7f30d73e ENH:[Process/Filament] H2S silk additional_cooling_fan_speed Profile Edited by lianhu.xiong
Change-Id: Iedbf164c638714d36c5c91c7b7a4862acbd00978
(cherry picked from commit bf636785191ee342175de52103c846ed4fd6d8b1)
2025-10-03 23:08:55 +08:00
shsst
e520c68675 ENH:[Process/Filament] batch modify fan_max_speed/slow_down_layer_time of ABS Profile Edited by shsst
Change-Id: I2ea8e5f8d493eba27fec4ce2d8e86790da69cb04
(cherry picked from commit 17c0b1519f7ceb1dd3904401c350f424ad4ff072)
2025-10-03 23:08:55 +08:00
weizhen.xie
38a18dc086 ENH: Polynomial fitting via Gaussian regression for determining the filament_max_volumetric_speed
Jira: none
Change-Id: Iab1ef65f0546884c60d2a9e39213a07d76a1f483
(cherry picked from commit 186948cc91b12d547b7168104ba629d40c333d1b)
2025-10-03 23:08:54 +08:00
shsst
4333872b3d ENH:[Process/Filament] Modify H2S volumetric flow Profile Edited by lianhu.xiong
Change-Id: Iecb4ae8ca0769234ffd4d870ea63a324f67ac377
(cherry picked from commit 64642337e1d3738ae473d96e83a855013606b439)
2025-10-03 23:08:54 +08:00
shsst
ae8c59edc9 ENH:[Process/Filament] [O1S][start]Add a coordinate switch to prevent coordinates from being previously altered by other functions. Profile Edited by haowen.wu
Change-Id: I286ad96d34b993e0931df09cace0ad5eb58f2413
(cherry picked from commit 8f2ae3099518bd812e1e9101c20dc662cc871e90)
2025-10-03 23:08:54 +08:00
shsst
b8f3ff070d ENH:[Process/Filament] modify filament_flush_volumetric_speed/filament_flush_temp of o1s Profile Edited by shsst
Change-Id: I25f0bdaf48e503a3321532fcf84f5389217c3da8
(cherry picked from commit bf9da4391198eb429a1913203766620a08a42aa5)
2025-10-03 23:08:54 +08:00
shsst
ed7ef5cb9d ENH:[Process/Filament] [O1S][start]TPU Extrusion Force Anomaly Detection Profile Edited by haowen.wu
Change-Id: Idfac4a7c0d265044033c45564a017782a88b5823
(cherry picked from commit 304a94f77cedcb140f0bc5f228d6b52fb1645dc5)
2025-10-03 23:08:54 +08:00
weizhen.xie
f6034a80af FIX: Add the parameter filament_retract_restart_extra to the filament JSON files for the H2S machine
Jira: STUDIO-13132
Change-Id: Id754862b2c2cee4712c51a1080ef99295e588306
(cherry picked from commit b2a6871ee92707d44db123ed84c99d2544d8fd7b)
2025-10-03 23:08:54 +08:00
xin.zhang
9bf94b3d30 FIX: The image size
JIRA: [STUDIO-13426]
Change-Id: I2049e1f43f1042ddda7b47032f199e8676dde32b
(cherry picked from commit cb37126d4d4481bdb6786a7fbb3d6bdb3d71cc91)
2025-10-03 23:08:53 +08:00
milk
2aeace7bee ENH:Add Timelapse Of O1S
jira: [STUDIO-12645]
Change-Id: I87526f9ffddf7e35d07e04e8f3f90df905b26705
(cherry picked from commit 42c573cc8aaf8de02cd8ac5cd22d00001060949e)
2025-10-03 23:08:53 +08:00
xin.zhang
48b4d51a50 FIX: remove the nozzle offset cali
jira: [STUDIO-13413]
Change-Id: I802a4b87f4a892d3d333c73f39f95fb035aa2edd
(cherry picked from commit deb30b611272464b2753f6d32bf9a5d11c5f74a9)
2025-10-03 23:08:53 +08:00
xun.zhang
874a13180e ENH: update nozzle volume for H2S
1.Update nozzle volume and printer extruder id
2.Also remove uncessary cover image for H2S

jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I73c349ce7126e02b55c9aecef22ab3741b0c399f
(cherry picked from commit e579f65fdc5a241684676d69a0131b9900a9012f)
2025-10-03 23:08:53 +08:00
xun.zhang
f7643eb3be ENH: update prompt for filament mix printing
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I92c86edadd6720b0e566057bd2593605ee4a3f77
(cherry picked from commit a93f6a54a2be94807702e3c75bdb4c79d508f260)
2025-10-03 23:08:53 +08:00
xun.zhang
a543a55e01 ENH: some post commit after merge h2s commit
jira: none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: If0a36a4698c843a8a690f0fa0fcbbe5f6fafca79
(cherry picked from commit 9fcd26efff2d4b3f3e77faa11ab842664d25b75f)
2025-10-03 23:08:53 +08:00
shsst
2b7f14da27 ENH:[Process/Filament] H2S Lite 90A parameters Profile Edited by lianhu.xiong
Change-Id: I9fef25c768b51c950878ca9497b346b54de5fd9a
jira: None
(cherry picked from commit 7c89c640c69997304c7ce5b6d220b44fb0f63716)
2025-10-03 23:08:52 +08:00
shsst
2c4d422d30 ENH:[Process/Filament] H2S Parameters Profile Edited by lianhu.xiong
Change-Id: If0437b3ec5a65a95911b587cec7b352ee0f85ef7
(cherry picked from commit 67164886f9ddff90ab4d1f295e21dbc988de323a)
2025-10-03 23:08:50 +08:00
shsst
791e124440 ENH:[Process/Filament] H2S PLA Silk Profile Edited by lianhu.xiong
Change-Id: I604cb7f8ac8ce736d69689e546fc027e5111dae0
jira: None
(cherry picked from commit 2b1f48d4e0505803ad3da6eb151b3fc2c3788b14)
2025-10-03 23:08:47 +08:00
shsst
d8dc560f7a ENH:[Process/Filament][O1DSE][start] modify gcode of H2S Profile Edited by haowen.wu
Change-Id: I3e46386d450127f9aef86eea052ad2e88bacc336
jira: None
(cherry picked from commit adce900ab331c68e944575c7a71a9c3298713c52)
2025-10-03 23:08:47 +08:00
shsst
d1c8894fd6 ENH:[Process/Filament] Modify H2S filament parameters Profile Edited by lianhu.xiong
Change-Id: Ie2deadf065955192118b37830534e513d723d139
jira: None
(cherry picked from commit 06680e70e79b06454a729fbb484ec8587a849b45)
2025-10-03 23:08:47 +08:00
xin.zhang
1c0eecfc1f ENH: update O1S files
JRIA: [STUDIO-13238]
Change-Id: Ife7e887f4c0dd35df28dc07de54129b3b11fc594
(cherry picked from commit 71014ff0fed255b99d25eb234699e0fdf74ee527)
2025-10-03 23:08:47 +08:00
xun.zhang
26a9cec304 FIX: display the minimum flush data
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)
2025-10-03 23:08:47 +08:00
xin.zhang
e64fcbe210 ENH: add wiki for replacing nozzle for o1s
jira: [STUDIO-12864]
Change-Id: I1aec11cea9d82c37a9284f4d3abb849f228a16bf
(cherry picked from commit 27c2d03424314fa10950f89e737827f3c6bb1637)
2025-10-03 23:08:47 +08:00
qing.zhang
1f1a408728 ENH: add H2S cover
Jira: 12825

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: Ia3bae08bf047c968538eff4fa0082f3d6f255624
(cherry picked from commit 277a212705013789da073c9d930cfbb62427e778)
2025-10-03 23:08:47 +08:00
zhimin.zeng
6fadf2da5c FIX: add nozzle volume type for single printer
jira: STUDIO-12765
Change-Id: If1134e759c16a162537241e9e9b7db084263fb97
(cherry picked from commit 3a7d55e713117ee8249b2f67e2f399fa0b8a3b70)
2025-10-03 23:08:47 +08:00
zhimin.zeng
337d987ec8 ENH: support new auto cali method
jira: STUDIO-10798
Change-Id: I9490b050e93cd556e1d34b1e69e0508eaecec2cd
(cherry picked from commit 7a8b34525ef77d49b6549ecb290e2b1f89c69419)
2025-10-03 23:08:47 +08:00
qian.wang
49befe4306 ENH:[filament] add H2 z_hop_types params
Change-Id: I721471737eca1e2d59ffae05a2a7df399bec9e9d
(cherry picked from commit b1001961e9b5a985e1a6ebcc1e5e2ca828ea991a)
2025-10-03 22:33:34 +08:00
xin.zhang
a781862fb1 ENH: add images for O1S
jira: [none]
Change-Id: I368b72fc745fe9b7858782a9d87a6a896a72acce
(cherry picked from commit e2dbd4fccef53588242b0fff704e28552cfaac83)
2025-10-03 22:33:29 +08:00
xin.zhang
fdae073072 ENH: update O1S files
jira: [STUDIO-11919]
Change-Id: Iab2e6b8a7162a718c69ccf5e043b3a87ee7d606d
(cherry picked from commit 4fcb5f4a4cfc5268165e2194c22454ffff2e14eb)
2025-10-03 22:33:25 +08:00
xun.zhang
e0c42f0772 FIX: unable to select high flow in O1S
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I09151d10767bade8cd2ffaa5b44541596e7ccf22
(cherry picked from commit 5f69053f60a09b033b3fc580c52f93e29216e38b)
2025-10-03 22:33:21 +08:00
qian.wang
8b3c8fddb1 ENH:[filament/process/machine] Rename H2 to H2S
Change-Id: I180fe8b9c13cae3027f0dc7bfcfd38d6a66166c3
(cherry picked from commit 66c0856928557f7deda784b9f2b9c4a94440925b)
2025-10-03 22:33:12 +08:00
xin.zhang
1a8138a996 ENH: add HMS for 093
jira: [none]
Change-Id: I9d0ca7fbbe5f598b8d7e3f8579f4ff4d0c4714ad
(cherry picked from commit 2fe8ee14e29f0e7342e36a1cd356b33c992ddc60)
2025-10-03 22:32:49 +08:00
xun.zhang
5499007bc3 FIX: solve the conflict
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: If3862fbf7a543283ff77d4511d7c321a6e24d38b
(cherry picked from commit 162b5ac65f74cc8ec8c5bfa285d630d165aee437)
2025-10-03 22:32:45 +08:00
shsst
c30459f1c6 ENH:[Process/Filament] update timelapse and layer change gcode for h2 Profile Edited by xun.zhang
Change-Id: Iee59e70854b80f592384cfa3593feb304aad3257
(cherry picked from commit a181fd229c03de59a055001aa11ed64844f2396a)
2025-10-03 22:32:41 +08:00
qian.wang
e5221592a8 ENH:[filament/process] batch modify h2 process params
Change-Id: I4f7d306ef33ac7f72abbba47b07b82d54d4b49da
jira: None
(cherry picked from commit bbbbde3e741d6e0a821d0529848022e8ae8d4efd)
2025-10-03 22:32:37 +08:00
xin.zhang
ed13861cfd NEW: add images for O1S
JIRA: [STUDIO-11919]
Change-Id: I43f39dbd87514fea5ad8f43dbadb142cec1cfd46
(cherry picked from commit 9bc62966fbb2a931cafe16290b17f087cf1450d6)
2025-10-03 22:32:32 +08:00
xin.zhang
5d77251a22 NEW: add support for O1S
jira: [none]
Change-Id: I4f13b1c3980316240c5dde349c25afd20bf3c2b2
(cherry picked from commit d791999b9bb259dda728126272ef0bae37645822)
2025-10-03 22:32:29 +08:00
zhou.xu
d0448eb0da FIX:modify right icons offset bed for O1S
jira: STUDIO-12673
Change-Id: I5136c0ee1ce1fa30038d7c9951e2eb72fecc7b5b
(cherry picked from commit d24429e64668f703b66c297549dfa962c0f1c2cb)
2025-10-03 22:32:22 +08:00
xin.zhang
fea37d39b2 NEW: add some filament check for printers
JIRA: [STUDIO-12604]
Change-Id: Id4c806594eea270decd2e4e3e4941f2bca932712
(cherry picked from commit 8d8391e7465b3d6843613e30bf7f68099ceecfd2)
2025-10-03 22:32:16 +08:00
qian.wang
044362649f ENH:[filament] batch modify h2 filament gcode
Change-Id: Ie19b61bc344eb2d194b667d71ab25e1464614835
(cherry picked from commit 2f5f03371d8ffae6ebbc89ce70af92a0c735b6f0)
2025-10-03 22:32:09 +08:00
shsst
ca74440d9d ENH:[Process/Filament] update timelapse gcode for H2 Profile Edited by xun.zhang
1.Update timelapse

Change-Id: I824029b1c912a6e1e6252c9d5d9222b1acbd09bd
(cherry picked from commit 68e41e3a00958608b06d5eb83cbfb07ffb427f38)
2025-10-03 22:32:04 +08:00
qian.wang
57168f8caa ENH:[filament] add H2 High Flow Param
Change-Id: I1916697e36f68d0a0904defae136911aaa69cc7e
(cherry picked from commit 393c228e41a48686a565ef6944a589862f6c1677)
2025-10-03 22:31:58 +08:00
shsst
5d1632ca8c ENH:[Process/Filament] Modify all filament parameters of H2, including volume flow rate, cooling fan, and retraction Profile Edited by lianhu.xiong
Change-Id: I6c92d9d72f80d5a4a83b54a15d2a1c41c18a85c7
jira: None
(cherry picked from commit ccb8b8361ba8012eb72adb2d91dac73f2f6964d4)
2025-10-03 22:31:33 +08:00
小炒肉
6108cb12a1 Revert "ENH:[filament/process/machine] add H2 High Flow Params"
This reverts commit 4c091e4ab9ee55990eab8c72ef4e9acbbea65641.

Reason for revert: <miss one patch>

Change-Id: Ieb56c2dba1ead206489cecc3b25f136a00fea8b2
(cherry picked from commit 7632fe1dfa452c3a0e2c1d49aef0308100479c3a)
2025-10-03 22:31:28 +08:00
小炒肉
9df8327890 Revert "ENH:[Process/Filament] update timelapse gcode for H2 Profile Edited by xun.zhang"
This reverts commit 07759cf9fdba538a488399abe47a1d417ed27b13.

Reason for revert: <miss one patch>

Change-Id: Ie0ac79b9db0259881ddc20a23feff3e6a4b0c9f6
(cherry picked from commit a09b2cacfbacff5ee26ed757a9f76c9dfb7cca09)
2025-10-03 22:30:44 +08:00
shsst
980a30cedf ENH:[Process/Filament] update timelapse gcode for H2 Profile Edited by xun.zhang
Change-Id: I21e05afce3a1ce375df81ee4fd736037c434804a
(cherry picked from commit 74297b4a49de7995147e5d26c47cc131fa837668)
2025-10-03 22:30:37 +08:00
xun.zhang
d609d8c23f ENH: add some pictures for O1S
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Icd22ecd58b4904aed0bc2c373ec8825f2c390e5f
(cherry picked from commit f54624daf3e854788e1b5a43100da3af09e1c01b)
2025-10-03 22:30:19 +08:00
qian.wang
49c12a4f62 ENH:[filament/process/machine] add H2 High Flow Params
Change-Id: I7f01d51e825ff206c895e04ac84acd40019ef77e
(cherry picked from commit 74e1930b88831afbbe3154cbeed2bb74c6e4fbcf)
2025-10-03 22:30:10 +08:00
zhimin.zeng
eb88d81362 FIX: modify cali thumbnail for O1S
jira: none
Change-Id: I7e255ce35e52fcf4a5e5d840edac24c339373454
(cherry picked from commit 46f09b97eaaa56da135ed4128d49e9d6927ec9cf)
(cherry picked from commit 89f5b517989a56fc77451b349e0a0b254c2117ee)
2025-10-03 22:29:30 +08:00
xun.zhang
c891884ca2 ENH: update clerance params for H2
jira: none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Icfb9f04c63f3542d099d0e786502f987d51e50c0
(cherry picked from commit c57508db553c854baa4618b16e2cfc5512caaa84)
2025-10-03 22:29:17 +08:00
xun.zhang
bf221a5ed9 ENH: update gcode for H2
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I258b76beca7f6945dccb59892f9795c1ba7d1aa6
(cherry picked from commit 6ed64fb6421fca2be5c3ff2cb90a64deaccdd3d9)
2025-10-03 22:29:12 +08:00
xun.zhang
b90dbb8bcf FIX: wrong inherit logic in H2
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I5fc2eae431b6755c3310d90ce6480469ddb8651b
(cherry picked from commit 6e5b5af42eaa93a1aa12a4e52dd5e6bc388c125b)
2025-10-03 22:29:07 +08:00
xun.zhang
e6cafd9e1e ENH: update gcode for H2
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ifbcaf1c00b92d09e6966eed492653e657bf0da5c
(cherry picked from commit e7ec2be1f2542fccac07cb99aeaa48cf4e4b9d23)
2025-10-03 22:29:02 +08:00
xun.zhang
a8c1713136 NEW: add some profiles for H2
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ia7e925356f020a2458026e6649a5522076f5eb00
(cherry picked from commit 42620d2843bc10fc94859e5a68995fbdb8cd35e1)
2025-10-03 22:28:41 +08:00
zhou.xu
ef5458d231 FIX:Add array out of bounds protection
jira: none
Change-Id: I038e45be00664ab35dfbc2d59ddfa6c018cd2873
(cherry picked from commit d4967c8c269d0f9b918e9049addcd7d6f6fd2656)
2025-10-03 22:27:04 +08:00
zhou.xu
1c793a5ad1 FIX:Added a centering function to the text menu, but lost it during the upgrade process
jira: github 7828
Change-Id: Idb3739313f506fbe475cf6c4ca96c7eade9292a6
(cherry picked from commit 8267f5fdca53fb172b64ebb24407a26b94fdecff)
2025-10-03 22:26:48 +08:00
songwei.li
1a34765856 ENH: Improved safe position calculation for delayed photography
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)
2025-10-03 22:19:23 +08:00
xin.zhang
db05e4ac64 ENH: update airducts
jira: [STUDIO-13296]
Change-Id: I5cdb34cc254933be9a91313462a6b03b0dca117b
(cherry picked from commit fbf88ce6f226496723344e60f57632eadfaf5ee9)
2025-10-03 22:18:33 +08:00
hemai
296e001856 FIX: update items_count, delete missing item
Jira: [STUDIO-13872]
Change-Id: Ie370566edab4808a26c648bdc6ee8d37cb9b6983
(cherry picked from commit 4e2b1a0aad4bfffb259c2847be98178e2f09f06b)
2025-10-03 22:18:28 +08:00
hemai
bb43e312b3 ENH: support E3D nozzle flow type
Jira: [STUDIO-13934]
Change-Id: I3818c3881e8a926209f2bac321550f3c7a1a9f0d
(cherry picked from commit 5bb1c2e66ad5bddfcba6898d9bc330217e912e48)
2025-10-03 22:18:20 +08:00
hemai
9347bef7dd FIX: solve merge conflic about statusPanel.cpp
Jira: [STUDIO-12798]
Change-Id: I5e79dabc5207e5dbdc6767fe823d06c3ff48b542
(cherry picked from commit f320e1f9b9e58d89dcf1fe163ab0c618075a9352)
2025-10-03 22:16:35 +08:00
hemai
be643e0ec3 ENH: apply DeviceErrorDialog to project
Jira: [STUDIO-12798]
Change-Id: I7b3518736bbb106e76fcbc16d0aaa5e08f65c202
(cherry picked from commit f8dbe74fc17ccc81b3fadf638caa108b6f96fdba)
2025-10-03 22:16:27 +08:00
Kunlong Ma
504ae4a393 FIX: fix wrong layout in error code dialog in mac
JIRA: STUDIO-8677

Change-Id: I16e267495c753d8015e7dda47147b630e9e92c8a
(cherry picked from commit ebf05c718e64657665445e6eeff03f3f9c8cfae6)
2025-10-03 22:15:38 +08:00
hemai
a8f70a72c9 FIX: extend max ams num of per nozzle align with printer
Jira: [STUDIO-13786]
Change-Id: I178766bce3926bf3c33f256b88c769826d48fc43
(cherry picked from commit 2a07c8fea76ee6130cce07c1a72c73f085d5390a)
2025-10-03 22:13:05 +08:00
xin.zhang
a12330f4e7 ENH: add some log for traverse
jira: [STUDIO-13728]
Change-Id: Ie4419ecd809bd4392035ad063849f271e687b0f0
(cherry picked from commit 7aa1916fe8491ca1653acc55ee3ac527415b6113)
2025-10-03 22:02:51 +08:00
lane.wei
41bfd5b8c2 FIX: CLI: fix the size related issue in set_with_restore_2
jira: no-jira
Change-Id: I5b9b5dd3ae2eac63e9f494fd7b7ab5d4d38dbac7
(cherry picked from commit 030ebd1a3515a7d3dbdf3c6cfb77ff0b6b764f2e)
2025-10-03 22:01:41 +08:00
lane.wei
8e9281d68e ENH: CLI: add support for single extruder with multiple nozzle volume type
jira: no-jira
Change-Id: Ibb16fd87e5df074bca0068446782109100310ee1
(cherry picked from commit 304070083cbfc7098bbd95a3ae31c845cd53134d)
2025-10-03 22:01:31 +08:00
xun.zhang
a218000b9a ENH: add new config transfer logic for model,region,layer config
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I995ebb45b992bba3879b71afd3fe21510335f24c
(cherry picked from commit d45dacff9a97132c8999b1072c54c10bd0a2d12d)
(cherry picked from commit 0b4e224aefbcdbc4b4ed88c3343948f68361a72b)
2025-10-03 21:52:41 +08:00
qian.wang
0e80ad4c9b ENH:[Process/Filament] Sync missing material file setting_id with master Profile Edited by qian.wang
Change-Id: Iedb4fc325ff1f42677bba474d6d8994a780a7bf8
(cherry picked from commit f9e897228882e4b913ec6ef4f901d873f1b338e1)
2025-10-03 21:45:35 +08:00
xin.zhang
eb1eb7e81a ENH: add new part: extinguish
JIRA: [STUDIO-11578]
Change-Id: I39dc15fe022f38d8c775c2675120bbbce05f95f3
(cherry picked from commit 25dc4e37e3681a840df9af7d98bbb134082492ab)
2025-10-03 21:45:14 +08:00
songwei.li
561f4ebfbd FIX: enable_prime_tower and enable_wrapping_detection warning does not work
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)
2025-10-03 21:44:59 +08:00
songwei.li
f0cf58eede FIX: scratches on the surface in byobject mode
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)
2025-10-03 21:44:48 +08:00
shsst
9c12a191f7 ENH:[Process/Filament] Modify the volumetric flow rate of H2D/H2DP PLA Tough+ Profile Edited by wenwei.huang
Change-Id: Ia440472729f4f69a3af0bfbe0f665499b2cf36fe
(cherry picked from commit 5105a3c555cebcc3cc4abcbb57e6be0e6d6719fb)
2025-10-03 21:44:19 +08:00
qian.wang
c9e27f516c FIX:fix compatible_printers err
Change-Id: I185a3576cdd79864bd8b46711c45acb6186f978d
(cherry picked from commit e2bf010ae26dca8cf68b60796f5420df33e6b171)
2025-10-03 21:44:02 +08:00
qian.wang
a66a1b60a8 ENH:[Process/Filament] Add missing materials for model O1E Profile Edited by shsst
Change-Id: I92a543d7c5624dd93a5495c3741cb06e56c2e158
(cherry picked from commit 22e22d112a3ee4ca26637dd81f8c60abb8c98ec2)
2025-10-03 21:41:58 +08:00
zhou.xu
20a9682c18 FIX:Previously, null pointers were protected and local variables were not noticed
jira: STUDIO-14002
Change-Id: I78157b91b86544215847c3e76d4f3b9de623c527
(cherry picked from commit 4522edc84de2bc009f59b44ed0ce1d4c954aaaf9)
2025-10-03 21:30:48 +08:00
Pepe-Polymaker
6f52bae686 Add Fiberon presets for H2D
(cherry picked from commit d4add73d7ea7290b44f29d909bcbb52a8579089a)
2025-10-03 21:30:21 +08:00
Noisyfox
19bf2a6985 Show printer cover for non BBL printers 2025-10-03 17:44:36 +08:00
Noisyfox
bbd25a733e Always show print bed & diameter selector 2025-10-03 16:58:42 +08:00
Noisyfox
53790c7bf3 Default to new network plugin 2025-10-03 16:04:39 +08:00
Noisyfox
b0223d2756 Fix H2D bed type reset issue 2025-10-03 15:09:47 +08:00
Noisyfox
917717f2aa Fix certain extruder parameters not working properly 2025-10-03 14:34:55 +08:00
Noisyfox
665f7852f2 Hide extruder switch 2025-10-03 12:53:36 +08:00
chunmao.guo
05b7e28284 FIX: extruder sync visible & nozzle_volume_type
Change-Id: Id25c325fee6facbd15dbc99688ef3e9fb34efaf0
Jira: none
(cherry picked from commit a80e60bd2b02846a3f590add44ba7b91131adbfa)
2025-10-03 12:08:47 +08:00
chunmao.guo
7771548e8c ENH: extruder switch for 'Motion ability'
Change-Id: Ib327b3f4362cafa8f2425785b7184acf27df89a2
Jira: none
(cherry picked from commit f722334f3b39be547190ca90a2283fd49fb9317f)
2025-10-03 12:02:28 +08:00
Erik GS
737948be1f [Profiles] Fix bed_exclude_area excluding the whole bed on Anycubic Kobra 3 (#10914) 2025-10-03 01:32:12 +08:00
Heiko Liebscher
106d8fe824 update de for 2.3.1 after update locale (#10912)
update de
2025-10-03 01:28:06 +08:00
Noisyfox
01e483a42d Fix print from SD card 2025-10-02 23:45:45 +08:00
Noisyfox
fcba4aa693 Fix sync dialog button style 2025-10-02 23:11:27 +08:00
Noisyfox
addc718acf Fix crash when switching profiles 2025-10-02 23:00:19 +08:00
Noisyfox
a932821168 Rename wipe tower ribs related options 2025-10-02 22:56:54 +08:00
noisyfox
4943c31bd0 Fix friend class 2025-10-02 19:17:44 +08:00
Bastien Nocera
da57bed077 FIX: Fix missing std::string declaration
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)
2025-10-02 18:35:56 +08:00
Bastien Nocera
174346e113 FIX: Fix missing wxTimer declaration
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)
2025-10-02 18:35:53 +08:00
Bastien Nocera
a77b19bb46 FIX: Fix missing std::mutex declaration
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)
2025-10-02 18:35:49 +08:00
Bastien Nocera
a8f2e17edd FIX: Fix missing wxString declaration
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)
2025-10-02 18:35:45 +08:00
Bastien Nocera
4394527a5c FIX: Fix missing std:: declarations
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)
2025-10-02 18:35:41 +08:00
Bastien Nocera
2e47d7315e FIX: Fix missing std::optional declaration
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)
2025-10-02 18:35:37 +08:00
Bastien Nocera
f39b26be75 FIX: Fix missing BOOST_LOG_TRIVIAL declaration
src/slic3r/GUI/DeviceCore/DevUtil.h:49:36: error: ‘BOOST_LOG_TRIVIAL’ was not declared in this scope
   49 |             BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": " << e.what();
      |                                    ^

(cherry picked from commit 6c830d11e9066bc1afeb1f321f47e8e95931cb4a)
2025-10-02 18:35:33 +08:00
Bastien Nocera
0d6f5921ce FIX: Fix missing BOOST_LOG_TRIVIAL declaration
src/slic3r/GUI/Widgets/../DeviceCore/DevConfigUtil.h:100:91: error: ‘BOOST_LOG_TRIVIAL’ was not declared in this scope
  100 |         catch (...) { assert(0 && "get_value_from_config failed"); BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " failed"; }// there are file errors
      |                                                                                           ^

(cherry picked from commit 11d17a60104a28d7d51024d861227fb98b4709e4)
2025-10-02 18:35:29 +08:00
山苍
d04f0ab133 Revert "FIX: Add the prefix 'a' or 'an' based on the pronunciation of the first letter of the machine name."
This reverts commit 0d177738d488e4c736e7f18113feeaed3ef7cc1b.

Reason for revert: wrong translation

Change-Id: I7953b1878a758e43a534323adfebcacee1dc164a
(cherry picked from commit 131aaf92e67d0c1dc2b851889ea841c3b260be26)
2025-10-02 18:35:05 +08:00
weiting.ji
250f4f4274 FIX: Set non-empty default value to some vector options
Jira: STUDIO-13310
Change-Id: I316f4508d11288e287a6f8738a3c8fe9f45fada9
(cherry picked from commit 9f1887791543f0de139221887ce45c65e8a111fc)
2025-10-02 18:34:27 +08:00
xun.zhang
1bef9fc184 ENH: update retractions params for pva
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I66c05a7ee1b3969151afb34738763af50836304b
(cherry picked from commit a7c97235c29a45275f74ff23a71b9ef2c00b6ed8)
2025-10-02 18:31:58 +08:00
songwei.li
4e1ec6d354 FIX: Increased the tolerance of printable area detection to 2mm
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)
2025-10-02 18:26:40 +08:00
haolin.tian
20754415a6 FIX: hide mqtt source in public version
jira: [STUDIO-13803]
Change-Id: I1cf256e1b1b4ffd7f6cd5c2b33042502d4f58e0b
(cherry picked from commit 75d32fe7a71ac4289ee9f21a52c3f26fd27f89b4)
2025-10-02 18:26:31 +08:00
hemai
4c980bfa10 FIX: set nozzle target temp in update temp
Jira: [STUDIO-13891]
Change-Id: I7d6705157b290d3b7d49bac47f985d31be8beae5
(cherry picked from commit 0be1e49a42e48c02258fa952b3be5c67ba2265e0)
2025-10-02 18:12:16 +08:00
milk
2ac6ffa631 FIX:Synchronization information table
jira:[none]

Change-Id: Ia5f13645db7bc6ce92c7eb928ec36e2cad54e51e
(cherry picked from commit 79c929493ffbe3702615299c2cddf7b3645c8d88)
2025-10-02 18:12:02 +08:00
milk
604b7d9f70 FIX:chang deteciton to detection
jira:[none]

Change-Id: I1bfe30add7fce97bd6f448124e212b96a4ea6129
(cherry picked from commit 7623c5a0222188b510b1a76eb2e6b52934e9a0eb)
2025-10-02 18:11:36 +08:00
xin.zhang
c12623f576 FIX: the default value
JIRA: [STUDIO-13902]
Change-Id: Ib0dba13b42182e7c3963d5a190f5857c0e943d8b
(cherry picked from commit 849c6e71b5b678799283f175b509c7f8cde85eda)
2025-10-02 18:11:28 +08:00
xin.zhang
ae3b35d195 FIX: update the nozzle info
JIRA: [STUDIO-13764]
Change-Id: I2c93de86ee3cbe42236dcc1b7dd4ecc8bcd8744f
(cherry picked from commit 0d04ab3856fe19985ba06d0054f57e1fe9efded3)
2025-10-02 18:11:21 +08:00
weizhen.xie
b42afde4d0 FIX:Unify the wipe tower size calculation logic between frontend and backend.
Jira:STUDIO-13711

Change-Id: I498b83d2f9892068a29290b154b7f64f0dca9396
(cherry picked from commit 477ab2f2a48ea6cf49305ebcae88f30e1bf97008)
2025-10-02 18:08:27 +08:00
weizhen.xie
1d52ab4738 FIX: Optimize the convex hull calculation logic when checking for overlaps between the assembly and sensitive areas.
Jira: STUDIO-13686

Change-Id: I7ec402e7da150fd6f22eac079c7e4809d42eabde
(cherry picked from commit 16bff83ca2a4269b7c792f3485a902b5d027433e)
2025-10-02 18:03:33 +08:00
shsst
0f6cc6da4a ENH:[Process/Filament] batch modify fan_max_speed/slow_down_layer_time of ABS Profile Edited by shsst
Change-Id: If646e1fce6ebe5c39893e435d426d964556c7c84
(cherry picked from commit ee497f6823fa1388629b1fafa3e8471586f5c31c)
2025-10-02 18:02:07 +08:00
songwei.li
f82783259a ENH: add jump to potion button for Clumping detection by object error
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)
2025-10-02 18:00:54 +08:00
songwei.li
ad45236056 ENH: add warning about enable_wrapping_detection without prime tower
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)
2025-10-02 18:00:40 +08:00
xun.zhang
c4c0083a17 ENH: default disable wrapping
jira: STUDIO-13940
Change-Id: I715fca9976bfe38de1cb92e6ba1ab1dc16def65b
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
(cherry picked from commit c5bb9e865b4ec2ed2f6d9ea0c112eeda5ebeaefb)
2025-10-02 18:00:27 +08:00
qian.wang
6d6969a315 ENH:[filament/process]Synchronize parameters of O1E with those of O1D
Change-Id: I194543fb38e975aa56592b8dda2e29bde01d949e
(cherry picked from commit c03812c36c47ca2edde3280b2fda4072c65deac6)
2025-10-02 17:59:51 +08:00
zhimin.zeng
24f1838f98 FIX: reopen spiral mode cannot show message dialog correctly
jira: STUDIO-13869
Change-Id: I3d9ea9e27a8e3528be33fdb580837fefa9e06b9d
(cherry picked from commit 1f61ddbb52fce0bb9e16b4581d65710dbe150a72)
2025-10-02 17:59:38 +08:00
zhimin.zeng
6d463ed8b4 FIX: do not check wrapping area
jira: none
Change-Id: I57e5f0049825c263d4822ce5a0b6b942dc9ff0bc
(cherry picked from commit 58ef9e2f04b5952d8e25c5d734ee5d050fec9bcd)
2025-10-02 17:59:38 +08:00
lane.wei
9ac3d64328 FIX: CLI: don't turnoff wipe tower when wrapping detect enabled
jira: no-jira
Change-Id: I242a9b18d03565e4d4add0e6e60c4b7f8fd6692a
(cherry picked from commit 00366eba96e6eec8173b6d2db9d1c3e52a24089d)
2025-10-02 17:59:37 +08:00
songwei.li
885a078747 FIX: 0-sized path cause wrong detection of gcode_check_result
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)
2025-10-02 17:59:37 +08:00
zhimin.zeng
390bc3fb27 FIX: hide wrapping detect for unsupported printers
jira: STUDIO-13884
Change-Id: I215011f419ff194f6b8e4c7ed884cba194c87d19
(cherry picked from commit fd63b1f59d88fb8e07b8ca71dfa5c01cfa54def5)
2025-10-02 17:59:37 +08:00
songwei.li
120c9b41e2 FIX: erCustom check results in gcode_check_result
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)
2025-10-02 17:59:37 +08:00
zhimin.zeng
60bf21ad8c FIX: add wrapping detect area for H2D Pro
jira: none
Change-Id: I53efc7c89f67b0ba837a828b6c20a983820aa7b3
(cherry picked from commit 01f29bbf0981c7a19961edfd148c77e3fae99f88)
2025-10-02 17:49:03 +08:00
xin.zhang
4bd1c0d98d FIX: the configuration for auto-pa flow calibration
JIRA: [STUDIO-13875]
Change-Id: Iecf628107043aa935a2f0bbafc05332717bc89a6
(cherry picked from commit 3aa422e4bb78efd0d5fe7ccadac21210bd8b7830)
2025-10-02 17:48:56 +08:00
zhou.xu
2cb963852b FIX:The additional colors need to be found corresponding to them
jira: STUDIO-13871
Change-Id: Ia96b41278198b02ffb3b878e6584b83e860ab87a
(cherry picked from commit 7020e92ec8fdccd499e0d870965818b3e6dcdb07)
2025-10-02 17:48:40 +08:00
shan.chang
bd066e7f96 ENH: add new arrangement features for wrapping detection area
Jira: STUDIO-13735

Change-Id: I198d19f5e6ef70f0adfa6370269290c81d21a557
(cherry picked from commit dc83637652526111611d0833d5f5798aaa3e7be7)
2025-10-02 17:41:41 +08:00
chunmao.guo
942d023a1e FIX: select printer preset with same printer_variant as old
Change-Id: Iccf72ed34da620f8ca728dfc56585f2ab2a496b9
Jira: STUDIO-11210
(cherry picked from commit 4a270ee6d3b1c1b6bb90cdf6933cae94f59e3a2a)
2025-10-02 17:07:21 +08:00
chunmao.guo
e56774ad71 FIX: get_similar_printer_preset only visit system preset
Change-Id: Ib219e76cba37ace7b81f69e63f4edd1edb25ddc4
Jira: STUDIO-10338
(cherry picked from commit 0b4795fd10a9d8fd4fd2fe32d03cd7efec9236e9)
2025-10-02 17:07:21 +08:00
maosheng.wei
e05d81c797 FIX: Fix the issue where the 'get_imilar_printer_preset' method returns a null pointer
Jira: 9935

Change-Id: I4b001721780162d656b73df316387a33967e4a2c
(cherry picked from commit 2ec50f771f07d7ca6dafde77b7683eb18ee7c554)
2025-10-02 17:07:21 +08:00
songwei.li
aa9fb1fd34 FIX: Printable area check results in gcode_check_result
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)
2025-10-02 17:07:21 +08:00
xun.zhang
c0c12fcb1f ENH: update nozzle incompatible info for high flow nozzle
jira: STUDIO-13867

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ia2d02df90c2dc89ffb0c96a46f9354eaf1bccbab
(cherry picked from commit df886683ef8e036046014fc777f49a63100d8634)
2025-10-02 17:07:21 +08:00
milk
2dde924582 FIX:change name from SD card print
jira:[STUDIO-13733]

Change-Id: I017268520f522773decf68be701c9faa819af8b8
(cherry picked from commit ba16e21702719084d8af2bb8fe88fde290d5763b)
2025-10-02 17:07:21 +08:00
zhimin.zeng
e987a6bf82 FIX: should not show enable_wrapping_detection in printer preset
jira: STUDIO-13848
Change-Id: I9d3c6b911721992e448b74e63b2b598f0240fa6e
(cherry picked from commit 849723d6ebce7c342e56d7e8bb4b932db5bc42aa)
2025-10-02 17:07:21 +08:00
xin.zhang
52e9e0ae08 FIX: auto mapping for N3S
JIRA: [STUDIO-13844]
Change-Id: I9840e120c9857dc33923858b022da439e5b92784
(cherry picked from commit d8a07b47fbfa2b628d56658e9c45b0926eb6fcd8)
2025-10-02 17:07:21 +08:00
xin.zhang
bdf413fb58 FIX: incorrect display of AMS humidity
JIRA: [STUDIO-13742]
Change-Id: I25c26282c48faa05ab07dbb0cdbf5147bf475ccd
(cherry picked from commit 971afb8365c955c2562bb5c2d7a8effdc2b625ce)
2025-10-02 17:07:21 +08:00
shsst
b9601f666a ENH:[Process/Filament] MOD: align H2DP with H2D (custom gcodes) Profile Edited by xuanquan.liang
Change-Id: I73c97626d12ae14c6650a758001254d013771358
(cherry picked from commit 46affb67f5d7e57850b38e8e2e89cc4c07db1e49)
2025-10-02 17:07:21 +08:00
lane.wei
251bd230da ENH: CLI: add logic to process wrapping detect
jira: no-jira
Change-Id: Iacf689208a2fc26437892f9f5d847c53a21bf264
(cherry picked from commit 6c2e71c8f51a0384e6fdf784421490820282d3cc)
2025-10-02 17:07:21 +08:00
haolin.tian
fcd0a11490 FIX: Remove redundant calls to set_selected_machine when disconnecting LAN
jira: [STUDIO-13828]
Change-Id: Icb2cca28cddec1e4e6b6b14b6893777db1f1a3a8
(cherry picked from commit 477fd8d3cf3adad8daaa00d95244225d9ac800b3)
2025-10-02 17:07:21 +08:00
haolin.tian
e68daa36c9 FIX: use actual printer_type when connecting with ip&access_code
jira: [STUDIO-13841]
Change-Id: Iff594cd1f6dcd5c6485ab0aa67c98f422a75fd6c
(cherry picked from commit f8d0f62a1b3f3379de40a3b845c06fe61d907d82)
2025-10-02 17:07:20 +08:00
milk
cae1fe4dd4 FIX:add line for ai define
jira:[STUDIO-13448]

Change-Id: Iceb022b80cc14f2ae1dbe29f464e2bfd7bad0df0
(cherry picked from commit 22818ed070be0a178af1ce8bb619a8d1983b8106)
2025-10-02 17:07:20 +08:00
milk
1b4bcfcba5 FIX:Set bold font
jira:[STUDIO-13710]

Change-Id: Ie4f4b5d8c74c4e65a389ce46536ec276e5899788
(cherry picked from commit e4646bc282a436cbe5cfce5056ff23a4bbc9e8b7)
2025-10-02 17:07:20 +08:00
shsst
7208953cfd FIX:[Process/Filament] [O1D][timelapse]fix z_lift in spiral_mode when open timelapse Profile Edited by yuanzhe.shen
Change-Id: Iae320face8b95492fa9082c0e5a6fc66da57dc62
(cherry picked from commit f7ec4df15529e7c929008b3a1f6ac4fd1276c985)
2025-10-02 17:07:20 +08:00
songwei.li
03eeb2bcd9 FIX: Slicing Result Color Mapping Makes No Sense
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)
2025-10-02 17:07:20 +08:00
qian.wang
2ed08353ca ENH:[filament/process]modify upward_compatible_machine
Change-Id: I8a6b38d3ab1f1711eddb0a4190197f87129fec70
(cherry picked from commit 624914dcdd1e5a931a8eb5d3126c9bde32f4d705)
2025-10-02 17:07:20 +08:00
xun.zhang
1fd88842d9 ENH: add code for bambu lab h2d pro
jira:STUDIO-12107

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I4a8132515ad947f68212d8002c0f365badf8ca71
(cherry picked from commit 76f50132fcae7ca91c689ceb484006db1e4f3dbd)
2025-10-02 17:07:20 +08:00
zhimin.zeng
68fe61564a FIX: set parameter for clumping detect area
jira: none
Change-Id: Ic868f13ae90cae0625a0db4050ef3aa14befcb13
(cherry picked from commit 9703c2086e7292b518d35efadcab9258e86d35ad)
2025-10-02 17:07:17 +08:00
zhimin.zeng
89c58fb4d9 FIX: add clumping detect area parameter
1. add wrapping detect area parameter
2. fix spiral retract bug
3. modify the enable parameter to print config
4. close clumping detect for manual cali mode
jira: STUDIO-13761 & STUDIO-13766

Change-Id: Ib597ca48a0342a8ae3930f5e790085987f252374
(cherry picked from commit 698a5e6bc0b281ba77fc1fd7692daec09cb440b4)
2025-10-02 17:07:17 +08:00
xin.zhang
b39bc5bf8f ENH: HMS add action 39; modify display of 29
JIRA: [STUDIO-13191]
Change-Id: I411fb4c56b395d576aaca7b610aa613e4f6cf806
(cherry picked from commit 45f756d5353f84814a2c7baa3290879a7bef3d6f)
2025-10-02 14:08:21 +08:00
haolin.tian
6121a420f1 ENH: add text to specify active tunnel
JIRA: [STUDIO-13803]
Change-Id: Ia6af5ba881c93a1d284295b244d19b39aee2ae91
(cherry picked from commit cb6c6afeee3e519aca87ac82eacc4b85fda63f65)
2025-10-02 13:46:23 +08:00
xin.zhang
c94c453936 ENH: add notice for PVA in external spool
jira: [STUDIO-12788]
Change-Id: Ie34da3a3b3ad26edcee7c522ffa4cca059e52f2d
(cherry picked from commit f8527f3bc3cbf137b4925726e24f6f0de4023213)
2025-10-02 10:00:24 +08:00
xin.zhang
ac4b3696ab FIX: check axis at home
jira: [STUDIO-13678]
Change-Id: If9363485ce2ccd434f5c22c0484c6420bbfb67c8
(cherry picked from commit 04e7e8d00f885fbe4ce4ff86ea2897c61e909881)
2025-10-02 10:00:13 +08:00
weiting.ji
bb4944e955 FIX: Support raft interface lost when filament removed
Jira: STUDIO-13777
Change-Id: I500bfb558e6739a79c679afad10e8be121a49ec2
(cherry picked from commit c9cf0843d2ecb3d2c549e2282a922b8fa4ae9ddc)
2025-10-02 09:55:00 +08:00
maosheng.wei
0581fac6e6 FIX: Update the alias of imported presets
Jira: STUDIO-12801

Change-Id: I7583a2022a0f565103953ee0ca742593769da81f
(cherry picked from commit cb470ae21279a555c7f4718673d83e3818b46bf0)
2025-10-02 09:54:18 +08:00
fei2.fang
f60a6f8490 FIX: Restore material number and color display in “Filament for Supports” menu
jira: STUDIO-13670

Change-Id: I1779aedc84d5ef5d9e59dd75a164d02b4274a78a
(cherry picked from commit 8f361ab2a68a2eeabc4b1994b93f749cfbd668d3)
2025-10-02 09:53:43 +08:00
weizhen.xie
eeb8b2111c FIX: Add the prefix 'a' or 'an' based on the pronunciation of the first letter of the machine name.
Change-Id: I83c587fda985528cd9ec60c54bf67cd5ab1685a7
Jira: STUDIO-13668
(cherry picked from commit 3a042857c1d38ed16076b30f80bd34b10b0dc3be)
2025-10-02 09:52:50 +08:00
SHSST
54d9abadcb ENH:[color_code_json]Update filaments_color_codes
Change-Id: I13fdde20912f2f517169033a08a0e90593c1d6cc
(cherry picked from commit f6895c11666390df84090d6d2d25268c5217fba0)
2025-10-02 09:46:04 +08:00
xin.zhang
6809f99939 ENH: remove the assert
JIRA: [none]
Change-Id: I904dd91b883ff272b82439fa63f72114220aab67
(cherry picked from commit 0e3b73bda83b6cb679def06d1b68360e2fa1f958)
2025-10-02 09:45:58 +08:00
xin.zhang
bc13ca4622 ENH: close the error dialog if cleared
JIRA: [STUDIO-12441]
Change-Id: Ie75cc9c1242f0e0e66ef4789debd554b089b90a0
(cherry picked from commit 9432aff5fa171da081171b58613c570bea6e4d94)
2025-10-02 09:45:54 +08:00
xin.zhang
d1d7e87f86 FIX: Skip the command result of other platform
JIRA: [STUDIO-13607]
Change-Id: Icfb87214278baccb4b97582ba46e4e439ffcdc02
(cherry picked from commit 09dfade232459f5663bebcadc39c90c3f132e6cf)
2025-10-02 09:45:49 +08:00
xin.zhang
73dd707d7b FIX: MediaPlayCtrl maybe deleted
jira: [STUDIO-12622]
Change-Id: I9ee879c5bd046c9b3e1d33c96b7e3db9c9b35153
(cherry picked from commit 862fb9b53d3cda87135b93f5365608e22fc04411)
2025-10-02 09:45:24 +08:00
xin.zhang
296bbe3dd6 FIX: the location of network_plugins.json
jira: [STUDIO-13745]
Change-Id: I5ead381e94046179d44c02e3d7d9964fbe9aff36
(cherry picked from commit 6454dfe45bfa2c2deeb1c1aa0f46b2479d418f8b)
2025-10-02 09:44:19 +08:00
weiting.ji
e8ae3d1753 FIX: Client uses default preset when reopening from project with non-local printer
Change-Id: Ieded9d63338d74ca841e89aca16a9510355ee417
Jira: STUDIO-13490
(cherry picked from commit df2ee1cc533e2a7f5f71b4d880b08a6665b028ee)
2025-10-02 09:43:28 +08:00
songwei.li
1304b315c7 FIX: Error in setting variable layer height
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)
2025-10-02 09:43:13 +08:00
songwei.li
641577c835 FIX: error of the mixed material printing is lost when by-object
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)
2025-10-02 09:43:02 +08:00
songwei.li
86a828afd2 FIX: Incorrect flush matrix update condition judgment
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)
2025-10-02 09:39:17 +08:00
songwei.li
873fb30bc5 FIX: 3mf files containing small thumbnails cause crash
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)
2025-10-02 09:39:01 +08:00
zhou.xu
83feaeadec ENH:modify the color of external materials that are disabled for sync ams dialog
jira: STUDIO-13364
Change-Id: I54105533437493d05c8f6208e7b83f56585da2bc
(cherry picked from commit 53953141a13fd6c49824655da6a39efd1b8b65d8)
(cherry picked from commit 34ad10df2bb946bd2b97dd6f6e4f5e7ee6c0e4dc)
2025-10-02 09:38:22 +08:00
xin.zhang
4a787f6ff8 ENH: clean codes about device
JIRA: [STUDIO-13609]
Change-Id: I591de7033360b9570600006cfbce2148a8d031d5
(cherry picked from commit e9c774be8f4c89b8dafa14ef56913612fb68bd0c)
2025-10-02 09:30:48 +08:00
haolin.tian
e17c8bfb80 FIX: remove legacy MQTT optimizations; disconnect previous printer on switch
jira: STUDIO-13455

Change-Id: I88f48801f443b3830fbd2bccbc53577f615e6d96
(cherry picked from commit 562ac1a3e7e75e1cab5e42ab09cec719bf698184)
(cherry picked from commit 5143086c5efb4d974e27ba4f55bd82752ded0a93)
2025-10-01 23:32:08 +08:00
Noisyfox
d05420615b Fix crash when dismissing print error dialog 2025-10-01 23:32:08 +08:00
zhimin.zeng
41da6a1ae7 FIX: support calibration for multi-nozzles with different diameters
github: 7543
Change-Id: Ifa20d786836f1991af35b3b95e25f91431d752e0
(cherry picked from commit 0c1053e962c928b253c268fc6658b8ec98f692ff)
2025-10-01 22:01:50 +08:00
xun.zhang
b8bbb04527 FIX: wrong flush volume when select filament or sync filament
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)
2025-10-01 22:00:57 +08:00
zhimin.zeng
40f8583440 FIX: fix some show bug
jira: none
Change-Id: Ie0efd9a4d0c3c437ca803d1f7708510b28af31cd
(cherry picked from commit c7863685f4d4555d51db902857c90dd10a94345f)
2025-10-01 22:00:07 +08:00
shsst
2a27c49984 FIX:[Process/Filament] fix lost step issue during clumping detection Profile Edited by xuanquan.liang
Change-Id: Icd6c0ed0e09295339efc814609693bc3ec96f8e5
(cherry picked from commit e5ae41b1b3edc235c47138d50b2e8e3afb48c9be)
2025-10-01 21:59:37 +08:00
shsst
85f7b3b18c ENH:[Process/Filament] MOD: modify custom gcodes to adapt U2 beta (20250729) Profile Edited by yuanzhe.shen
Change-Id: I46e5ef112df0ed867964e84d9161d0026b2cc2b6
jira: None
(cherry picked from commit 6fb45e04d2f9120fdcdd082b906db1a4f18f551c)
2025-10-01 21:59:29 +08:00
shsst
e8e7cebb9d ENH:[Process/Filament] modify custom gcodes of H2D 20250718 Profile Edited by xuanquan.liang
Change-Id: Id472bc6765e69a438495a725d0096fe11ef154a7
(cherry picked from commit 06c5e549bbf6afbb1af136c227422b81e943f30f)
(cherry picked from commit ef1a1d6519f060d61f94710fd35348dfd3f82999)
(cherry picked from commit c1b7dbe50a649b227720e017d41908f174cc7bef)
2025-10-01 21:59:19 +08:00
zhimin.zeng
6bb19e10b2 FIX: modify the clumping detection text
jira: none
Change-Id: I646e2fdcb3802bb9255dd77b158ce6d516c7afaf
(cherry picked from commit 370ca3c217ef28a1d1aac08af720578c48aac405)
2025-10-01 21:58:46 +08:00
fei2.fang
f2e759e885 FIX: Correct auto-calc of flush value and default color picker selection
jira: STUDIO-13718, STUDIO-13666

Change-Id: I5dd08d3ed46423ba6b3c6cb4c022cfc36f46c620
(cherry picked from commit 173a6ee070d6b5e1ac445f0ebdc4c2fdd145e253)
2025-10-01 21:58:02 +08:00
Noisyfox
a660e1ae6d Fix extruder_only_area render position when switching plate 2025-10-01 21:54:49 +08:00
Noisyfox
755845598f Render wrap detection area for selected plate only 2025-10-01 21:49:30 +08:00
zhimin.zeng
b3689ec700 FIX: modify the text of Clumping detection
jira: STUDIO-13659
Change-Id: Ib033689f89d90f14f1eab0a488fa76cbb705afb8
(cherry picked from commit d1606d12b53fa21aab38d882b8bac3215af03e71)
2025-10-01 21:21:42 +08:00
zhou.xu
269b4d9fc2 ENH:reset m_wrapping_detection_triangles when change printer
jira: STUDIO-13664
Change-Id: I65f2f496eb12596b44d753509774e6218e2401a2
(cherry picked from commit 1fa2f1c1367e5d5dae2f5ad293d9e0a682332dca)
(cherry picked from commit c486d82d1e79757d0bf13f85b143b7b3a8fe8220)
(cherry picked from commit 98fbeb0fc5a699d8b23f143474083b47d6b7c690)
2025-10-01 21:20:05 +08:00
zhou.xu
637a86b738 NEW:render wrapping_detection_triangles
jira: none
Change-Id: Ifdbd1ae8c3906abd235177f68fe0444bbcecb8ba
(cherry picked from commit d7df1b8a9c172731cdfb42371153f8781c268aad)
(cherry picked from commit 1277955c5f8e81f01c07408debc1338acac667cb)
(cherry picked from commit c09de4cff5dcae942e91feae3fafb097e33563b7)
2025-10-01 21:14:25 +08:00
chunmao.guo
30bce5df45 FIX: Button text render pos on macOS
Change-Id: Icaa8cb95d81b3f906507dc74a3fcffc77a535fdb
Jira: STUDIO-8026
(cherry picked from commit c1e4be1652e682a53b13a403e6ae6b2d00fddda6)
2025-10-01 16:50:17 +08:00
fei2.fang
51151a89c5 FIX: Prevent crash when rendering color button on linux
jira: none

Change-Id: I8758c3a352bd206ff81ce72ed0ad902f8a79c30e
(cherry picked from commit 45818c4e762b540feb0a67d117b595eb589e8058)
2025-10-01 16:09:17 +08:00
Bastien Nocera
cd0eb95c25 FIX: Fix missing wxStaticBitmap declaration
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)
2025-10-01 15:55:55 +08:00
Bastien Nocera
902b215eb1 FIX: Fix missing std::set declaration
/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)
2025-10-01 15:47:44 +08:00
Bastien Nocera
46abd03bde FIX: Fix missing fmod declaration
/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)
2025-10-01 15:47:37 +08:00
Noisyfox
fa68dde4b3 Fix AMS sync 2025-10-01 12:50:12 +08:00
Noisyfox
6757906ad3 Fix chamber_temperature crash 2025-10-01 12:29:30 +08:00
zhimin.zeng
8a6a7a0d7d FIX: add wrapping area API for plate
jira: none
Change-Id: I574a42a6c17ded0934ae7456eb5ecfc83a5c2a01
(cherry picked from commit 0ed3f527f08808d9ec04f09b5eb114334805be29)
(cherry picked from commit c81b2e8cb39400255b2cf1321d2fdb346300fdad)
(cherry picked from commit 49f2ed61664c663c189db6a2c94efd6a36d53b9b)
2025-09-30 15:32:44 +08:00
zhimin.zeng
f391070cb7 FIX: only detect wrapping area when enable wrapping
jira: none
Change-Id: I1353e888624f26679e04a98cc9ac8950b991e77e
(cherry picked from commit 53ca132fcdcbec9761b1328f3dc94ab4194e3f07)
(cherry picked from commit e8c8a10c97c7eb681f80978106a28716ea5737f8)
(cherry picked from commit a28eeef7f4f016689a900d4880e2e8927cea363b)
2025-09-30 15:32:44 +08:00
zhimin.zeng
1ccdf7b43b ENH: add wrapping detection
jira: STUDIO-13192
Change-Id: I0fb5692b18cdb3b7af624a831dcfb0f635b165f0
(cherry picked from commit 89a8b6ea5e34340cba3750416ce3100dcc39f5c2)
(cherry picked from commit 50bc8c10a7b4ddc0b2dfe9cbab438b9d307b7fc0)
2025-09-30 15:32:44 +08:00
hemai
070a8e62a1 FIX: long filament name display with ellipsis
Jira: [STUDIO-6754]
Change-Id: I7de774bba953c85b21d39113a5decddd2439fafd
(cherry picked from commit a157d0e26209b12a2bf0544b066866c3df8e50e0)
2025-09-30 15:32:44 +08:00
hemai
c297c4232f ENH: advance hms file get strategy
Jira: [STUDIO-13356]
Change-Id: I2192defc17730ddedd2f667a62b0654ca6f13721
(cherry picked from commit aef88d650495740cac6a45a411e7f9a076c6cab9)
2025-09-30 15:32:44 +08:00
fei2.fang
f7758b1831 FIX: Allow white color selection in default color picker
jira: STUDIO-13666

Change-Id: Ia2f5d8a1830a14d519c9277a88148a723f3d1be0
(cherry picked from commit fccfee6208c5ddc0552004d0642771f99f10dd67)
2025-09-30 15:32:44 +08:00
zhou.xu
c21c715f37 FIX:Only pursue filaments up to the maximum index
jira: github 7682
Change-Id: I77fd7d47965eb6f7f405b43d6009f9c206b8c46f
(cherry picked from commit a79922c773255e0f6dd3b4605fe07ef8aa6a8580)
2025-09-30 15:32:44 +08:00
qian.wang
583848c868 ENH:[filament/process]add pla_tough+ filament profile
Change-Id: Ie58f9031ac20f72f927a0bf525ef6de4130ac75c
jira:None
(cherry picked from commit b2f6382488926d678660f64dfa339ebdad046c2d)
2025-09-30 15:32:44 +08:00
fei2.fang
91d4b14ba7 FIX: Mac semi-translucent colors & suppress dialog flicker during system picker
• 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)
2025-09-30 15:32:44 +08:00
fei2.fang
723ce9d431 ENH: Flash filament dialog on outside click to prompt focus
Brief flicker reminds users to act on the dialog before proceeding elsewhere.

jira: STUDIO-13492

Change-Id: I3daaa567f4aa738094fc01effcd9b9245aea9d2c
(cherry picked from commit 3decd7a5e4f5a13b7fd1dbb0fc39e0b3849ed6d1)
2025-09-30 15:32:44 +08:00
xin.zhang
44c13f3967 FIX: correct the setter
JIRA: [STUDIO-13571]
Change-Id: I6b5c0ac8c817a8d3b8807e17bce12a44d1101442
(cherry picked from commit 10cf6c6ce478d807c36672c8dace0df5d3cdb629)
2025-09-30 14:43:56 +08:00
SHSST
0e7ed6e163 ENH:[color_code_json]Update filaments_color_codes
Change-Id: Id9d91dda223c43691e1ff40d2b4b0499e270250e
(cherry picked from commit 57f654564b8fa58e9c511a7f2799387f96407a50)
2025-09-30 14:43:41 +08:00
weiting.ji
c1fa2acd85 FIX: client crash when select other setting in the comparator's right combobox
Jira: STUDIO-13491
Change-Id: I2ca85b2e176de0748317ccd97576d1f052bbbc39
(cherry picked from commit ae8df0f31c1f26278635cf0b270572d8a00319a7)
2025-09-30 14:34:28 +08:00
yongfang.bian
2f18d25a2d FIX:clear wxwidgets asset
jira: nojia
Change-Id: I8ba2849afa07bc162a55b326c3d9a45150243ac3
(cherry picked from commit 96ba14c86d3cf180eeb585185d31bcb5d5db7415)
2025-09-30 14:34:08 +08:00
fei2.fang
6c242c5101 FIX: Honor transparency and add contrasting borders for both themes
jira: STUDIO-13394

Change-Id: I47f3108318ba72895cf5a906a2566d46f3ed3ff9
(cherry picked from commit bac1c5ecceb3dfdf11844beca9d9ec71c6453340)
2025-09-30 14:31:54 +08:00
xin.zhang
b6a44b5eb1 FIX: no resource for the bitmap
JRIA: [STUDIO-13537]
Change-Id: Ib7a128e85d64fa1b4a0c67b3be5f5a3ccb3dd927
(cherry picked from commit aff46bd1378a18cb3d181dbf947bed870c0fa2d0)
2025-09-30 14:31:47 +08:00
xin.zhang
4b06a552b6 FIX: update codes with master
JIRA: [STUDIO-13536]
Change-Id: Ibf1bbc74787b4894cceebf703406848d99f9b8eb
(cherry picked from commit 20a644da6a80664a54d68835f49867813db8af83)
2025-09-30 14:30:23 +08:00
maosheng.wei
26dcf805e6 FIX: Reset Filament only when the preset is deleted from the current Studio
Jira: none

Change-Id: I2a8e17b17a97644d69013e38f50bb7b060b17e57
(cherry picked from commit 0c7e6b6676a1fc595e9b99e22d6c9cd00608c314)
2025-09-30 14:11:46 +08:00
hemai
5f1ff2f9a9 FIX: change AMS n3s ams_id & tray_id from 512 to 128
Jira: [STUDIO-13477]
Change-Id: I3844cb59df18220a22d8ff7524216b9fff2b6632
(cherry picked from commit 8c7b66d24b1e795c3070883f3f439cf160b38037)
2025-09-30 14:08:47 +08:00
hemai
d2fc250e5f FIX: change AMS n3s ams_id & tray_id from 512 to 128
Jira: [STUDIO-13477]
Change-Id: I3844cb59df18220a22d8ff7524216b9fff2b6632
(cherry picked from commit 8c7b66d24b1e795c3070883f3f439cf160b38037)
2025-09-30 14:07:07 +08:00
xin.zhang
a5c6450cc5 ENH: support command error dialog; support clean print error; support stop ams drying
JIRA: [STUDIO-12441] [STUDIO-13123] [STUDIO-12372]
Change-Id: I87170f1f51c1e24f6eee61deb07d06ff6b53a884
(cherry picked from commit 1ec5382f14ebf06d8f3ed128e377243665434ca6)
2025-09-30 11:27:16 +08:00
xin.zhang
0721078177 ENH: update humidity display for AMS-1
JIRA: [STUDIO-13195]
Change-Id: I7abcdf821b7ead2cf4a8605ecd95011e74f5dc6b
(cherry picked from commit 1c1d34ff7e3fea4492ba07e238ca171e28eb0a3b)
2025-09-30 11:19:59 +08:00
xin.zhang
2d215d75d2 ENH: use response to support the message; update the panel if SD state changed
jira: [STUDIO-12552]
Change-Id: I68048c6fa358253664adbf8fe637c6c0c95e1eb9
(cherry picked from commit 65bb25d80435c28bdaa1fe4445f7fc790f5de22f)
2025-09-30 11:19:52 +08:00
weiting.ji
91e27e8e95 FIX: Client crash when opening certain model or select certain item in the comparator dropdown menu
Jira: STUDIO-13491
Change-Id: I40e9cb406fa1b26da9a6527ff5b0bc68d9b10a52
(cherry picked from commit 11f520e44b0ee74abef3433d2b8fefcdd326cb26)
2025-09-30 11:19:23 +08:00
gunlock
a448cff1df Fixes #7211 where the CreateFilamentPresetDialog fails to show the printer list due to the dialog not resizing properly. This workaround sets the wxRESIZE_BORDER flag so the dialog can be resized to reveal the printer list.
(cherry picked from commit 3f066404903e5f13892c1f37c179a68479669e88)
2025-09-30 11:17:31 +08:00
Erwin Ried
c5956d6dff Update PrintOptionsDialog.cpp
(cherry picked from commit 3e0807716e61769265a434a15a07f70de57773b9)
2025-09-30 11:17:09 +08:00
Erwin Ried
0d26211688 Update StatusPanel.cpp
(cherry picked from commit bf8fa891587c80bd2bbc6562d683392a04a2d106)
2025-09-30 11:17:04 +08:00
shsst
4c450df0df ENH:[Process/Filament] Modify filament_max_volumetric_speed of abs asa pc Profile Edited by shsst
Change-Id: Ifabfa40ddd19dc4759436a7408873d044161e27f
(cherry picked from commit 18f76c18b67aea8e99b1d29be9b57b2562810a65)
2025-09-30 11:15:14 +08:00
shsst
968be632a7 ENH:[Process/Filament] Modify the volumetric flow rate and retraction parameters of H2D models PLA Basic, PLA Matte, PETG, HF 0.8 nozzle, ABS, ASA, and PC Profile Edited by wenwei.huang
Change-Id: I164d29c79cbe469d8b0fc55c45d7f9d2322528ed
(cherry picked from commit 59b77168ff91a83b8412fc7aafebc1ecb2f6470c)
2025-09-30 11:14:32 +08:00
shsst
c11fd2592e ENH:[Process/Filament] Modify the volumetric flow rate of H2D model ABS ASA PC Profile Edited by wenwei.huang
Change-Id: I8dc3fd0e0c1fa4cce70effef254e210a484d965c
(cherry picked from commit eb08a743ff1b2f1e53526997e3fb8fc04adecfcb)
2025-09-30 11:14:23 +08:00
weizhen.xie
04f0b96029 FIX:Fix the crash that occurred when importing G-code file
Jira:STUDIO-13408

(cherry picked from commit 3810f4edfe086b9500860e59baf35e5568b56977)
2025-09-30 11:02:32 +08:00
xin.zhang
55e3bd1a4d FIX: update the data on init
jira: [STUDIO-13453]
Change-Id: I5a3fed24b0eb0a6e7da7ceff3450da95f29fdaae
(cherry picked from commit 8057ee846c8dbb6d19006ccaaf56c9fabcb66d3f)
2025-09-30 10:51:03 +08:00
tao wang
28f5c3e952 ENH:support printer connection in farm mode
jira:[none]

Change-Id: I05a67e5ff508d21ed9aa1659147c510bd1700b10
(cherry picked from commit 0cf5ca920851735f946b5dd733472009f4dc17de)
2025-09-30 10:50:53 +08:00
weiting.ji
8fc53b4312 FIX: Client crash when opening 3mf file of older version
Jira: STUDIO-13381
Change-Id: I9065c215758d035cd6de3cc11519285663046bfb
(cherry picked from commit d73756c59729e5525b013d989c154678cf344fee)
2025-09-30 10:47:54 +08:00
weiting.ji
3c17c26573 FIX: Background process stuck after closing client
Jira: STUDIO-11596
Change-Id: I32fd92c504c16e04d5361d428d4cf5da2960548c
(cherry picked from commit fa435310a1082660dd1c9f7fbf815a396eca79a0)
2025-09-30 10:42:34 +08:00
songwei.li
8d1f11495d FIX:The estimated flushing amount of consumables for multi-color printing is inaccurate.
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)
2025-09-30 10:40:09 +08:00
milk
73220b4df6 ENH:Syncing print action text
jira:[STUDIO-11406]

Change-Id: I8ef48345ee57cc66868a05f9e468f857a66d4feb
(cherry picked from commit 0e9e4a2f32c0b3ce38eb7e9bf9a0d0bcd3e39e66)
2025-09-30 10:09:03 +08:00
shsst
3d21cea5ee ENH:[Process/Filament] MOD: restore z_trim from -0.01 to -0.02 Profile Edited by xuanquan.liang
Change-Id: Ib61933876c2e98ddfba7b0cc8820d977108c80d3
(cherry picked from commit d1b843c891c57242ee53c1e85cd4f68d66a6c44b)
2025-09-30 10:07:59 +08:00
hemai
1d4b9a9f82 FIX: support external filament with multi-printer
Jira: [STUDIO-13091]
Change-Id: I1f4cb255520f7216c67fc94466e9aa95d88240bd
(cherry picked from commit 79ce3efc76f29df088f8cb4645aefc82fbf53036)
2025-09-30 09:42:30 +08:00
xin.zhang
1331e51dae FIX: The value maybe string or int
JIRA: [STUDIO-13018]
Change-Id: I4af161431fb51e1e0234bc37de8346b45f3ca4b7
(cherry picked from commit 4e2934685033c352ea2c3baded585381c285a90d)
2025-09-30 09:41:45 +08:00
zhimin.zeng
9ac93d7a25 FIX: The device page keeps sending cali commands
jira: none
Change-Id: I55a116e471e4d40c8033aaefd3b7e22e9ccaab06
(cherry picked from commit 21cbafd52a393960e5b7b84d6e5259c829aa50c5)
2025-09-30 09:34:34 +08:00
xin.zhang
aad1d7b7ae FIX: correct the mac os version check
jira: [STUDIO-13291]
Change-Id: I70e1015f3bfd436ca021a1e98ec66a2f37d21ff1
(cherry picked from commit e4a3d23368659a5bface6cc7215ebacbbfe99dfc)
2025-09-30 09:34:26 +08:00
hemai
608ac2354d FIX: enbale multi-color external change assist when has AMS
Jira: [STUDIO-13367]

Change-Id: Ib77b7b75fbb139ceaa7076c6bbf616d011cf142b
(cherry picked from commit 688d8b15f816ab3612f3f230b6ea6a1dcc71f45a)
2025-09-30 09:34:02 +08:00
maosheng.wei
8d8630241a ENH: Record the preset compatibile_printer field for cloning
Jira: STUDIO-12167

Change-Id: Iaf66bf48f892d32c77103ee7c8dbf3ccaabc2e09
(cherry picked from commit f4abad029e01c597b91bc14c60e6bb9a30f2d477)
2025-09-30 09:33:38 +08:00
shsst
6a37e8f295 ENH:[Process/Filament] remove pla glow 0.2 nozzle and pva 0.2 nozzle of h2d Profile Edited by qian.wang
Change-Id: I69ccb1d7f11f431df04c764ae42a2eb2d493a284
jira:STUDIO-13133
(cherry picked from commit 9c47e04d747166243888e49b9a2694aa7841ce28)
2025-09-30 09:31:18 +08:00
shsst
11a800de7d ENH:[Process/Filament] Corrected the default materials and processes of some models Profile Edited by qian.wang
Change-Id: I367f9afd1052419acfd692d305630672b5e2dd68
(cherry picked from commit 7767c6dd0bf873e8c88d71dd050a8dc751d7c954)
2025-09-30 09:28:39 +08:00
xin.zhang
9d0885f382 ENH: remove the unnecessary line
jira: [STUDIO-13300]
Change-Id: Icdcca33b350a07268dd8e7a8a1791599a7a4fad5
(cherry picked from commit 9a4e88e366c78eee3ea31339599f01f7552172cf)
2025-09-30 09:27:49 +08:00
xin.zhang
3a49e2f516 FIX: correct the tool tip
jira: [STUDIO-13302]
Change-Id: I745e6d05f78fa4f025237f70c7af424cc9c204a0
(cherry picked from commit e2fa14270c8767e53e2c023ccfec203504f38822)
2025-09-30 09:26:34 +08:00
hemai
cd5566aee5 FIX: disable multi-color with ext when ams enable
Jira: [STUDIO-13290]
Change-Id: I36f83a90959ba759e0616afe7b515dbd716b1020
(cherry picked from commit 5a4ec1f3a4175a927c37cea1577e6b276daa0f3c)
2025-09-30 09:26:03 +08:00
weiting.ji
1472b5ce21 FIX: Sync button text modification
Jira: STUDIO-13031
Change-Id: I9007557f4f6f2909250460fc9d6f5d4c4756adc6
(cherry picked from commit c588c5aad60d6eb7bc2b59fd93cbbfbd5ed2849b)
2025-09-30 09:24:26 +08:00
qian.wang
041673dc85 ENH:[Process/Filament] Modify wall_loops of H2D Profile Edited by wenwei.huang
Change-Id: Ie20f4301dc574cb24b5a0c9b85386b12906be89f
(cherry picked from commit e056259fcc0d0584a70fab1dff0de700007b5905)
2025-09-30 09:24:14 +08:00
milk
491bcd294f FIX:Reset calibration picture when sdcard print
jira:[STUDIO-12656]

Change-Id: I3c96d88b50bb4638a0c094e5766fb3c6877f597e
(cherry picked from commit 5958ba55842557560e70772bcf1321000c5fbf2f)
2025-09-30 09:22:32 +08:00
milk
8af893ad75 FIX:Fix dev_name miss question
jira:[STUDIO-12655]

Change-Id: If74ca19675a11705b26f3042e5d01711ffed4e62
(cherry picked from commit 8e35dc81aec41e11ad0fbeac96caa54233bdb633)
2025-09-30 09:22:24 +08:00
shsst
de718ce420 ENH:[Process/Filament]Modify H2D machine_start_gcode Profile Edited by xuanquan.liang
Change-Id: Ibc69a2f3c417e2028856821544685bf1e1aecc7d
(cherry picked from commit 14be448b8d0928be50b1be65cc3b6ee3f4ec13f1)
2025-09-30 09:16:29 +08:00
haolin.tian
d6e87fc0b7 ENH: delete useless function, delay start_device_subscribe after mqtt_connect called
jira: [STUDIO-13135]

Change-Id: Ibce80b043d08f6c1c7baa6611c3cfa2f0c85f2f5
(cherry picked from commit c2ff073525937fb571ea8d3bfae55231adaa691d)
2025-09-30 09:11:39 +08:00
chunmao.guo
92a8b0b43e FIX: ScalableButton size
Change-Id: I944dc4fb96a58641aa8502233ffe87dedc128657
Jira: STUDIO-13262
(cherry picked from commit c78a697f0ee4a40009373cb560def12e4553fd40)
2025-09-29 23:57:56 +08:00
zhimin.zeng
7f71c59490 FIX: Upgraded P1P to P1S shows up again as a P1P
jira: STUDIO-12944
Change-Id: If234cbd96cffa547e9cae47a71875efd1b097a25
(cherry picked from commit 2fa053dadef5750d1888743866ebca2867c85f7a)
2025-09-29 23:46:13 +08:00
zhimin.zeng
4a3fa5141c FIX: error wipe tower gcode
jira: STUDIO-13101
Change-Id: Ic1e2aa294c290e208074a6a65d6f80c705ab7dc6
(cherry picked from commit d4deb67dda0a6a92622f0126706110518b90a8bd)
2025-09-29 23:44:50 +08:00
zhimin.zeng
0cb19a2bac FIX: the layer time of PA line display nan
jira: STUDIO-12996
Change-Id: Ib03dc506bfdc8f7f2c0a8cff89ba6e2d4b784988
(cherry picked from commit b8e1be7b3cb9d2948fd2fe45c280b1ec3bcea525)
2025-09-29 23:40:40 +08:00
chunmao.guo
7aca9f9535 FIX: DropDown render y position
Change-Id: Ic8962de615f36477c8a7ac62cee4261cd9c259e5
Jira: STUDIO-12904
(cherry picked from commit 725fc1dec273ac848c166896558104b9b8c2bde3)
2025-09-29 23:40:00 +08:00
milk
09c5768484 ENH:Add translation for on/off/auto
jira:[STUDIO-13113]

Change-Id: I6b7ec64c13c664b0a2ea01ccf29dd147a2f75f32
(cherry picked from commit c90e991f1f67a3047585532159c3ae0e74f986b5)
2025-09-29 23:39:55 +08:00
milk
3697abe3a9 FIX:Change the note when ams empty
jira:[STUDIO-12764]

Change-Id: I3dc400184840edb099a62b5dbc0cddf6bc67cd08
(cherry picked from commit ab983c261b5438e611ae3978a93690fce61b3179)
2025-09-29 23:39:50 +08:00
milk
9b91070ca9 FIX:Adjuct the AI detection UI
jira:[STUDIO-13060][STUDIO-13059][STUDIO-13028]

Change-Id: Ibfb37b9e7f82956e1b6e8d5cf561e45dd078efde
(cherry picked from commit 8cf3c7a8600dfcfb022a8d8595a43ea63ac9ef9b)
2025-09-29 23:39:44 +08:00
xin.zhang
d0cc4b35ee FIX: only enable this on windows, since there are freeze problems on mac platform
JIRA: [STUDIO-12929]
Change-Id: If793d72db63ba00f4a65f09c024d07fd5e7776c3
(cherry picked from commit 7054f18e2b26b562d336401980a0f54df2050f01)
2025-09-29 23:38:35 +08:00
tao wang
4e99a042bb FIX:use a complete certificate
jira:[STUDIO-13224]

Change-Id: I40fab9a529efb0c7a158f0c74fa33b044e2d7c19
(cherry picked from commit f75448910c279287556ff8347606c87138c22347)
2025-09-29 23:38:22 +08:00
SHSST
c7f50ec485 ENH:[color_code_json]Update filaments_color_codes
Change-Id: Ic4ae9cd3293b58d0f28cdd5007db89f26ee4439f
(cherry picked from commit a182c4b13b3d825d23c5351e8393bb1fe784c375)
2025-09-29 23:38:12 +08:00
Noisyfox
ef0748e96b Ignore the index when accessing a scalar variable 2025-09-29 23:34:26 +08:00
Noisyfox
d4273b4f70 Fix compile error 2025-09-29 23:19:53 +08:00
Noisyfox
8611125008 Change the worker to store the job using shared_ptr, so caller can still hold a reference to the job for other purpose 2025-09-29 23:15:15 +08:00
SoftFever
7736b31015 update profile version 2025-09-29 22:57:27 +08:00
SoftFever
200c8c3cb8 update locale 2025-09-29 22:17:39 +08:00
SoftFever
f1884a4264 [Profile]add missing cover image 2025-09-29 21:43:51 +08:00
jiaxi.chen
ddee9f3976 FIX: dont change when choosing NO
jira: STUDIO-12279
Change-Id: I5b0a6da4938665d84dbb82e502d1d59df46c61ff
(cherry picked from commit 959d0dff91b14409e543f273191d904665c21c94)
2025-09-29 20:43:42 +08:00
xun.zhang
54f758055c FIX: potential cli crash caused by missing params
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I1b61e44414118e40e421592649928664fdecf092
(cherry picked from commit 6deb3db25b7a7e4bc7a71d75f661b3f4b996d73f)
2025-09-29 20:43:20 +08:00
jiaxi.chen
9982eaa036 FIX: supports use filaments that aren't designated for this layer
jira: STUDIO-13216
Change-Id: I17272f45475eb281dfb0aa731b55363e0dde7427
(cherry picked from commit 209878dbc9d257675c8c638d141cebfc9858ed71)
2025-09-29 20:43:07 +08:00
SHSST
8ee131ad0f ENH:[color_code_json]Update filaments_color_codes
Change-Id: Ic495d6fd7e35b69bfde540710747799d17932e2a
(cherry picked from commit 29e520892173731fe64d6578fd774dd2dc8350b6)
2025-09-29 20:43:02 +08:00
hemai
89123e519a FIX: if has ams then disable multi-color external assist
Jira: [STUDIO-13222]
Change-Id: Ife9bf7ad0fa0d4688a4052dd0f90734dab95a623
(cherry picked from commit c030cc2ca31eb19e063597dbabf9fc320e153eec)
2025-09-29 20:42:24 +08:00
zhou.xu
fad8043f5e FIX:Optimize display of ImageDPIFrame
jira: STUDIO-12783
Change-Id: I65bb9f6d1f70f921717acdf1dd24ab1d6e936e80
(cherry picked from commit 83594b82e0a9917d9be3f8cc54c2aa14d0f6bc57)
2025-09-29 20:41:21 +08:00
chunmao.guo
12725f763c FIX: filament list group problem
Change-Id: I0ab9590e88336a8f95285df5f346f45eebe8d32a
Jira: STUDIO-12522, STUDIO-12209
(cherry picked from commit efeb19a292a38e2f8a4d117b5bfceddd644e4ce0)
2025-09-29 20:41:15 +08:00
xun.zhang
0f83d15962 FIX: crash and wrong flush data in cli mode
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ibaad369e4dc6d0307f709c1c6e543a7a985b0345
(cherry picked from commit 83a2c405e282a1fe39b1dbd637e480765b6b6551)
2025-09-29 20:41:07 +08:00
hemai
3748ac6e93 FIX: set multi-color with external label hiden in normal
Jira: [STUDIO-12520]

Change-Id: Ic7329c00bdc65820b26bc87f508b3adc91799c6c
(cherry picked from commit 2f7bfa883729f8c94a4d2f619de79bcf907ea487)
2025-09-29 20:40:03 +08:00
fei2.fang
a7da1da78a FIX: Include missing file path in translation list
jira: none

Change-Id: I5ec5f33d41caa52c285a79072e74839faa18002a
(cherry picked from commit 3cadf39cfe462e7c14ba45ed68ab6a450c9abb4e)
2025-09-29 20:39:29 +08:00
xun.zhang
bc02e48dc0 FIX: display the minimum flush data
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)
2025-09-29 20:38:38 +08:00
SoftFever
a7b237f862 Update SoftFever version to 2.3.2-dev 2025-09-28 22:12:14 +08:00
xun.zhang
cf9a38bbc6 ENH: modify max acceleration for O series
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I0f8554a30a98f0d5b022f26050f49733eccd528a
(cherry picked from commit 7242e97cc2f76713ec0f6433eb27b526e0306d67)
2025-09-28 17:31:15 +08:00
fei2.fang
ad7725a020 FIX: Add overflow protection and clean up filament picker internals
- 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)
2025-09-28 17:31:07 +08:00
fei2.fang
6247ec1e83 FIX: Revert unintended font size change in official picker dialog
jira: STUDIO-13152

Change-Id: Ic3f26359a089a4cd1369fd2f06f450c4ae540634
(cherry picked from commit fdfd5fd479573f6f7871600f5a9b442cb13c8c68)
2025-09-28 17:30:57 +08:00
zhimin.zeng
c945bfa36c FIX: slice error abort Label object id error
jira: STUDIO-13010
Change-Id: Ia1bc287e2d57201e2d28469685490397f5a213b7
(cherry picked from commit 488929eb0850bf6adc300ac133b1cdd7d7b52af7)
2025-09-28 17:30:11 +08:00
qian.wang
70f5abfdc1 ENH:[color_code_json]Update filaments_color_codes
Change-Id: I6359d4a935177aacf5c38af905379e871c7ab2bd
(cherry picked from commit e3dc288a7d9226838b8a01cb70fd73c2bb207d11)
2025-09-28 17:29:50 +08:00
hemai
a7ad18e66e ENH: support multi-color with external
Jira: [STUDIO-12520]
Change-Id: I34c88b6a84514a0e56e65723f91d1a2940128e8d
(cherry picked from commit b8879ec648e038080628190fc363251229bbd5ee)
2025-09-28 17:13:54 +08:00
shsst
ca87a0a395 ENH:[Process/Filament] modify custom gcode of H2D to adapt 01.01.04.00 Profile Edited by xuanquan.liang
Change-Id: Ia0dbbd88774eb435cf88270faf5713481131a114
jira:None
(cherry picked from commit 2f300f48e10639af9454321ec7783951f9a06bc1)
2025-09-28 17:11:23 +08:00
xun.zhang
a092c48642 FIX: find the first layer with enough space to extrude
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)
2025-09-28 17:11:05 +08:00
zhou.xu
e389072544 ENH:Protect the bitmap
jira: STUDIO-13044
Change-Id: Ib3c3332db9f902e4829a5eea8039f17834b60be8
(cherry picked from commit 7110c01dc7219a808af0eb94af16f1fd02c6687b)
2025-09-28 17:10:55 +08:00
zhou.xu
b0656fefbe ENH:Protect the bitmap
jira: STUDIO-13044
Change-Id: I12ae5c8508fadd76f2dd3efd8d95c1547133a634
(cherry picked from commit 3ab0610b90fe17580b09d1edf538afd6bcf14b6e)
2025-09-28 17:10:41 +08:00
fei2.fang
b6a68ef312 FIX: Improve name display and official filament handling
- 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)
2025-09-28 17:10:30 +08:00
weiting.ji
6075302f98 FIX: clien crash when double extruder filament preset switch to single
extruder filament preset

Jira: STUDIO-12689
Change-Id: Ifab01dcbc0f42684655e3feae923bfeb82965d01
(cherry picked from commit 0b57ff3b537cf7c2fdc503ffd3e5b5567e84c5d4)
2025-09-28 16:52:43 +08:00
chunmao.guo
013d2d8d6e FIX: filament variant index & override nil value
Change-Id: I828fff09df39a60d59af516c969466d9b09e503f
Jira: none
(cherry picked from commit 1745657e222b8e9d7c96fcca16581b2deac526c6)
2025-09-28 16:46:34 +08:00
milk
4bb326db16 FIX:Fix incomplete prompt message display
jira:[STUDIO-12797]

Change-Id: Iefdcf23477b183e7c208092d9da347ee5669f8b3
(cherry picked from commit 081dfec94a95797847f67783f273632a78c3ead2)
2025-09-28 15:02:37 +08:00
milk
4deb47554a FIX:Modify the calibration interface display issue
jira:[STUDIO-12708]

Change-Id: Ifd10db6df9f7ad3263d33817ec8f4c23abc16bab
(cherry picked from commit 25741d8baefb44e643eeb184e3922650a288def0)
2025-09-28 15:02:29 +08:00
milk
78734352d8 FIX:Optimize the pop-up promote for turning off the lights
jira:[STUDIO-12654]

Change-Id: I5a1e2056f530b8c73ef93031308facfe966e3e62
(cherry picked from commit 735e8a3259544bf2d8ac02a7ac6ca271d4506da1)
2025-09-28 15:02:25 +08:00
milk
bdf1caffd4 FIX:change filename from 3mf to gcode.3mf
jira:[STUDIO-12827]

Change-Id: I0070f1e450b8b9d09507062c62efc75f1f361e6d
(cherry picked from commit d4a9ad1fdc57c93f3a51354908c29258f8c665fd)
2025-09-28 15:02:10 +08:00
fei2.fang
ea826815af FIX: Show RGB for custom color and allow staying in official picker dialog
- 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)
2025-09-28 15:01:11 +08:00
xin.zhang
0bbd563a79 ENH: Add label if the button can not be used
jira: [STUDIO-12929]
Change-Id: Ia4026282a44fd1a83a4292d7a7d11d43ed035db6
(cherry picked from commit e65755a474bc36bee0f22b7a6fb9c7eb5f86be65)
2025-09-28 15:00:22 +08:00
xin.zhang
d4115e0837 ENH: use the en style for PrintOptionItem
jira: [STUDIO-13009]
Change-Id: Ie05b683adf28b2ade4f7333678b086e328d7e525
(cherry picked from commit 360c92dfac7a77e14537e8c226eed193f14ea27c)
2025-09-28 14:59:18 +08:00
xin.zhang
025294894a FIX: skip the color codes with undefined color syntax
jira: [STUDIO-13037]
Change-Id: Ic733a2b67df49556c16f4392ecf61d95471e9aa8
(cherry picked from commit 6658f522166e432b383669903a0b30ee15cf6cdc)
2025-09-28 14:59:12 +08:00
fei2.fang
e3cb884ee8 FIX: Correct the label alignment problem on MacOS
- 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)
2025-09-28 14:59:03 +08:00
zhimin.zeng
ba4cc19e6c FIX: the info cannot displayed in Chinese language
jira: STUDIO-12985
Change-Id: Ic2d52bc94129c2c568ebc4b3dc2b0a3fe5a65907
(cherry picked from commit 209c29400ca203e4ccd26863d2b78d5802275131)
2025-09-28 14:58:53 +08:00
xin.zhang
fcbad94b91 FIX: check filament type instead of filament id
jira: [STUDIO-12954]
Change-Id: Iab008c698e6c71a6df2ac4a81801681eb4b94d6c
(cherry picked from commit 295a6d51ab2f59bfeef84e9ff33dac3c0aea1d93)
2025-09-28 14:57:48 +08:00
xin.zhang
2be0569e3d ENH: update filament color file; the color name may be empty; using set instead of unordered_set
jira: [STUDIO-12346]
Change-Id: If83835fea7108babd2b19c26394ad0429493f394
(cherry picked from commit 85b07c170cd0e30f75dfab8ef68b02b0468c9f92)
2025-09-28 14:57:36 +08:00
jun.zhang
bf3875e4c9 FIX: menu item for gcode to obj
jira: STUDIO-12517

Change-Id: Icb4b0666f5935110f29c0b224329efbd80ade98e
(cherry picked from commit 9b126c6eade3cb0f3e0053e813152fb86841d946)
2025-09-28 14:57:09 +08:00
jun.zhang
9e990fc5c1 NEW: export toolpath to obj
jira: STUDIO-12105

Change-Id: I4cd110a5b63996b5dc81cb307ac6d257a817bc51
(cherry picked from commit 67f018c0eebbd467ac76e35576a5c8c9412bb67f)
(cherry picked from commit 09c9493fc44cf1da417ab2fd836d97d1501a2550)
2025-09-28 14:56:55 +08:00
zhimin.zeng
885e905e76 FIX: fix some calib dialog bug
jira: STUDIO-12984 & STUDIO-12979 & STUDIO-12978
Change-Id: I29fadd20b29c76a288755122dd027820fed9252e
(cherry picked from commit 1739177f3cd10b81fd1924059f6da9ba4778ba5a)
2025-09-28 14:22:46 +08:00
fei2.fang
27943f7047 FIX: Correct virtual tray loading and multi-color material display
- Fixed incorrect is_array() check on vtray["cols"], causing virtual tray init failure.
- Rewrote AMS grouping logic using iterators and set<int> for cleaner and safer traversal.

jira: STUDIO-12955

Change-Id: I09a68e259b56864260abb6c59ff9b1bf7ec2823c
(cherry picked from commit 60c47473047a3fba20d59cd974179537c116524d)
2025-09-28 14:19:10 +08:00
fei2.fang
470ed6af5d FIX: Support dark mode in filament picker
- 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)
2025-09-28 14:19:02 +08:00
fei2.fang
9ee76e4775 NEW: Official filament color selection approved
- 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)
2025-09-28 14:17:52 +08:00
xun.zhang
5a1dc90e8c ENH: add prompt for incompatible filaments and nozzles
jira: STUDIO-12873

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ieb79a35e0609e7687fdcf31742df3a08fedc925b
(cherry picked from commit 1ef32833035629c1b3644d77fdc9c234992090f3)
2025-09-28 14:03:52 +08:00
zhou.xu
94732b6bad ENH: 3mf: fix save fullpath issue
jira: STUDIO-12970
Change-Id: I71bbd9fd3e1bae669fcc29822f75a3ab9025af56
(cherry picked from commit da0f893433049899227a71e5ddc79833431ce39a)
2025-09-28 13:12:11 +08:00
xin.zhang
3ba39f694b ENH: update the filament color codes
jira: [STUDIO-12346]
Change-Id: Ibf1ce492f43a50aab0bd356494d9ec8a22eb201e
(cherry picked from commit 9e53f6c6bf06ce2c097f617d528ac6f95406b3b1)
2025-09-28 13:08:23 +08:00
xin.zhang
1635ce28d6 FIX: the sort function of FilamentColor
jira: [STUDIO-12965]
Change-Id: Iadd8342f3b67877e8b41c28d87f5150528f340a9
(cherry picked from commit b56ca2f5f619bbafd5473416ab9bf599d2a05e7e)
2025-09-28 13:08:09 +08:00
lane.wei
bb08bb0e6d ENH: presets: add logic to process filament preset splits
jira: STUDIO-12952
Change-Id: I232434fb4b1d53a7379be2f745457a83bf923677
(cherry picked from commit b9f584281ae801a3ee542c1ebd81c6cb7dd35cde)
(cherry picked from commit 9b1f5496aef411218d538a07386fccb2a085435b)
2025-09-28 13:07:55 +08:00
qian.wang
0f96e397f5 ENH:[filament/process] format bbl process file
Change-Id: I1bf9983e4ed046c5f1b4b8b18c8f756dac8709bc
(cherry picked from commit 0317857fd5d9ddf0c71b53c68308415a0a06c891)
2025-09-28 13:06:35 +08:00
shsst
a42c933756 ENH:[Process/Filament] Split PLA Basic PLA Matte ABS ASA 0.6 layer height and volumetric flow modification Profile Edited by wenwei.huang
Change-Id: I552dfb8e3370a4ad9072b0d8b5b0c577fb9ccb12
jira: None
(cherry picked from commit 234e9c359f90b11bc6cbf4fb9cc2db492a59ef71)
2025-09-28 12:57:24 +08:00
milk
7a59122f7a ENH:refine printer function option
jira:[STUDIO-12357]

Change-Id: Ie48fb2302279795f41f8b65856bd64b64d2b14f3
(cherry picked from commit 1af87a5309a311e1c2d2c96d757ed7723bd373fb)
2025-09-28 11:39:53 +08:00
milk
3a3f6d3a43 FIX:Disable when the AMS slot is empty
jira:[STUDIO-12764]

Change-Id: I9baea63965159f9416d91e6dea40962ec292b9e2
(cherry picked from commit 5aff60e9840343e5465833259cca2d8658a8fce7)
2025-09-28 11:39:24 +08:00
lane.wei
18b9bffd02 ENH: 3mf: fix save fullpath issue
jira: no-jira
Change-Id: I3077cceae2dfadc2882b4eb1de2234c5c445f342
(cherry picked from commit 5776d8e3fc4f8578b9ed397bd0afe0f9668cd634)
2025-09-28 11:38:31 +08:00
xin.zhang
4f8f642655 ENH: suite to DPI change for score panel
jira: [STUDIO-12923]
Change-Id: I22bb0d8ebd13d23f46bd785d3a4848669185175d
(cherry picked from commit 187040d70c9416f5f3ca9dbe74f1d1d09cb23218)
2025-09-28 11:38:17 +08:00
zhimin.zeng
7667e188d7 FIX: flowrate cali adapt to new protocol
jira: STUDIO-12834
Change-Id: I892219350d6dd46bc92037c146af1911214d598d
(cherry picked from commit b86677be4e5771da4362ea41dfeb3a161fcc33f7)
2025-09-28 11:36:07 +08:00
xin.zhang
c415eea556 FIX: use data to check the fan control
jira: [STUDIO-12917]
Change-Id: I74f816a21beb2dfb4191bb73298882efd22a6191
(cherry picked from commit 4f0f4fc64802d777d11105d433e59f57168bfd66)
2025-09-28 11:35:57 +08:00
xin.zhang
1e9febbe4d ENH: add some support for fan control
jira: [STUDIO-12076] [STUDIO-12373]
Change-Id: I04e23acc802987dc7a657274074abb961f692896
(cherry picked from commit 359d52c9139b7a1aae59b990dc03f45ce4a1bc89)
(cherry picked from commit 9e16d9a4a6ce059dc134ffd388b753490dff0946)
(cherry picked from commit 4cdd1937fea90c3dd1cf0c73a7cd5172346abb40)
2025-09-28 11:35:50 +08:00
xin.zhang
95027d72db FIX: DPI scale for TempInput
jira: [STUDIO-12907]
Change-Id: I7d9751856cb69babb7093973136bdfd9fad4f501
(cherry picked from commit 03adbd4becf1106d02ac4c8251bc3dbfe84c517d)
2025-09-28 11:35:44 +08:00
Noisyfox
03e056e278 Merge remote-tracking branch 'upstream/main' into dev/h2d-2
# Conflicts:
#	src/slic3r/GUI/GUI_App.cpp
2025-09-28 11:09:24 +08:00
Noisyfox
82079ea16c Allow negative vector index 2025-09-28 11:07:28 +08:00
Noisyfox
81978dc558 Allow referencing a vector without explicitly specify the extruder id 2025-09-28 10:51:40 +08:00
Noisyfox
7de52de353 Fix plate name 2025-09-28 09:12:16 +08:00
Noisyfox
042cf84614 Update color 2025-09-26 23:00:03 +08:00
Noisyfox
c64ee8156c Fix crash 2025-09-26 22:29:23 +08:00
Kunlong Ma
5a6cbc0a9a NEW: support send to sd card with cloud
JIRA: STUDIO-7378

Change-Id: I95fee50db29825e508d276d52c7a3e85e1347ebd
(cherry picked from commit 13db95ceb4f18b8cbce1e67447eeaa6ee36cc8ad)
2025-09-26 22:29:12 +08:00
Noisyfox
dc494da0b3 Move earcut to deps_src 2025-09-26 17:16:20 +08:00
Noisyfox
2c6bb1a443 Update layout 2025-09-26 15:21:23 +08:00
Bastien Nocera
2048f57cda FIX: Fix missing std::map declaration
/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)
2025-09-26 14:38:45 +08:00
Bastien Nocera
13d92131e7 FIX: Fix missing BOOST_LOG_TRIVIAL() declaration
/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)
2025-09-26 14:38:38 +08:00
Bastien Nocera
22c42323a4 FIX: Fix missing boost::lexical_cast declaration
/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)
2025-09-26 14:38:31 +08:00
hemai
b4c08f9bdf ENH: disable skip when objects number>64 or model is not support
Jira: [TUDIO-13411]

Change-Id: I93617965e69ba72a1cc34dd0981b8fd92eb58d3a
(cherry picked from commit 417109e5f02613bd18eae125705effa7ae61cfda)
2025-09-26 14:35:06 +08:00
hemai
6148c73ffc FIX: scroll view can't slide && cnt_label display incomplete
Jira: [STUDIO-13176]
Change-Id: I32dfc793a431412a7df02ae2b9d952d175d97deb
(cherry picked from commit bdda60dd1dc37a4750cdb7b426de9e9518c581ea)
2025-09-26 14:34:35 +08:00
haolin.tian
219300277c FIX: adjust ortho, do not scale source image
jira: [STUDIO-12333]

Change-Id: I4fabccc9c489ed7fa4a8ad1239ed26c1710b3ee9
(cherry picked from commit 3fbb9946d1deee1855498e97cc66844e1f2e54aa)
2025-09-26 14:32:29 +08:00
hemai
b49ca90940 FIX: printer file system network reconnect bug && invalid obj bug
Jira: [STUDIO-13295]
Change-Id: I3b0c907ab4357d09ad592a0d937d83aaa15e8680
(cherry picked from commit 928d6b4c6a8c3ea8c9bd179c51afdb7dc55f45ce)
2025-09-26 14:31:47 +08:00
hemai
ddf6ed00c5 ENH: if nothing selected then disable aplly btn && update plate index parse
Jira: [STUDIO-13299]
Change-Id: I1ce7271d005f7fec4d71ece9db13916a9fcc1e1d
(cherry picked from commit b2386964814dee68a1936da912eea339f5317ddc)
2025-09-26 14:30:21 +08:00
hemai
7d147cc550 FIX: parts file download failed && canvas display error
Jira: [STUDIO-13253]
Change-Id: I6ce11c0ceb1c4f7ed49c41eb9c6d7a6d96e866f9
(cherry picked from commit 37f742007bc168d8a3365ca617c7bd27bafca038)
2025-09-26 14:30:07 +08:00
hemai
1928add5a1 FIX: partskip button display bug && cavas update bug
Jira: [STUDIO-12687]
Change-Id: Ibb42dab945be9b9b4b8b8ac8f2c268960d553325
(cherry picked from commit 15d8fb70c93d243a1592c050302e76867ed6582c)
2025-09-26 14:28:27 +08:00
hemai
17ed76a033 FIX: update SkipCanvas to SkipPartCanvas
Jira: [STUDIO-12687]

Change-Id: Ib50b7711ced0c3261586faae37ecc9054ea81183
(cherry picked from commit 7b4792d823a1b29ca3fe7f500ed30bd4211770d6)
2025-09-26 14:26:34 +08:00
hemai
5bc21568cf ENH: advance part skip dialog
Jira: [STUDIO-12687]

Change-Id: Ie6805c57f478ae5a10f81b49dc5a4e45fb40dbc7
(cherry picked from commit 8ed17efc32f8c635dc50e27bf7146fd2eb70941d)
2025-09-26 14:25:55 +08:00
Noisyfox
7a90b26e57 OpenCV don't build its own libjpeg, to avoid symbol conflict 2025-09-26 13:29:14 +08:00
hemai
df5bf0ae29 ENH: support parts skipping function
Jira: STUDIO-12687
Change-Id: I244cb611954590bd5e741f0d2701f359426a33a2
(cherry picked from commit e7e90e0f8ca0106a51d18d83efa0de56b332ddc0)
2025-09-26 10:55:19 +08:00
milk
10428f71c0 ENH:Optimization of File Transfer System Part2
jira: [STUDIO-11777]

Change-Id: I12744db7d2e3b53425454d632533768c54524677
(cherry picked from commit 4358e9ce351c5784e392a75d1ffcf2f54e1916ec)
2025-09-26 10:55:19 +08:00
milk
32c055ca7a ENH: Optimization of File Transfer System Part1
jira: [STUDIO-11777]

Change-Id: I733fd3532caa19546763ab8a72eb7667d5ffec53
(cherry picked from commit aa52c99076a78e2c8fd8d4e4b0b64de0bc761469)
2025-09-26 10:55:19 +08:00
Kunlong Ma
70c0b116fc FIX: fix some issue in sending files to external storage through cloud
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)
2025-09-26 10:55:19 +08:00
Noisyfox
48149ed3c0 Fix spacing between slice and print buttons 2025-09-25 23:46:47 +08:00
Noisyfox
435faed968 Hide nozzle flow selection 2025-09-25 21:33:03 +08:00
Noisyfox
3c981f4113 Fix printer info sync 2025-09-25 21:14:51 +08:00
fei2.fang
008a98ccda FIX: Align printer preset controls in sidebar
jira: STUDIO-12397
Change-Id: I728d84b8862de0a72ef467388cbf4c63b24fdcc8
(cherry picked from commit 7ceff77207916b059aa1add0f9869d0e55a59023)
2025-09-25 20:48:14 +08:00
zhimin.zeng
a776c9ae56 FIX: the manual cali image changed incorrectly for multi_extruder printer
jira: STUDIO-12912
Change-Id: I5315d62689d40dddfa1b804220efcd1fa7c872b4
(cherry picked from commit 91a2c4b68a69cc4d927fe24ffdffbe261b33ea68)
2025-09-25 20:44:24 +08:00
noisyfox
69d5b4ae48 Fix build error when PCH is not used 2025-09-25 20:33:50 +08:00
xin.zhang
cc358aa945 ENH: update the log trivial for parse_json
jira: [none]
Change-Id: I66fd48435ddd6164f848f324ffb210d24e42857c
(cherry picked from commit aa1cad57f95602a53c57043be2bf3a11b627223f)
2025-09-25 17:36:50 +08:00
xin.zhang
dcf3505bb4 FIX: the printer name not display
jira: [STUDIO-12821]
Change-Id: I8e99f3c09446fcdc542b61479bbcbd38fb77aaf2
(cherry picked from commit bd1d5dcce03b4de1229926f54816a6bcf953a2f2)
2025-09-25 17:36:37 +08:00
xin.zhang
88eae5d217 ENH: supporting encoded filament color
jira: [STUDIO-12346]
Change-Id: I7f5ce7806acb6fdeb3e3d9db52a0b96e5fadd759
(cherry picked from commit a7bdc2707d3825327258965c90c33836a7da628b)
2025-09-25 17:36:29 +08:00
lane.wei
98a32f57aa FIX: CLI: fix the default wipe_tower_x incorrect issue
jira: no-jira
Change-Id: I847a0fc0e69bfdf80cea68cafabaac1daee98b8a
(cherry picked from commit 5b8af6cbe60c1a6a3fc11b5275131d4895d2f838)
2025-09-25 17:22:35 +08:00
xin.zhang
59ff362296 FIX: update the scale of ColorPicker
jira: [STUDIO-12704]
Change-Id: Iac12a24fcb880b0c5db6f62b1b0e38a9c5d60e9d
(cherry picked from commit c8bb7fb3acfc65312cacb4b38f0a7ba62810046a)
2025-09-25 17:22:24 +08:00
xin.zhang
3c4e28eb6c ENH: Filter the AIR_DUCT_EXHAUST mode in Studio
jira: [STUDIO-12796]
Change-Id: I1ba64436a3b8ad4a244e9a7674c65af0b5043e50
(cherry picked from commit 79165fbad8f8654153f7dcc362ab386b00a335dc)
2025-09-25 17:22:18 +08:00
zhimin.zeng
0431ae4e17 FIX: update edited preset when delete filament
jira: STUDIO-12198
Change-Id: Ie1eedf1a8b0acda8fb4292eb970f4aa416fa9181
(cherry picked from commit 9c8530946d888030061cc87b8a35c24ed583506e)
2025-09-25 17:21:54 +08:00
xin.zhang
8f943486a1 ENH: add wiki for replacing nozzle
jira: [STUDIO-12864]
Change-Id: I3804d3599eb8746902f23b59626fe8c04e949dca
(cherry picked from commit b9428cd32ff8c1c748377cab1e5539fed911177d)
2025-09-25 17:21:47 +08:00
xin.zhang
8dc43f1b67 ENH: optimize the display of drying left time
jira: [STUDIO-12863]
Change-Id: Id326bf25b5631c97e15e2fa8f7f74d41b84ca6ee
(cherry picked from commit e256324fb9eb299dae48e32193ce97b0b2b97f76)
2025-09-25 17:18:29 +08:00
xin.zhang
2d23db7890 ENH: support mqtt control
jira: [STUDIO-12442]
Change-Id: I51e43692c692c910e94d4e67349a70377b057d1c
(cherry picked from commit 5c4c3c7f953a980aebfaed5120a65e81ba79b56f)
2025-09-25 17:18:25 +08:00
zhou.xu
fb2ecdc6d9 ENH:modify list.txt
jira: STUDIO-12878
Change-Id: I4f1b465e95501bf9e35619902f0403b44bbb9152
(cherry picked from commit 3c33add1dbb308ee4250e6638c239b4a1d6d7d12)
2025-09-25 17:18:16 +08:00
hemai
527def0887 FIX: limit long model_name from makerworld
Jira: STUDIO-12553

Change-Id: I4d43d2b3abbb392baad2ae72d4197a6e61ab3f51
(cherry picked from commit fd0f7688508c0ff2a420bff34beae280cc24cf2b)
2025-09-25 17:18:06 +08:00
hemai
39360790c7 ENH: add new error message for AMS change filament
jira: STUDIO-12391

Change-Id: I358f8b09f0ce5d7d0efe91eb6dea1d89509033da
(cherry picked from commit 811823be0f5ef0e919f1084eac84c491e27971ac)
2025-09-25 17:17:34 +08:00
jiaxi.chen
68d7bd9e17 FIX: Interface_not_for_body is ignored for detached support layers
jira: STUDIO-12826
Change-Id: I3ab585aa899dee5cf006effb3cea15b5e64332eb
(cherry picked from commit 56e239e38103a0f1631f0174c9153e239ab5c802)
2025-09-25 17:12:35 +08:00
xun.zhang
ec295405c1 ENH: do not insert m191 if machine start gcode already has
jira:7054

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I10edb3b9cf9f1120dbb1572fa84c7719d57b58f7
(cherry picked from commit 285d83407730b6f9ff4df916fd12db41a2969e15)
(cherry picked from commit 080b9026aea3f616db635554cee0afa661c01ac9)
2025-09-25 17:09:10 +08:00
xun.zhang
b636bbaf2f ENH: add max print z in placeholder
jira: none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I55caf23b11cc0194f9c155364e6bb02e298f9392
(cherry picked from commit 724c9b0eb5e73517c921ea809bb7f7e82325130b)
2025-09-25 17:02:21 +08:00
xun.zhang
d6a8f881de FIX: add a new way to calc params size
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I75a983a8c2ec1d9e4b691e32e8beead0868d2644
(cherry picked from commit 55162b1f7d4f9e0abc3de961fda5085b66f73b2f)
(cherry picked from commit c86da564e0cd4155b155b84debd7f0f0da1b20d4)
2025-09-25 17:00:45 +08:00
xun.zhang
b351fa3b50 FIX: only meature m29 once in machine start GCode
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I3661159dd09f6d179eae3a0b1f2bbc14277be312
(cherry picked from commit 60492b7b0b57dc243cc8ac17f2cad638724aaca2)
(cherry picked from commit 8555af21cacaa10e74715e771aa0866052a31bd6)
2025-09-25 16:49:01 +08:00
xin.zhang
a339677d08 NEW: add some filament check supports for printers
JIRA: [STUDIO-12604]
Change-Id: Ic0e7b517319621907c3c6b8ad82dbcf881c780e8
(cherry picked from commit 55a8c98e9125cdacc801ecebfd82acdcc3e8e7f7)
2025-09-25 16:38:56 +08:00
xin.zhang
6f7704470f FIX: do not change others if mode not changed
JIRA: [STUDIO-12375]
Change-Id: I2ba64346706f22a6f143242c9236605de033754b
(cherry picked from commit 7b031c1536440dad942d536c831e316c5c57e677)
2025-09-25 16:25:59 +08:00
xin.zhang
0fd471fdcc FIX: the image size
jira: [STUDIO-12374]
Change-Id: Ib02d0bb53911c92e2d7ca2cc16c835275e3a6460
(cherry picked from commit a1906daf4b480c8990d7af79e0de55c34cd47e47)
2025-09-25 16:25:54 +08:00
xin.zhang
14dd1cf968 FIX: studio can not control lamp if not FDM mode
jira: [STUDIO-12573]
Change-Id: Ibc51cf6e1024fb25026ad61e7a71398451603cef
(cherry picked from commit d9bdf975663712b80c2d96b50ffb94632fd380cc)
2025-09-25 16:25:48 +08:00
tao wang
38e6589bcb FIX:fixed button not refreshing (page faults)
Change-Id: Id546112398dd2037fe839133bdd3669ed8281226
(cherry picked from commit 542aa02acde720ff73924448b27946ba69b49c73)
2025-09-25 16:24:40 +08:00
tao wang
7a197a3d8d ENH:Reduce the number of page faults in AMS
Change-Id: I4bfb048ec62c35b515eecbb70c175fa0975d7f92
(cherry picked from commit 791be195475bd834c937fb63341713529e4f41b8)
2025-09-25 16:23:18 +08:00
xin.zhang
a036994e0a FIX: set the correct color for ext even if not match, since we can select it.
jira: [STUDIO-12706]
Change-Id: Iccf01a6d42872af9d8c48a82731dec99981ad5c2
(cherry picked from commit 08d4a458e7a0bd19f92aecb900a84dbdefb037b0)
2025-09-25 16:10:20 +08:00
xin.zhang
7044bf0022 FIX: check the null pointer
jira: [STUDIO-12264]
Change-Id: Icd0a64168576f45f91ac0d9090c838a17b86b1ae
(cherry picked from commit 3950ec7454ab236d88cb27681e065c510d71998d)
2025-09-25 15:57:36 +08:00
jiangkai.zhao
fd17dd6382 FIX:Crash caused by wipe_tower depth = 0
and remove useless assert

jira: STUDIO-12514,STUDIO-12474,github#7064
Change-Id: I8faf498251c8f7ca2c1eead463f38e8a3d836299
(cherry picked from commit 723e2d7ced6b466f2166085b8ca007762aaf17aa)
2025-09-25 14:45:44 +08:00
zhou.xu
2ba649d7ef FIX:add bottom texture
jira: STUDIO-11342
Change-Id: I69fd573b4d7b05135d5f280cf42d367421664cff
(cherry picked from commit 645f93fac732b8794aa1e99301bfe179a74915a7)
(cherry picked from commit 803a1dffde0f66c3076ae4fc80d4b821f34b03fc)
2025-09-25 14:42:57 +08:00
Andrew Sun
fd22fc9131 More OpenGL Core Profile fixes 2025-09-24 22:49:14 -04:00
Andrew Sun
cad887553a Fix bed grid thin/thick lines in OpenGL Core Profile 2025-09-24 22:49:14 -04:00
Andrew Sun
2cb5b02708 Fix crash in filament/color print view 2025-09-24 22:49:14 -04:00
Andrew Sun
9bee05744d Fix auto-switch to color print view type 2025-09-24 22:49:14 -04:00
Andrew Sun
f8a7589354 Clean up TODOs and commented out code 2025-09-24 22:49:14 -04:00
Andrew Sun
8ed12a8023 Styling changes for position window 2025-09-24 22:49:14 -04:00
Andrew Sun
8552f2efbf Wire up new position window from PrusaSlicer 2025-09-24 22:49:14 -04:00
Andrew Sun
72711231fd Fix incorrect feedrate for G2/G3 arcs 2025-09-24 22:49:14 -04:00
Andrew Sun
1394a3ccf2 Import PrusaSlicer G2/G3 arc discretization code 2025-09-24 22:49:14 -04:00
enricoturri1966
20f132e09a SPE-1739: Fixed calculation of gcode preview sequential slider endpoints
(cherry picked from commit 578921257d14e2c07611dfbb89cda5f9dc776e0c)
2025-09-24 22:49:14 -04:00
Andrew Sun
25c19c94b5 Enable seam visibility by default 2025-09-24 22:49:14 -04:00
Andrew Sun
d539540a65 Add support for Orca-specific extrusion roles 2025-09-24 22:49:14 -04:00
Andrew Sun
9359aa8607 Fix nozzle marker position 2025-09-24 22:49:14 -04:00
Andrew Sun
f696d19181 Add seq_top_layer_only config default to fix moves slider 2025-09-24 22:49:14 -04:00
Andrew Sun
2c342875c2 Expose actual speed/actual volumetric speed view modes, misc fixes 2025-09-24 22:49:14 -04:00
Andrew Sun
c92328c9cc Port libvgcode from PrusaSlicer 2.8.0
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)
2025-09-24 22:49:14 -04:00
zhou.xu
bb3f59e18f FIX:ImGuiInputTextFlags_Multiline should manual input
jira: STUDIO-12598
Change-Id: I7ad169d69bdbf04bb93329d7d23a5f4851123c76
(cherry picked from commit 86641262ac3d0a8a690126bdff64860bddc28114)
2025-09-25 09:42:36 +08:00
Noisyfox
8653f034e9 Fix crash due to profile variant difference 2025-09-25 09:41:54 +08:00
zhimin.zeng
8309c3f04f FIX: the radio box cannot hide when manual cali mode
jira: STUDIO-12160
Change-Id: Iae69bd504f20adca2314f6f8b0b04cc1c55e69f8
(cherry picked from commit ef8087ad76016994a5fffdc20f4415a091452597)
2025-09-25 09:19:07 +08:00
zhimin.zeng
554ce5004c FIX: fix the error display of default k value
jira: STUDIO-12546
Change-Id: Ibb674de256c306123c1ab7761945eda18704fe0e
(cherry picked from commit d3174f35d81654a36a85194b94c2cec1ee263ded)
2025-09-25 09:19:02 +08:00
Jiří Engelthaler
3f46a3d43d Fix typo firware -> firmware
(cherry picked from commit a16cf773549d6731a80e6f87b476c450a0f13702)
2025-09-25 09:18:15 +08:00
Bastien Nocera
98e470f378 FIX: Fix missing std::set declaration
/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)
2025-09-25 09:16:49 +08:00
Bastien Nocera
c9a2cb7753 FIX: Fix missing diff/intersection/etc. declaration
/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)
2025-09-25 09:16:45 +08:00
xun.zhang
61a3d11fc6 ENH: [filament] update cooling params for H2D PC
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: If9aa526007434e47c933ecb358c47a90dbc7a06c
(cherry picked from commit 8936353798f005505331c735b11ff60e9dfd8aeb)
2025-09-25 09:16:14 +08:00
xun.zhang
2ae055cfb3 FIX: do not show multi extruder params in single extruder
jira: STUDIO-12679

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I3bba9ac0bddf0f03eb79b2eaf71e1dee8e2741a7
(cherry picked from commit b4f2ff2bdc47d9295135a668787dcd0349e9694d)
2025-09-25 09:14:52 +08:00
xun.zhang
3a5d473aae ENH: hide filament flush related params temperarily
jira: none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I9daec5cc4a25b5bad15d57f71d800a6b6ebbb9b4
(cherry picked from commit 2758a093cf8ece4de01d777f5ff35c259577aa51)
2025-09-25 09:04:32 +08:00
zhimin.zeng
b0e2c37370 FIX: cannot send manual cali for H2D
jira: none
Change-Id: Iceb7db15d5d32d2db04c01527dad65022d580772
(cherry picked from commit 023b5efc4ca4c0e049a6e39cd39830dae73681eb)
2025-09-25 09:04:26 +08:00
xun.zhang
e1626c26b1 FIX: add protection when sync presets from other printers
jira:STUDIO-12575

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I5a22129fe12a3600dcc4e3f387374122e349e38c
(cherry picked from commit 21863f925db1eeb1db79ba5859840aa23f852180)
2025-09-25 09:03:58 +08:00
xun.zhang
af0c9f7ce2 FIX: some missing dual extruder params for pla translucent
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I442fc2f69ab113543d084c0075d5495d41714cdd
(cherry picked from commit 2e49a317d9ba0e92bd6876f7ca33b725a4131a77)
2025-09-25 09:03:48 +08:00
xin.zhang
363fe39c83 FIX: Revert "NEW: add HMS action to stop AMS drying"
This reverts commit 60328ef7d1400c19e9895a47d8e98d901d3401fd.
jira: [STUDIO-12372]

Change-Id: I7c2da5fa5a96d9fe00389e80535a9983dd581a2d
(cherry picked from commit 11c9efb2a2562e0a7094e4f3da1fa8af48aa7879)
2025-09-25 09:03:36 +08:00
zhimin.zeng
4a02669054 FIX: cannot slice when print by object with one multi-color object
jira: STUDIO-12518
Change-Id: Ia54f979c69aa19aaa44bf1cb1d83ec973f6eb8f3
(cherry picked from commit 6c48ded6b54bd20cb55ae6e4c2c155dc25473ed7)
2025-09-25 09:03:32 +08:00
zhou.xu
4c1c9a180c FIX:deal null pointer
jira: github 7109
Change-Id: I1db1dd1b306a33c80b256a7b6f9460ad3d35d1db
(cherry picked from commit c79311e3ee2d13dcfd733e413812c5b52f6aac9c)
2025-09-25 09:03:28 +08:00
xun.zhang
c569be0067 FIX: missing filament extruder variant in PLA Translucent
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: If0554092c2f1ad9bb3c4a73b35b8d8a48b6b3992
(cherry picked from commit bba64286f971d1eb55eea6712845ee6c27d4f2b9)
2025-09-25 09:03:12 +08:00
xun.zhang
3c051f4180 FIX: invalid params in user preset load
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I7e9cdabb2d9c285db841c810f32aee5943b4db82
(cherry picked from commit ff8d764e7256cec1e7cd1d4d3d034590eb846f45)
(cherry picked from commit fb0461f3459afcfc80165442277ba8c54e232a39)
2025-09-24 14:37:18 +08:00
lane.wei
8c64808ae5 ENH: config: remove unused custome_defined logic
also improve project_embedded
1. remove unused is_custom_defined
2. improve project_embedded to support multi-extruder diff

jira: no-jira

Change-Id: I1db28c3cfd59ccc31c6855af30305396c71c4e9a
(cherry picked from commit 0434853bf32b063f7850fd4e0c9c3a6045375225)
2025-09-24 14:33:37 +08:00
lane.wei
d691e2c2ed ENH: config: add some miss codes
previous commit 'ENH: config: add nill load/save logic for user config' jira: no-jira

Change-Id: I91ab326e533d54846518d11b457db0b0afe4d499
(cherry picked from commit 4086ec60c2b14bfb8ab12aa97842d563f71739ab)
2025-09-24 14:23:52 +08:00
lane.wei
ae72d3345f ENH: config: add nill load/save logic for user config
Change-Id: I8da6c5b345cc088862f2c720aeb742b9617ff3e7
(cherry picked from commit 603f93d97f0ad70e01e120854887142ab05ee089)
2025-09-24 14:17:53 +08:00
qian.wang
8d5e75ca38 ENH:[filament]Remove Bambu PPA-GF
Change-Id: I358f0bd3c6869c3c9a2039a8bca188c579bc6e35
(cherry picked from commit 7864c67e36e94bae924af3a6485e2ad24700e17e)
2025-09-24 14:05:38 +08:00
xun.zhang
9bfe97c314 FIX: reuse old placeholder to set flush params
1.Avoid issues caused bt user preset

jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I38e538bad6f976eba4d9f30cc261bf6a154d1716
(cherry picked from commit 7904c860ef459a4717ccccebbf1c8bb21c86ac04)
2025-09-24 14:03:45 +08:00
xin.zhang
d86632b993 FIX: round the temp
jira: [STUDIO-12478]
Change-Id: I9218e56d2fd006b0806d12dd44e58b06746a08fb
(cherry picked from commit 94efa9177eac8e690878348691789a4553dc5326)
2025-09-24 13:12:55 +08:00
xin.zhang
48dd4874d8 FIX: do not use protocol to check fan control
jira: [STUDIO-12435]
Change-Id: I6d5334d8eb2979f07866e4e985db6bc5179a4c18
(cherry picked from commit 3d16a94fa514c2cef118c65d788318876ea5cd91)
2025-09-24 13:12:55 +08:00
xin.zhang
d44ad07cfa NEW: add HMS action to stop AMS drying
jira: [STUDIO-12372]
Change-Id: Ic6a818487fdfdde206b63708303dfe8af6e79dbf
(cherry picked from commit 092de0c43f7e3f4702f529c28a637a5b3d78e20a)
2025-09-24 13:12:55 +08:00
Erwin Ried
ad6681fa9d Update FanControl.cpp
(cherry picked from commit ce9a5c6bc9688bdb77c31a2c7daf128a26ab9695)
2025-09-24 13:12:55 +08:00
xun.zhang
89f837b03e ENH: update gcode for H2D
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I529b519148a321a49a1dc126120126b28048df0d
(cherry picked from commit b5f91e91b6eaac08a366369faf3c9a18dbc38240)
2025-09-24 13:12:55 +08:00
xin.zhang
33891e4ddc FIX: use wxDialog instead
jira: [STUDIO-12440]
Change-Id: I812e401fa46ba803bfc27b5c498b9d576e663173
(cherry picked from commit f02ef821166abf133036835575f6c71a39faa350)
2025-09-24 13:12:55 +08:00
xun.zhang
e42556f835 FIX: collision caused by pick safe pos in object mode
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ic9a45e314ffa1115854736516cc06dfd976c28f9
(cherry picked from commit 04d90ac16d3abc481860a46b2d8bc8cd2f599aed)
2025-09-24 13:12:55 +08:00
xun.zhang
f7d0b57e97 ENH: update timelapse gcode for H2D
1. disbale pos pick in by object mode

jira: none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I82191a56523e96b1d0f5b80194888f698c60493e
(cherry picked from commit 8dfca77eb0567cc248571fd2aeee5857cfa4da21)
2025-09-24 11:42:20 +08:00
chunmao.guo
aa2071578f FIX: PresetComboBoxes user filament preset group name 'Custom'
Change-Id: I19b5a5cf458fc4b4f0fe8ab9ee541ea9ca010b64
jira: none
(cherry picked from commit e2d0c8eb1e595c2875e00dc1c0b48125adbbe1cd)
2025-09-24 11:42:10 +08:00
lane.wei
e5017df5d1 FIX: CLI: fix a crash issue when using old presets
jira: no-jira
Change-Id: Id7fae9b9c92a3e28e989a6567b068f3ada7e4bbd
(cherry picked from commit 77ff64b7cdded17c19f1699db9122ea6f41a2ba1)
2025-09-24 11:42:03 +08:00
xun.zhang
ace6e614ad FIX: unable to send file to sd card if plate > 1
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)
2025-09-24 11:41:56 +08:00
zhimin.zeng
d58a93b501 FIX: After the slicing with prime tower error, cannot slice when switching printer
jira: STUDIO-12416
Change-Id: Ie63cd9dd6bb6762ba5b709d383d9794a6b9a79ee
(cherry picked from commit 658ab94798394edb956a700c1b4f2f1999e4f1ff)
2025-09-24 11:41:27 +08:00
xun.zhang
af9d012143 ENH: update gcode for H2D
1.Disable safe pos logic in smooth mode

jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ifc82500a740c65ca33132b09a34fc9f26f769e86
(cherry picked from commit 820036f3225756fdc071a777678e441f7429d1c4)
2025-09-24 11:41:14 +08:00
tao wang
48bc942cc4 ENH:add confirmation pop-up window
jira:[STUDIO-12237]

Change-Id: I255e074f5f4eba4a6d7fdbf8f3a6c1c3751a951c
(cherry picked from commit 6c3e57dd3d3ea0b4cfb1db0754e56d15d8aba826)
2025-09-24 11:41:05 +08:00
zhou.xu
22f3a2f8bd FIX:Switching printer requires that cleared status of synchronization button
jira: STUDIO-12413
Change-Id: I86ad8125cd2b0b4c870cedd3b9b54c20c91dd9af
(cherry picked from commit b8d2657515ca616e4e8577ed26e6ccfc4d849587)
2025-09-24 11:40:38 +08:00
xun.zhang
429d7b2599 ENH: update some params for H2D
1. Update filament load time
2. Update extruder clerance dist to prevent collision in by object mode

jira: STUDIO-12394

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I5fcdcdc10996d9e76e1288c784c2357d77e7af93
(cherry picked from commit 904d2f05f71850c905fdc99e5111e603a7414235)
2025-09-24 11:40:27 +08:00
milk
ab6b1b3760 ENH:The print interface prompt appears repeatedly
jira:[STUDIO-12376]

Change-Id: Ifff298e08d671ae19a719cc91a645118ccf75bc2
(cherry picked from commit 3dc9acdce5db9cf9f04e3b106ba3b75e04d74d86)
2025-09-24 11:40:02 +08:00
milk
faa8708c3a ENH:Avoid null pointer dereference
jira:[STUDIO-12113]

Change-Id: I992f2559f01e200697e6c7f105d94a81a445bcfd
(cherry picked from commit 849bfff512a9edad8d635fbc2bb7c10fd5f836df)
2025-09-24 11:39:57 +08:00
milk
8242f28b38 ENH:The warning will not be displayed while the file is still being sent
jira:[STUDIO-12371]

Change-Id: I429a8a5af080dfd869b3a72d050e3019b9560665
(cherry picked from commit 95d43cb1aaf2f0dabcf4449c885039d7f9cb62ef)
2025-09-24 11:39:48 +08:00
xun.zhang
ea6a093477 ENH: update long retractions when ec for H2D in tpu for ams
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I5cee6e7539bddbfa68f4be1898decede439a8ac1
(cherry picked from commit acf1524359babb0bd3a99ae5d5b40a96b3c79e27)
2025-09-24 11:39:42 +08:00
xun.zhang
1267ab1101 ENH: update params for bambu support PLA
jira: none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ia4e6fb6c791e8f9dfcd8da16c0d3d3b0d2cecf1e
(cherry picked from commit e0aee78f2133be45903417577e4c1811cc687847)
2025-09-24 11:32:40 +08:00
xun.zhang
d98cc9095f ENH: update nozzle temp for PLA Lite
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Icf38c4b28dfca5f59c0811db7706d5a5af421c7b
(cherry picked from commit 80ae08825ee0b4091754b4b5ecea5eac2fc0f13f)
2025-09-24 11:32:18 +08:00
zhou.xu
adeb3ab3f7 FIX:Fix the issue of importing GCode array out of bounds
jira: STUDIO-12389
Change-Id: Id7995558bf0e297e2360b338ffbf63d93efa38f0
(cherry picked from commit 6d15a9005769a7dbfb96bb28ce6b57e55bf1c435)
2025-09-24 11:18:23 +08:00
qian.wang
38ad17ffbe ENH:[filament]Update BBL.json path processing sequence
Change-Id: I30d8d15c8a73336b7e10dc828cf05d7860491834
(cherry picked from commit 21d7e3d4f0bfe9bbda13f03b16d1ecb86622be3c)
2025-09-24 11:17:14 +08:00
zhimin.zeng
91329da2e9 FIX: TPU cannot be set on left nozzle
jira: STUDIO-12390
Change-Id: I752a53e7cc989038d16e9d7e06f130e6a1eb72a0
(cherry picked from commit d21d27d6fb2bc8d95921b12665868eceef564e08)
2025-09-24 11:15:48 +08:00
xun.zhang
90ebeab6f3 ENH: update gcode for H2D
1. Update machine start gcode to change chamber temp curve

jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I17a5bdb24d1f9d1124ea6ccd821d15578cd4354e
(cherry picked from commit fda85c0e8ec2d660cf893ef057f72a3a7fe41d55)
2025-09-24 11:15:43 +08:00
xun.zhang
5245e13a98 ENH: remove unused profile bambu pla Impact
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Icbb24660e5b80195c264df91c0be8335f37729ef
(cherry picked from commit 0e90a3fda07c3fc134dc7bc3be8d45b0d662636d)
2025-09-24 11:15:36 +08:00
xin.zhang
98a4aee666 FIX: do not popup if mode not changed
jira: [STUDIO-12375]
Change-Id: Ifc5ac737d49b7482de86f031bbc4bf2a6da6744e
(cherry picked from commit db91857bda4b8ecf66469dbf3c0c8c5a41c84ef2)
2025-09-24 11:14:52 +08:00
xin.zhang
9fa3978133 FIX: the layout problem
jira: [STUDIO-12368]
Change-Id: Ifb49271f5daff80c28ae64f984b512d6a6519e28
(cherry picked from commit ba8691b1c429f1071ac7043bd6b58febc3b78c2d)
2025-09-24 11:14:47 +08:00
xin.zhang
4b6b3cc7bd FIX: the encoding of filament check_ams_filament_valid
jira: [STUDIO-12251]
Change-Id: Idc3d23dce67d3e835f15c47984fdd68041371d61
(cherry picked from commit 42b15b4d41a099c5f1aca9dd59ac592aafba0b43)
2025-09-24 11:14:42 +08:00
fei2.fang
2d69d58ce9 FIX: Corrected firmware update title for printer
jira: STUDIO-12322

Change-Id: I3040026acbb3fc5525cbda8eefae1b013b065a25
(cherry picked from commit 3e2e115e0e6727b33dcf0d47c597cdb18ab7ef50)
2025-09-24 11:03:29 +08:00
zhimin.zeng
aca0f883f7 FIX: the wipe tower out of bounds prompt is incorrect when there are multiple plates,
jira: STUDIO-11817
Change-Id: Ie0b9ac36d568f6d4d6cd134056e4d850612c1961
(cherry picked from commit 5f624b72484a3ddf15318e4e0fcbdc41b98b3a85)
2025-09-24 11:02:54 +08:00
chunmao.guo
1b10eba98b FIX: enable copy param from modifier parts
Jira: STUDIO-12269
Change-Id: I7c4877d712b7678c33d6855e1de9dca9897ce6c0
(cherry picked from commit 1ad68b38e20a34372fcc1d4abe605a300abeae22)
2025-09-24 11:01:00 +08:00
chunmao.guo
b7f313a2e0 FIX: update layout after remove filament
Change-Id: I147e32f423d8d3debf1bea537dd0dfc2e1b24c19
Jira: STUDIO-12072
(cherry picked from commit 63783419e530abbb9f443de7d6a2d03d9d2c6031)
2025-09-24 11:00:50 +08:00
zhimin.zeng
3fd9b7ef8a FIX: modify the behavior of wipe tower
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)
2025-09-24 11:00:37 +08:00
zhou.xu
517b6c09a8 FIX:WxColour (0x00AE42) represents bgr input, incorrect use
jira: STUDIO-12347
Change-Id: If03e23f2ee7cbb5dcb124453fb0a1ea67c3633a0
(cherry picked from commit 8a22fab6d73fe2694b5006712d5e72619ddea51c)
2025-09-24 10:40:45 +08:00
xin.zhang
9d3526958a FIX: the event should be skipped
jira: [studio-12348]
Change-Id: I5a876989ec763a2f0dc510b352c21059495d7314
(cherry picked from commit cdb9acc8a4596036ce41de503453895e9f4e81f9)
2025-09-24 10:40:45 +08:00
zhimin.zeng
fa8280f065 FIX: The print_z of some layers is incorrect after slicing
jira: STUDIO-11989
Change-Id: Ia0488d8270a7880d3f019d757cde7ce2f591713d
(cherry picked from commit 9bd47ef3e59b5518cd049182890c1d557c69b710)
2025-09-24 10:40:45 +08:00
zhimin.zeng
9b68aef078 FIX: the nozzle type sync status is incorrect for P/A printers
jira: STUDIO-12310
Change-Id: I7a01bcfdfda45de4c2eb65b30e11e107779d3ecb
(cherry picked from commit 4a15a6da6c10383cc6a9c5ac47ce61c4acbc60ae)
2025-09-24 10:40:45 +08:00
xun.zhang
a6084d01bd ENH: add placeholder to check whether filaments is BBL
1.Also add some side texts

jira: STUDIO-12308,STUDIO-12309

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I16f21d001cf0c87620a8d7c93b33af4f63981624
(cherry picked from commit 31451dcd3310720692ec2748962f379ac3c50cf4)
2025-09-24 10:40:45 +08:00
xun.zhang
5cc64fa9a4 ENH: add base profile for some generic filaments
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I4fa5a692c64088033098b6cb74d61e992de6369f
(cherry picked from commit 891662333e7b23da888b4e55516fb368b0f3969c)
2025-09-24 10:17:22 +08:00
qian.wang
5e59e9de57 ENH:[filament] Batch modify specific material parameters for H2D models with PLA/PETG HF
Change-Id: I4ab897835753a9d3905a594bf079a73af8dd1f4f
(cherry picked from commit 9d7ffe0d6168112e64156b327d0a373e56f80a44)
2025-09-24 10:02:57 +08:00
xun.zhang
c5d0edbaa7 ENH: [filament] update process desp for H2D
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Iff81fdc19b6a3886f308f853b8ab92feee1c7375
(cherry picked from commit ea0f7628bb5335b956da0092a3fea25916bf82af)
2025-09-24 10:02:44 +08:00
milk
7f0a167278 ENH:Modify the sending decision logic for FTP/TCP/TUTK
jira:[STUDIO-12330]

Change-Id: Iba7360dc9dbcce86985db64c16becf24f7a4c6db
(cherry picked from commit 0a0e76ec952bcc20f5e2823c489d0c27f7e93037)
2025-09-24 10:00:39 +08:00
milk
7a22989e89 ENH:Fix incomplete display of the printer block prompt when entering the print submission screen for the first time
jira:[STUDIO-12254]

Change-Id: I642e6a39f063c65fb9d61e8d589d2a326917d370
(cherry picked from commit c0ac52cb58cffcb80db94e8985da94ff1c7add2d)
2025-09-24 10:00:32 +08:00
milk
760eb890bb ENH:Add a network disconnection state to the sending module
jira:[STUDIO-11839]

Change-Id: I87d68f87a2fcb87110c20faa589b863c6cc34ce5
(cherry picked from commit d5be32428a3107e311a76edd254972a04b2061cb)
2025-09-24 10:00:20 +08:00
xun.zhang
71ae1c6118 ENH: [filament] update filament volumertirc speed for H2D
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I1b968b3548df60bbe6e9998a9001282d6b050bf3
(cherry picked from commit 8d4591d57e0a79420db5302998b12d4844eee9c4)
2025-09-24 09:59:54 +08:00
qian.wang
5d8e43d089 ENH:Batch-edit the filament_retract_before_wipe value for Bambu PLA/PETG HF materials
Change-Id: Icc13ff3363351c6d515eb5b77ed57eed74c248d6
(cherry picked from commit 94677761c96ec08429aa4ae3f437e08dd97bef1d)
2025-09-24 09:56:51 +08:00
zhou.xu
d430636472 FIX:update text and window width when change different machine
jira: STUDIO-12303
Change-Id: Ic994e71a265511cf4e93009707815d34c2d79054
(cherry picked from commit 312c12f10735bcf180c2f2338cc4fdeb75e3b6a3)
2025-09-24 09:44:05 +08:00
xin.zhang
91860081af FIX: the encoding problem
jira: [STUDIO-12301]
Change-Id: I48d455f3963531897707a20f9d4d094050e0a236
(cherry picked from commit 7cd12b8f9d3c10f115acf4136e981c607ea60956)
2025-09-24 09:43:37 +08:00
xin.zhang
e78c9c137e FIX: MAC, do not check for ext mapping
jira: [STUDIO-12259]
Change-Id: I7c6f7fdfd95fcea4b5c2c82994d4d2318070b11d
(cherry picked from commit 5a793fd5d26f2e639f1e636b86638d636f36bf2b)
2025-09-24 09:43:33 +08:00
xin.zhang
1098bb8baf FIX: update the sizer policy
jira: [STUDIO-12294]
Change-Id: I549f5fcb0df426428650785e3e47468f3caef077
(cherry picked from commit c95a900a09cfac7e031b7cbcb0712b2b9734b1e0)
2025-09-24 09:43:27 +08:00
zhou.xu
5deae31f6d FIX:If studio is not activated in mac, the window of filme_group_popup will not pop up
jira: STUDIO-12228
Change-Id: Ic1ca62e68fb13c7cbf8ee35f948b05b01e010a62
(cherry picked from commit 63ba575f0e8881866d47c99bd521087210c57230)
2025-09-24 09:42:34 +08:00
zhimin.zeng
cb30fd86b5 FIX: Reset to the previous valid value when the input value is invalid
jira: STUDIO-11968
Change-Id: I9fc92c71cdb8737d72306952252623ad3bd59989
(cherry picked from commit d62341f7ee28b2e0ffea4e289dcc785de1c31bc7)
2025-09-24 09:41:54 +08:00
zhimin.zeng
edf92dfffc FIX: error printable filament check for H2D
jira: STUDIO-12252
Change-Id: Iea8107d29b3ae46c49a04a30046573b1c8b6e97f
(cherry picked from commit 6680fdffe4d25376c8f4c288ccf2b475d1b7e082)
2025-09-24 09:41:45 +08:00
xin.zhang
6d5dca8961 FIX: the text encoding problem
jira: [STUDIO-12251]
Change-Id: Ie485eaad3fac8a9f0aa84d4f2ff85708a3c984b5
(cherry picked from commit 7a054c7618851af6f4360a3df5f4415dc138f482)
2025-09-24 09:41:33 +08:00
milk
860e0f6308 ENH:Only display one instance of duplicated warnings
jira:[STUDIO-10756]

Change-Id: I0a42341677cc9c15f2d6ef3c9223b6f86c248fd2
(cherry picked from commit a5123f132dfd87ab61c12b7281186ca57201373e)
2025-09-24 09:41:28 +08:00
milk
b533e6fe5f ENH:Extruder feed/retract popup size optimization
jira:[STUDIO-12217]

Change-Id: I69f55f129408039952524753a67b15869f670214
(cherry picked from commit d3ac9a4b9d746c7a1193fd3aef09da13f61c40d2)
2025-09-24 09:41:19 +08:00
milk
f33c87c002 ENH:Edit the link copy and add a translation
jira:[none]

Change-Id: I33276e517b118d69762124ed50ee90e0a70f1c7b
(cherry picked from commit 7e8db714d42db28a1e69af04c0ab57f34da80e7c)
2025-09-24 09:39:27 +08:00
milk
766c1aa9d7 ENH:Modify the sending logic to ensure that in public network mode, the fallback route is FTP
jira:[none]

Change-Id: I88c3f89960dfc9492e305f7cff0692590078f62c
(cherry picked from commit fe5814e81f7d0248a101fada0b03ecb039bbb88b)
2025-09-24 09:39:19 +08:00
zhimin.zeng
9be6e5deec FIX: the slice processor bar disappears when it reaches 75%
jira: STUDIO-12239
Change-Id: I5cfb041c421e6f1a8d9fe87deb2433d08e133269
(cherry picked from commit 5e9ae27769998262deea38b8b51c80a8e293db7c)
2025-09-24 09:39:03 +08:00
zhimin.zeng
f8a689d516 FIX: add warning when wipe tower outside
jira: STUDIO-11817
Change-Id: I4352f8485e98c84a0ba75d0b2cc8a339e02c209e
(cherry picked from commit ce4bf4bc1bd2342c4bd3a270ed3b7619c7529c7f)
2025-09-24 09:38:42 +08:00
Noisyfox
580414265d Merge remote-tracking branch 'upstream/main' into dev/h2d-2
# Conflicts:
#	src/slic3r/GUI/Tab.cpp
2025-09-24 09:15:33 +08:00
zhimin.zeng
f60020da21 FIX: should not sync nozzle flow type for P/A printers
jira: STUDIO-12183
Change-Id: I6351c18b7e01c50aa2c741047934a96ca7572c12
(cherry picked from commit 93095852fb41d7a2b0f252d11125a614fd4a1ef0)
2025-09-23 21:45:54 +08:00
xin.zhang
d4fd53763e ENH: update the filaments_blacklist functions
jira: [STUDIO-11883]
Change-Id: Ib75383f4e75a0bcd566dcf555695f2a9f45f0cba
(cherry picked from commit 6a12adb7f0b83c025ad09e7e59e68d07a0ea8335)
2025-09-23 21:44:42 +08:00
xin.zhang
f21c5f9ee6 ENH: Revert "ENH: support scroll while using AMS mapping"
This reverts commit e6f290b29d4de697d492a2d933a447ad580a9e83.

jira: [STUDIO-11895]
Change-Id: Iab14bba06cfe59c4804ab9cf2d9784ea75bfe4b7
(cherry picked from commit 529687a2d2d5a4782c941a66eabec704548262df)
2025-09-23 21:42:34 +08:00
xin.zhang
db3ea45e82 FIX: update the dialog size control
jira: [STUDIO-12256]
Change-Id: I6472289ea99686ac7bdc3c0cafb6d7bcfdc61ab1
(cherry picked from commit c28e4be2ca1148be0326472ff43b0e605ffca29c)
2025-09-23 21:42:14 +08:00
xun.zhang
80ac21afd6 ENH: update flush data for H2D
jira:STUDIO-11674

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Idd04e918767a7ed2898f5e367c75504f35c8bb95
(cherry picked from commit 3e337ff4c255c60b9da1374076089347c4f2a12b)
2025-09-23 21:42:00 +08:00
xun.zhang
22561ccfd9 FIX: wrong printable params in pla Translucent
jira: STUDIO-12250

Change-Id: Id0c75523037a560713d75a017aebe58aabe3309a
(cherry picked from commit 9bd091bee2388f60cbba41a88571a3de7df23214)
2025-09-23 21:41:02 +08:00
xun.zhang
9210c278d5 ENH: update gcode for H2D
1.Optimize time esitimate for print object

jira:none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I22bbbd8d970eddf9c51be540173c9f5aac7b6e23
(cherry picked from commit 1dc7b1ca44522bd574a22601b9c55734becd0499)
2025-09-23 21:40:52 +08:00
xun.zhang
d9b68c6eef ENH: support curr extruder in timelapse gcode
jira: STUDIO-12119

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: If8fd91a6a1d54d3c5f4430c7f5c06685792c3a8e
(cherry picked from commit faacd23e3fba22b290e6fd47bce9de704c1165a1)
2025-09-23 21:39:51 +08:00
xun.zhang
7c8ea0ecfc FIX: unable to load WipeTowerDialog if path has space
1.Also fix a translation problem

jira:STUDIO-11926,STUDIO-11411

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ifd709582cb1a0e47631abf90ac6fdbcebcd642a3
(cherry picked from commit 8c78dd2256400f2aebaeb234bcef12bb9d384659)
2025-09-23 21:39:22 +08:00
xin.zhang
ff003bbda0 ENH: remove the event funcs
jira: [STUDIO-12081]
Change-Id: Ifb1126c162ec5b50d2a787a2c018b702946fd36f
(cherry picked from commit d4ddbe97924b44d1fb19a4e80309c9a9aad42709)
2025-09-23 21:32:56 +08:00
xun.zhang
1e9d825dbb ENH: remove the limit for number of tpu filaments
jira:STUDIO-11995

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ifd3ff7bf870570f9691b7008d8ca6ee8245c046d
(cherry picked from commit cd3219e6654d126363c04d0135bece62dcf94e39)
2025-09-23 21:32:18 +08:00
xin.zhang
09bdbbbed2 FIX: show the printer text in sd card mode
jira: [STUDIO-12247]
Change-Id: I9457c68365a9defaba75d7cda24229740c68a3f8
(cherry picked from commit 271154aa146f2d84eae8076a8d331909c2b10939)
2025-09-23 17:30:37 +08:00
xin.zhang
d3c40a0261 ENH: only check if from slicing print
jira: [none]
Change-Id: I65676589958b180e7aed6ae78a90a037073fd06b
(cherry picked from commit 561e9ea2b5f972291f0de7a08d2e6d43bc052199)
2025-09-23 17:30:36 +08:00
xin.zhang
15c95a1090 FIX: the encoding problem
jira: [STUDIO-12222]
Change-Id: Ia42865d148b1b89207336af3e2713a64c90b656d
(cherry picked from commit afd1766c89e5309da3304b9999234bdfb8cf811b)
2025-09-23 17:30:36 +08:00
Stone Li
5de5db5b99 FIX: fix missing translation issue
JIRA: none

Change-Id: I163550c2e784a5920dbfeb3ee7d9344506da1567
Signed-off-by: Stone Li <stone.li@bambulab.com>
(cherry picked from commit fc6b447b4ae84901b17431ae1766fc581233e1f1)
2025-09-23 17:30:36 +08:00
zhimin.zeng
8f97d9bbc3 ENH: Optimizing the shape invalid condition for wipe tower of multi-extruder
jira: none
Change-Id: Ic80a83088f409f0c4d4444c085befb6a1817c85b
(cherry picked from commit e22d328fa9d1682c00617a4cad0498c67a7512f4)
2025-09-23 17:30:36 +08:00
xin.zhang
d121f6e7ab ENH: update dark mode supports of print option
jira: [STUDIO-12188]
Change-Id: I0d38bcab502415dd733d9b58835e1e50dd00bd22
(cherry picked from commit 2b8edfccc866af927f8c791521eecde182946cee)
2025-09-23 17:25:53 +08:00
xin.zhang
2e916fcd5d FIX: fix the dissmiss of Combobox
jira: [STUDIO-12226]
Change-Id: Ibecd15608acf0d1118fe5e1b27c8b2aec756c48b
(cherry picked from commit bab463f1f538397a3edfc188420a54fafd919dc2)
2025-09-23 17:25:48 +08:00
zhou.xu
e13e6c7897 FIX:update_all_preset_comboboxes shoulld not return
jira: STUDIO-12045
Change-Id: Ie507a87f9be6b95350603231a4ef7ee5596f5fdf
(cherry picked from commit 1541e256f9c858d3e33d5d31d4881e6ebf38e5b7)
2025-09-23 17:25:38 +08:00
tao wang
d8f86e85ef FIX:fixed the issue of using the wrong tunnel after reconnrction
jira:[none]

Change-Id: Ief1e79a753b051e859697b523eb1ba230f154ae2
(cherry picked from commit 0d9f48c5aae2c340e8b1c4fadb42c331ae9486f6)
2025-09-23 17:22:26 +08:00
chunmao.guo
d79e6cf694 FIX: bbl printer combox layout
Change-Id: I7b82e0d989e0e197bb7644bbdc74927b308e9d89
Jira: STUDIO-12214
(cherry picked from commit e09410acce9ab64a62e4158b68f84570cda5c873)
2025-09-23 17:22:20 +08:00
xun.zhang
44e62213e9 FIX: potential collsion in by object seq
1. update the expand length
2. enhance rod collision detect

jira:STUDIO-12199

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I1350ef5612b833405928e22c542a7a6f0c671105
(cherry picked from commit 7a197af3e0aa6d6c1493768d757ecdc938e49c1d)
2025-09-23 17:22:10 +08:00
zhou.xu
d7c15664dd ENH:moudify text for SyncNozzleAndAmsDialog
jira: STUDIO-12221
Change-Id: Ib6ba969ca97da53d7bcc04b5db08d83389bf4b5c
(cherry picked from commit 37013329a69854545be2d369021f89e54b9727ec)
2025-09-23 17:20:09 +08:00
xin.zhang
de7a3b4910 FIX: do not disable the dialog
jira: [STUDIO-12070]
Change-Id: Ifea317deaab5e8cc9630930315104570966dc59a
(cherry picked from commit 3cb919424720bc09d1d3ed39096f9b08517d3fd3)
2025-09-23 17:20:03 +08:00
xin.zhang
3a35d4ca22 FIX: update the bitmap of icon for dark mode
jira: [STUDIO-12180]
Change-Id: Ib39f723be9b1f02f2f0dd21204d7831627481528
(cherry picked from commit 73d9f515de93d324c74878f3ceea5ee0f7049073)
2025-09-23 17:19:56 +08:00
milk
eacade9e34 ENH:Fix issue where printing cannot be sent
jira:[STUDIO-12212]

Change-Id: I91ba978ee9f8b70a003ccd77a156350444283745
(cherry picked from commit d22550e0aaede366ff91cca8cea01df3769733ab)
2025-09-23 17:19:44 +08:00
chunmao.guo
04957107ef FIX: Dropdown click non grouped item
Change-Id: Ic2d073be946ed68ec249296e84d5bf97d6d9c587
Jira: STUDIO-12213 STUDIO-12208 STUDIO-12191 STUDIO-12192
(cherry picked from commit 00dfff142a6a24872b3c102d57814bb8c3bf0e2a)
2025-09-23 17:19:38 +08:00
chunmao.guo
acfe601149 FIX: paste all of object settings
Change-Id: I32681190b20a2392069f6da5059feda070b312d1
Jira: STUDIO-12194
(cherry picked from commit 1a90c581c41b4d5cb35f6eece3aafbc55f2af97b)
2025-09-23 17:19:27 +08:00
xin.zhang
c8006ad7fd ENH: update some check jobs of SelectMachineDialog
jira: [STUDIO-11883]
Change-Id: I730030c06fa819f06390583a666029b8d7b670f5
(cherry picked from commit b59fac368782b3dbfe04bf483a466b1af7610935)
2025-09-23 17:14:12 +08:00
tao wang
de89e64a55 ENH:optimize the check for the existence of SD cards
jira:[none]

Change-Id: Iee386e97f66664cfa57aa66ea3457de30d6e987a
(cherry picked from commit a209330b7aae23095fc5da451d91fb467940755f)
2025-09-23 17:14:06 +08:00
xin.zhang
c7890c638d ENH: update the style
jira: [STUDIO-12184]
Change-Id: Ic6b6feceb80db157a33e6c6287a4a4faeef4036c
(cherry picked from commit 977f054f7f842a9ea95b5f2f6602d22e62d320a4)
2025-09-23 17:14:01 +08:00
chunmao.guo
a897f4866d FIX: fixed print bed icon large size
Change-Id: I580109e3edb4f546d52a5eb33bbf5b9de0ac000c
Jira: STUDIO-12164
(cherry picked from commit 33cad32d644805145cb56c0992c27151c79e22d2)
2025-09-23 17:13:28 +08:00
milk
ec8261055f ENH:Fix the issue of local variables being used without initialization
jira: [STUDIO-10756]

Change-Id: I56d19d04dbd5064f6657d5a762a44223b4a79a56
(cherry picked from commit ee0705783507d8590c8fc72e9a2f2f854060c231)
2025-09-23 17:13:22 +08:00
xun.zhang
15b0907df2 ENH: update gcode for Bambu Lab H2D
1.Add flush params

jira: none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I89e800624aeaf6b2d5442d7d230de19bd8ec0383
(cherry picked from commit ae756297a77dc04fb30c7467fc150ea52b880e5b)
2025-09-23 17:13:11 +08:00
xun.zhang
5e8272b0cb FIX: support flush params in machine start GCode
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I7566b960421b088f1d122936d9bc3974057a1e6b
(cherry picked from commit dd796026b3f869cfc40e8d9c5769c2a40e565441)
2025-09-23 17:12:51 +08:00
tao wang
465f634988 FIX:use the correct method to update the dark mode of the window
jira:[STUDIO-11511]

Change-Id: Ie359e391e3d511729b4a777376b89e5bceda161c
(cherry picked from commit bdc864bf10dcfe2738e2476025aac35c007f67a1)
2025-09-23 17:11:58 +08:00
xin.zhang
ea98914bd0 ENH: support scroll while using AMS mapping
jira: [STUDIO-11895]
Change-Id: I5cefd4e0cc6f5b7d6d1e1eaccfd2035bdd1a948e
(cherry picked from commit f2812461e31bb9b9e1f7740d10e103e85e4f1f25)
2025-09-23 17:11:49 +08:00
milk
6bd99609d8 ENH:Add logging to the send function and optimize the connection process
jira: [STUDIO-11777]

Change-Id: Idac7b7835f13ec1805442a8c8aefbb35786c36ef
(cherry picked from commit 6c07f1b9a2858a9ab0c52330f78224a03ffb6f0c)
2025-09-23 17:11:37 +08:00
milk
f0825f2c2d ENH:The print page needs to support multiple alert messages
jira: [STUDIO-10756]

Change-Id: I61edceef2f6bcf30bb87aec41593009af30831fa
(cherry picked from commit 2a7da8456c1dbc96daf875bb0c21a1aa4905852a)
2025-09-23 17:10:55 +08:00
zhou.xu
32ca001701 FIX:The plate type in dialog of the plate settings does not match the machine
jira: STUDIO-12181
Change-Id: I1d055e3530f19946073c30647c12fbab2be97d50
(cherry picked from commit 54b6cc3c41319ddfc0e3d78f41b903508f0f4c15)
2025-09-23 16:50:33 +08:00
zhou.xu
0ad5ff27eb FIX:miss "Printer not connected" case
jira: STUDIO-12166
Change-Id: I962a93f1127064816fd481dc3ad7be034e3de0f3
(cherry picked from commit 9eba9b8a2d91517f13cfa306fb41b06232910a13)
2025-09-23 16:38:51 +08:00
zhou.xu
a37dbd6f1d FIX:update_badge_according_flag should check compatible machine
jira: STUDIO-12166
Change-Id: Id19d398fd2159ee916d0ac63691530ba6d746cdd
(cherry picked from commit fa642e8d6673aba65ac363a92b40312242813509)
2025-09-23 16:38:51 +08:00
zhimin.zeng
e8296765cf FIX: Timelapse photography is done at a low height, which causing scratches
jira: STUDIO-12116
Change-Id: I375e53a32e31488b0a0d07d388f7c7aa29624817
(cherry picked from commit 0c08ea3e2ecb5c819fc6c06dfedf01e733f84383)
2025-09-23 16:38:51 +08:00
xun.zhang
c1ecf4fe65 FIX: wrong layer height limit
jira:STUDIO-11831

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ifda3711dd5a89bfe73b5dfb4daf2fb643afd96f6
(cherry picked from commit 59a18ad837c5b19159b71df3921f49941eedf912)
2025-09-23 16:38:51 +08:00
tao wang
7012feb672 ENH:prohibit resume2D tasks
jira:[none]

Change-Id: I038928bbe06b9f8f711513dca9021a9a08c92e6f
(cherry picked from commit 573db9bf60bffd053c68b8e5c021dd737de12cee)
2025-09-23 16:38:51 +08:00
tao wang
faa1b2df6d ENH:fixed the issue of cant send SD card printing in LAN mode
jira:[STUDIO-11944]

Change-Id: Iab0b2db690e5cf8e02be5c6bf1bcf94a4e0b5468
(cherry picked from commit 60dd53b26dd30de5ea07d83de19832a089655835)
2025-09-23 16:38:51 +08:00
chunmao.guo
b6add47f98 FIX: clapse filament list min height & adjust filament groups
Change-Id: Ie4c41b2977addcac4359f161daa46f34dd35054e
Jira: STUDIO-12082, STUDIO-12084, STUDIO-12077
(cherry picked from commit 973399104f9877afd8d5796d7cfa241a05957706)
2025-09-23 16:38:50 +08:00
chunmao.guo
5d09d2290f ENH: copy/paste object settings (menu)
Change-Id: If5f6f75102fbd43f652a96d01f9edd4676fa3152
Jira: STUDIO-11666
(cherry picked from commit 59cee48fbf1d06482c96ef6576a1fb5b33f2b621)
2025-09-23 16:38:50 +08:00
xin.zhang
a650db2903 FIX: disable filament editing if printing
jira: [STUDIO-12153]
Change-Id: I2397360439d5baaf673c9fc306f3b08eb068cfec
(cherry picked from commit 8308fe3964f72cd911ac472923e8b27b0b3f9c61)
2025-09-23 16:38:50 +08:00
xun.zhang
787689a258 ENH: update default retraction dist for H2D
jira: STUDIO-12133

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I4d04da668ea36a237b713971a27f4f426cb79c81
(cherry picked from commit 841514d309b31d30348ae314b0f63adb5241803d)
2025-09-23 16:38:50 +08:00
xun.zhang
72360e5d33 ENH: update gcode for H2D
1.Support long retractions when ec

jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I904c3f224de9e21455b2a676ba18cddd3d6f8c66
(cherry picked from commit 2eb93576fe4c6df04e03235a51da83a94ea9c1d1)
2025-09-23 16:38:50 +08:00
xun.zhang
6c42f245de ENH: post commit for params to H2D
1. Add flush and  retract params in profiles

jira: STUDIO-11965

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Id4a1017a927be58d1e951a78b98f1a86b060e602
(cherry picked from commit 403fb623729bc3f3433a80a90fc55c6b09a6d4b2)
2025-09-23 16:38:50 +08:00
xun.zhang
7bd4f85a96 ENH: add params for filament retract when extruder change
jira: STUDIO-11965

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Id175e9dbce419d43cf45d6116ed4fa4fd556f606
(cherry picked from commit c7964441719f521d1a20dc9f084a7598bd01a9a5)
2025-09-23 16:38:50 +08:00
xun.zhang
cdf66984dd ENH: add flush params for multi filament
jira: STUDIO-11965

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I2245f22a03c65b570bc60a2792daf4c1683f1ebd
(cherry picked from commit ffe2653341bffd5aee42436e236d45e0b87b56aa)
2025-09-23 14:16:03 +08:00
Stone Li
3a7703fc67 ENH: add more retry to subscribe
Change-Id: If68249408446aace4a83e4b5beeb0643dce8cb87
(cherry picked from commit 8b0f16d3de8ef6816bf5eb068e007d202f9710c9)
2025-09-23 09:40:04 +08:00
xun.zhang
0318b2579e ENH: add x1 in fiberon pa6-GF
github:6769

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I8a3811303a1aad94ef69058f45797851cab4fba1
(cherry picked from commit 674fe4dab66e6bdaabf0438fa056a5f8db3a9f67)
2025-09-23 09:31:40 +08:00
milk
7c28b5ae52 ENH:After re-importing the multi-plate Gcode.3mf file, sending all plates to the printer results in information loss
jira: [STUDIO-11531]

Change-Id: Icfbf56ac1f6610f70c3ed192f765e3381ad8ddb6
(cherry picked from commit fcb4ca7a412dfc7c0897b96a3b4c528e6936c297)
2025-09-23 09:22:53 +08:00
xin.zhang
8065f11b60 ENH: update the ext mapping logic
jira: [STUDIO-11970]
Change-Id: Id4cd04da942c5457f0b17877a07c0e24b9c585ec
(cherry picked from commit 09d8050037095f03d3e8f92302f1c568d272a97d)
2025-09-23 09:21:07 +08:00
xin.zhang
2bbd4f89f8 FIX: check if the filament is unknown
jira: [STUDIO-12085]
Change-Id: Ibf40d7a5106a40385aff5c769e5b7e5cdb866de0
(cherry picked from commit 012b6f2395d66b7b1bdafa3e851ca4b2f874eb23)
2025-09-23 09:21:03 +08:00
tao wang
0317e0dd88 ENH:auto switch to using local broker for data transmission
jira:[STUDIO-11616]

Change-Id: I91066a629684dcff4efc73f310c2e0a7843954f4
(cherry picked from commit ac805e7d9150f56d40ec261fd2ed4007e1413b8e)
2025-09-23 09:20:15 +08:00
tao wang
b0cfd51d3c ENH:Not providing IP search in the user version
jira:[none]

Change-Id: Ib73c30fb924c7bd29ce6ecb66f6517716e841988
(cherry picked from commit 1b8a2e5a16b27d377adfc68c5e6e896cfd2a7c44)
2025-09-23 09:19:34 +08:00
xin.zhang
26fb098bbe FIX: update extruder control check dialog
jira: [STUDIO-12092]
Change-Id: I8a12c92e39c8fd7fb4bde1feb8d70b309ecff060
(cherry picked from commit 3a6f58ebf0e720caf05a8482e3a1d69ca277e5b6)
2025-09-23 09:19:23 +08:00
xin.zhang
7fcdfe1cfc ENH: support filament soften check
jira: [STUDIO-11922]
Change-Id: I819c47e847ca30120c9fffeab3e9e1955b7f6beb
(cherry picked from commit 5b5489cc95803d1dadc0f6a1246ca39710e9196c)
2025-09-23 09:18:20 +08:00
zhou.xu
6871bdd3b9 ENH:update text
jira: STUDIO-12117
Change-Id: Idb8af2fd8826c6e0098dbb9ece1da6b8b9109c96
(cherry picked from commit 38364e36c19ba3d35bf08656d5cc62bb5849f21f)
2025-09-23 09:05:19 +08:00
xun.zhang
4b1657672e ENH: update gcode for H2D
jira: none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ifcb758457f7d7187bc9183e663ef613b47d57bc4
(cherry picked from commit 6f40643acb31f7f2e95b4499c47e1bb9da1d5663)
2025-09-23 09:04:10 +08:00
zhimin.zeng
f9f1828642 FIX: Command line slice error of filament printable
jira: none
Change-Id: I89724d3934c5c1e5ef75d3e046e84600873516ec
(cherry picked from commit 5f9093dc8e7a222857037016940c43e2ad227eaa)
2025-09-23 09:04:01 +08:00
xin.zhang
2f1c7994bb ENH: support DD_ITEM_STYLE_SPLIT_ITEM
jira: [STUDIO-12103]
Change-Id: Ic69b5076543066ad00bb0d13ffb4d13b57873d3a
(cherry picked from commit de14cfbac610436c36790c2200e1dbc580fa58c5)
2025-09-23 09:03:49 +08:00
jiangkai.zhao
34e653d0a3 FIX:wipe_tower not visible when timelapse_enabled
jira: STUDIO-11991
Change-Id: Iee7728110e449890f530f0ef2cdd2e982dceb347
(cherry picked from commit 18a09d36145b2885feaa4f3a14a1be84ab5d964d)
2025-09-23 09:03:26 +08:00
xin.zhang
e9b30443c5 REF: remove useless codes
jira: [none]
Change-Id: I86202fdaa09c5953d9bb4f21cc6dd9d9609c0a7f
(cherry picked from commit e9d8a6c8352628e3f7bb33e2ffaa38e03ebe929b)
2025-09-23 09:03:17 +08:00
xin.zhang
e4c98a69b9 FIX: the display of split line
jira: [STUDIO-12109]
Change-Id: Ica728b1e697dc036430248bfdde9b11ed79058f3
(cherry picked from commit 8eaa03a2b981513c71c7a9da0065aa378ce709ca)
2025-09-23 09:00:57 +08:00
xin.zhang
21f9866847 FIX: FanControl the info text display wrap
jira: [STUDIO-12088]
Change-Id: Ic6a1d9ea60e85859f412bc65184b0eb085bba5b2
(cherry picked from commit 8dd0cb4901f43bcea062eac893466e58c0c35e7e)
2025-09-23 09:00:52 +08:00
xin.zhang
015ac04951 FIX: do not popup for AMS1
jira: [STUDIO-12083]
Change-Id: Id2297576fa2b520282d8e4ce9af8e47817fc7088
(cherry picked from commit 8d29e09c1b8c1b9598f869235e99038d48b1bffc)
2025-09-23 09:00:38 +08:00
xin.zhang
e17b314fac FIX: refactor the widget to fix display
jira: [STUDIO-11879]
Change-Id: I574e8051771ac9c211640604ea2ed87fe87f177a
(cherry picked from commit 7c8bc3782f0b3f2943c1e8828da41cbdcfd84b5e)
2025-09-23 08:59:52 +08:00
xun.zhang
3064da3ed7 ENH: do not reslice if only notes changes
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ibcb33b981af691c1521041251df9e1c158d26e0c
(cherry picked from commit 43531ed01e7dfa28a649227471cf283a33b38959)
2025-09-23 08:58:51 +08:00
xun.zhang
ce81f03b6d FIX: avoid collsion in by object mode
jira:STUDIO-11625

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: If5957a919af606934a34aa942f54dc4e7650a7f9
(cherry picked from commit 476c17819fe2e4fb7891b4b46865dde1a0057f33)
2025-09-23 08:55:31 +08:00
Noisyfox
c027c00caa Fix includes 2025-09-21 23:01:08 +08:00
Noisyfox
10b4d3b87d Revert "FIX: support auto-reconnect for MAC power awake"
This reverts commit bb13f1e904.
2025-09-21 21:59:07 +08:00
Noisyfox
84ab08c033 Fix crash when swith to extruder tab 2025-09-21 18:21:24 +08:00
zhou.xu
d408db2fde ENH:change wxStaticText to label in linux to solve darkmode problem
jira: STUDIO-11419
Change-Id: If7373deb03962ffd860a02acbf47b66f4dd68539
(cherry picked from commit c4325ade348731764afe3e645768387e402f8332)
(cherry picked from commit 02fcbc785efae3c96a134a7ae77920693c95dc08)
2025-09-21 18:03:25 +08:00
xin.zhang
60005def4c ENH: update some GUI styles
jira: [STUDIO-12074]
Change-Id: I01bbf66577040d837c1768749b43500221e54fcb
(cherry picked from commit b813cb04dd438319c331d1b7ff533120bf65bd4a)
2025-09-21 18:03:18 +08:00
xin.zhang
56088f22d6 ENH: update the size control of print option item
jira: [STUDIO-11972]
Change-Id: Ie45c0493098e233a3c45ae037c8a2d475a04ddf9
(cherry picked from commit 11989e6af095564f7375e99b2ed88f66f6ca6985)
2025-09-21 18:01:40 +08:00
xin.zhang
4ae358f3e0 ENH: update question icon about can not connect printer
jira: [STUDIO-11680]
Change-Id: I9eee78d36f75c8f7f56f3a9f2aee89f72a7d48ff
(cherry picked from commit e8abfcea8ec0e491cc4a3242b54654cc2b6a92f1)
2025-09-21 18:01:35 +08:00
xin.zhang
5cf7843e73 ENH: update the mapping algorithm, take a retry to mapping to an used tray
jira: [STUDIO-11971]
Change-Id: I22e34193318386a954d57ea3597cd3909db0ecb4
(cherry picked from commit 59db0a22657f879b94e88f18cf0b89448a5df222)
2025-09-21 18:01:22 +08:00
xun.zhang
3e8ca38990 ENH: refine filament sorting when flush volume is 0
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ia012cbd7a45a2fead94d2c579106115ea8edb5e8
(cherry picked from commit 6c1be5bddca79bc9a3bf536277d46cfc7fe20ebe)
2025-09-21 18:01:16 +08:00
Noisyfox
e6290bfebd Sync diameter 2025-09-21 17:05:55 +08:00
zhimin.zeng
3c20db56dd ENH: add sync button for single extruder printer
jira: STUDIO-11628
Change-Id: If77b6e3094d27666bfc7adfb8e4a0fd989703db7
(cherry picked from commit 69dd3571968318e52631151c5de8fa230a4522ef)
2025-09-21 16:58:12 +08:00
zhimin.zeng
ce965f8637 FIX: fix error variable name
jira: none
Change-Id: I98098caf80bcdc7b0f506bc158b8f5f6d2cbff57
(cherry picked from commit fb432cdb9dec018bf7d1081efa99979afe513334)
2025-09-21 16:58:01 +08:00
zhimin.zeng
9b541b40c1 FIX: error sync behavior for customize printer preset
jira: STUDIO-10331
Change-Id: I4d42ed089e515c2d74dfade1589f20f1c80ca4ca
(cherry picked from commit ce963cede53a72a123f55666a1f718726eb18ab6)
2025-09-21 16:56:49 +08:00
chunmao.guo
66eb27cfaa FIX: switch_diameter in sync
Change-Id: Iff7c654ef932f36b9c3cb4267e4ea90b8074c9c2
Jira: STUDIO-9744
(cherry picked from commit 0c01d7b3e0224f745b249e8d8dbe1990f3b407bc)
2025-09-21 16:54:02 +08:00
chunmao.guo
d1de8c47d7 ENH: sync ams info to extruder group
Change-Id: Id0aace998a759c6e91aabb2685306e54e06d152e
Jira: STUDIO-9828
(cherry picked from commit 2bae63e3819bc2dc04dc64c1d53b10d2f04edeff)
2025-09-21 16:48:19 +08:00
chunmao.guo
93824d5b50 FIX: printer diameter select & param extruder sync
Change-Id: I4f2cff974cea24d599b7870d6a82d44d718e8a2e
Jira: STUDIO-9110
(cherry picked from commit 4558e3d3e7f3dc4d9063d06bad27dbab76203a64)
2025-09-21 16:47:05 +08:00
zhimin.zeng
67a463ecc2 EMH: add nozzle diameter synchronization
jira: STUDIO-9140
Change-Id: I62e4035e473c8bfa2ccf7719bc6c1072c0a30b61
(cherry picked from commit 3c303e6e2c6f8fcb7d2e804c2dd13b0fb8d13e7c)
2025-09-21 16:39:09 +08:00
zhimin.zeng
36524f5199 FIX: should not show tpu warning for P series printer
jira: STUDIO-11612
Change-Id: I947a16d3d95b009040a0ea26157e1c8004e36cc4
(cherry picked from commit 8ecc6aa224c1d44a804ecb0711162f56623037ca)
2025-09-21 16:32:28 +08:00
xin.zhang
54c402aec6 ENH: support nozzle info, support new popup style
jira: [STUDIO-11974]
Change-Id: I8d80338d5b90bcca824ea46be2066f1bfb7aa10a
(cherry picked from commit 8c8b8d63b97e8f6a8423456f88e9a5e0e3d9f7ab)
2025-09-21 16:31:30 +08:00
milk
45936b6de8 ENH:Modification to Optimization of File Transfer System
jira: [STUDIO-11777]

Change-Id: Ica33b4a8177691590c07c3941b738939845d1e55
(cherry picked from commit 2100066a4acb3fd5ec987606c6efc978f9e0a392)
2025-09-21 16:28:22 +08:00
jiaxi.chen
14aa417122 ENH: popup more informative message with support materials
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)
2025-09-21 16:27:29 +08:00
xin.zhang
75aabc349a ENH: use icon when can not connect printer
jira: [STUDIO-11973]
Change-Id: I17e927c4b5f061cd66ed0b6015f43358e673ef9b
(cherry picked from commit 1bc83e42a77bb066610f6865c29481ee50dd1a23)
2025-09-21 16:26:12 +08:00
xin.zhang
26a7160226 ENH: support close lamp check
jira: [STUDIO-11982]
Change-Id: Ic0211b9895f9a75c4bcbfd64772f99d81f510d56
(cherry picked from commit 039d11ca8862c7c799638f0bdbde0569326e15ad)
2025-09-21 16:26:05 +08:00
xin.zhang
e758b77ab7 ENH: add some check job
jira: [STUDIO-11883]
Change-Id: I9a112b10b18d4c4f4bee5c8076b22f46fb63b13f
(cherry picked from commit 15c7bb729085ec65fee8cc36a5058ac5e883ceb8)
2025-09-21 16:25:57 +08:00
chunmao.guo
16d8e86b84 ENH: group filament preset by vendor & list uncompatible filaments
Change-Id: Ice05956fca59fe130d927b505ac0f61dc8e8cb5e
Jira: STUDIO-11615
(cherry picked from commit 564e59bf4fd99ce718f224ec61f1423fd876fc52)
2025-09-21 15:28:03 +08:00
chunmao.guo
d31c4427aa ENH: printer nozzle diameter select
Change-Id: Ibf8b74e1f93a7c387db3f0fb5e6e733165322322
Jira: STUDIO-9140
(cherry picked from commit c990314567383d3bfff72ac11df6471e0a10f315)
2025-09-21 14:37:37 +08:00
chunmao.guo
9eae5935d9 ENH: scroll filament list
Change-Id: I2958ff68e90a6707eb823b0314d62555012b3173
Jira: STUDIO-11070
(cherry picked from commit 39688286a75b78635dc670e387ac5ab75d0b1d54)
2025-09-21 13:53:00 +08:00
tao wang
4d3d0c7ef6 ENH:support checking the complete material blacklist
jira:[STUDIO-10749]

Change-Id: Iea007cf94a2ecdc21be972fce121c09bef009a03
(cherry picked from commit 9c364779e027b3aece98c96bd902a96165d254d4)
2025-09-21 13:52:52 +08:00
zhimin.zeng
630f2bdf07 FIX: modify the filament printable
jira: none
Change-Id: Ie5ec800ef2ad50bd571f4f257351e4241cca7b3b
(cherry picked from commit 18667535395eacdcd3236d76e7b5d077f0da01d1)
2025-09-21 13:52:47 +08:00
zhimin.zeng
a3c59ecdd7 FIX: delete unprintable and printable filament list
jira: none

Change-Id: I8c4376cc882fd9489bbd07ea8d4773851fccd20a
(cherry picked from commit 26297307f63d69828e4f2227bfcac500b82c87b5)
2025-09-21 13:52:38 +08:00
xun.zhang
e3a53713bc ENH: add filament printable
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I8590a24cc9a29f8bf1f74b2c31d0c381c75cad14
(cherry picked from commit 99439f04538b1984da209c62aeefdd15ab57dae9)
2025-09-21 13:52:13 +08:00
xun.zhang
2124302544 ENH: [Filament] add profiles for pla translucent
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ida0ecbe3cb5d8cf916dea76aa4f6671132b157b6
(cherry picked from commit 9228f16f39c551695f4e8ec9180ee6ad2a77fa5f)
2025-09-21 13:49:36 +08:00
zhimin.zeng
119f16c565 ENH: add filament_printable and delete unprintable and printable list
jira: none

Change-Id: I643ab11831ceac1fe0793510f64b288cbd16415a
(cherry picked from commit 3dd5a601547485bfcc4188727343a52c30bb6a73)
2025-09-21 13:48:08 +08:00
zhimin.zeng
0926dc46fb ENH: add printable filament types for extruder
jira: none

Change-Id: Ie6ada223bc11a53b975c8c20b4a41e7cdc2d524c
(cherry picked from commit c64270f506a4d004f66aef3ff31760f793eca489)
2025-09-21 13:48:07 +08:00
noisyfox
eb75a325ca Fix build error when PCH is not used 2025-09-21 13:48:07 +08:00
xin.zhang
789da693a7 ENH: use ext to mapping if there are no ams
jira: [STUDIO-11971]
Change-Id: Ic4dc9e59a40d74e38d4862276939aced4dcbdf92
(cherry picked from commit 4dc0e041e8c288b071042eade10d56bed5a1e3af)
2025-09-21 13:48:07 +08:00
tao wang
63509a5c1a ENH:open search function to Windows platform
jira:[STUDIO-11620]

Change-Id: Icc53f6d700049b9db35d645b0568e6a16d38fd1f
(cherry picked from commit 480b1d71b497e5fa0a9fa4fceef112982d6802e2)
2025-09-21 13:48:07 +08:00
tao wang
5f19b624f4 FIX:optimized AMS and EXT checks
jira:[STUDIO-11833]

Change-Id: I2c2756882897c878f2254a5c6fa8a31363af1bb0
(cherry picked from commit 32e3e8063653217987ec0dc5df4bad3468158490)
2025-09-21 13:48:07 +08:00
Arthur
b965d420cf ENH: do not reverse wipe for supports
This might help improve the quality and strength of supports.

jira: STUDIO-11985
Change-Id: I51644c84b9ede018a08a0f2b8fdca5d271d69991
(cherry picked from commit ba5dbc544b65276d772834305fcca6b5f7536d6e)
2025-09-21 13:48:07 +08:00
七喜
0f08d28556 Revert "NEW: add some parts;modify panel layouts"
This reverts commit e62d66565b2959f4131afe52b3471e7226c42966.

Reason for revert: not ready

Change-Id: I0c5146a19d08315af6816133079e92d902d65044
(cherry picked from commit fda752bb79dd7b9a3312ebac9c5d8479e528982e)
2025-09-21 13:48:07 +08:00
xin.zhang
5d476c3e3d FIX: show message while enable multi-machine
jira: [STUDIO-11980]
Change-Id: I140d2d3f07c217465a2a5b6a0cec09f96135093c
(cherry picked from commit be241bcdcc5ca66d231b646b33dfa87a5ee129f3)
2025-09-21 13:48:07 +08:00
xin.zhang
32061b6772 ENH: update the print options layout
jira: [STUDIO-11972]
Change-Id: Idb15ad586d6c517f6f65ea940719d3c99230ab60
(cherry picked from commit 572721071356ecb69eff4c89c19c5ec3e37aa12c)
2025-09-21 13:48:06 +08:00
xin.zhang
dd124e7f30 NEW: add some parts;modify panel layouts
jira: [STUDIO-11578]
Change-Id: Ifdcf6d285d763a15ed153508cb4f5f66069144bc
(cherry picked from commit f97931d191ecb7a40af7e6176b80384328d2143b)
2025-09-21 13:48:04 +08:00
xin.zhang
5f947afb97 REF: new class PrinterInfoBox
jira: [STUDIO-11680]
Change-Id: Ie42f6420caab7ab3c9ca00512ff8c61c742f7481
(cherry picked from commit 67aca43fa13ffa7a4f5ae487560d087997f45fb3)
2025-09-21 13:48:04 +08:00
xun.zhang
1a59af5b2c FIX: wrong desp for color scheme
jira: STUDIO-11215

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Iaf78c825cbc99a43c4614e20ea9fdc683cf11784
(cherry picked from commit aca4968ab779bbbbe148ca520bc0819bd92f0c03)
2025-09-21 13:48:04 +08:00
xin.zhang
14c9f8adf0 FIX: update the text
jira: [STUDIO-11038]
Change-Id: I7f439d947a4568f5f796f295a95209c3a4d0de68
(cherry picked from commit 7c0215454f7be1526e697f84d99977883247eda5)
2025-09-21 13:48:04 +08:00
xin.zhang
9a61fa7397 FIX: translation problem
jira: [STUDIO-11370]
Change-Id: I22bfc3c1805ac4ea9803cadaeec74a3787bec29f
(cherry picked from commit d702c290e015d05733ed67cbedb5e8bcc01aa7b9)
2025-09-21 13:48:04 +08:00
zhimin.zeng
9744d93406 FIX: Add protection to prevent inf use_m
jira: none
Change-Id: I37b4a032c0504200b4b97c3d63744ea7e5962b66
(cherry picked from commit 94b6e7b78b34e2f225ef7361d3a9251d05da6de2)
2025-09-21 13:48:04 +08:00
xun.zhang
425cb8b52b ENH: speed up timelapse pos pick
1. Cache the bbox of object

jira: STUDIO-11625

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I4682cd5fe2aef1dc5cd5fd6be33425c7095263eb
(cherry picked from commit 07516d1fecfff7719a60f2c5730bfcbe1958299e)
2025-09-21 13:48:04 +08:00
xin.zhang
50ef04666b FIX: messureSize after set max size; the text is the default tooltip
jira: [STUDIO-11878]
Change-Id: I1945779d620a01fff4cfb29b5592eed0490dbbd5
(cherry picked from commit fba3ab060f5dcfeaf5cc36f14eb5ec46414fdbc8)
2025-09-21 13:48:04 +08:00
zhimin.zeng
01ec351df4 FIX: error retract length of prime tower
github: 6733
Change-Id: I83cd50b9054de887a89389ccbeeb9fbc6de679d6
(cherry picked from commit 6d2f21ef4c51beab4b614a9ad5f489c8bac742fc)
2025-09-21 13:48:04 +08:00
xun.zhang
ff696caeff ENH: update start gcode and change gcode for H2D
jira: none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I20bcd658ac5437cd9a58aa51c1d4820617b9145d
(cherry picked from commit 5d4dc53bdc5d3d450d2753db2b1540ad6f52f6c1)
2025-09-21 13:48:04 +08:00
xin.zhang
b52ba83ba0 FIX: update enable status when Refresh button
jira: [STUDIO-11923]
Change-Id: I0828415aa196031cf4d74f98a71cc0cea84939d2
(cherry picked from commit 64641c62cbac66ae49a52d3014217be001f8366e)
2025-09-21 13:48:04 +08:00
xin.zhang
6d336e3dd0 FIX: correct the encoding
jira: [STUDIO-11876]
Change-Id: I9824214e5114ab73ed850fb882be9f0980a5b270
(cherry picked from commit ea56ebfc6c16aef2dff73fd96f8e4530d14394b7)
2025-09-21 13:48:04 +08:00
xin.zhang
1ca002a744 FIX: the display problem of wxHyperlink on MAC15
jira: [STUDIO-11043]
Change-Id: Ibc796e22d4dbee7f94d134f5b8444637f6e1390d
(cherry picked from commit cf3ae1bd1acd17622762fc9275f92c7525649f52)
2025-09-21 13:48:04 +08:00
zhimin.zeng
b48785a276 FIX: the name column display incorrect
jira: STUDIO-11918
Change-Id: I8236898878205161368c3809331af18bd71764f4
(cherry picked from commit 3f8a4001e0602ebe15231c9de38aedcb111c89cb)
2025-09-21 13:48:04 +08:00
zhimin.zeng
4a282fd61d FIX: fix the error retract_length_toolchange for multi extruder
jira: STUDIO-11916
Change-Id: I3e9c0888d2b15046f76ccc8ac063080df35c3290
(cherry picked from commit 13df84d0ae21d95a03b2ea951f40cd39293e3afd)
2025-09-21 13:48:03 +08:00
milk
9a542b1a0f ENH:Optimization of File Transfer System Part2
jira: [STUDIO-11777]

Change-Id: I12744db7d2e3b53425454d632533768c54524677
(cherry picked from commit 4358e9ce351c5784e392a75d1ffcf2f54e1916ec)
2025-09-21 13:48:03 +08:00
milk
7f471d59a5 ENH: Optimization of File Transfer System Part1
jira: [STUDIO-11777]

Change-Id: I733fd3532caa19546763ab8a72eb7667d5ffec53
(cherry picked from commit aa52c99076a78e2c8fd8d4e4b0b64de0bc761469)
2025-09-21 13:48:03 +08:00
Kunlong Ma
4ef27847cd FIX: fix some issue in sending files to external storage through cloud
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)
2025-09-21 13:48:03 +08:00
zhimin.zeng
f3610897c6 FIX: fix the use of PA and flow to push messages
jira: STUDIO-11875
Change-Id: I4183ff5f3b297c5c1136fedfd22442a326bc400b
(cherry picked from commit f2314f8f57ca2786332807816ade9e1d6efdfae5)
2025-09-21 13:48:03 +08:00
zhimin.zeng
6adb7da9ea FIX: modify the default k value for display
jira: none
Change-Id: Ib92bf722f21994db02dac5b162215709090d786a
(cherry picked from commit 4cb3a63c78a202e7f4b66250ba94a6350c2bd8d3)
2025-09-21 13:48:03 +08:00
jiangkai.zhao
8e616ce892 ENH:add flat_irong as print preset
jira: none
Change-Id: Ic29634780e1ece2d0cffddd0c2cf7cafb1318fa2
(cherry picked from commit 2acd313f72d5e9531cf1394c218dc3bc6b8d9521)
2025-09-21 13:48:03 +08:00
Noisyfox
2cea19bdcd Fix build error caused by cyclic include 2025-09-21 13:48:03 +08:00
xun.zhang
b5756d1702 ENH: add timelapse pos picker
1. refine code structure
2. prevent moving tool head between camera and object
3. consider raft layer

jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ic0004791bfd4036d4323045a041709d861e5c8d0
(cherry picked from commit 7dc269f99473421162ad89c555bfac7ace0e9a6b)
2025-09-21 13:48:03 +08:00
xin.zhang
5647312a16 FIX: fix crash and blank page while cancel printing at 75 percent
jira: [STUDIO-11861]
Change-Id: I142df41ade73558849183fd245163cb5a7367f9c
(cherry picked from commit ddf4e9bc9f73b5cf7c50e74b66a98716d0f81d16)
2025-09-21 13:48:03 +08:00
tao wang
d3a29b763c FIX:fixed issue of printing progress not being displayed
jira:[STUDIO-11588]

Change-Id: I369b9ed375ef3b3913553c3a965ce1aa96ec1129
(cherry picked from commit 378da0de26f837683890247a80ffdf0703529645)
2025-09-21 13:48:03 +08:00
tao wang
dc56608d13 NEW:add pre print checker
jira:[none]

Change-Id: Ic1469d30dff30e1eba92d8bfacf58d0f0b789157
(cherry picked from commit 8cfa735c6cac432a2b97dea7703e810f8eef6d04)
2025-09-21 13:48:03 +08:00
tao wang
37a90cbf77 FIX:Fixed loading filament error of the last AMS
jira:[STUDIO-11353]

Change-Id: I09f111a7c0b0c7234936d46e905109215f5e4ac4
(cherry picked from commit 41c0db10298678030b2c6d2659dd7bc8bbdf8166)
2025-09-21 13:48:03 +08:00
xin.zhang
15d140d582 FIX: update the hold impl of PrintOptionDialog
jira: [STUDIO-10972]
Change-Id: Ie62d0f4ec7e08087c422ddb38768df99c1f0d5f9
(cherry picked from commit 4f144417030fdd54b05e22c3c6eaad7e66cdeeff)
2025-09-21 13:48:02 +08:00
xin.zhang
dc84ff0c6d ENH: update the functions
jira: [STUDIO-11664]
Change-Id: I3c2c23cb9f8db0b3fec848616bb1d434759fa1d8
(cherry picked from commit ff62a7fe61be7f47168af094232476a7d8712229)
2025-09-21 13:48:02 +08:00
xun.zhang
01673d1fef ENH: add filament map and filament list in GCode head
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Id214bcf5f76e6c59d4b8bcb55583f96b347630bf
(cherry picked from commit d1e6680f4c19ae19e8328813528f21e63084e577)
2025-09-21 13:48:02 +08:00
xun.zhang
cd9fd28c4e ENH: default turn to color scheme
github: 6299

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I4ec38a63110cab4560034948e75c2ced45ed1f5a
(cherry picked from commit 3eac767b14bc0d7652cc9fd157ee1e0d8672d38c)
2025-09-21 13:48:02 +08:00
xin.zhang
97b45219b9 FIX: use the last_select_machine
jira: [STUDIO-11576]
Change-Id: Iaf8531ef7704c08f5cf853cc4d25acd711db4b8e
(cherry picked from commit b24b5af3773acb3e291ef106e51c4a180fd84da9)
2025-09-21 13:48:02 +08:00
xin.zhang
5ce62285be FIX: unfinished merge conflict
jira: [none]
Change-Id: Id97c30a091957c7fe7c96f1818d1073f7993b581
(cherry picked from commit 8ca806abdf5d63bb93c1cf9b3001d961b34f5a44)
2025-09-21 13:48:02 +08:00
xin.zhang
c7ba6684c1 ENH: some single nozzle printer support nozzle flow type
jira: [STUDIO-11821]
Change-Id: If94cd6d332fa908dda3c950940586e4bb8cef2ec
(cherry picked from commit 32f02721cabf4ff7c7789e6d5472a36083114c3c)
2025-09-21 13:48:02 +08:00
xin.zhang
f36a264569 ENH: remove the lidar cali of some printers
jira: [STUDIO-11816]
Change-Id: Icccdea945e5b085bec76310b12f9b7470e9d0e7d
(cherry picked from commit 9b551a93a94cd46e81d30cd7634c62255f590624)
2025-09-21 13:48:02 +08:00
xin.zhang
a6228b8015 FIX: update the version string of AMS
jira: [STUDIO-11814]
Change-Id: If452bc66cde7a3c155b8928bf9842f5e45063a87
(cherry picked from commit 298d4acee076e05087d19c5e159eae310e5e50b9)
2025-09-21 13:48:02 +08:00
xin.zhang
af9e2cce6f ENH: update temperature limit for all printer
jira: [STUDIO-11790]
Change-Id: I4980616639ac74417a0243580236232f4baa938c
(cherry picked from commit 4b7610d216570b0b0ec267eccbd6f8cb5f488fa7)
2025-09-21 13:48:02 +08:00
xin.zhang
441779447a FIX: protect the EndModal functions while top dialog is not this one.
jira: [STUDIO-11503] [STUDIO-11522]
Change-Id: I02bf784fa7c796a75525deb79f8287027780bc69
(cherry picked from commit d74a9ac286654bc8b4bec1e27d02a2d578f8b12c)
2025-09-21 13:48:02 +08:00
tao wang
3f46b18032 FIX:fixed the issue of incorrect display of calibration information
jira:[STUDIO-11515]

Change-Id: I4cd62b06ead3fc43917cee7fbc68b2575a0d8133
(cherry picked from commit 6d1b7b8d806530c80e72f266c733e0207e7ac27a)
2025-09-21 13:48:02 +08:00
xin.zhang
49559a6946 FIX: update the text
jira: [STUDIO-11676]
Change-Id: I7c5139fd3f81d0b1f83aef938e7ac248a0ed3887
(cherry picked from commit b609a45079c9674820d45f075fe365657f04e581)
2025-09-21 13:48:02 +08:00
xin.zhang
6c63f2fd37 ENH: update text
jira: [STUDIO-11668]
Change-Id: I12b676ecb559060ead755824973d7244bd211959
(cherry picked from commit 5a0cf116e3ad5a9592a7a7707ea5b4be35072303)
2025-09-21 13:48:02 +08:00
zhou.xu
4dbcb8152c FIX:got the wrong name of the selected filament
jira: none
Change-Id: I476bd1dfb995a0868161184c0c5782e1cae4dde3
(cherry picked from commit 31a7f19b983374ccf6e1b57de8fb635ef7e24184)
2025-09-21 13:48:02 +08:00
xin.zhang
cd01c24c3c ENH: update the text
jira: [STUDIO-11668]
Change-Id: I5a2b3a612ed4c3308ea2a984ebaeeb58ccb992c7
(cherry picked from commit a11dcd9fd4ab0dbec1f565b0ba90a42bd9804db7)
2025-09-21 13:48:02 +08:00
xin.zhang
b1a5e66af9 FIX: update the holds of command
jira: [STUDIO-11638]
Change-Id: I1d2fe9fce53b819a0307e0420d0858c0e2c13ce5
(cherry picked from commit fe959f3da34f41a500b66e4d46d268817cbc54fb)
2025-09-21 13:48:02 +08:00
xin.zhang
3654f1e56f ENH: support the react of actions for HMS actions
jira: [STUDIO-11664]
Change-Id: I5444748946e5baa219d6d413efd4e954dc578064
(cherry picked from commit 69f0bafd8a3f0d639fa85a83deec10baac1bac22)
2025-09-21 13:48:02 +08:00
xin.zhang
2728d8ec78 FIX: fix the format error
jira: [none]
Change-Id: I0ae98062dbac4729c855862760065db0c50d4ae4
(cherry picked from commit 6e03f9e2df985585033cff7f671a6657ae957da8)
2025-09-21 13:48:01 +08:00
xin.zhang
75710b72c9 FIX: remove the restriction of load ams list
jira: [STUDIO-11667]
Change-Id: I9bc22e24138431cb3d94feacd64396208463da2e
(cherry picked from commit 9da39db1d6a850328f668c7601521f3323c46a07)
2025-09-21 13:48:01 +08:00
zhou.xu
f4204d41ec FIX:The filament color after "merge" is incorrect
jira: STUDIO-11642
Change-Id: I24aaf3e5fcbf5263d8d1c5240e8edfa38123b269
(cherry picked from commit 6e09e68046edcb35282768ad120d232d08563295)
2025-09-21 13:48:01 +08:00
zhou.xu
5e0e0a7e7d FIX:revert offset when exit ObjColorDialog
jira: github 6344
Change-Id: Ia574876aa24fde7c7b958b02d928d1aef6f0633f
(cherry picked from commit b852a7113f8926043cd7c49691b5b96768de1b32)
2025-09-21 13:48:01 +08:00
xin.zhang
f5314b2ae1 ENH: remove unused codes
jira: [none]
Change-Id: Ia4c14367577ffff9ddcdaf528a8e79f9c1a59209
(cherry picked from commit 7ac47daa69c25c1830ebe4a54b8ce25fdfb00114)
2025-09-21 13:48:01 +08:00
xin.zhang
6547cb766c ENH: update air condition control
jira: [STUDIO-11373]
Change-Id: Ib25952165ec5489ef51ec7f5472fb319b0328ffc
(cherry picked from commit 307c83bb8434c40a3c7f0678a1c2abf2b361cd7a)
2025-09-21 13:48:01 +08:00
xin.zhang
472a48acc6 ENH: add nozzle type ntTungstenCarbide
jira: [STUDIO-11597]
Change-Id: Ibec41549042d253aeb85ba81e93e7c26a4a56ed2
(cherry picked from commit 1352cff31427eadd2c85ce4c9602ab3379a5ae9e)
2025-09-21 13:48:01 +08:00
xin.zhang
285c237095 ENH: remove nozzle setting
jira: [STUDIO-11598]
Change-Id: Ia10fc3bd67b61a28480b38eef0c28a088c10135e
(cherry picked from commit 9b585239f7137c43cbd766540e93401dbe5e82e4)
2025-09-21 13:48:01 +08:00
zhou.xu
d3ad4067db ENH:ban gcode to send print
jira: STUDIO-10518
Change-Id: I5958fe1bfea9a133d3adde6b0e64289f7ceb0f52
(cherry picked from commit 4b96f09a75ec07a756da55ace2ac7f6447c2681f)
2025-09-21 13:48:01 +08:00
xin.zhang
899dfd83c8 ENH: update text
jira: [STUDIO-11495]
Change-Id: If19642be0a3f6d5d8e871b6457b400fe3696b3f6
(cherry picked from commit c94057306b2176a8e8a8a99e0b8bdbdb0255417d)
2025-09-21 13:48:01 +08:00
xin.zhang
9f24f0fe03 FIX: add transparent painting for AMS lite
jira: [STUDIO-11488]
Change-Id: I1b180ad7389eb4d74c3686b0559ce26172f7b264
(cherry picked from commit 03957c567ea0ffed58057f0fafe6f311e87f3a10)
2025-09-21 13:48:01 +08:00
xin.zhang
f4eacb6742 ENH: do not popup if at heating mode
jira: [STUDIO-11471]
Change-Id: Ic7a6b33b84cf0880a7f4c2581c9ccdd1ef752cec
(cherry picked from commit 1480c97ffac75afb422fd8fb2cc21cbec6b2de72)
2025-09-21 13:48:01 +08:00
xun.zhang
34e6da777d ENH: update gcode for X1
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I4296a82b593fe3977f308840495b612755cb59d8
(cherry picked from commit 88ca1b1b073bf09c634a96c9c502a01f980a5d1e)
2025-09-21 13:48:01 +08:00
xun.zhang
0f9608301d FIX: wrong layer change gcode in H2D
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I25f46a8c88d25e03895c73569232f35f6b869f07
(cherry picked from commit 73ec6240d7625db5eae54b839c3b67f0fb6d08e5)
2025-09-21 13:48:01 +08:00
xun.zhang
9d000d5584 ENH: update gcode for H2D
JIRA: none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I837d04318863cee85c60bdeecce62a3636458e9f
(cherry picked from commit 976ab1d8806273e4bbb5f04f3c3830643de05844)
2025-09-21 13:48:01 +08:00
xun.zhang
f111becb34 ENH: update gcode for H2D
1. update start,filament change gcode

jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I4692fbdc9a7a83b0e747372dd7174f2eb974a141
(cherry picked from commit f9fa9d72d361b806f5d2d2495857e436594bba1f)
2025-09-21 13:48:00 +08:00
xun.zhang
de6996c0ae ENH: update gcode for H2D
1.Update start gcode and layer change gcode

jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I592ddb08740c5432b5546c5608516ba6288c5ee9
(cherry picked from commit 56a8b38fe84948f3483dd01fa0c08bfa944a65be)
2025-09-21 13:48:00 +08:00
zhou.xu
3a2f939f9b ENh:dynamic_filament_list should update after sync_ams_list
jira: STUDIO-11690
Change-Id: I43cacbd7a5bf74ce410a56afb440ba88d01d08d0
(cherry picked from commit 7d95de151ca5468f3d72e0aea7e35f897505e728)
(cherry picked from commit 47c48b64df903ec137922dba390fce572ee48b2d)
2025-09-21 13:48:00 +08:00
xin.zhang
b3a834c3c6 FIX: update the bind control
jira: [STUDIO-11634]
Change-Id: I36eeb751f0fbc3ddccea09cd6f8892028d8b7b7d
(cherry picked from commit 9c909f65244a2ec658d90c34e2b42a996d1ed766)
2025-09-21 13:48:00 +08:00
zhimin.zeng
e993a4cab8 FIX:Incorrect filament used for extruder with support filament
jira: STUDIO-11670
Change-Id: I7c5da8280cdc31c5910cd42333654db7673265c7
(cherry picked from commit 5b0b04815e6cff0d119328e780e4183a6ed479c5)
(cherry picked from commit 4364a4ecca47c96ebb39a4a7eacefb50ef6dd932)
2025-09-21 13:48:00 +08:00
xin.zhang
5a7dee9add FIX: update the text and icon while mapping
jira: [STUDIO-11679]
Change-Id: Ia744c27e3236ffa7c2157867b026e91c210dd5bf
(cherry picked from commit e685e57839a2933f139cfb3fe98a30a5bc8c34af)
2025-09-21 13:48:00 +08:00
xin.zhang
d2bbb02949 ENH: add action RETRY_PROBLEM_SOLVED
jira: [STUDIO-11634]
Change-Id: I53d1f0cce4236b57101c65f90d05918f348ef508
(cherry picked from commit 51142db51c77d1b64e515b498220d84cbb9df5c7)
2025-09-21 13:48:00 +08:00
xin.zhang
8633e76305 FIX: do not care about "use_ams"
jira: [none]
Change-Id: I82e151ba38bd6ab0573b41000ea965d1ab4a15e0
(cherry picked from commit 2fa2bb24b3bfef951f760411d33999ad084a4bac)
2025-09-21 13:48:00 +08:00
Peter Feerick
230eb6c9f5 fix: typo "pringing"
(cherry picked from commit c65faf05b3a2a0b77c639374bb96f0385e85f7bf)
2025-09-21 13:48:00 +08:00
xin.zhang
25fd5606de FIX: show the new version
jira: [STUDIO-11558]
Change-Id: I70fcb2fb8700ddcf08c922895a93c126f17a632e
(cherry picked from commit 9beeebdba14f14ca470d98a12e7e7eb648749f86)
2025-09-21 13:48:00 +08:00
xin.zhang
174f225849 FIX: update send print state after load gcode
jira: [STUDIO-11512]
Change-Id: I6853a30055e3e3e6e5445d201e959b8c8487d7b6
(cherry picked from commit b01702cadb4cbcb49accf549dea01b52920eb326)
2025-09-21 13:48:00 +08:00
yongfang.bian
9546743347 ENH: update gcode for h2d
jira: none

Change-Id: I245c634b08315f3c603bf12c4b1ad283c8bdafe3
(cherry picked from commit 4dcb47d153e986201f2a60b70007edce92d88139)
2025-09-21 13:48:00 +08:00
zhimin.zeng
837077ee3b FIX: cali crash when using tpu in left extruder
jira: STUDIO-11535
Change-Id: I1f979346748210c9af16931fce107efb8f9e4fd7
(cherry picked from commit b9a040f2edfd3118d84ea565715666b0e6090a68)
2025-09-21 13:47:59 +08:00
jiangkai.zhao
bf71932371 FIX: error wipe tower display
jira: STUDIO-11556
Change-Id: Ieda172923aa01bc0518a3370e69daa5fab8d8f6a
(cherry picked from commit 68d7ef49a9a4e286b37fc01c47ed80238d9f94dd)
2025-09-21 13:47:59 +08:00
xin.zhang
86347cbf15 ENH: default to reconnect, not check the out of date object
jira: [STUDIO-10820]
Change-Id: If3c332acab8fc91f60b35de6be367d310c8d7a9d
(cherry picked from commit 6683df367fd8a5713bca75bf7bfd29b1e070eeba)
2025-09-21 13:47:59 +08:00
xin.zhang
bb13f1e904 FIX: support auto-reconnect for MAC power awake
jira: [STUDIO-10820]
Change-Id: I0a7c554dc9eae4aa0f71cd1c3dabacdcd465792f
(cherry picked from commit 582e3778361b9a51b1a95c761ecf5dd7f15e7763)
2025-09-21 13:47:59 +08:00
xin.zhang
9c5b021b37 ENH: update ams image
jira: [STUDIO-11572]
Change-Id: I72d13a3ee712f71af50814f597e1751ffc2fa3c4
(cherry picked from commit ef2e8e7e9d8e42775f9aa4efdb49589a985071a1)
2025-09-21 13:47:58 +08:00
zhimin.zeng
fd40c3e9ea ENH: update layer change gcode for H2D
jira: NONE

Signed-off-by: zhimin.zeng <zhimin.zeng@bambulab.com>
Change-Id: I51b70a832abd1c5e7658ffb4eefc5e6b9017a6b1
(cherry picked from commit 509c416074253c3c175200b1581b705070ff5ddd)
2025-09-21 13:47:58 +08:00
zhimin.zeng
e121b2bb25 ENH: use empty filament start gcode for H2D
jira: NONE

Signed-off-by: zhimin.zeng <zhimin.zeng@bambulab.com>
Change-Id: Ibbd1676762b9004ff8f7883b6df264cd1e9c7b58
(cherry picked from commit 81d87aa4525be622cf274b27d95e8ead25479b94)
2025-09-21 13:47:58 +08:00
xin.zhang
edc6f3c010 FIX: do not hide the cancel if there are errors
jira: [STUDIO-11564]
Change-Id: I16f4de119a1da0bd618ae7f60d2f4b42bc249386
(cherry picked from commit 994a2c3fdd481e1d2e825431a76bbfb8eb50ce10)
2025-09-21 13:47:58 +08:00
xin.zhang
0d37c60cd3 FIX: enable the editing status while enter prepare mode
jira: [STUDIO-11566]
Change-Id: Ia9372035b25819f9540dd1a837895cf3e8882741
(cherry picked from commit 8c4c216c67d17d4cb550c2e844da38bfaa7cb89b)
2025-09-21 13:47:58 +08:00
xin.zhang
c61ba747f9 FIX: do not update options if sending
jira: [STUDIO-11565]
Change-Id: I55db25f8bc101e830c439725df408cb7a692faff
(cherry picked from commit b80acdedff75b025c12a3f81cd0980f703115bc7)
2025-09-21 13:47:58 +08:00
zhou.xu
1c388a6891 FIX:Modify the position of gradient and double splicing materials without drop-down arrows
jira: STUDIO-11563
Change-Id: Ia953b10f6cfacaa0803362c9fdc3ec9f5a7efa41
(cherry picked from commit 6055a36593a225a96fb29f1dde2df7840e8ce3a9)
2025-09-21 13:47:58 +08:00
jiangkai.zhao
64126754a5 Fix:Multi-head single-material prime tower error display
jira: STUDIO-11527
Change-Id: I43eb4fdd5364af4716868551e56461b15c3158c3
(cherry picked from commit c6246be5631d19b577df28d5ee25a29b3368b37f)
2025-09-21 13:47:58 +08:00
xun.zhang
a6df74e826 ENH: update gcode for H2D
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ie9a948410b8e4f3273dfb76881eef6f2cf765c43
(cherry picked from commit bdcd2573d8d7572f61460f0a99c6f14226f8a267)
2025-09-21 13:47:58 +08:00
xun.zhang
fa05f107ab ENH: refine check logic for filament mix printing
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I199462cee6284e13e58f829b7972dd3124bfc385
(cherry picked from commit 22834b23586d2230e94e9dffd8b09146e5342246)
2025-09-21 13:47:58 +08:00
xun.zhang
86f16d9c8b ENH: add some missing filament types
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I6d5b8f7a3c2eb26950bf39694023903ddbc47088
(cherry picked from commit 14eb79ab9a02d73f5e6deea8f7dc77897e76ac7e)
2025-09-21 13:47:58 +08:00
zhou.xu
d367136341 FIX:Missed an unmatched processing and add update_final_thumbnail_data
jira: STUDIO-11528
Change-Id: Ibc5b8423731d5028c8f3d2fb14518cfd26293a21
(cherry picked from commit d66d18529a874de5314748ee0cfded6b459eceb8)
2025-09-21 13:47:58 +08:00
xin.zhang
2b2d3cfd02 FIX: on mac, the mouse event may triggered even disabled
jira: [STUDIO-11526]
Change-Id: Id68f43e1b6d1401c72966f97643d6631f23b87a9
(cherry picked from commit b2b4eabbfb7cb60cb1cb1b5e4fc624e52e956e22)
2025-09-21 13:47:58 +08:00
zhou.xu
72bed99085 ENH:The reset, append, and match buttons can also update colors in ObjColorDialog
jira: none
Change-Id: I4b2787dd8d94e639754b4fe6a79ec86022d5c0a4
(cherry picked from commit a75f521807a57723c0a0b21d3c803e380d9ea132)
2025-09-21 13:47:58 +08:00
xin.zhang
96374d61b7 ENH: update text
jira: [STUDIO-11519]
Change-Id: Iaa222b566245efc676d0675f6bed3a585d7fd83e
(cherry picked from commit ed4183471d88b2bdd30ec9f6f62c57ae8be19576)
2025-09-21 13:47:58 +08:00
xin.zhang
a9cda8c9fa FIX: update the tooltip for timelapse
jira: [STUDIO-11495]
Change-Id: Ib9a29094f2eca8079d96db13ca87c61ddeaef5e2
(cherry picked from commit 4a981b37b2d1bb1fbe3e844da954cddb762b7465)
2025-09-21 13:47:57 +08:00
xin.zhang
b18337f0a6 ENH: disable the nozzle settings in Studio
jira: [STUDIO-11489]
Change-Id: Id26f06d312ea04ba3aaea9ec4539860f72533078
(cherry picked from commit 8fb88001af3cea8c94adb1f1ace00795cb4be299)
2025-09-21 13:47:57 +08:00
chunmao.guo
b64d05608b FIX: not transfer filament param copy variants
Change-Id: I2fea8a692506ce8c1def6ec4700c788fa31cf7be
Jira: none
(cherry picked from commit ad049d1a90b9bbd7b8c9d4cb9d32f013d6ad3de9)
2025-09-21 13:47:57 +08:00
xun.zhang
2291e6eb5c ENH: only enable pre fan for pla and petg in H2D
jira: STUDIO-11154

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ic67ed36d507957dc0328b532e7ab3d82981f97e8
(cherry picked from commit 880919dc2433e0c696be0a38673c067da3d5cabc)
2025-09-21 13:47:57 +08:00
tao wang
acd36c3460 FIX:delete useless AMS sync
jira:[none]

Change-Id: Iff17bc9b54a246a20855c40abcf79b50bfe7a72c
(cherry picked from commit 89f06c65ec16eee1947b3ed519ba02f03965bba6)
2025-09-21 13:47:57 +08:00
zhou.xu
72617a1af7 ENH:fix the issue where images can still be displayed when drawn from the top left corner in Mac
jira: STUDIO-11487
Change-Id: I9878bd9fe47f4c9067ca224377677eb2a0f93ffc
(cherry picked from commit e2191a9e1506cefaaca5fd214ccc5f85a26128f6)
2025-09-21 13:47:57 +08:00
xin.zhang
4cd0dc883f FIX: check the return value
jira: [STUDIO-11485]
Change-Id: I60f7d571cd93b0e4f26a965f54c19987843c6265
(cherry picked from commit 85378a7e99bca847bbcb51be1eeaa137eb0a06ea)
2025-09-21 13:47:57 +08:00
xin.zhang
35353fb210 ENH: update send print dialog options GUI style
jira: [STUDIO-11444]
Change-Id: I16f6e93edf09dc84786a0f7e6a14c9d0734542b8
(cherry picked from commit 6e9f2ecb5b1471e4e7432ca681b6e5b293929a46)
2025-09-21 13:47:57 +08:00
zhimin.zeng
0b2e356f53 FIX: add warning tips when using precise_z_height with prime tower
jira: STUDIO-11208
Change-Id: I0fa704e1c4f645c3442cbd4b8476b6cdb98e837c
(cherry picked from commit 64e7c5ac46b0657e1f1748c4d7fccdfefc5bbaab)
2025-09-21 13:47:57 +08:00
zhimin.zeng
70ee51d366 FIX: use old wipe tower params for old version 3mf file
jira: STUDIO-11309
Change-Id: I598236646b4de5094d1e9d10ace59c14f1643b44
(cherry picked from commit ed7658ae9f37f6253fbc0efebca73cd8b6e6d6a8)
2025-09-21 13:47:57 +08:00
zhou.xu
d692b8b6cb FIX:fix ams sync error when all map is unmapped and change to override mode
jira: STUDIO-11482
Change-Id: If73721c9a0419c616201c441a1ce6e5a4fed380a
(cherry picked from commit 3cf6d2e3afaa8975031b1464b303e6f6a326ddb7)
2025-09-21 13:47:57 +08:00
zhou.xu
a4991c626a FIX: Fix clicking combox without response in mac
jira: STUDIO-11473
Change-Id: Ie23bbec7d4d0aea537ab35922e444597e3c02def
(cherry picked from commit fee5a74d60e9840bbfd4cc5568ffdcc15d47350e)
2025-09-21 13:47:57 +08:00
zhou.xu
59e211a4e1 FIX:add exist_multi_color_filment logic
jira: STUDIO-11477
Change-Id: If30e0289096b6d465eace503fbe706fb31742f0c
(cherry picked from commit 1ace58b950de660bf7eac64bab77b0091d95a0c0)
2025-09-21 13:47:57 +08:00
tao wang
0082c51fc0 ENH:delete useless tips
jira:[STUDIO-11355]

Change-Id: If55b29d6b83d734c1d421dd9d61a01d202bda274
(cherry picked from commit 28c6abe8b1a71fa81350caaa5cfb0b23de0c86a5)
2025-09-21 13:47:57 +08:00
tao wang
290a379c38 FIX:remove the function of using ams
jira:[STUDIO-11466]

Change-Id: Iaba4b22d31572af3a08dddc966b84667ff8f60da
(cherry picked from commit f262e7d7a2ff3da8f200d2917650ac0766e33dca)
2025-09-21 13:47:57 +08:00
xun.zhang
69be743c68 FIX: incorrect flush volume after sync ams
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I44d031b1fdcc02adbfc4346314f5001c56a941b8
(cherry picked from commit e854174bc0d2f9965f11da9860f67ce5996e99b0)
2025-09-21 13:47:57 +08:00
xin.zhang
79a3d917e5 FIX: do not popup if not checked
jira: [STUDIO-11301]
Change-Id: Ibc71cef173ea5a09a43a7d23a8afb81b50c0af07
(cherry picked from commit 7f3647f4bfad081215ba32b1681008fcc21aa0c7)
2025-09-21 13:47:57 +08:00
xin.zhang
554c192be1 FIX: do not need the button
jira: [STUDIO-11231]
Change-Id: Ia2425864b37d3b158d5c37978e1db04dfc6e63c1
(cherry picked from commit 90ca1c5b4b977fbe98d37718a363c2a31265816e)
2025-09-21 13:47:57 +08:00
xin.zhang
b24d347a98 FIX: remove the size setting
jira: [STUDIO-11442]
Change-Id: I95af7e8dd95e470c52eb67911bafd868c04c7c20
(cherry picked from commit 09ee3d9d0cc84e00d5f6f8de4d441b79c624a02c)
2025-09-21 13:47:57 +08:00
tao wang
5570fadb4e ENH:increase direct connection protection
jira:[STUDIO-11310]

Change-Id: Ie69a1936542cc2b5bcb32d953763546d9189db7c
(cherry picked from commit debbd2dca42a5594bae895c55a5a0c9273a8762a)
2025-09-21 13:47:57 +08:00
jiangkai.zhao
91ee2cdbc2 ENH: update param's mode and tips
jira: none
Change-Id: Ifb266f47e849f431ca92104249a5328d26734808
(cherry picked from commit 96516e8c042692ded35443bb40ae86f48e1264ae)
2025-09-21 13:47:56 +08:00
lane.wei
cb635e8f7b FIX: CLI: process travel_acceleration for old files
jira: no-jira
Change-Id: Ica49d5d9d184a72de450c147c227f5b6e1f288ff
(cherry picked from commit 9d4fafc646849497718c1ca4fe9ff3b0df282928)
2025-09-21 13:47:56 +08:00
zhou.xu
d14789fad1 ENH:delete no use code
jira: none
Change-Id: Ib63d812a797b7bbf06f1af434c705f5e3884d57d
(cherry picked from commit 8f007662874b3fd6ea5d63e820ef92a5ae8c384a)
2025-09-21 13:47:56 +08:00
zhou.xu
f36fa17a09 FIX:m_ext_image call msw_rescale should protect
jira: STUDIO-11441
Change-Id: I89dc4bfaca61958773f7dfadf2983ff3f9cb6da1
(cherry picked from commit f42e47b7456fde2ef01ae9c3327f7c0ce9d8f174)
2025-09-21 13:47:56 +08:00
zhou.xu
05cbd8a3c8 FIX:Add a protection for m_thumbnail_bmp_display
jira: none
Change-Id: Idc830eec7fcf5dfa93b4aaca50a8ae726e5c8cc0
(cherry picked from commit e3d4563720ec8aaf91cf13678d956c99cc8e9e82)
2025-09-21 13:47:56 +08:00
unknown
05fd490777 ENH:move pipe position
jira:STUDIO-10956

Change-Id: I5d19974684dc0c65b7a0974b77e42e65dd165a41
(cherry picked from commit 9b8845174ce703d84ddab1f894a6a155a4cd914d)
2025-09-21 13:47:56 +08:00
xin.zhang
8b4388236d FIX: clear the tips
jira: [STUDIO-11447]
Change-Id: Ia45b4a18ced5c040cfd6849fca3952780c69432d
(cherry picked from commit 2de0aa658ca676bf9d782fbd90628769cca71590)
2025-09-21 13:47:56 +08:00
xin.zhang
50fdb74003 ENH: show ams_backup while ams is used
jira: [STUDIO-11329]
Change-Id: I5fd21882b5318d4a4ce50ce0db12f07f1c6b6f69
(cherry picked from commit 6f3b3839e21ecb06392e7c0e8d0d87e63cc8d307)
2025-09-21 13:47:56 +08:00
xin.zhang
f5f2a893de ENH: Navigate while enter valid number
jira: [STUDIO-11440]
Change-Id: I01a0b2fdb67b76cbea4c17539951c8d57dc2cd31
(cherry picked from commit d6b5bbf84b75447737bde91961305be522eaf47d)
2025-09-21 13:47:56 +08:00
xin.zhang
aea87dbb66 ENH: enable to enter 0 as default cooling temperature
jira: [STUDIO-11360]
Change-Id: Iaede485340c1a88a1a42eceeadf772332fe369a0
(cherry picked from commit 1fd53404176795581cb2fe1e6d69bfe425a04c23)
2025-09-21 13:47:56 +08:00
xin.zhang
377df07c67 FIX: default cal_idx is -1
jira: [STUDIO-11448]
Change-Id: I6f37bc7d095a1d25f4f52db9d34954d2dccf1576
(cherry picked from commit b9cb321f733656e91936ced34930b1df10f477b0)
2025-09-21 13:47:56 +08:00
tao wang
838da20835 FIX:fixed the issue of not updating the use ams option
jira:[none]

Change-Id: Ica070e72345a175952c227bfb6a5219bb2a41dcd
(cherry picked from commit 8bd6e99f0799bfc92b1fd11d94fb316e6a785d5c)
2025-09-21 13:47:56 +08:00
xun.zhang
f56df96b63 FIX: empty flush dialog in some language
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)
2025-09-21 13:47:56 +08:00
xun.zhang
df920fe96c ENH: update start and layer change gcode for H2D
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Iaea29528ad5115f41982056ce4535d2450010ce4
(cherry picked from commit 5fb86a6de9aee44f3bd52340123ea87092c089e5)
2025-09-21 13:47:56 +08:00
tao wang
c4aad8640d FIX:optimize the layout of SN input controls
jira:[STUDIO-11304]

Change-Id: I45663121431fadcafed232c319ff69d6c616eff2
(cherry picked from commit baabcdd654327085d33c6b2067f7281af07e3b4b)
2025-09-21 13:47:56 +08:00
tao wang
bdc9e421cc ENH:multiple printers mgr support the new protocol version
jira:[none]

Change-Id: Iee89fcf3e945e3507ec773b7ae70a61968fbe9ef
(cherry picked from commit 7395bbb4577a59e9b874750b3faec77f9e9a3756)
2025-09-21 13:47:56 +08:00
tao wang
bb74ca8b63 ENH:supports new fields for flag3
jira:[none]

Change-Id: I013c7b843f3f7d5156a8d209572da2bc078e9191
(cherry picked from commit 106d9865c3e569b95519ae9bd9193d10bd991d1a)
2025-09-21 13:47:56 +08:00
xin.zhang
1908b39bb8 ENH: fix the shown text
jira: [STUDIO-11407]
Change-Id: Ic1286621d4d85e2ab18b5b61c7ed2f055576c5b3
(cherry picked from commit 65868cf6037b8c29e5d0b0af9a9457a1e066472c)
2025-09-21 13:47:56 +08:00
xin.zhang
f4a3ceba2b FIX: add configured bed leveling option
jira: [STUDIO-11412]
Change-Id: I999d5f4df34c7b1979a340735abaf275f2574674
(cherry picked from commit 63e6890cc742a861c53a109ba848b69292a1a858)
2025-09-21 13:47:55 +08:00
xin.zhang
b1b82927b2 FIX: do not show the dialog
jira: [STUDIO-11301]
Change-Id: Id2ae28fcd82f448a6c147ce480dbd92a95313950
(cherry picked from commit fb6756d4aa011d92662b64f6ecf8b3f0c648daa4)
2025-09-21 13:47:53 +08:00
xin.zhang
16ceabe63d FIX: do some update while select printer
jira: [STUDIO-11324] [STUDIO-11325]
Change-Id: I38db55a15df47f45c0a2ddea9b12622148509ed4
(cherry picked from commit f2ff1cecad4d6ed2aeea1e166e4c67216983a78e)
2025-09-21 13:47:53 +08:00
xin.zhang
0210a3caa8 FIX: update the bed temp control
jira: [STUDIO-11331]
Change-Id: I62526cd1cad0208324bc1970f5dde9ca03bf08f9
(cherry picked from commit 2fc15b4c11be79234cc5c08f989cb1090121a8cd)
2025-09-21 13:47:53 +08:00
xin.zhang
afede91818 FIX: save and restore the options; update codes
jira: [STUDIO-11261]
Change-Id: I08977f17366e6b340e4af9e9a23fa5c2b856c8ea
(cherry picked from commit 8382561c7c430f452e1348a3da05f6712da780a9)
2025-09-21 13:47:53 +08:00
xin.zhang
7ed9710277 FIX: do something on machine lost
jira: [STUDIO-11324]
Change-Id: I915ebe84dfad00910df01e7f289109c602b02c1b
(cherry picked from commit 6c4757505ac338eb8e995aacaf1d049957044725)
2025-09-21 13:47:53 +08:00
xin.zhang
6494c35626 ENH: add protection for old files
jira: [none]
Change-Id: Id1fc3e41a1fa3faf363c902c98a1a2b73820a569
(cherry picked from commit d621bea9382020bc024c4fa070718116de46216c)
2025-09-21 13:47:53 +08:00
xin.zhang
da33d78799 FIX: too small to show, enlarge it
jira: [STUDIO-11323]
Change-Id: Ibd56b0a72cbef0f9c752f83b1e8526a1c4275588
(cherry picked from commit c151680321af77facd1ec0aca337b7680a4c6ecd)
2025-09-21 13:47:53 +08:00
xin.zhang
1549e8f4e4 FIX: modify style; optimize ext image loading time
jira: [none]
Change-Id: Ia4bd69cc4ae6ae115c22a5c0b6c6a517773ec3f4
(cherry picked from commit 1dfd5cfdfb44b7ad4418633a3e00f5c451856fe7)
2025-09-21 13:47:53 +08:00
zhou.xu
b9796e8765 ENH:big_bed_image_popup automatic hide
jira: STUDIO-11327
Change-Id: I44a43d67ff909768f5e652a687883742ece14737
(cherry picked from commit dbaec237c4e53b9e93901f21274c729d79cce2d5)
2025-09-21 13:47:53 +08:00
chunmao.guo
d2754f4c36 FIX: sync_ams_list find filament_type
Change-Id: If6d95c26fa128377d8b4414470b07ed5a40f0b09
Github: 6152
(cherry picked from commit f076d95d8847d80ed466d118d718ec7584293e97)
2025-09-21 13:47:53 +08:00
chunmao.guo
d513914dd3 FIX: DropDown hover item tip
Change-Id: Ie3d9e654cd612b2db983c3410d7d8d0224200a8d
Github: 6380
(cherry picked from commit e6e093949d39fa208c4afaa3f2bc97e3b518ac21)
2025-09-21 13:47:53 +08:00
chunmao.guo
3e2c72cb3d FIX: Choice param Field translate sidetext
Change-Id: I10e086af41bd979a5dfd1711b94f94a604ab2052
Jira: STUDIO-11119
(cherry picked from commit 93325d7a20fefb97dfe1a99341a9b30f50768029)
2025-09-21 13:47:52 +08:00
zhimin.zeng
d5f11037fa FIX: Third-party filament show Incompatible in cali
jira: STUDIO-11306
Change-Id: Id63f935a478cef92d720cd602ff19dbe87ca1c8e
(cherry picked from commit 7ef9a211233db7f1d0f50a074074eff2e43dccd6)
2025-09-21 13:47:52 +08:00
zhou.xu
836cfc5383 ENH:For reset buttons in small language environments, use fixed spacing
jira: STUDIO-11335
Change-Id: I6869c677176f9048731d23eb993dc3b0076f56b8
(cherry picked from commit 6c8df0c5be8168aabe60eb96eebc7bb2372be462)
2025-09-21 13:47:52 +08:00
zhou.xu
f61ccaff3d FIX:m_max_filament_index should init to 0
jira: none
Change-Id: I9a42b43ee31d27579d7624f20e49d71b4e6446b5
(cherry picked from commit c1f1b96cffb31b667e51d9a22c4ad83df5cfea26)
2025-09-21 13:47:52 +08:00
zhou.xu
c3e0456017 ENH:Picture text adaptive height for combobox menu
jira: STUDIO-11330
Change-Id: I5948dad4811747258b96e6ac1bf95379640c9cd4
(cherry picked from commit 4824f1f5ce76bc28502cd3fc8de97e082e6f3ad1)
2025-09-21 13:47:52 +08:00
Mack
5004fbbf60 ENH:loading the step in boost thread
github: #6079
Change-Id: I0a289fc9730e7d091a71137cf11a711dfee5392f
(cherry picked from commit b454e7d8bb91b62b3be6121c567f7aee291eff50)
(cherry picked from commit b7ffba39e407317ad3cc4fe65d220f0049963aa9)
2025-09-21 13:47:52 +08:00
zhimin.zeng
ed40ce590b FIX: Remove editing restrictions for unprintable areas
jira: STUDIO-8934
Change-Id: Ied5f1571e9e4f8800eb2dc76eede052c7a656c1d
(cherry picked from commit 3ed51770b824c68825941a11b18b31f45b22ce62)
2025-09-21 13:47:52 +08:00
zhimin.zeng
cd74bcf2ed FIX: Unable to edit existing flow calibration result
github: 6274
Change-Id: I96ef3e2f62a28ee8343c25799a75ddc940948c18
(cherry picked from commit 27f60bd85b71bae2fa739d497882e07ce518d489)
2025-09-21 13:47:52 +08:00
zhou.xu
e1ece85385 ENH:Adaptive window width
jira: STUDIO-11300
Change-Id: I687985c29faf888b70474ee28784184ea0d98420
(cherry picked from commit 49e2fcc1a907e046756cf6d24283b8dc2882f8e6)
2025-09-21 13:47:52 +08:00
xin.zhang
618716b544 ENH: show why can not set timelapse
jira: [STUDIO-11109]
Change-Id: Id6347a6b0e5f6ead0a5ad534790b42adf9f01c4a
(cherry picked from commit 9a80a45a82f5db6f85fadbde977529d39d8036b1)
2025-09-21 13:47:52 +08:00
xin.zhang
8c513c816b ENH: give an init size
jira: [none]
Change-Id: I9a502135a6e5009220c6194d39dbef371a9a74a2
(cherry picked from commit 5d45f68bfb201cc1935bcd99d604e0e5416289de)
2025-09-21 13:47:52 +08:00
zhou.xu
8b2d727edd FIX:Plugin first fails to install Mac
jira: STUDIO-11242
Change-Id: I9c3484e18c3da75a5dee62523e32ac6ad6c9b207
(cherry picked from commit d5d4dc46386894b636c189da15978df11f8393c0)
2025-09-21 13:47:52 +08:00
xin.zhang
3ef47c0a38 FIX: save the original cloud HMS file
jira: [none]
Change-Id: I1e0987203d06274e4018e4bad12d9d796f3a26a0
(cherry picked from commit ed9c29d7a572729cd8d091e903a1b287841ab01c)
2025-09-21 13:47:52 +08:00
xin.zhang
94fed58ff9 ENH: update Send to print dialog
jira: [STUDIO-11230][STUDIO-11260][STUDIO-11259]
Change-Id: I6fdbeebf2a491f354c122eb35e5858bd6e72591c
(cherry picked from commit f3992d3e9420e0bd4987c6ca4cfe96f9f35bdcd1)
2025-09-21 13:47:52 +08:00
zhou.xu
0dfba478df ENH:Leave the lifecycle of the window to wxwidget management
jira: none
Change-Id: Ie059192eedd755524d8f010b73849bf2e70476cd
(cherry picked from commit fc476f115daabe9aaa175cb87f3d506d9b9e1f84)
2025-09-21 13:47:52 +08:00
zhou.xu
aa430e1c2b ENH:The dropdown menu remains displayed after clicking on the image
jira: github 6255
Change-Id: I7f9a2b0e210a0b1405e1e15e8a494195570ce0d5
(cherry picked from commit 619be468ac2004d3848d1a8852c68fa2c41c5403)
2025-09-21 13:47:52 +08:00
Mack
ee169528c5 Fix:Retain the brim ears during model merging
jira: STUDIO-10122
Change-Id: Iae35e4137f64a6d697b90bf76f0e6fbc4d8025c4
(cherry picked from commit cf5a2c9046490a1f34346713947b0e016f127b07)
2025-09-21 13:47:51 +08:00
xin.zhang
6aadc1bec7 FIX: update the filament_load_p_series.png
jira: [STUDIO-11265]
Change-Id: I399c9a8f844c3e3336510a48e103e10abb1d85cd
(cherry picked from commit 76153f8bcd1500c1051b69ca6e7e3405b02d6fcb)
2025-09-21 13:47:51 +08:00
xin.zhang
da5a2160ce FIX: update HMS init logic
jira: [STUDIO-11136] [STUDIO-11126]
Change-Id: I2556f1ad0bcd84b6c6ba892098f8618169bf98e9
(cherry picked from commit 23aff30a209f4d137359fd224e269603765567df)
2025-09-21 13:47:51 +08:00
xin.zhang
41f7bea34b FIX: use cloud HMS
jira: [STUDIO-11126]
Change-Id: I6bbc7163c2f47f38f3ea614d71f534dc4ecd9835
(cherry picked from commit af658c653e9c5fd6280cc9ddd1cddf6cfc794ffb)
2025-09-21 13:47:51 +08:00
xin.zhang
b474eb0613 FIX: erase the access code records while empty
jira: [STUDIO-11102]
Change-Id: Iab43485789f74e635b7de195cbe8683f6b9e9be6
(cherry picked from commit 9441a32ca363aad727cf8c66e2f61953598a15a3)
2025-09-21 13:47:51 +08:00
tao wang
426b5900ee ENH:compatible with AMS exist flag
jira:[none]

Change-Id: I6afeafe0676eded86f83838576d67233f50ee509
(cherry picked from commit a182fa1aa4a3bdd32c4ccfa26adcd92a9f1cca37)
2025-09-21 13:47:51 +08:00
xun.zhang
bc402d0792 ENH: update gcode for H2D
1.Update machine start gcode and layer change gcode

jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I6ac431c8035ba1c6e66a9799f0e066f3930a9ee1
(cherry picked from commit 8317976ab0cea78d8a8323ecc28781ade2fcdd7c)
2025-09-21 13:47:51 +08:00
tao wang
55586bbaf6 ENH:X1E supports nozzle types
jira:[none]

Change-Id: I056d04cbc08f0b29eeedc6cb0d7261e48c04611d
(cherry picked from commit 8f94e72c1639cacbce54623e95897296377642c5)
2025-09-21 13:47:51 +08:00
tao wang
6d739dde47 ENH:adjust the layout display of a single AMS
jira:[none]

Change-Id: I801daa5f3a8ee1b3f03037eb4edf881071ea67db
(cherry picked from commit cbd69328318c18a2040a04b24ae8cd5340523ce0)
2025-09-21 13:47:51 +08:00
tao wang
4f7e8e32a4 FIX:fixed the issue of no mapping data when use ext only
jira:[none]

Change-Id: I8dc94514ffa67c13a3c3f52f09e5ef0b997ad568
(cherry picked from commit 8cd51301ad6e32018873abae487dfcec1a2fd8e5)
2025-09-21 13:47:51 +08:00
tao wang
0bd15792e5 ENH:support printing all plate
jira:[none]

Change-Id: I528129705ad2b6e81cb7d0b625d3a9228baf9cf1
(cherry picked from commit 00f4fbb5a6723ba4977cb18802c65bf8dedf6e29)
2025-09-21 13:47:51 +08:00
tao wang
8ac5ca4e3d ENH:use new command based on AMS type
jira:[none]

Change-Id: I9411aa5b673b4270fe468a07c38d9966bd31a29a
(cherry picked from commit 83de229aa1306e80646b69ea7ba02f6b2e58f818)
2025-09-21 13:47:51 +08:00
tao wang
ae435eb74c ENH:hide use ams option
jira:[none]

Change-Id: Icfb93d9f16055cd6e53f3465759b435cf5926eec
(cherry picked from commit 8c3304723e78337230bb6b00fad14fb2a27912f3)
2025-09-21 13:47:51 +08:00
xun.zhang
adc00b2794 FIX: slice btn can't click in ubuntu
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I8566dcba151d02df56097dd5add08e45a876a9e8
(cherry picked from commit a210dbdf2ef06c9cb56cb81211515d7005795cdd)
2025-09-21 13:47:51 +08:00
xun.zhang
057b85f8a2 FIX: crash in ubuntu when doing group
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ib69be6fdc18918c9d9ae0c840b7dfa6bd4977365
(cherry picked from commit 55f79b273790ff25b2bde5b07011ef9bb4760c4a)
2025-09-21 13:47:51 +08:00
jiangkai.zhao
f3c11288f6 Fix:skip_point error when gap overlap
jira: STUDIO-10852
Change-Id: Idbfdfe2513115b0fef540e0d681997be0a3719a4
(cherry picked from commit baae89db17b7a59858d7760d6bfc394fbdd8c252)
2025-09-21 13:47:51 +08:00
jiangkai.zhao
e7f95ae1af Fix:False positive in collision detection
jira: none
Change-Id: I4f2c88ac95273086e2f77e60f5856415aba83741
(cherry picked from commit 93e8f29e5d683e2949310b3037b1d90f3eeeab0b)
2025-09-21 13:47:51 +08:00
zhou.xu
4b7f245740 FIX:fix obj import crash
jira: github 6333
Change-Id: I3df9edce95b24751f39bcdcbe75e7050fede68a1
(cherry picked from commit 46678882ed2630f3e4593fa4176cec64e8e5ed13)
(cherry picked from commit cb5ac14fd3f111d522696d418d1c175dce88904c)
2025-09-21 13:47:51 +08:00
xin.zhang
c743085c4e ENH: add "Don't show again" to fan speed control
jira: [STUDIO-11231]
Change-Id: I160d122155302195edf4b97e8b92e96350f9d600
(cherry picked from commit 0ba097de36efd077244ea3d1f435c9e5dc7f9637)
2025-09-21 13:47:51 +08:00
xin.zhang
c38fa41fab FIX: Enable set nozzle for undefined nozzle; Enlarge Combobox width to show texts
jira: [STUDIO-11229]
Change-Id: I559712f7ce13e4ff7318a2e51fe7f18893372f2c
(cherry picked from commit f9eecbb4b7a3d54a5dad68882678c4a1cf9eb678)
2025-09-21 13:47:50 +08:00
jun.zhang
179d68ca37 FIX: imgui key event related issue
jira: github-6167

Change-Id: I30be4c4df4ef8eea695fed73ace1d380e790bf76
(cherry picked from commit 8c755cbca108f4f0d1a78d8296cd503caf5c0ca7)
2025-09-21 13:47:50 +08:00
jun.zhang
649eacd801 FIX: gcode viewer: always update top_layer_endpoints if top_layer_only is enabled
jira: STUDIO-11141

Change-Id: I1c8eb3234401ee64576212a08764170577855a8c
(cherry picked from commit 2c718bb376c4d26249f1942e9f076bf6e99d9f23)
2025-09-21 13:47:50 +08:00
xin.zhang
38a71f527e ENH: move some level
jira: [none]
Change-Id: Ibd0d380b16b30f63144d38a0c34972d8b7c4153f
(cherry picked from commit 2da69efd9b0db6c2be6a1b3985bbafb7afc5d3be)
2025-09-21 13:47:50 +08:00
xin.zhang
8eee80286b ENH: print origin package at info level; remove indents
jira: [none]
Change-Id: I8130951c8b451d7e8ce164e70d70b84e542c5a22
(cherry picked from commit 8fbbf8f34ffc41a414a0904b00cc163df30d056a)
2025-09-21 13:47:50 +08:00
xin.zhang
aa70322e87 ENH: reduce log files; no need to log out if nothing changes; switch log level to info
jira: [none]
Change-Id: I72066576085fd99a032383cb52f24f2e87adb9c3
(cherry picked from commit 40183c40748f6ce63a07e18d4ab2bc1c79353a21)
2025-09-21 13:47:50 +08:00
zhou.xu
36cd741a3e FIX:delete the code for connecting to the machine and switching to a combo box
jira: github 6231
Change-Id: Ic0b043ae4bd27d3a6d41bf4a6b3f95dd532fecee
(cherry picked from commit 8df494e35825008c51440ba6e588ce2bdd710cbd)
2025-09-21 13:47:50 +08:00
zhou.xu
2d3d68c922 ENH:When the AMS option is turned on or off, update the correct thumbnail
jira: none
Change-Id: Ia001e4baa7de72ab077cf0fb76c45d4cb8bac088
(cherry picked from commit 89aa62f8b4cd11fa10a898956f1c57ae1ef64a70)
2025-09-21 13:47:50 +08:00
zhou.xu
c2a2f06b8a FIX:Fix gradient material display issue
jira: none
Change-Id: Ia7877fc297e77e28e630ade6c8c9826f99df0ed4
(cherry picked from commit e58b96e79eb7a9d43a9b35f49ec92d8c97f281e0)
2025-09-21 13:47:50 +08:00
zhou.xu
72fce85874 FIX:empty plate slice state should set to UNSLICED
jira: github 6276
Change-Id: I1a25cb2920806fc09f6d666bf043433837190ac2
(cherry picked from commit 61204671b0b462f49363d11e2bff79958bba031c)
2025-09-21 13:47:50 +08:00
xun.zhang
f18483825d ENH: update gcode for H2D
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I288be5ef52b15d448d218ae451ff07126b6504c7
(cherry picked from commit 8b92c7a2bcdb6463638c528e7c4a491ba19f1f51)
2025-09-21 13:47:50 +08:00
lane.wei
833108d29a FIX: 3mf: fix a popup issue while parsing old 3mf
jira: no-jira
Change-Id: I89f0b83f146bea60ef821160254cee4d2c0eb0ca
(cherry picked from commit 5f1714f02ceeb34519e0ec401d37be3ff7efa87b)
2025-09-21 13:47:50 +08:00
xun.zhang
e59a11d539 ENH: update gcode for H2D again
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ibf732553c9a0351d996d397705a5ffdf7fd45918
(cherry picked from commit 01bb20345df514e1a67a8cf5c872d6ce28aa2d89)
2025-09-21 13:47:50 +08:00
xun.zhang
5d95426cdd ENH: update gcode for H2D
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ia06c7ba8abec11bf760967fe0f5eb273fea4aab0
(cherry picked from commit 6f87589e76530ce9d48e8a23cfad7c62be50801a)
2025-09-21 13:47:50 +08:00
zhimin.zeng
5dd1bc9a81 FIX: add filament id to filament_ids when send cali job
jira: none
Change-Id: I6e3e8c38b67fe62442fa369f072fd1743f35f38f
(cherry picked from commit ec9193ffb06e12411b4e521c12d9e16f121f54d1)
2025-09-21 13:47:50 +08:00
xun.zhang
ed5111add8 ENH: set additional cooling fan spee to 100 for TPU
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ia60e407b4a7a6f6db76cdd12d86cc48ea4151d8f
(cherry picked from commit d15a9148999305d4c742c652c4f05a32e4dd6e0e)
2025-09-21 13:47:49 +08:00
xun.zhang
7377d3ba9b ENH: fix some mistakes in profiles
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ic760cbe7dcc3bde0038f0cb2569d631608b29b47
(cherry picked from commit 002137b8768922a23d11f01140f0a67d8df6faba)
2025-09-21 13:47:49 +08:00
xin.zhang
42fe1d4f8b FIX: recheck if the ext is used
github: [issues-6179]
Change-Id: I12a5ca2d3873f798d5d195adaf64abfec1f3245d
(cherry picked from commit 2c10531348d4b535e8ca49294e78d0ddf9da467d)
2025-09-20 15:37:23 +08:00
maosheng.wei
6aa49dcc12 FIX: Material name transcoding issue in AMS Materials Setting
github: #6190

Change-Id: Ie43cf9ab9b59b0cb9e7b03a61601716f6fff2217
(cherry picked from commit 33193459219c7b39a2cd0ee1dfc8c57e39cfa755)
2025-09-20 15:37:16 +08:00
lane.wei
c2fea83e72 ENH: CLI: add allow_mix_temp option
jira: no-jira
Change-Id: Idff6ff2f11b4b0a1fb3a4a410fa46c78d38d1a6e
(cherry picked from commit 4ffa7b505a4c1b1f27152c5f5198c9571939de40)
2025-09-20 15:37:12 +08:00
xun.zhang
782c7f1d0c FIX: filament savings not consider flush multiplier
github:6214

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I9cb9f8d172bfa501732bb50f437e261793e18972
(cherry picked from commit 274a05367313daac913e58b98dd8944e934ebabe)
2025-09-20 15:36:49 +08:00
洋葱
220d2fd574 Revert "ENH:direct connected devices support fram mode"
This reverts commit dc032e6b719d5d3526f9e757dde884e32583be46.

Reason for revert: <just reverts>

Change-Id: I7e9050cd48d59270fb23b6430990a2c88f3fabab
(cherry picked from commit be08d1d793acf104e1d541c2bd2a49f868ed6189)
2025-09-20 15:36:07 +08:00
xin.zhang
7b609448c0 FIX: update ext images; use smaller image;
jira: [STUDIO-11133]
Change-Id: I21280d9f9e9f3d7cc8811b5b3cf46ef4c09c61a9
(cherry picked from commit 18728451d02c16d6f64a9ebee50011b734bdb90b)
2025-09-20 15:31:42 +08:00
zhimin.zeng
00f5812aba FIX: fix the error display for ext slot
jira: none
Change-Id: I940554e6b1a5c8c609561670db79948c9efed63d
(cherry picked from commit 72b5ab7ee4f59287dd1888c1c4a1f86466fc1afe)
2025-09-20 15:31:33 +08:00
zhimin.zeng
3d5abeba60 ENH: Updated calibration UI for single-extruder printer
jira: none

Change-Id: I4e2d97f38699b13e2bced8f6a37c952f7903aa27
(cherry picked from commit 2e3a5e8ca71e3e9426412f8bd07b916f6be45aed)
2025-09-20 15:31:26 +08:00
xin.zhang
fcfb6ac093 FIX: show ams remain for MAC
jira: [STUDIO-11139]
Change-Id: If5b9593e0b46e3f6845bb5637564cee8fa67e5bc
(cherry picked from commit 2d99a9e23106a631f9d1875f71f0910b093de657)
2025-09-20 15:30:19 +08:00
xin.zhang
f9a7f056e9 FIX: use different ext image for different machine
jira: [STUDIO-11133]
Change-Id: Ice69b4f33317e23a2c2d7b8fbdfc94402b4bba28
(cherry picked from commit a67acd8f0ced49052cfe0c4b01a5bf159b046e85)
2025-09-20 15:30:14 +08:00
zhou.xu
327f64c093 ENH:add "is_blocking_printing" api
jira: github 6181
Change-Id: I8c8659da0b27204c53d03cbbd8d410504b3fd434
(cherry picked from commit c52681071782d137338436640cd990057579949b)
2025-09-20 15:30:09 +08:00
tao wang
157bec00a1 ENH:auto switch use ams option
jira:[none]

Change-Id: Ia1d5231284515226277b16d771342141e654a23d
(cherry picked from commit 956f1b9a59c11bce0428c3162beac45a5272c919)
2025-09-20 15:30:05 +08:00
tao wang
2bc9cb4441 ENH:direct connected devices support fram mode
jira:[none]

Change-Id: I539698e6440bf67b1951938c3c0b7d51ab74c1b3
(cherry picked from commit 1b0e8cdb318eb67c5d791835a09cccb1e1e7d9fe)
2025-09-20 15:29:59 +08:00
zhou.xu
6c03cd6178 FIX:fix dark mode show of right_tip
jira: none
Change-Id: I6ce7edec772c5d1bbdc372fcde25807a0a744916
(cherry picked from commit 36692d649c13a0a3cec95fbf12960dcc91970d8c)
2025-09-20 15:29:52 +08:00
xun.zhang
291a5707df ENH: add h2d in upward machines
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I4168311dd5e5779f1b3930c733c1b682a8c67fed
(cherry picked from commit 7e5b6c4274885ddf14f6797ee101f23d430a4adf)
2025-09-20 15:29:45 +08:00
zhou.xu
a65abbeb58 FIX:m_show_type should init default
jira: github 6146
Change-Id: Ie948a37cfda030a9e10efe0b8d260918b3fb9e4c
(cherry picked from commit 28bdf64fef8d7cbef15f27ffcc2c841595ba08c7)
2025-09-20 15:28:40 +08:00
Noisyfox
c26266dfb6 Merge remote-tracking branch 'remote/main' into dev/h2d
# Conflicts:
#	src/libslic3r/CMakeLists.txt
#	src/slic3r/CMakeLists.txt
2025-09-20 13:10:10 +08:00
Bastien Nocera
bc9e0066e7 FIX: Fix missing wxDC declaration
/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)
2025-09-18 23:02:19 +08:00
Bastien Nocera
22d6e9de2b FIX: Fix missing wxBitmap{,Button} declaration
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)
2025-09-18 23:02:15 +08:00
Bastien Nocera
0cc427ec41 FIX: Fix missing wxTimerEvent declaration
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)
2025-09-18 23:02:11 +08:00
Bastien Nocera
7ef078c94d fixup! FIX: Fix missing FilamentMapMode declaration
(cherry picked from commit 13624fb941bedd9afd130fe6209db93f2e4236a9)
2025-09-18 23:02:07 +08:00
Bastien Nocera
ce41091f28 FIX: Fix missing wxDisplay declaration
/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)
2025-09-18 23:02:03 +08:00
Bastien Nocera
56c5d370b4 FIX: Fix missing Slic3r::intersection declaration
/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)
2025-09-18 23:01:59 +08:00
Bastien Nocera
a856ebd5c2 FIX: Fix missing wxDialog declaration
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)
2025-09-18 23:01:54 +08:00
Bastien Nocera
4d6e8a735a FIX: Fix missing wxAutoBufferedPaintDC declaration
/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)
2025-09-18 23:01:51 +08:00
Bastien Nocera
ce9a0374d8 FIX: Fix missing wxGridSizer declaration
/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)
2025-09-18 23:01:47 +08:00
Bastien Nocera
1583b836a3 FIX: Fix missing FilamentMapMode declaration
/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)
2025-09-18 23:01:35 +08:00
Bastien Nocera
e8203b81b2 FIX: Fix missing std::regex declaration
/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)
2025-09-18 23:01:09 +08:00
Bastien Nocera
a0bde11b29 FIX: Fix missing std::set declaration
/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)
2025-09-18 23:01:04 +08:00
Bastien Nocera
b8b83a6f15 FIX: Fix missing std:: declarations in ToolOrderUtils
/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)
2025-09-18 23:01:00 +08:00
Bastien Nocera
ff9f223042 FIX: Fix missing boost::algorithm::split declaration
/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)
2025-09-18 23:00:51 +08:00
Bastien Nocera
1f00b9e8e7 FIX: Fix missing L() localisation helper
/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)
2025-09-18 23:00:10 +08:00
Bastien Nocera
81ae29d82f FIX: Fix missing offset() helper declaration
/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)
2025-09-18 21:53:18 +08:00
zhimin.zeng
95e97e09fc FIX: fix build error
jira: none
Change-Id: I97df69b728fc3871b7c33e1fd3ba068e741d51c7
(cherry picked from commit 326d7d28b47017bdbd98873a6437ef84116291ba)
2025-09-18 20:22:29 +08:00
yw4z
cf23cf831a Update UnsavedChangesDialog.cpp 2025-09-18 13:47:32 +03:00
Noisyfox
178c6092b4 Merge remote-tracking branch 'upstream/main' into dev/h2d 2025-09-18 17:24:07 +08:00
xun.zhang
6e416a8fd4 ENH: update gcode for H2D
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I069c988454658f06148f62607eef1bfa2a2d7106
(cherry picked from commit 35e4db07e99ca8df18bec2b7e924c1940307f8bd)
2025-09-18 17:18:13 +08:00
zhou.xu
ef4bdac5c1 FIX:FIX:material item check parent name in mac
jira: STUDIO-11117
Change-Id: Icf155f04eb0e1fcc995d04c6f4646a6d729cb1cb
(cherry picked from commit d22a2e91e53c76bc40fdacc1ee5c7faff216711d)
2025-09-18 17:18:04 +08:00
tao wang
780d547727 ENH:not allowed to map to empty slots
jira:[STUDIO-9901]

Change-Id: I98e2ad72b957bd6c42f6baa765a181aebaf81f1a
(cherry picked from commit be912aa84ac930b81a52687a3f536e96af454ec1)
2025-09-18 17:17:55 +08:00
xun.zhang
62a85019d3 ENH: update params in process profiles
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I167ed97df565256c592b56a2389985afbe24cbe3
(cherry picked from commit d9b9e41625c64839ed25dd9c07e659583cd6b586)
2025-09-18 17:16:33 +08:00
xun.zhang
baa0a96383 ENH: update process profile for H2D
jira: none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I851852c36d5602ac3e97740ae357cadef6fa0903
(cherry picked from commit c7864db1c8d0180e977d5d769505c1dcea85119e)
2025-09-18 17:16:17 +08:00
zhou.xu
a95a44844e ENH:modify text
jira: none
Change-Id: I7bb2bc5fa0a1a14afce822b67c3dd095c4bf6549
(cherry picked from commit f3f6032de9657c681806bbaee0ce5881938be368)
2025-09-18 17:16:07 +08:00
zhou.xu
8092512af1 ENH:When software is full screen in mac, the sub frame uses the wxSTAYBON_TOP style
jira: none
Change-Id: I338576d77e61a436615e70372b4564c38be0c7dc
(cherry picked from commit 645d843dd97949fb6a73e93fc61ffa4a255b20f3)
2025-09-18 17:16:00 +08:00
xin.zhang
5bae3838c5 FIX: remove the restriction
jira: [STUDIO-11094]
Change-Id: Ic13f07abaf5eda5d3077275d74071e5e342b2c77
(cherry picked from commit 319313fc2d72c8e442a6030b4317a9d47da5a182)
2025-09-18 17:15:10 +08:00
xun.zhang
3794d2bbfc ENH: update flush table
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)
2025-09-18 17:15:05 +08:00
xun.zhang
7964fb1a63 ENH: update gcode for H2D
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I98291af3fa439ac1b6f933f06112582edb9d9dc2
(cherry picked from commit eb24f6be0778944809ee9cda7416b3e486442897)
2025-09-18 17:14:58 +08:00
xun.zhang
cc7c23716c ENH: remove some profiles and do renaming
jira: none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I21d4915ec487b77c8e87afd49be2694ec32372e6
(cherry picked from commit 2e071908b6a8b66a6bf12710c6b9c7db0a5f594b)
2025-09-18 17:14:45 +08:00
xun.zhang
10bb25065a ENH: add high quality process profile
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I7e4f12e7a15b022c0dfb8cbefd4f13552e00d149
(cherry picked from commit 1ad2aed3a0979c6714d1f72cf1a3825aa15b7065)
2025-09-18 17:14:15 +08:00
xun.zhang
6fc67a7cff ENH: do not display checkbox in filament map dialog
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: If2929fba4b7aeb9b69b296921c9d337a4e2d2330
(cherry picked from commit 7886a14b60ace2659de4e53b5bb186f4973f6e06)
2025-09-18 17:13:45 +08:00
xin.zhang
343003a3c9 FIX: move the ams mapping check
jira: [STUDIO-11094]
Change-Id: I1ef4bcaef406616d898f198cdf803213d47c5f68
(cherry picked from commit fd795f19163a1e310753ce6834672ce3b504d3c2)
2025-09-18 17:13:35 +08:00
zhimin.zeng
5ce2ec11a8 FIX: the data and UI are out of sync when creating printer
jira: STUDIO-11080
Change-Id: I4cc86174b4ed847b53c87f85f9e590742e6dd9ff
(cherry picked from commit c366876acfb95b16bedb57f9e22e1623fc749f7e)
2025-09-18 17:13:09 +08:00
mixian
c2c4fbe3a8 FIX: fix setFilament img offset issue
Jira: 111000
Change-Id: Ifd921ce62b5f469b97d00331f361edbe2ba8cf3c
(cherry picked from commit 9486b6df23851afd3d6f64313403825913484f18)
2025-09-18 17:09:01 +08:00
xin.zhang
c44df785ed FIX: update HMS
jira: [none]
Change-Id: I1d5b4814906525cc913761854271138a7836ad6d
(cherry picked from commit f2660162d8a4be8cee363847c1000b24b0720175)
2025-09-18 17:08:54 +08:00
xin.zhang
890fe61af2 FIX: access the ext
jira: [STUDIO-10970]
Change-Id: I65889835a4ced2d0d3547cacc505d6e1d874497e
(cherry picked from commit 7bc1108a2ecd8f00ba057034e74f9d1b8eac135f)
2025-09-18 17:08:47 +08:00
xin.zhang
1aee0189d4 ENH: split the status
jira: [STUDIO-10949]
Change-Id: Ic93ae9d13dff2f5d72aef4e0f5a1250581224a18
(cherry picked from commit cc5b696d8dcf3838ac5324cdd11297e04ce1c8e6)
2025-09-18 17:08:22 +08:00
zhou.xu
13d3cfda63 ENH:Text not centered on mac15
jira: STUDIO-11056
Change-Id: I1c651421f8914a25707ad5b5c1d3e3d56c2df959
(cherry picked from commit 7af3eba50047c4b5f852f2ac3814243543a5019a)
2025-09-18 17:08:18 +08:00
xun.zhang
0b4b39f8ed ENH: update params for TPU FOR AMS H2D
JIRA: none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I96f46ac9773d952dd0163116eeee62a6772461b6
(cherry picked from commit a75a33a2c9dcf9bd6ffab1816fe2d8cf5812ed4b)
2025-09-18 17:07:57 +08:00
chunmao.guo
a3dfbd29af FIX: add PresetBundle.cpp to i18n list
Change-Id: I73fe8350fb73659796e4fc13452c019e9ceadd41
Jira: STUDIO-10973
(cherry picked from commit 55155359b3771f9d2e5d56881c5213379dea54cb)
2025-09-18 17:06:42 +08:00
tao wang
572a52ffad FIX:fixed the error in displaying ext steps
jira:[STUDIO-10998]

Change-Id: I1c1240f69c187c2d0de4887e51596fba8db68744
(cherry picked from commit 0a9e1c8899bb3bd1c5a7063d0fabf07572c4ee04)
2025-09-18 17:05:55 +08:00
tao wang
43006e278e ENH:adjust the order of print checks
jira:[STUDIO-10949]

Change-Id: I7013697384a2586c50e441f6bf9d15401fdf7bb5
(cherry picked from commit 2c0953a5540912f5c1fdae9ed9905cc1b1e2af45)
2025-09-18 17:05:51 +08:00
xun.zhang
1ac67c71fd FIX: missing nozzle volume type in old 3mf
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I95c85b54f13950a0859297dcb28edcb73d841276
(cherry picked from commit cfe3aad3fc0f475a5cd31bb5a25a62a19c872ba5)
2025-09-18 17:05:36 +08:00
chunmao.guo
1e3a761ffe FIX: select base printer preset when deleting custom preset
Change-Id: If69a58d486fc7a98ae4a0242dd9d345e8d3cf940
Jira: STUDIO-11013
(cherry picked from commit f7ca47c2b3403412bde7da37a69bd56a5a13d1c0)
2025-09-18 17:05:30 +08:00
xin.zhang
6f09622180 FIX: move the flag
jira: [STUDIO-11069]
Change-Id: I856225577243cd58e3111c71915049828e72dc00
(cherry picked from commit 8f5205a34cf8f790f9e395ccd744baf15041f7fb)
2025-09-18 17:05:21 +08:00
xin.zhang
98c82d6be6 FIX: try optimize the material settings refreshing
jira: [STUDIO-11086]
Change-Id: I610304a7aa4a1b23e1e3fe7def157a93f5ae19af
(cherry picked from commit 6eff893be393ad73a74bb41414c0d1aab4d4c6f3)
2025-09-18 17:05:16 +08:00
zhou.xu
03526dfdd8 ENH:Unmapped text for unknown material follows dark mode
jira: STUDIO-11066
Change-Id: I39af33cb02a93067ff22c9ada7dff119571d2b66
(cherry picked from commit 9a6a6d1b39dae215f02d64610e61107c4cc12eeb)
2025-09-18 17:05:10 +08:00
jiangkai.zhao
bca7f73f7f Fix: error the contact layers of different categories
jira: none
Change-Id: Ife5508427e0c09527489f1ff973d27463650d60a
(cherry picked from commit 6a927ebb5539cf866e04c309c723fca91f573ee8)
2025-09-18 17:04:59 +08:00
zhimin.zeng
a9ea1992a0 FIX: crash when delete filament with setting support filament
jira: STUDIO-11063
Change-Id: I72ede85e540178b576239615d67017c082ded113
(cherry picked from commit bef139898a9d5f2245a7b0ae7b399c4cedcdc6a0)
2025-09-18 17:04:42 +08:00
xin.zhang
35b7435644 FIX: use smaller font
jira: [STUDIO-11043]
Change-Id: I4219bb6bda3b834c1b32ef205f287e0cccd94ed9
(cherry picked from commit be16678e7048dbc0c9d8a433e04d53823c8227c1)
2025-09-18 17:04:37 +08:00
xin.zhang
17288f7fe0 FIX: prevent the condition
jira: [STUDIO-10745] [STUDIO-11082]
Change-Id: I3b0ed2a58a4d873edf2bf92576ceaf2ecdb072d8
(cherry picked from commit 638585a4fcee5830fa7b02a51d7a12041ed64dad)
2025-09-18 17:04:33 +08:00
xin.zhang
55c8752509 FIX: raise the dialog
jira: [STUDIO-11075]
Change-Id: I661e7de97720a313619ce6fe436f15573cf0f7be
(cherry picked from commit af23446648bf88dcb61a02d9d48645c397cec116)
2025-09-18 17:04:27 +08:00
xin.zhang
e2c6f0b6b5 FIX: hide the notice if it's invalid
jira: [STUDIO-11073]
Change-Id: I30a9a5e5c4195caf734f4ac79aa7aff49e75924d
(cherry picked from commit 2d82a1170bf12acccdc40ab47d33b0b71bc07bab)
2025-09-18 17:04:23 +08:00
xin.zhang
d293d4ba3c FIX: update HMS files
jira: [none]
Change-Id: I30faee9227b3821aab2adbb79f7ad2b539f9f8b9
(cherry picked from commit bc3b5f738fd14ab8df87918bfc6aa31dfe8c4685)
2025-09-18 17:04:17 +08:00
zhou.xu
87116c0f00 ENH:When software is full screen in mac, the sub frame uses the wxSTAYBON_TOP style
jira: STUDIO-11046
Change-Id: Ie1b85e4ac5a5698ec42870349f688924cdf30e21
(cherry picked from commit b28b9c49b208b4269563f59b42ac671fca8035be)
2025-09-18 17:04:10 +08:00
zhou.xu
dd6fff08f7 FIX:delete no use code
jira: STUDIO-11059
Change-Id: Ief3e45f4e6cc079c60161b9b9a55b2152013b70e
(cherry picked from commit ab26fb71a50c930c4c3945f91d275dbe78ea8c5c)
2025-09-18 17:01:19 +08:00
xun.zhang
ded3891da3 FIX: white spaces in dark mode flush table
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I2711af1dc45506906acbcd7215a4005534677310
(cherry picked from commit 43bd523753cd5e6a4b1e57fd4f34498b83da0c55)
2025-09-18 16:49:36 +08:00
xun.zhang
d8eb4ac24e FIX: wrong inherits value in profiles
jira : NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I9ece8ee1d9fc8ba98efae591114d9eb4d79d182b
(cherry picked from commit 4b78554256f1a3003e9845e518c8fa2d6c0f917d)
2025-09-18 16:49:36 +08:00
xun.zhang
81382448eb ENH: update flush data for H2D
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)
2025-09-18 16:49:36 +08:00
zhou.xu
996da6eebe ENH:add erase_dark.svg
jira: STUDIO-11051
Change-Id: I1ca79d708df04ab99d52d04c19454b383fc4a5aa
(cherry picked from commit c74cd2a15f112467985b0f431fea8f7dab961358)
2025-09-18 16:49:36 +08:00
xin.zhang
770dec64c4 FIX: update the text
jira: [STUDIO-]
Change-Id: I91a6a1e7f788150fcbff42936b8e4db1e5e69f59
(cherry picked from commit 92e038b741c3e4b382f945883931b48dd5902138)
2025-09-18 16:45:33 +08:00
xun.zhang
4d90955007 ENH: add filament profiles for H2D
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Icff2b98c8fb4787bb637039d998659110897fd58
(cherry picked from commit 89ae8046c902c5fb9512c33ad1d8b43c98505b19)
2025-09-18 16:45:19 +08:00
zhimin.zeng
fa06bded14 FIX: modify some text
jira: none
Change-Id: If3f90adda34bc3088f7a43ccf294d82c14180263
(cherry picked from commit 5b056ee0aea62f53688574b06b9424d140e69fa5)
2025-09-18 16:44:34 +08:00
mixian
4c210ea974 FIX: move editbtn left for badge
Jira: none
Change-Id: I8991d83856edb61fe82cd21df77bef2a69eefa03
(cherry picked from commit 63506ab13e34ec7ce8a1430bcf9770b494835b9c)
2025-09-18 16:44:08 +08:00
zhou.xu
d87cbcf2f2 ENH:modidy width of SyncNozzleAndAmsDialog and FinishSyncAmsDialog
jira: STUDIO-11045
Change-Id: I99164b2172aeb7fb955348fc87f7da24aefe930c
(cherry picked from commit 61f61bce3ed12fbceff7fe98eead6b27a39df5ea)
2025-09-18 16:44:03 +08:00
zhou.xu
ef876da0ce FIX:fix mac display
jira: STUDIO-11041
Change-Id: Ib9dcd9e033fa635e82e74f42105185a1d9139062
(cherry picked from commit 563bb3dffc1c36b11236b6a42b626abd35ed60bf)
2025-09-18 16:43:58 +08:00
xun.zhang
9beeec9b83 ENH: update change filament gcode for H2D
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I969a8158591b1f74c93bad7cf943e59fd879ecf2
(cherry picked from commit 6b70020068ee9566ec86a4a70c9736f788c01ffd)
2025-09-18 16:43:42 +08:00
xun.zhang
602d36d067 ENH: refine text colour in filament map dialog
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I33218d7b16f150049d8078cf360a58c01594b0a7
(cherry picked from commit 84786cc6a867060b51e9f616a4d69ba7a1217985)
2025-09-18 16:43:20 +08:00
zhou.xu
e7e8fab7a0 ENH:is_bbl_3mf pointer should determine if it is empty
jira: STUDIO-11031
Change-Id: I14c6daeb275a82d019f88246b23013163a14ded1
(cherry picked from commit aa7fbd4926254be62ccee40b0a7d23b90a109675)
2025-09-18 16:43:09 +08:00
xin.zhang
b6cd98dfa1 FIX: update the AMS refresh check flag about N3S
jira: [STUDIO-11016]
Change-Id: Icbfc8d29e6b3fe5b61183796ce9976a655765264
(cherry picked from commit 1c62771c4c6c296aee536373c3c0dcc4b9c3422b)
2025-09-18 16:42:18 +08:00
chunmao.guo
484d70efb5 FIX: show sync ams unknown details
Change-Id: I1febb10b73a87f98a477fea5fbe2583c752ab330
Jira: STUDIO-10969, STUDIO-10973, STUDIO-11011
(cherry picked from commit f1eb5e829288236282e2322a961e012884ad90cf)
2025-09-18 16:42:09 +08:00
xun.zhang
a0f38f3cfd ENH: add layer num in filament end GCode
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I6f81b86a7b7391048d70f2c4839733a69015e53b
(cherry picked from commit aafcfd72f40dd221286b757da9d494498d36374c)
2025-09-18 16:40:37 +08:00
xun.zhang
cd16bd83a3 FIX: translation problem
1. add regroup link

jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ia90c80f5ff86e785e00fb0c38360eb33424a5ddd
(cherry picked from commit 01be3a51e646a9ca4277c490396417c95d983648)
2025-09-18 16:38:26 +08:00
zhimin.zeng
7f6d45ecfd ENH: add wiki link for mixuse of pla and petg
and add wiki link for tpu and brittle materials
jira: none

Change-Id: I15202158cc2ff9b710e80e181bcdf9659e93ff75
(cherry picked from commit a967c41edcc2489e2b348637e4cdfcefa22b2914)
2025-09-18 16:38:02 +08:00
zhou.xu
44fe451dc3 FIX:deal sync_printer_preset logic when it is false
jira: STUDIO-11017
Change-Id: Iafb0d954563e6bc2472122e98ba9a3d527f6c487
(cherry picked from commit 78c0a845d2ed2508de943b598a6dc5c28bf3d0b8)
2025-09-18 16:28:10 +08:00
zhimin.zeng
e011b54d3f FIX: fix the error wipe path
jira: none
Change-Id: I34af54711531b208049cbbc3883bca92328b9b5a
(cherry picked from commit da3819f52f5454075342e8565fe9020773aa25ef)
2025-09-18 16:27:37 +08:00
zhimin.zeng
eb8eb5efd1 FIX: should not show timelapse warning when hide timelapse item
jira: STUDIO-11006
Change-Id: I4683f2c0f15e07731407c9609fda927b594eeb99
(cherry picked from commit 8e0bfca31ebbebd0ef337ea6d356210426826f86)
2025-09-18 16:27:32 +08:00
zhimin.zeng
6b282809f8 FIX: add nozzle size filter for create preset dialog
jira: STUDIO-10969
Change-Id: Ideee88b35c41a34512e30aea55a6a518ca337f5e
(cherry picked from commit 4f87d0de271026d0067f7ce449db0c3bdde5744d)
2025-09-18 16:27:26 +08:00
xin.zhang
68e852472c FIX: update the text
jira: [STUDIO-10970]
Change-Id: I93bf01328fb5ffee0397e888a3524b10e49ae1f0
(cherry picked from commit 4af8a01b8dd6b8f7ea04bd04a17289911b55ed02)
2025-09-18 16:26:57 +08:00
xin.zhang
9b81fe3229 FIX: update HMS files
jira: [none]
Change-Id: I747512209f4a74b964c9f798f935141294d47042
(cherry picked from commit a1af1d3d8442bc0c3c888ad4dc643dab4a26dbfe)
2025-09-18 16:23:15 +08:00
xin.zhang
f0348248c9 FIX: cover the mistake of AP at n series
jira: [STUDIO-11014]
Change-Id: Ib9ec7924f217c736f2098b50d9916fef9888f3e6
(cherry picked from commit ced9af106e05da2feed661374d6d5ea6954eb41d)
2025-09-18 16:23:10 +08:00
xin.zhang
450c87a0ac FIX: only check if it is auto
jira: [STUDIO-10945]
Change-Id: Ib2f271b1b6581659b48effad4c235e755ad1b5e5
(cherry picked from commit f74efcf3e6b13fce00dae67b922f655908ac5e79)
2025-09-18 16:23:05 +08:00
xin.zhang
68741d019c FIX: move network hold to MainFrame
jira: [STUDIO-10994]
Change-Id: I2c30ba3b0f17d52079332634a9a2dd138859e083
(cherry picked from commit 506e82cb02a79d97a30effde53fe85c7d278858c)
2025-09-18 16:22:57 +08:00
zhimin.zeng
c0c7d90845 FIX: The original data of combox is not cleared during initialization
jira: STUDIO-11005
Change-Id: Id5b7259b517a515c2f641ce32998f09e182902ff
(cherry picked from commit ad1f6bdca48fd45ea7cedac15518a5ebe73ba386)
2025-09-18 16:20:26 +08:00
zhou.xu
06a86289cc FIX:Optimize button and checkbox resolution adaptation
jira: STUDIO-11003
Change-Id: Ia6325e3069a09cef45643442ad6f6ee929958446
(cherry picked from commit 7901e9fbaaa65e4746a16a89791a4a835db0e71e)
2025-09-18 16:20:19 +08:00
xun.zhang
05ba2c0428 ENH: remove invalid params in profile
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Iee2382235e6ac473a0dfcc60cfda18196139f334
(cherry picked from commit d45ba14b65f4c8485137d8bc54479e5b1368aae0)
2025-09-18 16:19:51 +08:00
lane.wei
1eb3bc177e ENH: CLI: check filament mapping error before process
jira: no-jira
Change-Id: Ie82a1faba93a4f80281615c803a45a93206ddf02
(cherry picked from commit 5869d33d519b617dbcee05a74f81fb1951330633)
2025-09-18 16:19:24 +08:00
xun.zhang
862e6d211d ENH: update gcode for H2D
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I2c2d8b988932bc9c9ee71509f73c8d7e0107627d
(cherry picked from commit b952dffa60e05237a51f2cd8b7ee885f19ad4665)
2025-09-18 16:18:35 +08:00
zhimin.zeng
08aef5bf53 FIX: the pa profile name cannot be repeated when edit k value
jira: STUDIO-10992
Change-Id: I50d61e9581e188a10a4f804df163b3d50eb7caa0
(cherry picked from commit 431925adf0749faafeaf46ac0b8d60c6d4e5972a)
2025-09-18 16:17:58 +08:00
zhimin.zeng
b9ad057d1a FIX: Delete the cali tips
original patch 485e961e9520a77d1d25e97598f6a1648a50a976
jira: STUDIO-10945

Change-Id: I7524d2c0f74d97ea86e1516a6596b63345a36661
(cherry picked from commit e6e412479f904f5b75ed3bbb5e1bdd82a2c5d0b1)
2025-09-18 16:17:50 +08:00
xin.zhang
5fc2af6707 ENH: check if the custom k value will be used, and show warning
jira: [STUDIO-10970]
Change-Id: If67ef695340e6bed38604d92ea86a4b0d5e57bdf
(cherry picked from commit 8b775f5c2e6c5c11baceb3c8292b41c59b98e0d0)
2025-09-18 16:17:22 +08:00
xin.zhang
367cf4dd06 FIX: use time to stay data
jira: [STUDIO-10972]
Change-Id: Ic87ecad9c104e24c050f3f9355f1b5983fad8853
(cherry picked from commit 90a58ae4c6b542053342484d7867185e5ff4142f)
2025-09-18 16:16:40 +08:00
zhou.xu
5113b2c2dc ENH:the "distance" var should init to 0 in the release environment of Mac
jira: STUDIO-10967
Change-Id: I85b1e87dc80846f50c3bd29c7aa05f89c39d17de
(cherry picked from commit 4b368cb2ecafd53ad1bbe61946bb9b1bafce64cb)
2025-09-18 16:16:20 +08:00
lane.wei
9c4c5ba915 FIX: config: add some error process logic when loading 3mf
jira: STUDIO-7956
Change-Id: I13084cfe5233da9e928dc8eb10d8ffe1bc38080c
(cherry picked from commit 2ccc72f16eab50ea9c354c4214999c702bb9ba08)
2025-09-18 16:16:13 +08:00
jun.zhang
9c9dadc43f FIX: keyup event maybe not processed
jira: STUDIO-10958

Change-Id: I6d56f92f7cb2823b0d0a036d1da515270ebdba59
(cherry picked from commit bf5d7811a0e3a0fd545047a11208f64bcff77980)
2025-09-18 16:16:05 +08:00
zhou.xu
989b3995fa FIX:fix click failure on Mac
jira: STUDIO-10962
Change-Id: I051cccbc8633e737a305784fadb69bc76f823065
(cherry picked from commit c90948dc730a6f9e696983c64fb71451ae9ecc44)
2025-09-18 16:16:00 +08:00
zhou.xu
399d2eb216 FIX:Do not display title when there is no AMS
jira: none
Change-Id: Id14ce6c0c671a8e7a1338c2d389fd1e89c6add3c
(cherry picked from commit 29b2b0210440b41fbbfcf85b0e7b3acb869ca10a)
2025-09-18 16:15:55 +08:00
zhou.xu
26dbe61c5b ENH:adjust MsgDialog right gap
jira: STUDIO-10830
Change-Id: I12860206659f7f5e7e9c56b5b6448b9ab903fb7b
(cherry picked from commit dd0893c5f83be46b962f28cf63c9c9a4d3df4ac9)
2025-09-18 16:15:25 +08:00
xun.zhang
5d768f27dc ENH: update profiles for TPU 85A
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I27b5a6a555ca2c9f2666eb116343dc2be189bbc9
(cherry picked from commit 0c12fda23df6cdadcc67285b97cb9ff19d0f264b)
2025-09-18 16:15:19 +08:00
zhou.xu
9df844a59e ENH:adjust he maximum height of the message pop-up window
jira: none
Change-Id: I6a2c23b15e4ef811b4a0a71aa3a8b3f6da9e3604
(cherry picked from commit 108a65a92cd72e1bbb4e61a2d248331e356bd35d)
2025-09-18 16:14:59 +08:00
zhou.xu
0686923d47 FIX:reset m_is_korean when change language
jira: STUDIO-10959
Change-Id: I5ea0031ab870009c19a12126c3d700c36000666c
(cherry picked from commit 40dca9b7eacebf078169529ab0546237ca536ce0)
2025-09-18 16:14:55 +08:00
xin.zhang
e268e5923d FIX: crash if the catched object becomes wild pointer
jira: [none]
Change-Id: I5082ab58f4a6c7177758efcd7ff66a9f73bd0efa
(cherry picked from commit b2256c828b45b1734dd9793752a54e22a98b073c)
2025-09-18 16:14:46 +08:00
xin.zhang
b7460cf30a FIX: add the translation flag
jira: [STUDIO-10950]
Change-Id: If8244a09a4b53e2867727a030d461b6fc80124e2
(cherry picked from commit 0e20356871c515584323130d2f92d48788e03613)
2025-09-18 16:14:41 +08:00
zhimin.zeng
bf0f98b0eb FIX: apply unprintable filament type to limit filament map
jira: none
Change-Id: I81e22dc28bc416a1b26c242fab4e054f597b064e
(cherry picked from commit 9b81b9e2d4c6b39329e94efe3e433564c66f6ffe)
2025-09-18 16:14:01 +08:00
lane.wei
453d1e806d FIX: CLI: use the correct wipe tower width after estimation
jira: STUDIO-10900
Change-Id: Id6ea3c3a7e0c37001a5cc118eea7459ffeb48469
(cherry picked from commit 31fbdd29e7eebb9b12c8204bec3c82f1598367e1)
2025-09-18 16:13:30 +08:00
xun.zhang
f4445d0c04 ENH: optimize group logic for unprintable filaments
1.Also fix a tip mistake

jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ia52f95988d467a7018579a774376578b83e7ca05
(cherry picked from commit 804fe8d124e916f5957244913a50d24aceb621bd)
2025-09-18 16:13:25 +08:00
xun.zhang
542ddebbc5 ENH: add bambu tpu 85a and 90a for a series
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I1975bd3421b4076d113a8f9000616a74efadbc03
(cherry picked from commit fb74c3362511ce363b7137e18345482a064c6831)
2025-09-18 16:13:17 +08:00
xun.zhang
18f859a195 ENH: remove some static resources
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)
2025-09-18 16:12:25 +08:00
xin.zhang
3e2fe6306b ENH: use dialog style
jira: [STUDIO-10944]
Change-Id: If48abb7bccbc8c909c2a659d96f0155d97cce673
(cherry picked from commit 196c72228768c1563343b4fdd443af5760272821)
2025-09-18 16:11:17 +08:00
zhou.xu
cc12de18e0 FIX:Thumbnail render should use light in "obj import" dialog
jira: none
Change-Id: I1457876a12f42abd93d26cebb60d2d7d8075df74
(cherry picked from commit 7768570492a59afdac0add126bceb6cf0d86b210)
2025-09-18 16:11:13 +08:00
zhimin.zeng
0c5c3410d6 FIX: adjust nozzle_change_gcode before filament_end_gcode
jira: none
Change-Id: I56498d473568ef0f5a7ba7c149befff55016bda1
(cherry picked from commit 310f13f36a96d8b898edd651cfcf75251ab9fd9d)
2025-09-18 16:11:02 +08:00
zhimin.zeng
0d9aebcdb2 FIX: modify the default value of extruder_id for cali
jira: none
Change-Id: I7aba99d5264d900c7a0795ff13442c62c34ae392
(cherry picked from commit a894ec9e551e608155da606f9635c8cd938cd71c)
2025-09-18 16:10:37 +08:00
zhou.xu
c333cb58d9 ENH:Obj import supports up to 32 colors
jira: STUDIO-10927
Change-Id: I46b2c63a625f91d0caafa78cf47bf0fc8589015b
(cherry picked from commit 9e2bfb7d7e56d886a85c0ee8c0e90dbc6ccfa932)
2025-09-18 16:10:27 +08:00
xin.zhang
7ca7ca18fb FIX: use time to hold the control
jira: [STUDIO-10923]
Change-Id: I7069ed1ea0112837080c59895081e798d6a83e6e
(cherry picked from commit c47759dd1fe17c840fa92ab3fec803a58d2d1785)
2025-09-18 16:09:41 +08:00
xin.zhang
01d059912b FIX: install cert for device
jira: [STUDIO-9888]
Change-Id: If0bec524e1cb052fb27660a9b0cbcfce0f17c226
(cherry picked from commit 39d49701ae1f22735a620a909e2d39749e1bcc92)
2025-09-18 16:09:34 +08:00
zhou.xu
484d3db930 FIX:The 'close' button did not call 'cancelw_coin_comor'
jira: STUDIO-10926
Change-Id: I4ded2cd930575eccfab27d62bf451eb788c90310
(cherry picked from commit 427f27ce9bccef8f1ff18924e7a7ab4f23f898c0)
2025-09-18 16:05:08 +08:00
zhimin.zeng
dd4781e47b FIX: show message dialog when the machine's nozzle in unknown
jira: none
Change-Id: Ic9b0e668c5e8427df76503731865d1b3de8568c4
(cherry picked from commit d38cbada3e311470594615ee714b51d47a51c54f)
2025-09-18 16:04:52 +08:00
zhimin.zeng
4d505580b4 FIX: add show status for cali when storage is not available
jira: STUDIO-10865
Change-Id: Ibc4d15e0f8d32694d389c68fa300b6ed95030818
(cherry picked from commit 48e2efdc2fdd43ad852d7f1ffc0a11af0714bc14)
2025-09-18 16:04:46 +08:00
xun.zhang
15a6ac3dbc ENH: add tpu exist flag in place holder
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ieba35adde23e1ce1169b10955bafbbf2bc856663
(cherry picked from commit 5c6264cf9f396cfad30a1275fc779f0877a17919)
2025-09-18 16:03:16 +08:00
xun.zhang
b2ddd87c79 ENH: add check for FloatsOrPercents illegal values
jira: 10871

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I1c8514da88ff0d0d6c7e02097d60f2e3c53d9d71
(cherry picked from commit 21f91c3b1d91ff02130d5a4d94965d0bc4d5bcbe)
2025-09-18 15:59:26 +08:00
mixian
3a46d9dac7 FIX: move edit button to leftTop corenr
Jira: 10885
Change-Id: Ifff85336d5bcce5e20023db313d0480068c34e33
(cherry picked from commit bbdeafb68f37529e370ca15eda997e95a2ad064d)
2025-09-18 15:58:40 +08:00
zhou.xu
2aef37a182 ENH:modify text
jira: none
Change-Id: I42d4d5e65246bbb779ca0ff5a9860a414a2f66dd
(cherry picked from commit ffe47e1ea84548cd5f70fc52c867210b10b3f959)
2025-09-18 15:58:32 +08:00
xin.zhang
3aa2dec020 FIX: update HMS files
jira: [none]
Change-Id: Ice2396efee287710e2a856d61b2df7023c03cd72
(cherry picked from commit b575f6ee99eb72c921cd4d2be19357464f6fded0)
2025-09-18 15:58:12 +08:00
zhou.xu
596c897c80 FIX:Do not create a new MeshRaycaster repeatedly
jira: STUDIO-10905
Change-Id: I0a666ab7f9167c1bbd60f4cd6a5d0c78c9143275
(cherry picked from commit 51b5777b608bbf2a8bb8efa3c2d03bf548b17a6d)
2025-09-18 15:58:05 +08:00
xin.zhang
907573a158 ENH: support msw_rescale
jira: [STUDIO-10907]
Change-Id: I1e06043fad6345c47e8c5ceb28db204955aa0969
(cherry picked from commit 193caabdc79d966e8226b5a9b340763b1711d0f3)
2025-09-18 15:43:34 +08:00
xin.zhang
d592a328d5 ENH: optimize the mapping item
jira: [STUDIO-10907]
Change-Id: Ifc021fcadec7a5863dbea986e0c998f387a72d78
(cherry picked from commit 356410959b4cd67d1198ac222c5067b3c478ff31)
2025-09-18 15:43:29 +08:00
xun.zhang
f787166025 ENH: update machine start gcode for H2D
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I50bb4fc2378e4da1b7c788616bf3d4800dd410d0
(cherry picked from commit 4f16cefc3d21687906e2038aca4e3c53dc0e7e48)
2025-09-18 15:43:13 +08:00
chunmao.guo
7e15661a42 FIX: OptionsGroup::get_line with multiple options
Change-Id: I9c96b0e5de5674e558aeb66d306da3519750fa65
Jira: STUDIO-10887
(cherry picked from commit f0656ee986189d5ca34a088c3e584c4f973e1538)
2025-09-18 15:42:20 +08:00
小炒肉
5105f1d28b ENH: Revert "ENH: remove bambu tpu 85a temperoraily"
This reverts commit 74f0c8a63c220d688b503bff87f927c94749eef9.

Reason for revert: <add back now>

jira: none

Change-Id: I07c42c264b820fdd5beff1556f6615b22e278b28
(cherry picked from commit cbaf4d9a12d3aaa3507038d93ee5ecee848f8088)
2025-09-18 15:39:28 +08:00
xin.zhang
293787609b FIX: show all re-fill while sending print
jira: [STUDIO-10888]
Change-Id: I2b1a98eddd2c34a83a73ef7cbef39ab05d569aef
(cherry picked from commit ee76a2191ff633af3311ef659b9feb63e7bdedeb)
2025-09-18 15:22:56 +08:00
xin.zhang
5ce8613053 FIX: only check the nozzle type of used nozzle indexes
jira: [STUDIO-]
Change-Id: Iba19086e8774811f86efdb449d8046112cd26ad7
(cherry picked from commit 3d3753b787ef968f20ba3fc80a9c15ebd6ef6176)
2025-09-18 15:22:56 +08:00
xin.zhang
489543313c FIX: use wxMessageDialog as warning in MAC
jira: [STUDIO-10386]
Change-Id: Ic8cc6d09f2eba41ec8cfebf239eb6bd78dd3844a
(cherry picked from commit 1537f575927f8d0f0e2658f900296344deb6682c)
(cherry picked from commit a856c7cc62636a4897b0e473034579e223808a7b)
2025-09-18 15:22:56 +08:00
xin.zhang
2c365fba63 FIX: rebuild the TempInput logic
jira: [STUDIO-10386]
Change-Id: If7160dacafaa19d7056125961a59111ff63ea25b
(cherry picked from commit f078f6bfdc4bf2610f8c861132241ebdd933bb74)
(cherry picked from commit 1820ca6fc00f6b6d1250e3464ee05bd33cd244f5)
2025-09-18 15:22:55 +08:00
zhimin.zeng
c8aa1de66f FIX: crash when tool_change is empty
jira: none
Change-Id: Ia2d6fda6847e41054700e37a25179ae2a8d5cd46
(cherry picked from commit c38eb761c6ec5bf8013ba9f4b02ccb09985b4181)
2025-09-18 15:22:55 +08:00
zhimin.zeng
9d3d0b4c4d ENH: add k value tips for cali
jira: none
Change-Id: I73f997ea4843d52a6dce3fac905f42779beb54c2
(cherry picked from commit 06a50c35fe5f8c84403265f4cfd813f946966911)
2025-09-18 15:22:55 +08:00
zhimin.zeng
b077e0d39c ENH: Reduce unnecessary solid fills
jira: none
Change-Id: I9f0f3eeacb6a553ef06c9afbb1299ff6139e77b9
(cherry picked from commit 2a00a0d88984ad8aeb664308465be995c834a101)
2025-09-18 15:22:55 +08:00
xin.zhang
8e658d13fb ENH: support ams remain in popup
jira: [STUDIO-9942]
Change-Id: I8514d1a1ac8e893ed46f18e1a42261c3af3f294c
(cherry picked from commit 9fff7967f36d7692767aeb3f03d4434b1d84a484)
2025-09-18 15:22:55 +08:00
xin.zhang
2806a25f33 FIX: the flow calibration of X1E
jira: [STUDIO-10784]
Change-Id: I508435efa74a0678ecf5e99f69813b2265bfb32c
(cherry picked from commit 5e93d4c16c1b1dc6333408713bfabda8fe1b9d53)
2025-09-18 15:22:55 +08:00
zhimin.zeng
0d232a8ac9 FIX: AMS should not affect the judgment of automatic calibration
jira: none
Change-Id: I4749bdca40e28f06d2809484a593e7d058baa36b
(cherry picked from commit c522831144d187a420476da4f49f92f0de7c4e39)
2025-09-18 15:22:55 +08:00
qing.zhang
0b301bd971 ENH: update H2D start machine gcode
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)
2025-09-18 15:22:55 +08:00
xin.zhang
eca819329b FIX: update the Laser part name
jira: [STUDIO-10586]
Change-Id: Ia60650c1e7d51219117a44fdf7956150ba4d7e89
(cherry picked from commit 0cb04b4d263dc013982914acbb8ebfd13b05371b)
2025-09-18 15:11:58 +08:00
zhou.xu
8014c57963 FIX:If there is no line break, use a better width
jira: none
Change-Id: I98b796f1aeb7cb5d0810cfd1d2f7eaeb03ecf226
(cherry picked from commit 17beeb0f86a4f3e1f6a91ae94fdcb4a0e4f5f4a8)
2025-09-18 14:34:04 +08:00
xun.zhang
5880625b9c FIX: dark mode in filament group pop up
1.Also modify some tips

jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I4e2abfe24afdf7f0d728a486aa248b8e5accbdf4
(cherry picked from commit 98dad923f8ee3001add10837a9b0a6c1507b47e0)
2025-09-18 14:33:04 +08:00
zhimin.zeng
9cdabfbd59 FIX: Remove unprintable_filament_map
jira: none
Change-Id: I30285d0cc98a974e71f16fd9adb57dfcccb39415
(cherry picked from commit 1959fa7d5c213a7720b8f215f1578597278e6920)
2025-09-18 14:13:51 +08:00
zhimin.zeng
5887caa431 FIX: Fix the error throwing exception
when adding double-head related material parameters
jira: none

Change-Id: I666e1069746d2c284f59ca2ac0f44c664c578a63
(cherry picked from commit 4af6386302ac8daf7349099009f2ad73111d1b0c)
2025-09-18 14:13:22 +08:00
xin.zhang
4640858b18 FIX: the usage of translation macro
jira: [STUDIO-10847]
Change-Id: I3cb11f4f584c5f6bc42c8ae9a1464190f33c1774
(cherry picked from commit 8079244d15a5eabe4d58cda1af01c93e05b2f7ac)
2025-09-18 14:13:13 +08:00
xin.zhang
dd546d4ec3 FIX: the open door check
jira: [STUDIO-10842]
Change-Id: I5b5f305afaaf7e20f1600cda677c231f41b2eb74
(cherry picked from commit 1f6d8a8ef5e2d03fb982f9afe47d64a3e859f1e3)
2025-09-18 14:13:06 +08:00
xin.zhang
a2ab9e41d8 FIX: the AMS refreshing problem
jira: [STUDIO-10643]
Change-Id: I6bd94f2e608b833e880033fdace236d465b9db38
(cherry picked from commit 99045ae070bb03641d1086993cc4ffaf51408730)
2025-09-18 14:01:55 +08:00
zhou.xu
616082ae12 FIX:fix three icons in dark mode not switching
jira: none
Change-Id: I0b49e3dc2e4d9ae7f53e45e456de830736f0acc8
(cherry picked from commit 38abdcdcdc1e49455e131b20cc29af888d56531c)
2025-09-18 14:01:41 +08:00
zhou.xu
aeaafff9ed ENH:pop-up dialog supports text wrapping
jira: STUDIO-10735
Change-Id: I919db3f1767bfde72d66bdc06b2d77ba8f878cac
(cherry picked from commit 19e3ceab844de1d2fa8ec0cd007267a68d3c0954)
2025-09-18 13:39:32 +08:00
Mixian
00579388b1 FIX: fix plater UI
Jira: 10520
Change-Id: Iec4401862d1c28df45067dc9b545dafe1341eb35
(cherry picked from commit 94ceedf97faf2b99e104489e73de0e72c4d27fca)
2025-09-18 13:38:29 +08:00
xun.zhang
7e98754e9b FIX: negtive value in grouping stats
jira:STUDIO-10772

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I90b88c7d96f6aeb31df36233efab5b9059ad2622
(cherry picked from commit f6a46d9b95aca66e49c89485424637b5eeae35ec)
2025-09-18 11:29:42 +08:00
xun.zhang
45dcdb7a7d FIX: remove duplicated filament change
1.Remove duplicated filament change after machine start GCode
2.Add missing filament change after machine start gcode

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I97e1a3e8dc1ad39c95f763469086c2e360807288
(cherry picked from commit d61d0c7231df949515dce6238ba1e94e01386d03)
2025-09-18 11:29:27 +08:00
Noisyfox
4427d5bccf Add missing VT 2025-09-18 11:29:19 +08:00
tao wang
67cc825f55 FIX:fixed the crash caused by file transfer
jira:[none]

Change-Id: Ice1461eff200219792e4fb8b20aa36c0c176cd6f
(cherry picked from commit 38e784dd495d7baa3f1cf0cabde1f36be58693be)
2025-09-18 11:17:32 +08:00
zhimin.zeng
9738be3e58 FIX: Link Chinese wiki in Chinese environment
jira: STUDIO-10795
Change-Id: I50454a0e4e3f4b6ab8a1d2be8f2dbc4343c6a3e6
(cherry picked from commit a25e7198eec188bf5262f262ca6a100ad56293d4)
2025-09-18 11:07:28 +08:00
zhimin.zeng
a9eb20fc68 ENH: add sync status for sync button
jira: STUDIO-10676
Change-Id: Ia3afd0a1f09fa3f27b1f04c84ec9a427f74edf31
(cherry picked from commit d707fd04c3ebdb9fe6787b90cd661b4b121762c3)
2025-09-18 11:07:23 +08:00
zhimin.zeng
cbe9c99c20 FIX: Calibration limit left and right must be the same diameter
jira: none
Change-Id: I3ea572184a122abeaee882742eda8b75fb21c30d
(cherry picked from commit 79165e1ad484f18ab376ce5451a58e729c2b3100)
2025-09-18 11:07:18 +08:00
zhimin.zeng
c5580b4cba FIX: Old version of gcode cannot be opened normally
jira: STUDIO-10825
Change-Id: Ibf512cd4abc5315bb090d39974fb436e328214c7
(cherry picked from commit de449496b5c4c3f37bdcd115c6ea308ecb92d2a2)
2025-09-18 11:07:13 +08:00
xin.zhang
9db67520c0 FIX: add hms action buttons
jira: [STUDIO-10823]
Change-Id: I751f0951df439a5265cc53f5679fa69b8d1c728a
(cherry picked from commit 0ed457207e2ec31cca276667af9c4ffa392f9843)
2025-09-18 11:06:57 +08:00
lane.wei
ac4a4ca8ba ENH: CLI: fix some potential issue under cli
jira: no-jira
Change-Id: I411e7a18b0eacc27f28a4b6d2205cd6460b6cd1a
(cherry picked from commit 84bbf31ab5d4a30afde7c512147fcbe9b85fb57b)
2025-09-18 11:06:36 +08:00
xin.zhang
d61b2a7b73 FIX: the fan speed control in mac OS
jira: [STUDIO-9566]
Change-Id: I781ee149a2b184ee8d559dbb494798386e67e059
(cherry picked from commit 77dc987ad58534b033b025b9d47bb806718667c3)
2025-09-18 11:06:17 +08:00
xin.zhang
4fc4916ed0 FIX: the ext does not support filament backup; add protection
jira: [STUDIO-10812]
Change-Id: I01b6de1e23d00932b373920105542b8e8770e809
(cherry picked from commit 19697b2dcd2a4f20d977379cc76dff8e02e938f2)
2025-09-18 11:06:11 +08:00
xin.zhang
d1d4a68a8f FIX: update the plate check texts
jira: [STUDIO-10813]
Change-Id: I0304908f7819be1482744e253332bfca1044732e
(cherry picked from commit 3bd7bee74308566e15ae5f9ec4070386b38cc8c1)
2025-09-18 11:06:02 +08:00
xun.zhang
b5dadd160a ENH: sync timelapse gcode for h2d
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I304410a6265e8ab4bb16435cb1c21f906c355e76
(cherry picked from commit 11ba41c7ab603424f52504b0f35564e10380e8c0)
2025-09-18 11:05:57 +08:00
xun.zhang
a86bbf6cb4 FIX: dark mode display in dialog
jira:STUDIO-10811

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I174541d97efe8d0beea4913d23375f82b104b7a2
(cherry picked from commit 7bcc83682e314ea12c5c5229f394015d61cff345)
2025-09-18 11:05:52 +08:00
xun.zhang
959f6fe87c ENH: update gcode for H2D
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Iea232e323b7859affe217d86f685db2d7e997a4d
(cherry picked from commit 05cc1ae808da253d1c3c074aa76921c6ba7ea195)
2025-09-18 11:05:45 +08:00
Mack
e096f242f4 Fix:Step mesh didn't initially count faces
jira: STUDIO-10273
Change-Id: Ic7e672edae03f5ce00e564eaf82dd1c474b84558
(cherry picked from commit 7e4932eec4a12e02f0f40b5e783d38ae1b66a30a)
2025-09-18 11:05:33 +08:00
lane.wei
532224fa8b ENH: config: remove unused assert
jira: no-jira
Change-Id: I3e2bea9f2fd5483c3a0f492bf6a1e47274315d28
(cherry picked from commit 5ddf3ac86fe0b08c50ac25baea7f0c4a7475d2d2)
2025-09-18 11:05:26 +08:00
lane.wei
85c5641c40 FIX: config: fix some potential crash when switch configs
switch configs between single extruder and multiple extruders
jira: no-jira

Change-Id: I3a7ebd590b061f7dec4d8d12d5508e869a941beb
(cherry picked from commit 1e4c82c781ff8a634cecc9e419377c36f0775492)
2025-09-18 11:00:05 +08:00
jiangkai.zhao
99ec668aa0 Fix:crash when multicolor printing
jira: none
Change-Id: I6289934a897644fb025acd20b59bea1a69995f89
(cherry picked from commit 576d931475c4b42582d78092e75ce0b0b7394ca7)
2025-09-18 10:57:59 +08:00
tao wang
947e034b14 ENH:fix X&P printer displaying incorrect N3S
jira:[none]

Change-Id: I15b30e3f45b060b696e7dd2ab4617a7835e9e6c9
(cherry picked from commit 8cb358305c341074418fc8d75c260b0cb6bc661b)
2025-09-18 10:56:27 +08:00
xin.zhang
b6e3ec8852 FIX: update the support of nozzle offset calibration
jira: [STUDIO-10758]
Change-Id: I34246998b08c54ef8e44172300ab3e1d4e4bf5c4
(cherry picked from commit f2f6b290230b11e984d7e729b56bbe1c666879c8)
2025-09-18 10:56:21 +08:00
zhimin.zeng
4f8ff4b704 FIX: cali should not send job in lan mode
jira: STUDIO-10625
Change-Id: I89227b9f3c06416abe7895fa3edb47358891d573
(cherry picked from commit 6029e4bc5e90094d6dbce08dbb4f47757453dad0)
2025-09-18 10:42:49 +08:00
zhimin.zeng
1f64497e25 FIX:The sync button shouldn't show for third-part mutli-extruder preset
jira: STUDIO-10779
Change-Id: I56aec127f4314e09bfab9626c6061d8264f0998d
(cherry picked from commit eccf84c4efb43decef1f60efecfe55f4fd62c6d3)
2025-09-18 10:42:39 +08:00
zhimin.zeng
1cbb0f817d ENH: some tpu filaments are not support auto cali
jira: none
Change-Id: I253e5c5936bc5fb90612f385e358b3015bdabf2e
(cherry picked from commit f38d8f959fabd36e4971c9b58eac193eb30fcd8f)
2025-09-18 10:42:33 +08:00
zhou.xu
8b9f3efa38 ENH:modify Background color for AmsMapingPopup
jira: none
Change-Id: I21940af0ce0ecb9292903b159e5fc0f36f588cc0
(cherry picked from commit ce74f773103b3902916e1feb3d4120937251c248)
2025-09-18 10:42:21 +08:00
xin.zhang
8dfc0a4929 FIX: build failed
jira: [none]
Change-Id: I359f99fd02f7ccd33e333f9fe7f85e400bdfcd37
(cherry picked from commit e3fb2a4c65f96fafb9478902b28f286a400e5e39)
2025-09-18 10:19:06 +08:00
xin.zhang
59fec2f4d0 FIX: update the wrap width
jira: [STUDIO-10781]
Change-Id: I8cbb893f235a47a9ed62e43af8c00dc1ba1f6454
(cherry picked from commit d89303c9fee19eadba9acc615da09f446da25354)
2025-09-18 10:19:00 +08:00
xin.zhang
8886fd5b64 FIX: add context translation
jira: [none]
Change-Id: Ie144a3a7894dae86a0721731a0357cb6f1b2631a
(cherry picked from commit 964458c65a9c6867600ebfadfc04fe2dd728ca78)
2025-09-18 10:18:54 +08:00
xin.zhang
ba5641b311 FIX: optimize the switching cancel
jira: [none]
Change-Id: I60f4e5bcbbe67e6c86793a651e8837a551a762a3
(cherry picked from commit 27c6d46dc20003111bda97c516bf9bf04730d7e6)
2025-09-18 10:18:42 +08:00
xin.zhang
b0943a2d0b FIX: update the flow calibration options
jira: [STUDIO-10784]
Change-Id: I75c5319daf01da52ae521632d71d32813bcbb32f
(cherry picked from commit 57245bd45620cffdcfce8ef623d79b284d60b3eb)
2025-09-18 10:18:35 +08:00
xin.zhang
697dd13875 FIX: support show 3 N3S in one row
jira: [STUDIO-10782]
Change-Id: Ifec1c958dbbc7af02a97a1293621458ea83f61bf
(cherry picked from commit 9008dc115efd5e156ea67dd3becc1ab7bfbc3c6e)
2025-09-18 10:18:25 +08:00
zhou.xu
d434c743f3 ENH:add "reset all" function
jira: none
Change-Id: Iac2c267e95ca0589bf2e6d6d536d70d3b3e4a70c
(cherry picked from commit 7239f7bfaad2e1dc488118188addda3fb015793a)
2025-09-18 10:18:18 +08:00
jiangkai.zhao
9dacc33e72 Fix: crash by wipe_tower_data's null pointer
jira: none
Change-Id: Ic33c40f7dc27b6ca18a44a790c4e4e01d0305792
(cherry picked from commit 04d64d5e006ec11fecea73f324d1c129d5e02a42)
2025-09-18 10:08:40 +08:00
xun.zhang
a8b5bfd809 ENH: add default value in extruder info for cli
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I15fb33c55a8f8e5bf75807ca16b00d50226ee156
(cherry picked from commit bf97aea2e405e41031de7b20eb59054f65b9a0fa)
2025-09-18 10:08:33 +08:00
zhou.xu
111d7ca501 ENH:modify text
jira: STUDIO-10690
Change-Id: I5716f11b33550fae87948f7915b518f18dcab594
(cherry picked from commit 62a06d3351f05fca6459b0292497df6c6385a2d8)
2025-09-18 10:08:17 +08:00
zhou.xu
dc9d5661c3 ENH:adjust UI in AmsMapingPopup
jira: none
Change-Id: Ib2e7e642d7a1700abb92eca2546614b2fd7d2bd4
(cherry picked from commit 5c8d62097384836a1a6d496983734c4e3220baaa)
2025-09-18 10:08:08 +08:00
jiangkai.zhao
1828e3b98f ENH: adjust estimate_wipe_tower_size
jira: STUDIO-10540
Change-Id: I552acf16a1f02f2d6feb783327a0a9a83ac4673a
(cherry picked from commit 1522fe5ff2ffa176dc045d343ef2985c0e7533f8)
2025-09-18 10:07:50 +08:00
Bastien Nocera
6e425e9601 FIX: Fix missing polygon primitives declaration
/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)
2025-09-18 09:33:17 +08:00
jiangkai.zhao
5573293582 ENH: Use the real prime tower model after slicing.
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)
2025-09-18 09:33:02 +08:00
xun.zhang
f850d397c9 ENH: add x1 in bambu pla Lite
1.Also modify max flow v

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I4dc196c452ed1f72119103adfa1e0567ecae4c9f
(cherry picked from commit c8ceb4ba38a591de822da27277a5f9f9d48347c2)
2025-09-17 23:31:50 +08:00
tao wang
40447640c6 FIX:fixed the issue of chaotic upgrade icons
jira:[STUDIO-10746]

Change-Id: If97e8c6f0f371be88065edc1deba474bfb82f845
(cherry picked from commit ff08b3ec34773232b53a29b385cda96ce62cdf8a)
2025-09-17 23:31:38 +08:00
lane.wei
5b9e4a4862 ENH: CLI: only check filament conflicts before slicing when there is one color
jira: no-jira
Change-Id: I17fc917b624578491170656372e4c4d1b43f0412
(cherry picked from commit 53a551174e682694374e539572e5337791e0a7d8)
2025-09-17 23:31:09 +08:00
xin.zhang
5550d23354 FIX: update the info ready check
jira: [STUDIO-10771] [Studio-10608]
Change-Id: I6af3409ebdc7c173b2cfcd6745854e928753dff1
(cherry picked from commit 04e45e4a6e4e4fbc2b3664d29a17b508b7b58f24)
2025-09-17 23:30:39 +08:00
xin.zhang
193d2dc598 FIX: update the panel
jira: [STUDIO-9241]
Change-Id: I9a309594814e0547f7a6ef247ad710636f478b79
(cherry picked from commit 99ec1acc276800b8fcfe933fb224156a7890a7a6)
2025-09-17 23:30:34 +08:00
xun.zhang
b3181c6c52 ENH: add profiles for Bambu PLA Lite
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I2072a34ee5614f702eced636e163e8d06eb07279
(cherry picked from commit 2581925e4b15888c42afa479a323f189e353d56a)
2025-09-17 23:30:27 +08:00
lane.wei
6f2f8c584e ENH: wipe_tower: use uniform wipe tower logic for cli and gui
jira: no-jira
Change-Id: I179212585871071cd17bd37c2756444a2d7aba1f
(cherry picked from commit 1f3dde94980d3685bb4d1266e8a5448b8f231b9f)
2025-09-17 23:29:14 +08:00
lane.wei
c8484d99d6 FIX: gui: fix some .gcode.3mf can not load issue
jira: no-jira
Change-Id: I8a80936f7a3e1a70116e474cd4429fb23b1d218b
(cherry picked from commit 9ad06ba3f49c32d0bf6cb40cc838f3be12ee7d35)
2025-09-17 23:17:21 +08:00
chunmao.guo
4472c801b9 ENH: show category for multi extruders in search
Change-Id: I2441097f076e772dcc0b11245c6d22ed22bfad2b
Jira: STUDIO-10187
(cherry picked from commit 6eba5f3b4821c8302d1423090e3fcdf3309d83b9)
2025-09-17 23:17:08 +08:00
chunmao.guo
f378a41f7f FIX: dialog parent in Tab for drop variant modifies
Change-Id: I9b3750923a7a51f72b934bd4514f3d5d64e1aaa8
Jira: STUDIO-10429
(cherry picked from commit 7fca7c988410c701a691e4be9a61309a2ca29210)
2025-09-17 23:10:45 +08:00
jiaxi.chen
01c6326ed0 FIX: use support_interface_material between support_material
jira: STUDIO-10544
Change-Id: Id1bfda49bc5ac2bd6ecbad473d8ee063d3c0f030
(cherry picked from commit e7eb3bd388ddecdb7f9f78bf69cd378b77b231ef)
2025-09-17 23:09:44 +08:00
zhimin.zeng
929b02dc79 FIX: N3S should only show one slot
and fix crash on calipresetpage
jira: STUDIO-10669

Change-Id: I93aecdcc360d47baa72ef08af711f3d06206d5e2
(cherry picked from commit 926cfb14d28a196082b2437ace182e960c0c66c2)
2025-09-17 23:09:23 +08:00
zhimin.zeng
0235329bff FIX: modify the insert depth value of wipe tower
jira: none
Change-Id: I60b453e688b5bd592b6e276621fc9e8ca68c8789
(cherry picked from commit 7345b0034fa0044afe9d5375c5dc4953eafa5322)
2025-09-17 23:09:17 +08:00
zhou.xu
15c24d903f FIX:update_items_check_state after reset_one_ams_material
jira: none
Change-Id: I1081445da90c6f3267121b864a0e0d868b6b719b
(cherry picked from commit 61a3ffbf4369df2b0a18f7c1f7480c51f24124e8)
2025-09-17 23:09:13 +08:00
lane.wei
5e04588837 ENH: CLI: keep the params of old version
jira: STUDIO-10695
Change-Id: I4b0a768bc4fc6c856c9c92fa4a05007a3097df35
(cherry picked from commit a44da293ad3a1fbc62e318c20b3ba7c187fc1d25)
2025-09-17 23:09:07 +08:00
xin.zhang
581af2c433 FIX: update is_info_ready function
jira: [STUDIO-10608]
Change-Id: I068969223e54b1fa2056a0acc80bef87d167942c
(cherry picked from commit 44e068e705742b37513d2ce65c18a41007d4b7d8)
2025-09-17 23:08:31 +08:00
xin.zhang
95d7da6972 FIX: the wxString encoding problem
jira: [STUDIO-10757]
Change-Id: If4ebe6f93430f108ffde91448913a2e639ced3c8
(cherry picked from commit 27bb14eb226c8b9920d37b9940cb3d2ef6ec6f2d)
2025-09-17 23:08:26 +08:00
xin.zhang
6632db0758 FIX: update the image size
jira: [STUDIO-10732]
Change-Id: Ib4d55b911740cef079f38cd497d40a29ae3b1031
(cherry picked from commit 0ffcd9cc13ce7bbc1f6f96a09647e2f6afa112b1)
2025-09-17 23:08:20 +08:00
zhou.xu
587e524302 ENH:Optimize the case with only external components
jira: STUDIO-9989
Change-Id: I7be626e8c86f684029a4c34fc8b800b880fe1fcd
(cherry picked from commit 1ea13f9846e5b66b0304cd4b6bcbfbb21d8919d8)
2025-09-17 23:08:16 +08:00
tao wang
3cc91d347f FIX:fixed display errors caused by dynamic thumbnails
jira:[STUDIO-10742]

Change-Id: Ie429a98f79d770e80c07600b0da054feba0ce9bf
(cherry picked from commit 519797ef19edf44d36e1d829ce0196f36cbdc3ef)
2025-09-17 23:08:05 +08:00
tao wang
965b5b31cc NEW:multi printer manager filtering O1D
jira:[STUDIO-10745]

Change-Id: I30dff6fe2e64b9079b6794d1c9da46358a6a97c3
(cherry picked from commit 8da9e674a24da46bda998e72061e43b8d21a1ff7)
2025-09-17 23:07:32 +08:00
tao wang
c491d51509 ENH:adjust some disabling effects in printing
jira:[STUDIO-10545]

Change-Id: I30511ac731eeb1f9787f79f957454429d1edca6d
(cherry picked from commit ccb70f415c0b2c3d9a1a1a2ba4646bedb05affef)
2025-09-17 23:07:20 +08:00
xin.zhang
198c78cac9 FIX: the DPI issue
jira: [STUDIO-9238]
Change-Id: I8ab364402358b8b21e6768ecdd0da9cfe6541777
(cherry picked from commit 6dda5f3e523e79485cd0f10c333849fbaa3e0851)
2025-09-17 23:07:08 +08:00
xin.zhang
872f0342bb FIX: Cannot send the print job when the printer is not at FDM mode
jira: [STUDIO-10571]
Change-Id: I20c02b79d09400dce2089856fde98d0cd50713ff
(cherry picked from commit d327fa91781bbc568b26ba147f9dd9f625ff1022)
2025-09-17 23:07:01 +08:00
xin.zhang
03ea48c6b4 FIX: update the extruder image in status panel
jira: [STUDIO-10732]
Change-Id: I5437c4ef1538f0022f97c7ef7fb40ec2242328ed
(cherry picked from commit f5c49c89a80e508a442440218b068446d1e9e797)
2025-09-17 23:06:54 +08:00
zhimin.zeng
b791a31aff FIX: crash when the wipe tower block is invalid
jira: STUDIO-10696
Change-Id: I6e9ff87cfb8cfd2383480248d56b8515d383b11c
(cherry picked from commit 609a4c0e52b4ad2c7b145d21b9c648c96d2ba13d)
2025-09-17 22:58:45 +08:00
zhimin.zeng
df8cc32353 FIX: fix the unknown object label id
jira: 10699
Change-Id: I50b5b230625be8dd0c36b588e6ae9358eef334ba
(cherry picked from commit c58e5d447d09ed3b62cd6ace0de58dd4fa7d9693)
2025-09-17 22:58:36 +08:00
xin.zhang
6988468729 FIX: add translate key
jira: [STUDIO-10586]
Change-Id: Ice409b9459230254bbaaa4f706761d6927d8bdf8
(cherry picked from commit 5509447a6d500142ef3d078773678e37ba2f03e0)
2025-09-17 22:54:56 +08:00
xin.zhang
7b4b655ba1 FIX: update the mapping item
jira: [STUDIO-9942]
Change-Id: I5b46fb530f08d0de4c8cf5a23707ec539d82356d
(cherry picked from commit 8b237bf959d2718c0397530af599c3a24a650d74)
2025-09-17 22:45:11 +08:00
Noisyfox
1f89df4993 Fix compile error 2025-09-17 22:38:03 +08:00
tao wang
6ad0aedcdf ENH:signle extruder printer mapping without using ext ams
jira:[none]

Change-Id: Id73b76353071ea3b59e372cd386952e46f480091
(cherry picked from commit a03424b7cc3e649f4e35fb2e33a63cc36e0bad4f)
2025-09-17 22:32:42 +08:00
jun.zhang
256eca69ab FIX: position of LayersEditing dialog
jira: STUDIO-10706

Change-Id: Ibadeef751ad500f61b9ab20cb7f030c461869399
(cherry picked from commit 38da475197b5059225f732d11963f10f1d58ad6b)
2025-09-17 22:32:36 +08:00
jun.zhang
51efa961d4 FIX: thumbnail anti-aliasing
jira: STUDIO-10640

Change-Id: I70a7f6794a17df7d15b02bc7b4cdaee5bf95151a
(cherry picked from commit 9511a523632b6b12aa50cac1ae061d9062841bbf)
(cherry picked from commit ca259355bb71905868c8d231af66c719c2ccea48)
2025-09-17 22:08:59 +08:00
zhou.xu
2c41b6e529 ENH:update image for plate type
jira: none
Change-Id: I590bf9d6596ccf5cd6e06844fb3ed247fa526ba6
(cherry picked from commit 6be306e548be9129d6cf1c34242910be02a70ed8)
2025-09-17 22:08:40 +08:00
zhou.xu
ebf1b8a2e1 ENH:Change text to icon
jira: none
Change-Id: Ibae6e240fd2ee921ce173979c1f36ac842a016d6
(cherry picked from commit da65214326980f7a2239555123b99784c94408bc)
2025-09-17 21:56:59 +08:00
zhimin.zeng
8974ab6e46 FIX: fix slice core dumped problem
enable timelapse and the first layer has no toolchange
jira: STUDIO-10698

Change-Id: Ia503efe4a143fe98f67cd3913b7745d74b113170
(cherry picked from commit a4388010bd289f15d57044b208a2aa2116f76332)
2025-09-17 21:56:14 +08:00
zhimin.zeng
b9063c9484 FIX: the master extruder id is incorrect for custom printer preset
jira: none
Change-Id: I4ea27ada6f976f1030acc88f131e77a382ca5199
(cherry picked from commit ecb6aff6c98d7a6222d9ec1b7855709208f55e79)
2025-09-17 21:55:59 +08:00
xun.zhang
3f00fd2993 ENH: add min vitrification temperature in placeholder
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Id9da8c829a2ed7469a01a887a0f19b0d32f0c36a
(cherry picked from commit 6869abcedac7a3e4ae04467c73656d681a4dda7d)
2025-09-17 21:55:28 +08:00
tao wang
51317b4753 NEW:disabled materials item will retain original color
jira:[STUDIO-10539]

Change-Id: Iabdbc6582dae5bcb2ec31775163949f0d451dcca
(cherry picked from commit fdb57550aa01ae88538b2de954670b84c6e72baa)
2025-09-17 21:53:33 +08:00
xin.zhang
740f7eabb1 FIX: use dialog instead of popup window
jira: [STUDIO-10692]
Change-Id: I85e8da120946fc6ff845c9b88d4f1594e313652b
(cherry picked from commit 7115c1ca177e98c2931517d748ce4d63d3a067da)
2025-09-17 21:53:27 +08:00
xin.zhang
5807353e24 FIX: disable printing while ams setting up
jira: [STUDIO-9813]
Change-Id: Ic5ff3f96ab86da317744d5fbe0b068e3ba77666b
(cherry picked from commit 26609a130afbab4088cc7bea261266fa6da1def5)
2025-09-17 21:52:43 +08:00
xin.zhang
7cf1621747 FIX: update hms files
jira: [none]
Change-Id: I9fc34829b89c2cac4e2bbd0719a25295de339aa6
(cherry picked from commit 2a551af40a62ac5c22ef5480cd8dbe294ddbb9a7)
2025-09-17 21:51:23 +08:00
xun.zhang
91349fa6cd ENH: update gcode for X1E
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I161e9c65c24c3e35d2edb026aa9790ce02d9aff7
(cherry picked from commit 5bd2ad1806ed5b66631483734481449ab7965af6)
2025-09-17 21:51:15 +08:00
xun.zhang
44ebac591c ENH: update params for Bambu PETG HF
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I2eee5275f14f2599aa434379555bee4d1c45f9aa
(cherry picked from commit 323aba74f3949e141c99c3ed4079979641905832)
2025-09-17 21:50:44 +08:00
zhou.xu
3d93ed271b ENH:Add a colon to the text
jira: STUDIO-10691
Change-Id: I3cbc1dbc8c05689fe63f8c1af28cab2ab2cef6cd
(cherry picked from commit 986f0c72b85a1b1a0204d79cb149d684422c4b5b)
2025-09-17 21:50:20 +08:00
tao wang
9252701cce ENH:remove useless ams information
jira:[none]

Change-Id: I2c3319e19e3e46c575c28d8e3b3c41e63552b503
(cherry picked from commit b2ed01716b8fa0b18341e1dad50243e76b6a9ed0)
2025-09-17 21:50:05 +08:00
lane.wei
f2c872f95c ENH: debug: improve the assertion judge in Point.hpp
jira: no-jira
Change-Id: I22b0cd3dc897c5cd05d14273d88f90bdc01ae644
(cherry picked from commit 29766420dd009bb729d45f341e34fbd8d9e1b71c)
2025-09-17 21:49:55 +08:00
zhou.xu
a84ede4467 FIX:set "ban_light" true for picking_thumbnail in linux
jira: none
Change-Id: I68912a17f6bd3ffb73fc6480e5fd95a690c1c872
(cherry picked from commit 1acfe83fc0c49734996a0e2596856fd7881b4d68)
2025-09-17 21:49:40 +08:00
tao wang
ec2ee96ef5 FIX:update load/unload command for n3s
Change-Id: Ic4655f368a0ffb0e16139dee1fd1ffc34236e9eb
(cherry picked from commit fc32042639cc83cc6876e63b86c944671649955c)
2025-09-17 21:49:16 +08:00
tao wang
3a67f1bd27 ENH:optimize the logic of the IP input window
jira:[STUDIO-10375 STUDIO-10534]

Change-Id: I75ff12403dbf8f59fa95c938fa97ec2497f0ed67
(cherry picked from commit b62efed65f26b1ea4390c2d1e8681169e63fff99)
2025-09-17 21:23:22 +08:00
zhimin.zeng
b561599575 FIX: Speed ​​is displayed incorrectly in GCodeview
jira: none
Change-Id: I15a801c73503c0a3ebda64838fc5f82a4d46458f
(cherry picked from commit 704a4a380cbd7f9ba01e7db26bd2a358ec8db6eb)
2025-09-17 17:59:10 +08:00
zhimin.zeng
86847f1f23 FIX: remove redundant diameter check
jira: none
Change-Id: I1c1c5bc91edbe1e5c26c094756c3e2935485d5f7
(cherry picked from commit a2619e7b315decc1ec9873436652ebb32fdfbdef)
2025-09-17 17:58:57 +08:00
zhou.xu
06e6fc8568 FIX:set "picking" true in pick render
jira: none
Change-Id: I110f8fe4811280fbc59282752e06330f7f9dc665
(cherry picked from commit b9c3cb89ec0a880c125679fe6edce7a95ddc10e0)
2025-09-17 17:58:34 +08:00
xin.zhang
1f93be6bd9 FIX: update the flags
jira: [STUDIO-10620]
Change-Id: I2e8201e1192f15e627607ecd3abb3371ffd8711a
(cherry picked from commit ef7c8efdf637c7f67dd08e5195d5f80d510958f6)
2025-09-17 17:56:52 +08:00
xin.zhang
a2e3a61ea0 FIX: fix the humidity display of N3S_AMS
jira: [STUDIO-10641]
Change-Id: I48ac96443f851262b3ce720d4b4948b7b515a381
(cherry picked from commit 51042edcbdc1d8d24c11fa8a479559d4fd000fc7)
2025-09-17 17:56:40 +08:00
zhou.xu
ef07246879 ENH:delete no use code and add log
jira: STUDIO-10644
Change-Id: Ia12ea45553e2856d0c8784c2a87a1e86adece003
(cherry picked from commit 38f1f265cfb9f79030b48137d2949de9f25e782f)
2025-09-17 17:56:31 +08:00
zhou.xu
06375250e6 ENH:add 'reset' button in AmsMapingPopup
jira: STUDIO-10009
Change-Id: Ia924ae9cbe0bec33f1b37af12633a9cb64836182
(cherry picked from commit 3b8aa5993d93598173e412766a938af17ebb2da5)
2025-09-17 17:56:25 +08:00
lane.wei
eb1964feb2 FIX: CLI: fix the filament_map incorrect issue
jira: no-jira
Change-Id: I8f389ae1dca2cbe79a2db7a5e9fbb94da430d037
(cherry picked from commit 89308c8676e4f953a69198f706852e8b6d42231c)
2025-09-17 17:53:45 +08:00
xun.zhang
30f85ee495 ENH: update chamber temp for H2D
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Id41f610f5314c82cbebfaa93c9b81fe1f472dc5a
(cherry picked from commit f2e861af902f01a9ed6998e9ca5369c420ed7deb)
2025-09-17 17:53:05 +08:00
xun.zhang
9cb261cbf2 ENH: add some change for translation
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I58ded926c8525e261bb1c7518562c9276afc1409
(cherry picked from commit 1a240e5d14e173cce2b9cb99a56e4103729cc9d7)
2025-09-17 17:52:51 +08:00
xin.zhang
e68300ef99 FIX: fix offset of graph painting
jira: [STUDIO-10617]
Change-Id: I3e924640ccfca2fa1a7ff70d54f7b48759ee1ac7
(cherry picked from commit 4fc69c70d4b1d3cf75b40ca09c660731ba2af85c)
2025-09-17 17:51:21 +08:00
tao wang
aa728809d3 ENH:update local hms file
jira:[none]

Change-Id: I3fe669148a885de6e7d1f20024c650cb19a0f8f4
(cherry picked from commit 4a395a970812b9da49df9ef57606895a7021d97d)
2025-09-17 17:51:12 +08:00
xun.zhang
40346a62e9 ENH: update profiles for H2D
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I17defcdf2bc665442c2d7c3b9f1922b4b2fe7f4b
(cherry picked from commit 6781a874b5eaabdc7bac7920248d96464c0493a3)
2025-09-17 17:51:01 +08:00
xun.zhang
259e942ecd ENH: update slice status if ams count change
jira:STUDIO-10609

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I1cf2b15d084c40589a8c8954d310567b5daa9afb
(cherry picked from commit aa46f311e9b475161384dca604dde1c734e16c14)
2025-09-17 17:50:38 +08:00
zhou.xu
e96927a9e4 FIX:ban_light not commit for pick thumbnail
jira: none
Change-Id: If8421a4f63f28969c9f7840af75149d95be34acb
(cherry picked from commit 038946fb29ca79936863944dc9763397c3d433dd)
2025-09-17 17:48:46 +08:00
jiangkai.zhao
042f109cc9 Fix: modify tpu travel speed to 2 times
because of 2x nozzlechange width
jira: none

Change-Id: I3a9af777551c54b8bac273bf1f6e06c9f36673bb
(cherry picked from commit 99af2382c4a6d8d942611b4d1145b4d8872a99a8)
2025-09-17 17:48:31 +08:00
jiangkai.zhao
fb47a27bc1 ENH: adjust wipe_tower depth interpolation
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)
2025-09-17 17:48:25 +08:00
zhou.xu
d930c7cdc8 FIX:Fixed frequent switching of dark mode causing unclear window display
jira: STUDIO-10618
Change-Id: I49ccbb4e59d9865f0e4f4d9cef96fe1e0d011e7b
(cherry picked from commit 184143ead7ec4beceb63076e91cedd955d040308)
2025-09-17 17:40:52 +08:00
tao wang
01833baa28 ENH:Prompt for the number of material changes
jira:[STUDIO-10622]

Change-Id: Iaeb759e10cc53abdcc6f1591d93a36c9c7a4b2a4
(cherry picked from commit e542faedca42f3f53c65f505b0bf681c37338815)
2025-09-17 17:40:34 +08:00
tao wang
35bb239a8f ENH:support checking blacklists for specified models
jira:[none]

Change-Id: Icd88c478a04e8743cdaaa8d670f238b534e40283
(cherry picked from commit c3643fdec9c0fcbceeba71f9ef5cd2de0cf7957d)
2025-09-17 17:38:52 +08:00
xin.zhang
385c8a36a1 FIX: update the time shown; keep the val update while popup
jira: [STUDIO-9268]
Change-Id: I0b743ddb0ae479f9baad6239f68861a199681cda
(cherry picked from commit e1bc737d1cbc1dcf79ceecf9ed301a4a02590d5a)
2025-09-17 17:38:35 +08:00
xin.zhang
179f403ee3 FIX: update the display color
jira: [STUDIO-9095]
Change-Id: Ia38f5b7efa80b255f83b04aa337a4e9bc1ca1886
(cherry picked from commit 3845b8ff66e82cf77283beddcf9f868172bdbaec)
2025-09-17 17:38:00 +08:00
xin.zhang
5e63f5f01d FIX: update the text ctrl directly
jira: [STUDIO-10611]
Change-Id: I062b331f793e67b652b7a63b393b590ffe294cc5
(cherry picked from commit 0a73a7aaefb2174e91bdece30d9d97b3c788fd07)
2025-09-17 17:37:54 +08:00
tao wang
6f6c82a0b5 FIX:fixed disabling switch option in dark mode
jira:[STUDIO-10545]

Change-Id: I63a6ace601edc6a84dcf37ad1c241d9dc4a0b4d6
(cherry picked from commit e146f07b88c17f1d3f2690bda6603c33080c750a)
2025-09-17 17:37:27 +08:00
xun.zhang
b6d33931a3 FIX: wrong value in param
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I3521005617f414f57247599f3211e87f576a28e5
(cherry picked from commit b2f32e501021beb5119543524aa9d6487123d758)
2025-09-17 17:37:16 +08:00
zhimin.zeng
1b84f2da1c FIX: the extruder_id is incorrect when cali left nozzle
jira: none
Change-Id: Ice9c5ad93840223d59ac2a1c56935051382d5efb
(cherry picked from commit 53e50e285cee4b99b55f3d66f930429031c347e9)
2025-09-17 17:36:42 +08:00
xun.zhang
914a2ac443 ENH: prevent dialog exceeds screen size
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I1e52efff3d89e4fe13bc6d79c11a6328e391e431
(cherry picked from commit 45580a9d7511e35316151653666eee481265fce6)
2025-09-17 17:36:37 +08:00
xun.zhang
8c6e7f3d40 ENH: handle legacy for ASA-Aero
1.Change ASA-Aero to ASA-AERO

jira:none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I49c4c31b9928e07b67b9893a4b204c2418089f17
(cherry picked from commit a13c47281693a57439cfef2bd312a35d6d74ac0a)
2025-09-17 17:36:23 +08:00
xun.zhang
dd3c63bef0 FIX: wrong bed temp in placeholder
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)
2025-09-17 17:24:23 +08:00
zhou.xu
3f72cc15df ENH:Optimize the gap between AMS pop-up controls
jira: none
Change-Id: Iaa397fb5d9de8c496da5cee510535d41a8bdaa81
(cherry picked from commit 905576f52786ae2a431a8ff0b0ea8a23562f2fe3)
2025-09-17 17:22:36 +08:00
tao wang
73bee49b0b FIX:fixed incorrect pop dialog layer
jira:[STUDIO-9656]

Change-Id: Ie9ffc8eb08322cdc3489b532cbb404425b51d598
(cherry picked from commit c76d8fd96cdcd36720b5c18ef86647af565bc159)
2025-09-17 17:13:25 +08:00
tao wang
1241b66dfc ENH:fixed incorrect prompt for glow material
jira:[STUDIO-10574]

Change-Id: I4475eb527ffbc8cc6d72405445552971d062b45e
(cherry picked from commit 01918affdfb69879f86ca47fe2f1ab8af5e1311b)
2025-09-17 17:09:21 +08:00
zhimin.zeng
bab0a9cb92 FIX: crash when print by object with multi-objects
jira: none
Change-Id: If69324f3a01a0f0001fb05488cb91f0f74a08071
(cherry picked from commit ec11e25b4343cabd2e8f5d7ed6423cef93d4686f)
2025-09-17 17:08:02 +08:00
zhimin.zeng
fa1422127b ENH: support skip timelapse gcode when skip all object
jira: none
Change-Id: I31586b1885e92e0eb0005b458e1dbc19f945a929
(cherry picked from commit 01460cae76888aeac4beb0542343c14d835857f5)
2025-09-17 17:07:54 +08:00
xun.zhang
81a8ae1e45 ENH: speed up filament delete
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I0878962d52fe4f7d2976a49b632714ea8d7c42a1
(cherry picked from commit ccd3612780d8cd913aa7fbdd56c6adccfc1a0093)
2025-09-17 17:00:19 +08:00
xun.zhang
5c406ef00a ENH: new wiping dialog
1.Enhance performance and ui display

jira: None

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: If1cde4d1a17437ee5485dd51adff4c3444774ffd
(cherry picked from commit 9c28c320d680d69b16d4895fda1bdcab9ad5b18d)
2025-09-17 16:57:35 +08:00
xun.zhang
6895cbcc58 ENH: update gcode for H2D
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I3de9ef68ef727d58adac5c6025e50d1fa318177b
(cherry picked from commit bc446854ff5d20c152a5858958c643e903081895)
2025-09-17 16:27:34 +08:00
zhimin.zeng
7363e780fe FIX: the layer nums of customize print sequence is incorrect
when enter from plate parameter which lead slice error
jira: STUDIO-10556

Change-Id: Iea15547b5f17a34d0b222000dee990d8dc39bcd8
(cherry picked from commit 0f2d10f35d5e447b89be0c3e39bc532f1a0b687c)
2025-09-17 16:27:29 +08:00
zhimin.zeng
bde94a6616 FIX: the timelapse gcode is not generated in spiral vase mode
jira: none
Change-Id: Ibb73fab7f51e5a81bd32b6e5df18a095f2aa30d3
(cherry picked from commit 22499a552e86f6f458706c3043915130b447de2c)
2025-09-17 16:27:22 +08:00
xun.zhang
6f5ea725dc ENH: add new way to set bed temperature
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I99a9f67e9b13b2137ad371b22cf0999ccf9c096d
(cherry picked from commit 69c2947daf66eb0a6732b1b980c9b87f597c8da7)
2025-09-17 16:22:05 +08:00
jiangkai.zhao
34d0855ba2 ENH: Modify extra_rib_length can be a negative value.
jira: STUDIO-10535
Change-Id: Icd6134a96c1f32111f908e87acda8c5132dcd73c
(cherry picked from commit cbf4b3eafff29ad961deec6acad5104e34a57481)
(cherry picked from commit 4fadeab45040daff079044965eea0e3c4e9f74c7)
2025-09-17 16:11:05 +08:00
jiangkai.zhao
4a12032cd3 Fix: crashes when slicing small objects with wipe_tower.
jira: STUDIO-10572
Change-Id: I37312673a87e542120ee7282c22f80e16c894cd9
(cherry picked from commit 8d32d29016a96ae3e9fcaec3fc9d261bff39dd22)
2025-09-17 16:11:00 +08:00
jiangkai.zhao
13f920b12a ENH: set max prime_tower_extra_rib_length to 300
jira: STUDIO-10569
Change-Id: Iad518db29206d16bb59b5a938623d351862a190a
(cherry picked from commit e71adc067cf3284d054dc37dc588ab9161de01f7)
2025-09-17 16:10:53 +08:00
xin.zhang
0099823501 FIX: support save remote file to storage
jira: [STUDIO-9095]
Change-Id: I675d942b52e723908a5be1861efe7917cdcc599d
(cherry picked from commit 5850bc8fbd0dd6e757e48e54275c1788e15ff93e)
2025-09-17 16:10:44 +08:00
xin.zhang
8ccd7b0cc6 FIX: make the AMS Preview area able to scroll
jira: [STUDIO-10502]
Change-Id: Ia720caa529636070b0ea2772fbe0f552b02e7060
(cherry picked from commit 6ec477b595fa12298571788ddfac51e06b33ac81)
2025-09-17 15:49:42 +08:00
xin.zhang
967ef78229 FIX: Make the color visible
jira: [STUDIO-10249]
Change-Id: I8490636f675787f0f2bf10917a85e2f9a075f4f7
(cherry picked from commit 4c8779d85c3df9b223d3af220994d689ed66ac41)
2025-09-17 15:49:36 +08:00
xin.zhang
b1168c2b6e FIX: support open door check
jira: [STUDIO-9095]
Change-Id: I2e033641724beb15f649b04950c5de51be8722df
(cherry picked from commit d504010ee0137c4ecf55b99b730f76692ef76390)
2025-09-17 15:49:30 +08:00
zhimin.zeng
2f55bcab1f FIX: add log for cali_sync_button
jira: none
Change-Id: Id6f7030ec8476e8dc209b4e7bb88ec4531f2013a
(cherry picked from commit ebc30a7769b84b507514ff11d270104848e4b450)
2025-09-17 15:49:03 +08:00
zhimin.zeng
30bbb93680 FIX: the nums of filament_type in plater config is incorrect
2. Improve the judgment and display of the extruder printing area
jira: none

Change-Id: Ie9e1991904bfbc5bffceedb7810b1d1fa598933b
(cherry picked from commit ca5ec101f9a679d8ea4360d96a2db606923b8429)
2025-09-17 15:49:03 +08:00
xun.zhang
c8bf1cedcc ENH: update profile for H2D
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Icd5c507c6e9db4a74f68389a9b7ac476679fcc5f
(cherry picked from commit 0f6d691597d77725d7a3a4a3ae34d010c5d1cb58)
2025-09-17 15:49:03 +08:00
xin.zhang
76b54ffffc FIX: The HMS is internal
jira: [STUDIO-10547]
Change-Id: If40e9f3f9a0c9fa22d1e9b25ceef4284a8c61b10
(cherry picked from commit e399f136342cb26333da2afb3fa4aa58f99921e5)
2025-09-17 15:49:03 +08:00
zhou.xu
7b282924e1 FIX:update svg
jira: none
Change-Id: Icd74c1fd1eee3c04ea6caaaab96c990dc64bdcdf
(cherry picked from commit cb5c007d284dcc72adcb7364cb0660da8bfeee6f)
2025-09-17 15:49:03 +08:00
wintergua
972f3c7831 FIX: wipe tpwer should be no_brim_area
jira-id: none
Change-Id: Ia8b9c1639a62d90421932594b3709eba71b5e723
(cherry picked from commit 68eb40bc74d75fece451ed3b4b4b767b46c238b3)
(cherry picked from commit e684f8fcc67464f852f61cb5b7389dfd3491982b)
2025-09-17 15:49:03 +08:00
jiangkai.zhao
16dc0381a2 FIX: add gcode reserved tag
and fix block.finish_depth error

jira: none
Change-Id: If272b181430aa79a88ff0cb79670cf2c62a06020
(cherry picked from commit 0f4516f78186fb2a13b245eb38d13dfc2fce8bfc)
(cherry picked from commit 7e0078b24e65711266fe70d8d50f0d3faa4096b3)
2025-09-17 15:49:03 +08:00
xin.zhang
e53337ded4 FIX: update HMS files
jira: [none]
Change-Id: If1124ce837984b4d5926a3b20b1419b3b8f5e1cd
(cherry picked from commit d7bc191cd38208630a1b3db2da40608395ded34d)
2025-09-17 15:49:02 +08:00
xin.zhang
d557b8e35b FIX: The humidity popup with humidity_percent/temperature/dry_time
jira: [STUDIO-9268]
Change-Id: Ic6e923ae7cff56fa3e053d48e5dea6e393cd41eb
(cherry picked from commit 75da1db2f926125a0cb3595a8cae9f4d7588c6a8)
2025-09-17 15:49:02 +08:00
zhimin.zeng
194f52fb88 FIX:Add Button to restore the pop-up window which is not show again
jira: STUDIO-9734
Change-Id: I33280f747b095dbd1de1643c04c900365c36e922
(cherry picked from commit 9304073ecb6b16997bc89a19aa0fd2008922210f)
2025-09-17 15:48:58 +08:00
zhou.xu
e108438427 FIX:Array out of bounds protection
jira: STUDIO-10538
Change-Id: Id924495fe4edcedf48e79fa0deffdd6bb98d69cf
(cherry picked from commit 44fd34d4f7ddc3f51f710757058022eb5aa145f0)
2025-09-17 15:13:19 +08:00
jiangkai.zhao
e85fc25690 ENH: update translation
jira: none
Change-Id: Iceeaf2d9bb93fcee4fadfdfc2a5f1f7ab4a0b684
(cherry picked from commit 2421cd430df8c2bd9c632c303388afb5b7064ee0)
2025-09-17 15:13:02 +08:00
zhimin.zeng
2936d37067 FIX: the line wrapping of MessageDialog is incorrect
jira: none
Change-Id: I0e821d4acbcb35ab4920a5e5b98180afa54eb7e0
(cherry picked from commit 470657fed16d2288a3ca4c2ae50d61184bb464c8)
2025-09-17 15:12:19 +08:00
xin.zhang
889911d69a FIX: update the display of AMSHumidity
jira: [STUDIO-10119]
Change-Id: I7a1be57bd0dff13be149d6450b36fb54ffa9521d
(cherry picked from commit c3a8690987005e0f53bbd5f9622a670e76bed93a)
2025-09-17 15:11:41 +08:00
Mack
61a68460bf Fix:fix filament arrange ui
jira: nojira
Change-Id: I543c212d8e28f2701f8494f031c24090d9fe7617
(cherry picked from commit dcfc5af245d1cc27dfc8e1519dd3dfcbb2864af3)
2025-09-17 15:10:47 +08:00
zhimin.zeng
e2a9aecb22 FIX: new printer do not display the default k value
jira: none
Change-Id: I1da6fa4cf800152b2d754e69a8226afae44d18c0
(cherry picked from commit 996f2995039729c62709e50dc88ddba4208bac84)
2025-09-17 15:10:42 +08:00
zhimin.zeng
ad0f9b5e5a FIX: pa default item add filament_id
jira: none
Change-Id: Icfc24390e62cc1eca7e670311dc88502cea16fd7
(cherry picked from commit fb72d19a44d3b916920373acb7dd359282c1b750)
2025-09-17 15:09:51 +08:00
jiangkai.zhao
3682cbe45f Fix: modify the rules of get_wall_filament_for_all_layer
jira: none
Change-Id: I6e8655105470dc3eef291d4b6ac1c4447092b21a
(cherry picked from commit 81ad7bdde0db5c7bc22951843c2c226496d7b2c0)
2025-09-17 15:06:43 +08:00
jiangkai.zhao
b8384f0b7e ENH: Remove the solid layer below the fast extrusion
jira: none
Change-Id: Ied59c6f18bc2832be80c105d95f77d5cff119cc3
(cherry picked from commit b9d07f402ea929b90c26bf6f55919677cf77a75b)
2025-09-17 15:06:38 +08:00
jiangkai.zhao
3f7f8260cb ENH: modify quick extrude to 2 perimeter width
and use bridge flow for nozzlechange
jira: none

Change-Id: I9bda1b689d7139819607bace09354ef43d27a970
(cherry picked from commit 147e7bdb50765143074dd8111c24f8c1b61872dc)
2025-09-17 15:06:33 +08:00
xin.zhang
84fa72a8bb FIX: the nozzle data check
jira: [STUDIO-10528]
Change-Id: I5a20d52a92f4e6620239753a66fb5febcad19f39
(cherry picked from commit 679ec788e57932c2088b5b08f75128a93f0e0123)
2025-09-17 15:06:27 +08:00
xin.zhang
f5829ee837 FIX: THE align problem
jira: [STUDIO-10044]
Change-Id: I6bdb49aaf1ba92289110f72980d8532b0afdaaf0
(cherry picked from commit 750673b7f7a2091c66d76a403de9b2a7e305022b)
2025-09-17 15:06:04 +08:00
xin.zhang
73810199d6 FIX: add switching status panel
jira: [STUDIO-10272]
Change-Id: I0bf0c45a3176d132d246908255f1984b50fe75f9
(cherry picked from commit 3085175fc6606b559b2719b53f2fc195aa0f6260)
2025-09-17 15:04:40 +08:00
zhou.xu
cff84682d8 FIX:Update the thumbnail of the current plate even if there is no match
jira: STUDIO-10514
Change-Id: Ia25433a275eaf90416f532978fd2738f98c192d8
(cherry picked from commit 007e4fdeb229e1b0db7386baa70f3b8de092b42a)
2025-09-17 15:00:36 +08:00
xin.zhang
956a312967 FIX: update the scroll rate
jira: [none]
Change-Id: Iadc87259a667e10e932ae2a5002d380de0d65262
(cherry picked from commit c2600b3c1858e5db3daf55db25b240b9d0f7a8c2)
2025-09-17 15:00:13 +08:00
xin.zhang
c077d8e4d0 FIX: get suitable font size to draw the texts
jira: [STUDIO-10067]
Change-Id: I589fd6a271ae177e4630e403b64c18090aab9471
(cherry picked from commit d036c92a3793e8c0c758432b52f2af8ffeff751f)
2025-09-17 15:00:05 +08:00
Mack
3dd369ad4e ENH:FilamentMapDialog add filament type
jira: nojira
Change-Id: I08a3c037ffa6227602e71b97697a1bc61e3d5050
(cherry picked from commit 6621fd0e20bce4c32788a86a6fde018f3a7f41ef)
2025-09-17 14:35:02 +08:00
zhimin.zeng
fc76b50234 FIX: only match system preset for ams auto sync
jira: STUDIO-10434
Change-Id: I38322b1f7dc3c4f26aee91d69dbfb6ce65fb9f3d
(cherry picked from commit c5650679548e75c88a16c91491322c41860ee586)
2025-09-17 14:22:38 +08:00
zhimin.zeng
28fdf252d0 FIX: error sync behavior for customize printer preset
jira: STUDIO-10331
Change-Id: I4d42ed089e515c2d74dfade1589f20f1c80ca4ca
(cherry picked from commit ce963cede53a72a123f55666a1f718726eb18ab6)
2025-09-17 14:22:28 +08:00
zhimin.zeng
2e92205f61 FIX: H2D timelapse warning not appearing when sending to print
jira: STUDIO-10515
Change-Id: Ic608f353fe330d0768387b0e59c65487c58c075b
(cherry picked from commit 6e8670ec6ef6b5bfb367a220f6df4e38ca71292f)
2025-09-17 14:17:19 +08:00
zhimin.zeng
44624274f5 FIX: Cali thumbnails distinguish left and right nozzle
jira: STUDIO-9747
Change-Id: Ie28901288c166cdcd7403311cb467b72453c2ca4
(cherry picked from commit 0b3cd958d5b573276488c477540b122f116099ab)
2025-09-17 14:17:13 +08:00
jiangkai.zhao
39276e0c35 Fix:the missing extrusion issue in the wipe tower
and resolve the infinite loop during multiple material changes when printing TPU.

jira: none
Change-Id: I9d0fb142ced6ba894803fd4c9b9b665e2fa93d92
(cherry picked from commit aad1ab2090781e072053dfe16764a3e05bb57178)
2025-09-17 14:04:31 +08:00
xin.zhang
875d461120 FIX: the tab change display
jira: [STUDIO-9748]
Change-Id: I3178a43ec9de091790b1df760c0b029c0f03229e
(cherry picked from commit 96c2cff2828c4f541f8aa5f59efabcbf0c0df9ef)
2025-09-17 14:04:11 +08:00
xin.zhang
2084b59cce FIX: hide the internal HMS message
jira: [STUDIO-10363]
Change-Id: I0b68d8ddde4b1b1277fd828e17f568fcdc81adb6
(cherry picked from commit b10ab774477c2fb3dc9ef4b81005b3daa3f618f4)
2025-09-17 14:04:06 +08:00
jiangkai.zhao
820f12a16b ENH: reopen confilctchecker with adpative height.
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)
2025-09-17 14:03:59 +08:00
jiangkai.zhao
d1d04d395e Fix: the generation of the skirt does not take the wipe_tower into account.
jira: STUDIO-10381
Change-Id: I523d366d6d569696de48f872be827d73710cb526
(cherry picked from commit 939b405c35809dbceb65e5efdc65622407065b65)
2025-09-17 14:02:10 +08:00
zhou.xu
501388d29f ENH:Add an array out of bounds protection
jira: none
Change-Id: I57f401d368191aec8a6687158e0c50c455429893
(cherry picked from commit 4e3ee050db33be341266f8635721c1f92f8ca0f5)
2025-09-17 14:01:30 +08:00
xun.zhang
60df338ac5 ENH: initialize nozzle num in gcodeviewer
jira:none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I44827eb7adb457823b3da1d6b45a6003864294b6
(cherry picked from commit 129134f6df3fbad88d3b83a901b665da5c66f5c3)
2025-09-17 12:12:56 +08:00
xun.zhang
e5e95d48cc FIX: filament map UI issues in mac
1.Also remove a useless otion in preferences page

jira:STUDIO-10472

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I6c7052522f7c797fca35decb68879694cc1142b9
(cherry picked from commit 02b4fe96a121f7bff1b30ddf73ff99f2b7e6d6f3)
2025-09-17 11:41:03 +08:00
xun.zhang
0af34f4324 ENH: enhance auto flush option
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)
2025-09-17 11:39:56 +08:00
zhimin.zeng
27b16455b7 ENH:remove restrictions on mixed use of high and low temp filaments
jira: STUDIO-10482
Change-Id: Ifdf6f11b45f2e6d138ea615a3ad1f23d40ad3fe9
(cherry picked from commit 0178e930809cabcdbc09ab305e70e4323598b343)
(cherry picked from commit 8f92391717e37dd0f51aa067ad626b83630a46b1)
2025-09-17 11:36:18 +08:00
xin.zhang
ae7438f249 FIX: update the fan panel
jira: [STUDIO-10499]
Change-Id: I5b760946229ea1cb24802ddddce250cc276986d6
(cherry picked from commit 418370ca5cde3a174ed7a9404413f61a62e214e9)
2025-09-17 11:34:54 +08:00
zhimin.zeng
1c14814246 FIX: modify the message of cali
jira: none
Change-Id: Ibc2dfa0588a02508cc625eedb3da38d0eae2199c
(cherry picked from commit 2004e769cedc01364f36a1542849c8030d3d1a96)
2025-09-17 11:34:49 +08:00
zhimin.zeng
9d4628e3e6 FIX: the wipe tower out of bounds when dragging
jira: STUDIO-10431
Change-Id: I749842cae7bcacfc555559d42a5dc108a13293bc
(cherry picked from commit 72816060abdd9848ced927c7d77ffc6c477f8a05)
2025-09-17 11:34:43 +08:00
xin.zhang
1308559993 FIX: call layout
jira: [STUDIO-10411]
Change-Id: I91027ad47ff83315f0143f1737a7342d6ed30746
(cherry picked from commit eba2d94a53befa79b4c980cfa83e896c58a1f486)
2025-09-17 11:34:27 +08:00
xin.zhang
155d42bb0e FIX: update hms files
jira: [none]
Change-Id: I57633250f1abe12c6a8e0b647965eacce94ddec3
(cherry picked from commit 5b4dcfdaa7369d3ff22eabb9fb81e7ac551686f1)
2025-09-17 11:34:21 +08:00
xin.zhang
82480436e2 FIX: the humidity display
jira: [STUDIO-10481]
Change-Id: Ib4bec6db6afbe40199c401c539b13a0e8459bbad
(cherry picked from commit 658a8ab7ef1d2149fee58b45ea9455bb188f82f0)
2025-09-17 11:34:02 +08:00
xin.zhang
c9d5a3b482 FIX: the name is too long
jira: [STUDIO-10376]
Change-Id: I93bcf0936122874dd5b4a2d57df690e78d09d517
(cherry picked from commit 1865dcd1b954e1a15109e7bb6e1eff14ef0fa2e1)
2025-09-17 11:24:28 +08:00
tao wang
18ffc5497b NEW:added inspection of pla-glow material
jira:[none]

Change-Id: I1a62992e24665b83f54981e59edc1ba1fcda9a8a
(cherry picked from commit fa2fc22f3e648c0f0f485d1a7e701658693da457)
2025-09-17 11:16:10 +08:00
lane.wei
72ac5dd093 FIX: gui: fix the filament select issue after sync ams
jira: STUDIO-10467
set the filament selected to visible if it is selected

Change-Id: I376101c7c01b2f6dd85e780abd3ad69c81bcc0d6
(cherry picked from commit b957d5111b28d3d028153f9314b5a53389ef95d8)
2025-09-17 11:13:36 +08:00
zhou.xu
9f6c75a2f1 ENH:Handling pages with failed matching
jira: none
Change-Id: I6193c7be08e73760d00120a87bde93503bf716fe
(cherry picked from commit 2ab417f331c89d3dfdba43768786102ab9498bce)
2025-09-17 11:13:23 +08:00
zhou.xu
617dc5d6e7 FIX:Avoid array out of bounds
jira: none
Change-Id: I1ef5921a11ec7f9e2fc40edad4e954474628f7b5
(cherry picked from commit 2ca82b096e67d380eb0b318bd6447ece63becded)
2025-09-17 11:13:18 +08:00
xun.zhang
c6b34b22dd ENH: remove bambu tpu 85a temperoraily
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ie45b497ad5a838a45e819467944775ffaaf955fa
(cherry picked from commit 853f899500f1fa103dfd3078bf42e656af7d1a57)
2025-09-17 11:13:11 +08:00
jiaxi.chen
0d62d88387 FIX: useless change of extruder
jira: none
Change-Id: I4331e129d5a1ed79b539946d84ccd3113df93ef0
(cherry picked from commit fe20ab11b970a066fdeb42486c4bb53a8a5172ba)
2025-09-17 11:07:30 +08:00
zhou.xu
94b44a0391 FIX:If the current preset cannot find PrinterModel, it will be found from the inherited parent preset
jira: STUDIO-10343
Change-Id: I4d3599ad4f7f4b21762cc0eee1174f6f05298e34
(cherry picked from commit 7dd4b1e9e148bb79d775c011f4a006dcee0e5369)
2025-09-17 11:02:33 +08:00
zhou.xu
ddfc8a6e31 FIX:Cancel incorrect references
jira: none
Change-Id: I3cd97f7521f6ac19158ddb9592758e39161fe6f8
(cherry picked from commit 3e55bddcee0c5c33511133571e51ea01c07118d3)
2025-09-17 11:02:28 +08:00
xun.zhang
022a67836d ENH: add profiles for TPU 85A and 90A
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ica88ced8d2e0dbb1bdff0d4b80863bd98102ff16
(cherry picked from commit 8d10dcd046ebcb4d78962d7796ebec0d58776bc0)
2025-09-17 11:02:20 +08:00
xin.zhang
b50df3588a FIX: add translation flag
jira: [STUDIO-9148]
Change-Id: Idd50664e0f9c55fe5e8d7e0a840948fd82dafc15
(cherry picked from commit b79f6243474e5d96cf51719001564d38abf0f5a7)
2025-09-17 11:01:19 +08:00
xin.zhang
f54f6e3b21 FIX: the dirty data of filament backup
jira: [STUDIO-8518]
Change-Id: I67f9d906177269b42d32047b31a0b36cfaf7ecf1
(cherry picked from commit 4de2ef356558540b5565d906cc4684e8ebbe4f1f)
2025-09-17 11:01:13 +08:00
xin.zhang
a05ebb3b7c FIX: the white AMS is not visible when the background is white
jira: [STUDIO-10093]
Change-Id: I80425d08c703388a75e39b9465371fe668517db8
(cherry picked from commit 4ed16b7a1e4610db1bb27b26676b94f13f05527c)
2025-09-17 11:01:07 +08:00
xin.zhang
691d357606 FIX: disable editing while sending print job
jira: [STUDIO-10362]
Change-Id: Ie017db650699c64b751430a2bac2f9680626a750
(cherry picked from commit 79d626271cd1c7448e2cba5351b28d75652a710d)
2025-09-17 10:56:24 +08:00
xin.zhang
cb909b9b56 FIX: prevent the dirty data
jira: [STUDIO-10413]
Change-Id: Ie7f65c1a49f12dc049bbec5697d037ad79dd7699
(cherry picked from commit 068ec1e63ffe1b3810059133670faa54cba98db8)
2025-09-17 10:56:03 +08:00
zhimin.zeng
9361303f17 FIX: fix error sync when switch third part preset
jira: STUDIO-10443
Change-Id: I5cf8c2af9945cf19a7bd2819379e4a782299343e
(cherry picked from commit 263180ddf06ecc879b77e3a57482082552c52da0)
2025-09-17 10:53:42 +08:00
zhimin.zeng
d375836781 FIX: the print_z is incorrect when use 0.8 nozzle printer
jira: none
Change-Id: Ie06c0e1b763be7178246e5dae101e650b8534f4b
(cherry picked from commit 3309a40d42726169d6ee952ff31063b654a6fbdf)
2025-09-17 10:53:34 +08:00
zhimin.zeng
b84cca503f FIX: the extruder id is incorrect when send cali
jira: none
Change-Id: I102061741458321de3ae571ce17430f7eabb3bb8
(cherry picked from commit 341d10931175e118cfc1bbd6fe65e4743c99149a)
2025-09-17 10:50:58 +08:00
zhou.xu
1e591ebd97 ENH:close paint gizmo and exit ""gap fill" function
jira: none
Change-Id: I88b87c594791890e87bb947fd9bed03a83eee20b
(cherry picked from commit 901791201f504c97a874dcb845f98ca4abe5404b)
2025-09-17 10:50:34 +08:00
zhou.xu
7b00b3ec54 FIX:use CenterOnScreen replace CenterOnParent
jira: STUDIO-10464
Change-Id: Id42393565c5ac9d95e8d7139d3209d0fdef215ed
(cherry picked from commit d244cfdae2cef9a6e4e73174fca96d7b719964b3)
2025-09-17 10:46:50 +08:00
zhou.xu
80f92e4640 ENH:add scroll for SyncAmsDialog
jira: none
Change-Id: Id1a6ea1107b8672182f86e16f2093b661d8f8966
(cherry picked from commit fceb5ec5aa0248787abc362bdb8f2bf2b9c135c0)
2025-09-17 10:44:26 +08:00
zhou.xu
fbafa7f23a FIX:gui crash:call dialog in CallAfter
jira: none
Change-Id: I46492c2c6da2e909019162af20b8cf80eb1cc301
(cherry picked from commit 6ee19c9b34517fc865f604c9fd96238a52d3b3bc)
2025-09-17 10:40:20 +08:00
xun.zhang
55b928694c ENH: protect build ams list
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I4e8665df0bb24f056f79bd5cabab886bb5ff7921
(cherry picked from commit 6d1b8f0324fd07319aa22fcdf25856531d687621)
2025-09-17 10:40:15 +08:00
lane.wei
4365f158d0 FIX: gui: fix a crash when sync ams
jira: no-jira
Change-Id: I3bafafdf47ba88b80500e756a1d60f0d83387bc5
(cherry picked from commit 23a0069a4d338b181dac4641082f5b8fa5a8b07d)
2025-09-17 10:40:10 +08:00
tao wang
e79244a08a FIX:macos does not close process dlg
jira:[none]

Change-Id: Ibb45a031e714641b3c8f51c150646f17b033b72f
(cherry picked from commit aced773cb3d4c94145792dbb60e9f1bc805662ae)
2025-09-17 10:40:02 +08:00
lane.wei
8456b8381b FIX: gui: fix a crash issue of ams sync
jira: no-jira
Change-Id: I1f33d20f11add12929eb6183387eaac8639698e8
(cherry picked from commit 8c4f2634c9514ceca279ab49f7ccde58e3b06a9a)
2025-09-17 10:39:57 +08:00
zhou.xu
4ce8403888 ENH:add log
jira: none
Change-Id: Ic7526b74cd3c0eb0060a138b43303cb49393c7ee
(cherry picked from commit 29b5c946b56356f4e868f1b1fa122f1240785403)
2025-09-17 10:39:52 +08:00
zhou.xu
42ed41a4e6 ENH:add "update_sync_ams_btn_enable" api
jira: none
Change-Id: I6380a4380bf402e3f0867faddf188f93658c2d68
(cherry picked from commit ac7d7726d66e77eeb1ac1755ff71652d12e1e2a2)
2025-09-17 10:31:49 +08:00
zhimin.zeng
af44f4736d FIX: remove not necessary assert
jira: none
Change-Id: I9878671ff2adf898c7ebfea1f3838205c8ad458b
(cherry picked from commit 43d15d97010ffc96b08d1cfdbbbe0d78d643eef0)
2025-09-17 10:28:18 +08:00
xun.zhang
58fda108a4 ENH: remove unused keys in profile
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ib54b300a3c10ec45acf4aa842c1162bad5bdb289
(cherry picked from commit ff37dbdf7969fc446ee2dec9db4f04983e62915c)
2025-09-17 10:28:04 +08:00
xin.zhang
fee142b820 FIX: update the nozzle diameter choices
jira: [STUDIO-10089]
Change-Id: I5ec9b35b121b2ec16b7798bf9328f046b7d7132c
(cherry picked from commit 799b896ed37af2f64dae8f43614c81416fdb850d)
2025-09-17 10:21:16 +08:00
xun.zhang
efdcf91d96 ENH: fix unable to load video
1. also  add protect for filament map read

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I321be9f49d7696d02ed7771852713c0cef5d5ebd
(cherry picked from commit 8b735631b1b068b87c46c32243d183e9aec41b60)
2025-09-17 10:21:16 +08:00
xin.zhang
ce8ca8f05e FIX: switch the image
jira: [STUDIO-10459]
Change-Id: Ibe33c0cdf208b898295dfcead8c45063c051860c
(cherry picked from commit 0ea2a8dabe35521146321da674b8afec3d3fffcf)
2025-09-17 10:21:16 +08:00
zhou.xu
45e21155d5 ENH:add log
jira: none
Change-Id: I95f709399f63a0d5093d4c6a3dd7bc8f5c4f04b0
(cherry picked from commit c6f7e2e9e029a51c82fecd379ad55ad5e676862c)
2025-09-17 10:21:16 +08:00
chunmao.guo
e746ef0451 FIX: StaticGroup constriant layout badge on macOS
Change-Id: Ia93c91b990ec3f5fef3eae57d48ca71b4a0841e6
Jira: STUDIO-10383
(cherry picked from commit 88521a06d12cd4ebbcb8e98d8c929e9815aa71de)
2025-09-17 10:21:16 +08:00
chunmao.guo
09df1248c0 FIX: diff preset crash with diff extruder count
Change-Id: Ifeb8f0aa1ff62aac663a6cc007da675af4d027fc
Jira: STUDIO-10458
(cherry picked from commit af880399a50da2ae881347461965ec3876b61d52)
2025-09-17 10:21:16 +08:00
lane.wei
22000cc7a4 FIX: CLI: fix the crash issue caused filament_id missing
jira: no-jira
Change-Id: I6256a846cf30f304deda32f61ed5329aacdb5f73
(cherry picked from commit d14e3f42a0a16951651a47d49e05e509ee4696c0)
2025-09-17 10:21:15 +08:00
zhimin.zeng
71e5afc029 FIX: crash when delete filament with only one object
jira: none
Change-Id: Ib6761c0046f1e24de889816bbefa6bff3616f63d
(cherry picked from commit d77c0abd34e3f59a75bb50a3fa50cbda096484ea)
2025-09-17 10:21:15 +08:00
zhou.xu
0c83bebe92 FIX:reinit m_ams_combo_info
jira: STUDIO-10445
Change-Id: Ib073a4fb14c41f20edd5d66e34331070480eaf05
(cherry picked from commit 3af1dee32b168fe2f0031714d56e9e1e6bdffba1)
2025-09-17 10:21:15 +08:00
xun.zhang
6e7cb1b223 FIX: exist 0 in filament map
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ieb592105036e78c6ce7a246da41c2575b8236a81
(cherry picked from commit bb277efd5aa88bfd636aa3ca87bc937fbd99704f)
2025-09-17 10:21:15 +08:00
zhou.xu
4e72c8ecc1 FIX:Fix crash of array bounds
jira: STUDIO-10455
Change-Id: I4267c30bd8cda01cba031ad980db03bc03f8f862
(cherry picked from commit 7b9c2ebb094b687167a6878f8041ab0d5d5be974)
2025-09-17 10:21:15 +08:00
zhou.xu
b3381b6e40 ENH:add log
jira: STUDIO-10445
Change-Id: If1c2b41b0f93a2f1f8bde4b3aa543a9ddeaccc08
(cherry picked from commit 4166a156ea2530d3ba348c579d188c9231fb81d9)
2025-09-17 10:21:15 +08:00
tao wang
911d6ecb14 ENH:Optimize dark mode
jira:[none]

Change-Id: I7d122a7148b9288bda2f6e651b05826756050311
(cherry picked from commit ea1d7c8105eafa1be3cafbd89dc107b9c40d7c9a)
2025-09-17 10:21:15 +08:00
zhou.xu
a83569d82a FIX:Use wxEVT_COMMAND_BUTTON_CLICKED to replace wxEVT_LEFT_DOWN
jira: none
Change-Id: Id839e22d7625031635e974e440e3400f0a4003e0
(cherry picked from commit d570691c1da2d3d3c3779cd628544c61829b7209)
2025-09-17 10:21:15 +08:00
zhimin.zeng
34b5b96400 FIX: fix the error slice status
when filament printable check is not valid
jira: none

Change-Id: I6d98e3aa27b063d2e7431f7aa5637348978331f2
(cherry picked from commit b0a8dd1014d3184be8ef9f2a4e9bd304cf4bdea3)
2025-09-17 10:21:15 +08:00
xun.zhang
137fffa857 ENH: update translations
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I0a7f24dd1538f4baf1b2b56f35233de5937a6d30
(cherry picked from commit 4747cbc53a5e5e8457f03914755d192421ea1d57)
2025-09-17 10:21:15 +08:00
zhou.xu
c9f7aa1ee0 FIX:update "is_nozzle_type_match" api from SelectMachineDialog
jira: none
Change-Id: Ib767c4e64089296336a8c1e53634ef166853930e
(cherry picked from commit 93862fd666a3c1435ca36e5dba55554c28609d3b)
2025-09-17 10:21:15 +08:00
Arthur
7a0f07c424 FIX: auto arranging crash due to wrong extruder_ids
jira: STUDIO-10449
Change-Id: Ia4614a67843c714c46e5fbf7c888a1ac45ef378d
(cherry picked from commit ef8e81c04aded239264a88f67ca3517be432775a)
2025-09-17 10:21:15 +08:00
zhou.xu
268cc08ea1 FIX:reinit m_generate_fix_sizer_ams_mapping
jira: STUDIO-10445
Change-Id: I6eb04f87ba37e09a1be33281cfcd8d8c8da8de51
(cherry picked from commit aeb3d20ad86434192617c6a36583915f6236b0af)
2025-09-17 10:21:15 +08:00
xun.zhang
7779a2aaa9 ENH: modify filament config for petg hf and pla basic
jira: None

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I46528a07a9e1d3f7422106636b405022811d78e6
(cherry picked from commit fe9073696da03ed8c9fae2ab24d579477cea0e3d)
2025-09-17 10:21:15 +08:00
xun.zhang
acbea85829 FIX: add some missing translate keys
1. Add missing translation keys
2. Fix filament map dialog can't display in auto mode

JIRA:STUDIO-10216

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I0c3927877dd91befc2463a300324bc6823615673
(cherry picked from commit 3733f33953fa89b490be0d2f36e225fa62dcbc00)
2025-09-17 10:21:15 +08:00
zhou.xu
296a8bc474 ENH:Add numerical display in AMS control
jira: STUDIO-10432
Change-Id: I504e38612b09513247462974b4d34b331a5d3240
(cherry picked from commit 3f51f72a66b8b88744512c4a7aa2069116572a76)
2025-09-17 10:07:58 +08:00
xin.zhang
d5661a89e6 FIX: update the ext images
jira: [none]
Change-Id: I3138fcfa124127672da982fb6e761492ccd98ea6
(cherry picked from commit 0deb17f43e18bb06be9d294f805cf1d865c7f707)
2025-09-17 10:07:53 +08:00
zhimin.zeng
37013aa25b FIX: modify quick extrude to 1 perimeter width
jira: none
Change-Id: Ibda111742af2d664088a51e9dd3740f81b4649c7
(cherry picked from commit 9fccb9bcde5332bafcb50f5fbb77212caac19131)
2025-09-17 10:07:49 +08:00
jiangkai.zhao
e236b6aafe FIX:Change the sorting method of the wall filament
and fix wipe_tower's interface bug
jira: none

Change-Id: I3887142bac2d43a4d2b6db65b5a3976bb271cf71
(cherry picked from commit 58891ce3102649e090499cff09d0c6443d6a6658)
2025-09-17 10:07:44 +08:00
zhimin.zeng
a0b5cdfbb2 ENH: generate framework for all layers
jira: none
Change-Id: I95f35ba45fe9f544c53bdf0c5a52a70bd45ee7a9
(cherry picked from commit 3e0b6eb2289eab383c6e616d37559b0c6619eca1)
2025-09-17 10:07:27 +08:00
zhou.xu
d27c59c705 FIX:modify ToolTip for MaterialSyncItem
jira: none
Change-Id: Ia9e3066f6b0b8300641ce1773a74053a675b7e83
(cherry picked from commit 8d9b589b35fa7175e2edef183ce2ce2c83289fcf)
2025-09-17 10:05:03 +08:00
chunmao.guo
7924f92fe1 FIX: extruder ams info sync
Change-Id: I78a731a84100031aed01a381593d608cef61d24a
Jira: none
(cherry picked from commit 705e1ff0a2a8d02ecc13d2dbe06a9f58837f3d54)
2025-09-17 10:04:58 +08:00
xin.zhang
797c2cca4a FIX: update HMS
jira: [none]
Change-Id: If64f38fe2d8bad68799f251d0045ede52098693d
(cherry picked from commit 970d176cf7666770abc77c3dbd48f4b2c788e8d8)
2025-09-17 10:04:51 +08:00
zhimin.zeng
5b589b47f1 FIX: fix error length for nozzle change
jira: none
Change-Id: I1c9052cadef717888c5f8ff50e0d6e1efce6d73e
(cherry picked from commit d0d5ed2f5ef69b9f5155ec64c7c0a73cfa90483e)
2025-09-17 10:04:30 +08:00
xin.zhang
23a52305dc FIX: the AMS shown fault because of dirty data
jira: [none]
Change-Id: I82c627e351c996b2c3c352220a2b0a837c205c39
(cherry picked from commit 888687de8283c167a19a9bfaee1654e455148264)
2025-09-17 10:04:05 +08:00
zhimin.zeng
f92e13bc44 FIX: H2D only displays supported heated beds on cali page
jira: STUDIO-10287  STUDIO-10433
Change-Id: Ief38584243a0ee836f9ba4541d2bb9eaa6343c1c
(cherry picked from commit 6a7d281d0df32d4232ba4da7260a696dc4a84594)
2025-09-17 10:03:44 +08:00
zhou.xu
cbfa3fcdf2 FIX:reset direct_sync when init SyncAms dialog
jira: none
Change-Id: I38aa498a69dd60da2f7485da37e2f09f78694c1c
(cherry picked from commit 22d2db008b0700e614feae74473191e613dfa832)
2025-09-17 10:03:11 +08:00
xin.zhang
360eb8e190 FIX: fix the APPLE macro
jira: [none]
Change-Id: Ibcdccbf987776f691bdae8a1ae14e817ccbd90dd
(cherry picked from commit a8b7870fe2088138c3c28e2336f58c03e09e54ad)
2025-09-17 09:56:58 +08:00
salt.wei
650c82132d ENH: change translation
Signed-off-by: salt.wei <salt.wei@bambulab.com>
Change-Id: Ie8c1508539dd18556a659f88302db744e8b3a4f8
(cherry picked from commit a04aec1db27f07022366a03543e1206910a536d1)
2025-09-17 09:49:12 +08:00
zhimin.zeng
27ed7a74d6 FIX: the k value of slot is set to default value
when enter "merge result" in cali page
jira: STUDIO-10409

Change-Id: I03c49306342cda9b9c305b188201ec6f5b6ab1f1
(cherry picked from commit 75ab432b124dad3a3d66e3a6a069c8543cf8e0b6)
2025-09-17 09:48:57 +08:00
jiangkai.zhao
283dbe48b2 ENH: Set the skeleton of contact surface to solid
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)
2025-09-17 09:48:52 +08:00
jiangkai.zhao
38ec6429a3 ENH: change solid layer count
and reduce the toolchange speed if it occurs at the contact surface
jira: none

Change-Id: Ic238671366145bc7bff76d18d20c104a201a1f17
(cherry picked from commit fb9f9f41e618c5064032b85351363029307e209c)
2025-09-17 09:48:46 +08:00
zhou.xu
b683661a45 ENH:Optimize interface display in "sync ams" dialog
jira: none
Change-Id: I51e8a55491112653e8e55eed0d6c93c6a37dcbe0
(cherry picked from commit a7ad6dfac4fdd013193680a728a90775e6bdf7a3)
2025-09-17 09:48:41 +08:00
xin.zhang
1fdc6e5dac FIX: prevent the dialog in macOS
jira: [STUDIO-10386]
Change-Id: I19c5df3c2c110979d57190c9219f76f6f6911f85
(cherry picked from commit d4d4b76ce54b030de255d7382a831674b8c79817)
2025-09-17 09:48:33 +08:00
xun.zhang
4024060b81 ENH: some post change for slice all group logic
jira:none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I03d5ef5c389dcbe2ca838c0b4875e214b5591430
(cherry picked from commit d9f919fe57b155ea866feccb25427296966fb3d4)
2025-09-17 09:48:20 +08:00
xin.zhang
a42a87ed1c FIX: update some translation
jira: [none]
Change-Id: I76afc7adb4f882bcd64c266cb10160333ce439d6
(cherry picked from commit 45d2d3fc9b0e97947be74874255b5be3c1c77f68)
2025-09-17 09:47:34 +08:00
lane.wei
b08fe2cf0c ENH: config: allow invisible preset to be selected
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)
2025-09-17 09:47:00 +08:00
xun.zhang
0ecb7eb48a ENH: update translations
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I4b7f1518a4805c5c5debdc6ad5b059b75effe4ce
(cherry picked from commit 547cfe75d0f312d077e183650b0aca2ebf395d3d)
2025-09-17 09:46:38 +08:00
xun.zhang
68fc82097c FIX: h2d do not support timelapse in sprial mode
jira:STUDIO-10402

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I5d012a4665bf5715d90fcb973a589d3a500ded13
(cherry picked from commit 82d13205d574039c9478a92114c07a505c26773d)
2025-09-17 09:46:18 +08:00
xun.zhang
229ef8884f ENH: enhance filament group alogrithm
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)
2025-09-17 09:46:04 +08:00
xun.zhang
1384226447 ENH: refine logic with filament group
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)
2025-09-17 09:45:59 +08:00
zhimin.zeng
c617a6427e FIX: fix wrong retract when change filament
jira: none
Change-Id: I6bf6d4620234d9c7b5246126bfdcdf8b5e1944e3
(cherry picked from commit 0381d5827c031a3e5486d28cd734794485f4ecf0)
2025-09-17 09:37:08 +08:00
zhou.xu
ab3f0336e2 FIX:update dialog position when mainframe position changed
jira: STUDIO-10397
Change-Id: I86cb4698518119903dd7fa3f7c2ad1945804f533
(cherry picked from commit 2e0a9536105867bbd5b95f0a9596fd79733bd5e6)
2025-09-17 09:31:41 +08:00
jiangkai.zhao
9ad372f3f5 ENH: add solid infill before nozzlechange
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)
2025-09-17 09:30:48 +08:00
jiangkai.zhao
ffdce0671c Fix: error wipe when no finish_block_tcr
jira: none

Change-Id: I0890089661a719f728c5fbc5254cf53f047d7248
(cherry picked from commit 7d48561817647e7ee111ce5c40063159c4baee03)
2025-09-17 09:30:43 +08:00
zhimin.zeng
4b7514fc97 FIX: error travel when start print TPU
jira: none
Change-Id: I0ccabf460afca03662249c97d6f2e01e05120509
(cherry picked from commit fde94de17b80333167463b542a81f71de5226613)
2025-09-17 09:30:38 +08:00
zhimin.zeng
01977d7d46 FIX: fix the printer drop-down list stuck problem
jira: none
Change-Id: I69927a3dc1c2e2f562cbfc47bc5fcf99d0833cdb
(cherry picked from commit b549be31804343dd2bc40dec38e58317e721fcf0)
2025-09-17 09:30:32 +08:00
xin.zhang
00181ad03e FIX: update some text
jira: [STUDIO-10352]
Change-Id: I33b02a811970002b5f05ee2e519eb722b19e7051
(cherry picked from commit 16729c9283f5adfc4100c8dc3db68f2bcb968670)
2025-09-17 09:30:07 +08:00
zhou.xu
5f93b01ef3 FIX:add "check_empty_project" api
jira: none
Change-Id: Ic0b0b558c8786749b1ac036b87dc08519002b17f
(cherry picked from commit 93d0c59ed0692b7cfa3a7684e5d18f3157d6f0e7)
2025-09-17 09:29:59 +08:00
xin.zhang
b368483aaa FIX: champer_switch_head_dlg->ShowModal() may wake up another wxCUSTOMEVT_SET_TEMP_FINISH, break the chain
jira: [STUDIO-10386]
Change-Id: I2debe9eebf455e4adbe9161945ce84508f594f9d
(cherry picked from commit 26881072a44d755335931a3f800bc7548744acc5)
2025-09-17 09:29:40 +08:00
Mack
f17f0a6e22 Fix:icon center
jira: STUDIO-10393
Change-Id: Iec33b3e689b8bbf4749ead21f830ba7b6521ee2e
(cherry picked from commit 3fb7d857d5694022fafcc854f5c5b3873afb37f6)
2025-09-17 09:29:33 +08:00
chunmao.guo
d9df920c23 FIX: reduce ams update
Change-Id: I6a3c34580df77135c3b56e9273edc7643d58eec3
Jira: STUDIO-10383
(cherry picked from commit c52e54e58a1250e7b0701a29771b130e7d5dc8b0)
2025-09-17 09:28:03 +08:00
qing.zhang
348f59ac67 ENH: update H2D filament retraction of matte
Jira: 9900

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I9e8f962796b7301fff7c8ae4e74db548771bd14e
(cherry picked from commit 09c0b004cd4c0b3c97c550c4e5f9704c1d118020)
2025-09-17 09:27:38 +08:00
zhou.xu
25a195d1f4 ENH:Fix the issues discovered in the demo
jira: STUDIO-10384 STUDIO-10385 STUDIO-10387
Change-Id: I68f3099b9fbb6d6996373cae07b2e62930ce614c
(cherry picked from commit 91df890100199a3e26ef3792a1f8650d2dab8577)
2025-09-17 09:08:48 +08:00
xin.zhang
b8220bb81f FIX: update the filament name
jira: [STUDIO-10348]
Change-Id: Id2762188eaf84ad7534a3d6063e0df8c000dd817
(cherry picked from commit d30ca5baa0f8caab10d4702347907e9fe5274eb2)
2025-09-17 09:07:34 +08:00
xun.zhang
686825b584 FIX: missing gcode line caused by gcode GCodeEditor
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)
2025-09-17 09:07:07 +08:00
zhou.xu
81d62df2c7 FIX:Display the interface then create big_bed_image_popup
jira: none
Change-Id: I020b72b71283a6873dcc2b4cd6fcf9ae98c6d0a4
(cherry picked from commit 4d934184e3bca25fccdba498800d2720d0eba67d)
2025-09-17 09:04:54 +08:00
zhimin.zeng
fab93abdca FIX: the color of volume is incorrect when merging filament
jira: none
Change-Id: I13a9d02b1c8ee57e689ce6477b7aebb86c5f7673
(cherry picked from commit 65267b98666567e8ca6d9a76e73500083b7cb6a0)
2025-09-17 09:03:58 +08:00
zhimin.zeng
9bb3532743 FIX: fix some wipe tower issue
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)
2025-09-16 23:40:53 +08:00
zhou.xu
f384944a42 FIX:Unmatched color use original color
jira: STUDIO-10361
Change-Id: I7b19a56c3bbe06ce6a8ef783a824251700c9924c
(cherry picked from commit be4585ed9853495419356b06a852aa447a1b7f2b)
2025-09-16 23:40:10 +08:00
Mack
7d72743d1e ENH:change other filament icon
jira: STUDIO-10344
Change-Id: I008f2cd1aace5ee4c4d65ffc8b53c4d5bd866bc9
(cherry picked from commit fa59afd9f888905e5674a8ba359223cfea20e009)
2025-09-16 23:40:05 +08:00
zhimin.zeng
a13ff362a2 FIX: slice error when switching printer
from mulit-extruder to single-extruder
jira: none

Change-Id: I0fc00a279dbc7f5d6b1fb6df5556375bfb95782e
(cherry picked from commit 01075411dc81c8d7c34551525f93fecd8829a3c5)
2025-09-16 23:39:57 +08:00
xun.zhang
58c877976d FIX: some filament group issues
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)
2025-09-16 23:27:32 +08:00
Mack
2db3c63b7b ENH:change filament icon to rect
jira: STUDIO-10344
Change-Id: Ie71f83b7c78b4784e1824c52e61485e8f4d36e1e
(cherry picked from commit 964a6c8320928278251e857283810dfd7a309618)
2025-09-16 23:01:55 +08:00
tao wang
91176fb7fb ENH:add protection for ams_id&slot_id formatting
jira:[STUDIO-10335]

Change-Id: Icc9ab0ce07860920378c286d725c32d451d17555
(cherry picked from commit 3e66c96d125590e1b8a35d0ee41732584af24253)
2025-09-16 23:01:20 +08:00
xin.zhang
6a7b6f2094 FIX: add compatible codes by xun.zhang
jira: [none]
Change-Id: Ice769643fb8109b60e2f5323286c61bf9c934db1
(cherry picked from commit e88042bb96e3e851e4707092906d166785e08c34)
2025-09-16 23:01:14 +08:00
xin.zhang
696485fe2b FIX: the print task image is not refreshed
jira: [STUDIO-10329]
Change-Id: I44a55c1259ba35805569622f4f45aa4f2b64f16d
(cherry picked from commit 4621bcbe548069cb3c4bcf45d52484faa03d0d18)
2025-09-16 23:00:30 +08:00
xin.zhang
eee420027e FIX: the AMS refresh does not show AMS_TEXT
jira: [STUDIO-10322]
Change-Id: Ib17031b9b1eae07deabd418ec1211c465d4ab03d
(cherry picked from commit 51feb5f544d0cbbaa76b3c4db0e77a717a98c0e8)
2025-09-16 23:00:24 +08:00
xin.zhang
5506488954 FIX: update some translation
jira: [none]
Change-Id: I8143271471dc4a535fa210549dca5c21a6798038
(cherry picked from commit 0a5989f56cc3e435fb89d17da3951b4100e0e319)
2025-09-16 23:00:09 +08:00
zhou.xu
0e5066c76c FIX:modify warning code location
jira: STUDIO-10333
Change-Id: Ifd429d04c35e85148f7b649c514b3aaa235ee5d6
(cherry picked from commit f5534db6b845884463030e89918fcf96d8952c19)
2025-09-16 22:59:51 +08:00
xin.zhang
ff4027a7ae FIX: accessing wild pointer of HMSNotifyItem
jira: [STUDIO-10270]
Change-Id: I942876148dac93f3a03df3311048e7e4c38ec277
(cherry picked from commit 1eb7b02b0679c03e8fa535ddf0671af1f9b971d7)
2025-09-16 22:59:45 +08:00
xin.zhang
8d354aef55 FIX: the ts bitmap is oversize, fix it
jira: [STUDIO-10284]
Change-Id: I1bb3c3b29b0ad724ec39a4b1a1b5ca1034588fe0
(cherry picked from commit c13bea9b17cb50b1a69d047a6b397062b6ee70ee)
2025-09-16 22:59:37 +08:00
zhou.xu
87f540b1e5 ENH:show big bed image
jira: none
Change-Id: Iaf3529345f688f2dbdc35c16f45253a5b65feb84
(cherry picked from commit 5e2861acca8d86d6e7012f73d3f739877eb05069)
2025-09-16 22:59:32 +08:00
zhou.xu
ec8bcc22d3 ENH:translate text
jira: none
Change-Id: I49ceba7546b6c5e32efd8cc040b090b63f076886
(cherry picked from commit d2d620f87c3bb24c44e6e797418d4219656370eb)
2025-09-16 22:58:59 +08:00
xin.zhang
7b4ec54afa FIX: modify the nozzle temp control location
jira: [STUDIO-10303]
Change-Id: I8147d3331b3073e7e30881c4eab95609303eb01b
(cherry picked from commit 83b98fbfe7b4565d1433bad2e147c852708389b3)
2025-09-16 22:58:01 +08:00
xin.zhang
960d676043 FIX: the AMS EXT image fault
jira: [STUDIO-10044]
Change-Id: I71d142cd763deff33f1c42047b5ae6ac81574b3f
(cherry picked from commit d50fc6a0ce421afaba93d7a67d89aebeeab1f7bf)
2025-09-16 22:57:56 +08:00
xin.zhang
d999107d49 FIX: the dark mode n3s SVG center is not empty, which will cover the AMS color
jira: [STUDIO-10308]
Change-Id: I67c5bdb753abfe9fa233e427a7b518c2fad4fd01
(cherry picked from commit 0730c4ec51e859f5ba7474c64edfaac657dc69de)
2025-09-16 22:57:47 +08:00
zhou.xu
f3bf34ed0c ENH:add "is_filament_installed" in MachineObject
jira: none
Change-Id: Ifd71947a742c1ed37fa22bbf0bb2cd538ff47268
(cherry picked from commit 21d1159cd54259fb53c005bbc1cb66b6b3b40c97)
2025-09-16 22:55:49 +08:00
Noisyfox
860ea61420 Fix crash when selecting Textured Cool Plate 2025-09-16 22:54:56 +08:00
xin.zhang
b3ca79146b FIX: complete the AMS fresh while state changed
jira: [STUDIO-10305]
Change-Id: Ie6cbc359bdf9fe02f103f58e25f490105faaf381
(cherry picked from commit 9d7c9c54fc47d6e9000d2570fd391a9823e8b33e)
2025-09-16 22:33:31 +08:00
jiangkai.zhao
13c3c32237 Fix: the width is not effective
after enabling the ribbed outer wall

jira: STUDIO-10294
Change-Id: I08bd00c3c3ef643f4226ce0b882cd62ff680ae65
(cherry picked from commit cfeb574422741bbe48747aa7305fea2a13b6d834)
2025-09-16 22:25:28 +08:00
jiangkai.zhao
d463858fda ENH: Change the collision calculation
of the wipe tower's outer wall to use the actual outer wall path.

jira: none
Change-Id: Ib45ecbc328c88c1abe6d9e8567f715331a3ddd37
(cherry picked from commit 0a20f1fe6d6d63cdcb13bc19fd9ae553f45b6f59)
2025-09-16 22:20:14 +08:00
zhimin.zeng
f133dd1733 FIX: fix the display of N3S
jira: STUDIO-10291 & STUDIO-10285
Change-Id: I10c1d3d210a875b75bb31ed33f8db451bdadb5e7
(cherry picked from commit edb9583f76a3214807bf796f793a8c03c732770e)
2025-09-16 22:18:27 +08:00
zhimin.zeng
f8ac3a6eaf FIX: modify the name for filament ramming length
jira: none
Change-Id: I3533c86ad7901282866074a7a8e4909c360055a6
(cherry picked from commit 31b8eae04491240f1aa96f84365efa392be1fc4a)
2025-09-16 22:17:48 +08:00
xun.zhang
3bbd2e7dc6 FIX: do not hover if slice option pop up
jira:STUDIO-10275

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ia599ce164d6f8a178b7154d20b49014f67bdbde9
(cherry picked from commit 3133b2a52fc47181b39e75325d1f99a6afb230fb)
2025-09-16 22:16:44 +08:00
xun.zhang
ab42d424a9 FIX: support filament display in group result
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)
2025-09-16 22:08:07 +08:00
tao wang
074a9c1bba ENH:update options ui when printer does not match
jira:[STUDIO-9973]

Change-Id: Icca959d732f98e34b0a83fc2971c70b64d393d75
(cherry picked from commit e7454fa47d09c529db3262faf19e2e2f22bdb5d7)
2025-09-16 22:07:26 +08:00
qing.zhang
01c2a31ac9 ENH: change param name
Jira: none

change filament category to filament adhesiveness category

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I267d71b2f968becf4e8f434daafdf1a70c36a823
(cherry picked from commit faec4160d560d965978447eaa8675a5fbee4090c)
2025-09-16 21:56:37 +08:00
tao wang
cef38a26ca ENH:optimized mapping rule for printing from SD card
Change-Id: I435f518bb303c9592fde5c16eca6aa0d27211725
(cherry picked from commit cca59b8e52d9c0c0e96b4f7c302bab9b63ddbfc5)
2025-09-16 21:54:57 +08:00
tao wang
b1d020b5e8 ENH:disable printing when mapping is invalid
jira:[STUDIO-10250]

Change-Id: Ie14e601db9c844e7b23fd0f1e1fd688c03999144
(cherry picked from commit 2c433396fabd6239e9fbe6053f4b2fcd79a0d241)
2025-09-16 21:54:52 +08:00
xin.zhang
6d04854a98 FIX: add images for filament load steps
jira: [STUDIO-9850]
Change-Id: Ie3f3dfbda3d7bc2e1e8c8bab4c9a5f2168536e53
(cherry picked from commit 89efa6cb272e11a0ee79f9713b537ff68009e44f)
2025-09-16 21:48:30 +08:00
xin.zhang
0e1a930e10 FIX: the current temp has been set twice
jira: [none]
Change-Id: I46f313e8f3bee49be708feb4dc6475a60ab1cea6
(cherry picked from commit 091430018192e530dbfe52677383b90ece167dc6)
2025-09-16 21:48:10 +08:00
xin.zhang
078fa9d220 FIX: update some printer define
jira: [STUDIO-9850]
Change-Id: I5dfd8b7711ec3db96b7fba75a9a97bd4852db63c
(cherry picked from commit 6be2379a044e51e9a18075944e24459d6d0311b7)
2025-09-16 21:47:15 +08:00
chunmao.guo
d8becfc9da FIX: TabCtrl padding & printer bed help icon
Change-Id: I451e93cb83a4ace4c1cec1ae275430a3971d9793
Jira: none
(cherry picked from commit e5d4915518574280ad7a3f0bddd56c6c59f7f3aa)
2025-09-16 21:44:47 +08:00
chunmao.guo
e691ddca38 ENH: StaticGroup badge on macOS
Change-Id: Id446e12aec7780f46c341083a7ad8c81ccf4a4f0
Jira: STUDIO-10055
(cherry picked from commit 5e6eacccf142c38cfdb8bb21e347f6801717897e)
2025-09-16 21:44:02 +08:00
Mack
0581ddd0ba Fix:filament svg icon error
jira: STUDIO-10223
Change-Id: I93f805cfa7780e666b4e2f2430c4fcdfa3de0c8a
(cherry picked from commit e288462439ddf34db0bf10b55970d07ded662ccb)
2025-09-16 21:43:53 +08:00
zhimin.zeng
013d83b62a FIX: crash when switching preset from H2D to A1
jira: STUDIO-10252
Change-Id: I3c9e2b334a4cae3fee5a21d9af24e606f1b44d18
(cherry picked from commit 8a84222be083f80180cb4c14c6925a273dce5741)
2025-09-16 21:43:45 +08:00
jiangkai.zhao
9e29f2db0b ENH: add wipe_tower infll gap
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)
2025-09-16 21:34:10 +08:00
zhimin.zeng
1364a38504 FIX: fix some size error on dpi changed
jira: TUDIO-10053
Change-Id: Icd93aa0dd9a2c693d7b957f9ede5c6dafc415352
(cherry picked from commit ce65273dc0fc9bc3f23dc54b01e4dcc92d92483c)
2025-09-16 21:21:40 +08:00
xin.zhang
6c8c4ab3dc FIX: remove some unnecessary refresh to reduce page faults
jira: [none]
Change-Id: If4dae82f7aae243db033fe9c8d4d1ab25f625557
(cherry picked from commit b1fa2421c0425ad077b899e1d793cde219826042)
2025-09-16 21:21:40 +08:00
xin.zhang
319e93ba4d FIX: try to reduce page fault while idling
jira: [none]
Change-Id: I563cbf4a8ba8a4ae1e5b1b1f735753d3aef23e16
(cherry picked from commit ed1e9678c351dc037f2e3cc7ea0e19d46731699c)
2025-09-16 21:21:40 +08:00
xun.zhang
ad740bde86 ENH: add more process profile for H2D
jira:none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ia0b3534e6e00d7f231cf759b0045473a3fb66526
(cherry picked from commit e2f25326c1c3cac8241773c94f4cc5b128d68cdb)
2025-09-16 21:21:39 +08:00
zhou.xu
cf9e784893 ENH:add "nozzle_has_ams_then_ignore_ext" deal
jira: STUDIO-10245
Change-Id: I77e49dcbdfc3acd9473ca3885c6cc7eebdd0d3fa
(cherry picked from commit 288b1eddc5e3c8e16d8b76d4360f0be40329646c)
2025-09-16 21:21:39 +08:00
xun.zhang
ae4842c262 FIX: wrong group result in some cases
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)
2025-09-16 21:21:39 +08:00
xun.zhang
75a98050a0 ENH: pva filament should use normal support type
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)
2025-09-16 21:21:35 +08:00
tao wang
2209f030ef FIX:optimize the layout of error messages
jira:[none]

Change-Id: I06ee3399b15ca78257e92af4e9ea0be69ffd1b4e
(cherry picked from commit 5860af44013af48b0f58a06a0258bf1d2b3957bd)
2025-09-16 20:11:02 +08:00
tao wang
4a0a4913f4 FIX:fixed the issue of macOS crashing when closing windows
jira:[none]

Change-Id: I716734c17c67a7022d9a78889bfdff1eaf54bbec
(cherry picked from commit 9274e75b3e252066612c000d905d2dc99f57b176)
2025-09-16 20:10:55 +08:00
xin.zhang
744d991ae8 FIX: update some hms files
jira: [none]
Change-Id: I419d389fe74038919ca4e17d407e404636062b76
(cherry picked from commit 075d04ad4a16bdc56f085831f0971bbaf988e0a6)
2025-09-16 20:10:46 +08:00
zhou.xu
9c10278fe8 FIX:The extruder index defaults from 1
jira: github 5916
Change-Id: Icae2c4c272b80de8055cc3aeb91584df621fc436
(cherry picked from commit 0b24359f5953ed734e6f6eea61a42b67d02af82e)
2025-09-16 20:10:39 +08:00
zhou.xu
c1f5884683 ENH:reopen "enable_merge_color_by_sync_ams" option
jira: STUDIO-10227
Change-Id: If6e070f4daf1f96ec667f65ce4872bd942d866ab
(cherry picked from commit 068f1d1256febed272c7debfef76c1577c2ef6c7)
2025-09-16 20:09:17 +08:00
chunmao.guo
e546a9188e ENH: Synchronize the modification of parameters to another extruder.
Change-Id: Ieac8dce3f4edec310a51d8e3af90df81a2abcbdb
Jira: none
(cherry picked from commit a1491f432ea617d799e5dd5a135b39da45aeeca9)
2025-09-16 20:06:34 +08:00
zhimin.zeng
5458e0ea6c ENH: Add parameters for extruder page of printer preset
jira: none
Change-Id: I8eb37e41bdc4b2b1f2328acee324c6fad30e391c
(cherry picked from commit d0f89eb8628b4225fc2c6a7b9f2a2eb49bb4f05a)
2025-09-16 19:38:42 +08:00
jiangkai.zhao
595d67761e ENH: add lift after printing the wipe_tower
and reduce the travel speed inside the wipe_tower
jira: none

Change-Id: I3b07ee62623e0cdc2f1824f0011f95776020bee1
(cherry picked from commit 1aad582e08229fad1f935e257c1335dcfdbe406c)
2025-09-16 17:39:16 +08:00
jiangkai.zhao
69d85d0045 ENH: add flat ironing before toolchange
jira: none
Change-Id: Iabe121f9523b662fc90c18365aa642583635a126
(cherry picked from commit 1b467b13c4bbac7d6afd361fee75ccc52eddef9a)
2025-09-16 17:39:10 +08:00
xun.zhang
1db0f6d663 ENH: update timelapse for X,P
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I32c8288511da98cc1806697673b476b17556164c
(cherry picked from commit f2d9902ff3a79ab5729689bd8361d14f7af59a84)
2025-09-16 17:30:05 +08:00
xun.zhang
1275341149 ENH: add timelapse for A series
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I9028d7117d1d184a8f7baad0b0ae4492a35481f4
(cherry picked from commit 1c8da5f99cebf5e647ed8d65c93b6893b8342cbe)
2025-09-16 17:29:09 +08:00
zhimin.zeng
9055fc090c FIX: 1.The gcode started by a space cannot be matched
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)
2025-09-16 17:28:45 +08:00
zhimin.zeng
f7cd6bb2d7 FIX: Duplicate traditional timelapse warnings
jira: STUDIO-10188
Change-Id: Ib391fc3b40dcf27d9c722fce2bae803dbc7fd5c9
(cherry picked from commit 05c3616b0de74dcb97b72fefd393d52c4c5421a8)
2025-09-16 17:24:15 +08:00
jiangkai.zhao
a753dd9200 ENH:modify interface of wipe tower brim_width
jira: none
Change-Id: I22e3c30aa6320e7e66316fa15b6c06e26e458a94
(cherry picked from commit 74a4b1bd49a2d1719c96a73cc054943d1fd4d4a2)
2025-09-16 17:24:06 +08:00
jiangkai.zhao
715a8a8518 FIX: FIX: fix width error of rib wall
when enable timelapse_print without toolchange;

jira: none
Change-Id: I4c89acc70ee122c0ad504d97c003ebb4016567d1
(cherry picked from commit 6350ebf9b651a933ab8a9030da9cdf9b1608cff0)
2025-09-16 17:23:36 +08:00
jiangkai.zhao
87bb315773 FIX: fix error path in wipe_tower
jira: none
Change-Id: Ia13ae92c61de0d5a361e7d00ec85ff21a04dfc6c
(cherry picked from commit 8ce8c3ffbb01d29e8a6062d344f3382c7aa886c0)
2025-09-16 17:23:30 +08:00
tao wang
2665d4a49b ENH:Disable printer selection when printing from SD card
jira:[STUDIO-10145]

Change-Id: I7d0b95afa3c0403121805090a13b2ab6d46e89b9
(cherry picked from commit 4d616513bedb17b81d6c5469966b5b6116627d00)
2025-09-16 17:21:40 +08:00
tao wang
3e40e40a3a FIX:cleared the filament change suggestion
jira:[STUDIO-10144]

Change-Id: I20c219cdefe8de2214e03db94db552d32a40f374
(cherry picked from commit 30454bd166cc8caf04b716f933f1ce625c80bfb5)
2025-09-16 17:21:16 +08:00
tao wang
7e4e73ad2d FIX:fixed mapping issue printing from SD card
Change-Id: Iad6b4b6ddd67f1c51fbfd1207893549b9cf746b9
(cherry picked from commit c66aa632d8120c4a8d811a9fdb975a031cbddaa8)
2025-09-16 17:21:08 +08:00
xin.zhang
1fe3cadd2e FIX: the WIFI signal is not refresh
jira: [STUDIO-10185]
Change-Id: I5b68bb487dc13ce32d7af6df72ff4c7cada6137b
(cherry picked from commit 3dbe340cf98f210d7079e2accc299da934efe4b0)
2025-09-16 17:20:44 +08:00
xin.zhang
9fae879ba4 FIX: move the function to API
jira: [none]
Change-Id: I2b30082148d6d9b937a218e37464727ba8fdf131
(cherry picked from commit eb90f16dd57d69683f440a4ceb526dc66ff1b6cd)
2025-09-16 17:20:39 +08:00
chunmao.guo
2410564f46 FIX: title of Extruder Tab
Change-Id: I2c436d9e0aa3e857d97395b65a8632ab39b02d50
Jira: STUDIO-10148
(cherry picked from commit 99bc6f6a80f3f42d31a6ce43baa933cdbbb028ef)
2025-09-16 17:20:32 +08:00
zhimin.zeng
b396d50d59 FIX: Detach the timelapse gcode from layer_change_gcode
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)
2025-09-16 17:17:41 +08:00
zhimin.zeng
a30bae9151 FIX: add timelapse warning message when sending print
jira: none
Change-Id: Ie73761f300fc4902f667d66e30a6a94a9557cd19
(cherry picked from commit f05800dbae8987df7f588a1dd8246d8f4cea5362)
2025-09-16 17:02:22 +08:00
xin.zhang
d13cddf03c FIX: update the message color settings
jira: [STUDIO-9903]
Change-Id: I73306d98d679620666a1ab68d5da7222b45cd332
(cherry picked from commit e43e4950da81a116a149f25be9219f107e9db3b7)
2025-09-16 17:02:14 +08:00
xin.zhang
2870bfbef7 FIX: the display content of calibration dialog
jira: [STUDIO-9875]
Change-Id: Ie6039c9b16f010f774ec5ad3e457c5651e54399f
(cherry picked from commit 2431dbc48fabac4393e28b651401bde0ab431fb3)
2025-09-16 17:01:44 +08:00
xin.zhang
22b7efc098 FIX: make the main area able to scroll
jira: [STUDIO-9878]
Change-Id: I89921f76b684a63bffde894eed89ecfa5d946b66
(cherry picked from commit 559eba688d399ef17ddc30750b9d00d01b9b33c2)
2025-09-16 17:01:03 +08:00
zhimin.zeng
2608d4a66e FIX: enhance for timelapse gcode
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)
2025-09-16 16:56:24 +08:00
zhou.xu
e17cd31f63 ENH:translate text
jira: none
Change-Id: I3d8cc9596d6abeae680deeef827514ac97bce863
(cherry picked from commit e66a291235569596fe8a8dc5474a57adaab122ca)
2025-09-16 16:05:13 +08:00
zhou.xu
7d3acd75ae FIX:fix crash for no valid filaments
jira: none
Change-Id: I9433da99d2ad355f088917e88350c5fd36bd1aea
(cherry picked from commit 52442fa6d58d4d9204c386ec1a2ccfedf7115151)
2025-09-16 15:55:01 +08:00
zhou.xu
552c674483 NEW:Display AMS mapping relationship in override mode
jira: none
Change-Id: Iac0b3563df2f76710a5bc461adab6dd8335ee62d
(cherry picked from commit 69f28a711f7680a938a46209da61289787f1d8fa)
2025-09-16 15:53:28 +08:00
zhou.xu
cda6860bcf FIX:Synchronize the machine to maintain the same hot bed selection
jira: STUDIO-10146
Change-Id: Ia2000bab1c41097ef50ee84aa35d9a5c8921ef56
(cherry picked from commit f95f88de0d7a789464046ba0837e3ff4da0ab5a6)
2025-09-16 15:44:38 +08:00
xin.zhang
4007c47585 FIX: make the tips as gray style
jira: [STUDIO-9646]
Change-Id: I88dcce6990e97ddea24d5726a3c728a5efd1fd6c
(cherry picked from commit b40306ac22aece60ebe1646534d1482020a84e6d)
2025-09-16 15:42:54 +08:00
lane.wei
5e4a2f3bc1 FIX: CLI: fix the stl name not correct issue when using export-stl
jira: no-jira
Change-Id: I5cd83c9fb787416d5045470025fa96696d8bfab9
(cherry picked from commit 49b1568877345b1eb9bdfacac19d451569433f3f)
2025-09-16 15:42:48 +08:00
xun.zhang
6b16ac1fcd ENH: update translation
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I85317044598c4a014c095cca30d1e9abc1fa9145
(cherry picked from commit d64977c9abe5b1cdc81876dc9124e9b1dbeba899)
2025-09-16 15:42:15 +08:00
zhou.xu
b477a9e3c0 ENH:add "forward" function in MsgDialog
jira: STUDIO-9971
Change-Id: I699912b4d18cb52aec2badf64a4655d20559ed7c
(cherry picked from commit f608327a108c1eece45ee75bde0c3aa35974f166)
2025-09-16 15:41:08 +08:00
zhou.xu
f2a5ff26d5 FIX:Click OK should disappear immediately
jira: STUDIO-10132
Change-Id: I62547c6888f11afcf76f7a3fd0ad6aa8fe9b0091
(cherry picked from commit 12fe1ac7400db2476d28710f0155d8844fd10728)
2025-09-16 15:39:42 +08:00
zhou.xu
5667d9a402 FIX:fix display in mac
jira: STUDIO-10130 STUDIO-10062
Change-Id: Ie98b19cdd3ead958940a8730e6091fc74be05ad8
(cherry picked from commit f5133d9d431ee562148afb1488ddab24c911c16d)
2025-09-16 15:39:36 +08:00
qing.zhang
1b90abe640 ENH: translate
Jira: none

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I2ed88be363eb5f1bd8a35269d669f3947d46e7f4
(cherry picked from commit 0e21d762be12a352be7c3e0411a71dcebcbf270c)
2025-09-16 15:39:14 +08:00
xin.zhang
170deadbda FIX: the dpi changed display of bed control
jira: [STUDIO-10067]
Change-Id: I84a2763686b004cfb27ddb567b0f6a44577924b0
(cherry picked from commit 36deba9d131b9433998e3fd1c2f96f785d6a6e0a)
2025-09-16 15:38:42 +08:00
xun.zhang
4b429af8f2 ENH: set default nozzle volume type to standard
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ia7c0118f89aee4e55c4c4b466957d80453775237
(cherry picked from commit a780ed9e1d4c0cea723c1107229649a8fbeb1e51)
2025-09-16 15:36:42 +08:00
xun.zhang
b9af995651 ENH: add virtual nozzle temp command in H2D gcode
jira:STUDIO-10104

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I47b083384e6730cf973dc865e821dce3a7e46277
(cherry picked from commit 8e48e10f51a77345fc6da37417af8eafeaae3f8f)
2025-09-16 15:36:32 +08:00
zhou.xu
30731cfd54 ENH:add "not support bed type" function
jira: STUDIO-9028
Change-Id: Id1c6cc9005fc5073d885274e360d31282063a9a3
(cherry picked from commit e74c9e710b4bed97e637c8197052b5bd864bfc95)
2025-09-16 15:36:16 +08:00
zhou.xu
80f6ce9e3d FIX:fix is_connect_printer
jira: STUDIO-10083
Change-Id: Iea8af8a6547eeac311f41e260115f9e12832de80
(cherry picked from commit 968dc8671020cb543694f60d7faa0aafd9e55210)
2025-09-16 15:18:39 +08:00
xun.zhang
26bedce268 ENH: refine code for gcode line process
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)
2025-09-16 15:04:02 +08:00
xin.zhang
132b1756f6 FIX: wait the new result about 3 seconds
jira: [STUDIO-8518]
Change-Id: Ida64d94ab44e71473096ae55ef2db50d7c8286ca
(cherry picked from commit 93446f05e1f4b53a8db6067acb4ac5bd1e53cff5)
2025-09-16 15:03:14 +08:00
xin.zhang
8a730414c9 FIX: the layout problem
jira: [STUDIO-9768]
Change-Id: Ic6e317241aa933c63da6360f6156c34ae434e28e
(cherry picked from commit 4dcdfc6beb6d5342eb71f75af176ab6c05280806)
2025-09-16 15:01:23 +08:00
zhimin.zeng
ae9493d885 FIX: only check TPU for multi-extruder printer
jira: none
Change-Id: I1fb882c05d43ffbcd42950ca6618d5789f148cd9
(cherry picked from commit 1b41b9a76369f28b51bc172b5c289968c6e8550c)
2025-09-16 15:01:17 +08:00
qing.zhang
b12b9c0fdd ENH: add filament category
Jira: none

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I0f31a376527bc540d27c49908712d08bdba3d719
(cherry picked from commit 3f2f704676f0a8a6cf1e43e8b32fd999bcc59d31)
2025-09-16 15:00:44 +08:00
zhou.xu
f729554858 FIX:close gcode.3mf not pop window that should not appear
jira: STUDIO-9821
Change-Id: I6c9d4e5231d2c7a9b9629003bdffab1c523fe15f
(cherry picked from commit 22e3f089924149617e3f788abf85cbfe79fa0b45)
2025-09-16 14:50:42 +08:00
zhimin.zeng
481405f68c FIX: modify the printable range error prompt
jira: STUDIO-10116
Change-Id: I489ff742f51ab8883306883ee59c98a31523fd34
(cherry picked from commit 9eee96ead7ded02c5ef1fa321b98d7a893074ef4)
2025-09-16 14:49:20 +08:00
xin.zhang
6c4479d0ea FIX: update some scale while DPI changed
jira: [STUDIO-10067]
Change-Id: Icb8480d01bdf20a17c699746677d54fc8c8680a6
(cherry picked from commit 677ec9e364a47b944b3ebee5519aea4c35439af1)
2025-09-16 14:49:15 +08:00
xin.zhang
c1fe23d824 FIX: update the extruder panel when object changed
jira: [STUDIO-10050]
Change-Id: I4eb12f3cdecf2a099a9b0773c73a48a8aa3713b6
(cherry picked from commit ca85009945010d51adf28c1722bf62385cc5917e)
2025-09-16 14:49:06 +08:00
jiangkai.zhao
8b6ffd8428 ENH: update prime_tower_brim_width‘s tooltip
jira: none
Change-Id: If085d80bd29a4ed4c95aa8dcdec76608a0f86ae7
(cherry picked from commit 851dd6708222108a7ba2313da8691a7b96212cc6)
2025-09-16 14:48:54 +08:00
jiangkai.zhao
ff958c3bd9 FIX: fix the error wipe path after nozzlechange
jira: none
Change-Id: I1a724b117dadc76a54f29fd75eb96e82a78f901b
(cherry picked from commit 0b4da5ebb7e151d1da0627836e02b6cdc9322e89)
2025-09-16 14:48:33 +08:00
zhimin.zeng
17813b487f FIX: should not generate timelapse gcode for H2D when by object
jira: none
Change-Id: I7b96d6290632ca40714d5dd06fe801a84924f84d
(cherry picked from commit 88f2784525590b3bb0de1e94bf401857816f26eb)
2025-09-16 14:48:27 +08:00
xun.zhang
5f2fa8c669 FIX: wrong filament sequence in some cases
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)
2025-09-16 14:48:21 +08:00
xun.zhang
0b01388f49 ENH: jump to filament map dialog in error tip
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)
2025-09-16 14:48:16 +08:00
liz.li
307bb051e6 ENH: refresh FilamentUnPrintableOnFirstLayer error state
jira: none

Change-Id: Ifec994cdba2c9590d4c1f8b59e6052593fd05bc2
(cherry picked from commit 04eeb40e1eba976e0921686bf6d66599a90e81cc)
2025-09-16 14:47:26 +08:00
zhou.xu
6c002687e0 FIX:update bbl_bed_pte_left_bottom.svg
jira: STUDIO-9954
Change-Id: I93a808651a84b6fa30de608a7e21d5ca722f200c
(cherry picked from commit 492033182c2795b7798c1a57f80c0e7b9ec08cc6)
2025-09-16 14:47:26 +08:00
zhou.xu
4d4bf64aad FIX:allow only External Spool color map
jira: STUDIO-10096
Change-Id: Ic0d2133fe688f275210df8f0a1adf1f29239598c
(cherry picked from commit 81ff3cdfce495d6847b0418ff4201d803fc8e84b)
2025-09-16 14:47:26 +08:00
Noisyfox
2375ab860a Merge remote-tracking branch 'upstream/main' into dev/h2d
# Conflicts:
#	resources/profiles/BBL.json
#	src/slic3r/GUI/AmsMappingPopup.cpp
#	src/slic3r/GUI/MediaFilePanel.cpp
#	src/slic3r/GUI/Plater.cpp
#	src/slic3r/GUI/StatusPanel.cpp
2025-09-16 14:46:40 +08:00
qing.zhang
e7e6405ad3 ENH:instead of prime_volume by filament_prime_volume
Jira: none

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I96e7d0604da8f90678feed81833e3a634752ffff
(cherry picked from commit be02e769bb49680d6be678fc5fa73a141ca8da1c)
2025-09-16 10:39:19 +08:00
xin.zhang
9e024d1d4d FIX: the json val could be long long or string
jira: [none]
Change-Id: Ic06276adf5e7663d57ba1c4b6f9a57e897a9075d
(cherry picked from commit edaaa0b70523951aaa0d415ab178a438a7d7b377)
2025-09-13 19:11:58 +08:00
zhimin.zeng
19a6a20b23 FIX: sync extruder info when select preset
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)
2025-09-13 18:52:13 +08:00
zhou.xu
34eac964aa FIX:fix bug for the base color of the color modification
after matching the untreated material
jira:STUDIO-10062

Change-Id: I699fd843600182bc87b224eee488e752b64ca0b4
(cherry picked from commit 29b0be89eb5190bd83d783bf173f14950aef738d)
2025-09-13 18:50:28 +08:00
xin.zhang
1b7f64ccd3 FIX: update message and translation
jira: [STUDIO-9580] [STUDIO-10092]
Change-Id: I133d23bef894d3784fa0e12c1d27a8a93448ebfa
(cherry picked from commit ea36ee5879b4b05b4d7ac98094697ce6e9eb1ba8)
2025-09-13 18:50:12 +08:00
xin.zhang
678538463f FIX: remove the unsupported nozzle diameter
jira: [STUDIO-10089]
Change-Id: I8a7e13788bac103a60390dbc89c3d3b95cb79d2d
(cherry picked from commit 8a7164dbc1612e66b1fbba8e4a25b704ad399204)
2025-09-13 18:49:53 +08:00
xin.zhang
eb6cd70f9a FIX: the bed calibration default to unchecked
jira: [STUDIO-10091]
Change-Id: I313cc8419276ca89e9d9cb57604adc19d2cfee89
(cherry picked from commit 655373cb825773a73d8d44553da8b9624a5d3dac)
2025-09-13 18:49:48 +08:00
jiangkai.zhao
8723b6987d ENH: enhance some functions of the wipe_tower
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)
2025-09-13 18:49:41 +08:00
zhou.xu
164fec343f FIX:Unknown material display incomplete
jira: STUDIO-9997
Change-Id: I55409e5ba054eadf9200c22b8c6ab31223c3b689
(cherry picked from commit 5c6a752279c20d3bc2628edf9db0aa320bdf322d)
(cherry picked from commit e113538a1741465e6b25583c5e4101ea499debc3)
2025-09-13 18:46:59 +08:00
zhimin.zeng
7ce79938f7 FIX: Update blacklist
jira: none
Change-Id: I5ce98aeab6ee1a5b84b35c12c8caf3cf70f30ba6
(cherry picked from commit 7a0b8d91356d3bfb7f3052cc592bca165f844d44)
2025-09-12 17:43:44 +08:00
zhou.xu
65c3a6330a FIX:fix dark mode bug of SyncAmsInfoDialog
jira: STUDIO-10012
Change-Id: I6b27b8908f04995814af97baabcee6f77643c125
(cherry picked from commit a87bdf0d543e2d55e11098a6713fc9965f67a150)
2025-09-12 17:43:15 +08:00
qing.zhang
a6c4e22e15 ENH: move extra params
Jira: none

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: Ib5c4d203c6585b9946d8703d9f33477780afb275
(cherry picked from commit 78079dacd1c4f14c171668d6c7895e72dd96c52a)
2025-09-12 17:43:07 +08:00
xun.zhang
81b2b1c31a ENH: modify description for filament group mode
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ia0098b0aced6c764962874197da8d63fc7a06d6d
(cherry picked from commit 868b056f1a88002bce10dd8c6724ba3fc97a32d0)
2025-09-12 17:40:53 +08:00
xin.zhang
93de40b41f FIX: remove the internal update codes
jira: [none]
Change-Id: I4d5cfc6b643117d136865b143e2d42c398d2bde2
(cherry picked from commit 3e9187cf3b792b6001746175318fd2bf9c07fd2d)
2025-09-12 17:40:48 +08:00
xin.zhang
16f0b7890c FIX: support UTF-8 search for devices
jira: [none]
Change-Id: I29c6509c0d06f238f0d42d0c5422fb0686a598ca
(cherry picked from commit bc96302f12b1435cb8417f87dc09a829271821a8)
2025-09-12 17:40:41 +08:00
xin.zhang
e4f3738f2a FIX: the text display incomplete
jira: [none]
Change-Id: If5dec5af26ee80b8f0d722b0d75d0bd10e09ddb5
(cherry picked from commit 784b5a69ccbe5b40c0e61760a5ae5e83712da886)
2025-09-12 17:40:36 +08:00
xin.zhang
32f4c15bf0 FIX: dynamic flow cali is default to auto
jira: [STUDIO-10085]
Change-Id: I8cac8ea2fddf1fafacf69680a983315c71e751a0
(cherry picked from commit cb89a9eb12cef2e13f788c45313c06189d8c19f5)
2025-09-12 17:40:32 +08:00
zhou.xu
28a982e07f FIX:update MaterialItem
jira: STUDIO-9996
Change-Id: Id225c13eaa2f4f66aca0f76754408fc8506d532c
(cherry picked from commit e45bb41cd10e063f0ea630f7644e719c42c3523e)
2025-09-12 17:40:26 +08:00
zhou.xu
3b69225bc8 NEW:add "Fade out" effect for BaseTransparentDPIFrame
jira: none
Change-Id: Ied2fd3a07c213c3518183865169728a87a7d5b1a
(cherry picked from commit c5406570bc8647d243011e330f4bd618bcceec85)
2025-09-12 17:39:25 +08:00
zhimin.zeng
a57a927481 FIX: modify the picture of X1E
jira: STUDIO-9844
Change-Id: Ic4dbdfa995588a17c9be66ce20876edc2c5c23cf
(cherry picked from commit dd15d0772f049651029da96c9ee46e2d8979dc7b)
2025-09-12 17:39:21 +08:00
zhimin.zeng
0b75d97360 FIX: the machine status is not refreshed after unbinding in lan mode
jira: STUDIO-10017
Change-Id: I62f955c47fbf7c59782ec8a7a7e316ef020942a5
(cherry picked from commit 66b5ef0d86f0212b4843cabed9fe408127a219cf)
2025-09-12 17:39:16 +08:00
zhimin.zeng
64766860df FIX: the pa pattern is not work
jira: STUDIO-9841
Change-Id: Ie7de3f1bc3950e8e3afbdab87eb1669edb970564
(cherry picked from commit 87bc6b834532da4c161ecee34b58620f114e348e)
2025-09-12 17:39:10 +08:00
zhou.xu
45a3224539 NEW:add BaseTransparentDPIFrame and timed disappearance
jira: none
Change-Id: I8fcf56ead20aba640c59406c0dad3b6ad67f18a6
(cherry picked from commit d34a8cb2ee1cf0d29c2ca5187a4c168b775269f8)
2025-09-12 17:37:14 +08:00
Mack
a9349d1ef4 Fix:filament svg icon add transparent color
jira: STUDIO-9929
Change-Id: I7650670988d3c3538818278417ab9fb48c232400
(cherry picked from commit 45e7d7bb7de0b9c999d2ab0fbf0ca4441853324b)
2025-09-12 17:26:39 +08:00
xin.zhang
e988d38b14 FIX: update hms messages for AP
jira: [none]
Change-Id: Iaa5f15298d529cada6c7ebdcb112ed38c425d1b4
(cherry picked from commit 07e77c3d6168c357432dedd6882d534a70a95921)
2025-09-12 17:26:31 +08:00
xin.zhang
872c979b0b FIX: show the refill graph only if it's enabled
jira: [none]
Change-Id: I8a1f015a92ac965972f6de46a143a6b0f02340a0
(cherry picked from commit 403a3b42e7c5b4c8aa8a5f680b7d2b6413431ef6)
2025-09-12 17:26:26 +08:00
xin.zhang
aa58b9b7ad FIX: support the dark mode AMSPreview
jira: [none]
Change-Id: If4329081535a1155588afad932403ea3615163f7
(cherry picked from commit 32597b43f94813f3ad6ef99106e234fa9a180971)
2025-09-12 17:26:20 +08:00
xin.zhang
229c87df16 FIX: disable the switch nozzle if not connected
jira: [STUDIO-10072]
Change-Id: I2f705af4cd6f50770c9c0019287855ef90518d18
(cherry picked from commit eae81e9d95059d6fef7dc0ee9e7c38f57e57e902)
2025-09-12 17:25:48 +08:00
zhou.xu
b2856b44b0 ENH:add "sync filaments status" logic
jira: none
Change-Id: I7a74641e6d8e1d1d713d4d97af370a8c0a87f154
(cherry picked from commit abfa7261625dfd90ad276baf9afd66a3368303f1)
2025-09-12 17:25:17 +08:00
zhou.xu
ecb94e119c FIX:Only one of the two dialogs is displayed
jira: STUDIO-10065
Change-Id: I7763de83697ea9645808757b9396acd34cd12cca
(cherry picked from commit eab6384c6cb50428689bae724ee1d16217eab28d)
2025-09-12 17:13:01 +08:00
zhou.xu
a8d2a0e589 ENH:add "pop_sync_nozzle_and_ams_ialog" api
jira: STUDIO-10016
Change-Id: I000fa5719cf631ff0c63b6379850e1915f78ddaa
(cherry picked from commit 170687352efa3e87605a2bc37eafbed3679417f9)
2025-09-12 17:12:50 +08:00
Noisyfox
b55a0226b5 Fix compile error 2025-09-12 16:56:45 +08:00
zhimin.zeng
a5ae552512 EMH: enhance for rib wall wiper tower
1. fix the slice error status
2. add rendering for wiper tower
3. modify the wipe tower start pos for rib wall wipe tower
jira: none

Change-Id: If554ca0fb30f6c7ce9641014c0ed4a7f23afd6f4
(cherry picked from commit 3ae08b458dea1d04cad33b2787d98407111b038c)
(cherry picked from commit 55772c59126bc4dd5c2ad022e7a959785c29cb4e)
2025-09-12 15:37:46 +08:00
jiangkai.zhao
b9d9602581 ENH: adjust the interaction of the rib_wall
jira: none
Change-Id: I2462240304fc4ce4a1047d7c8ac818c209f15200
(cherry picked from commit 6567642e938a4edd4197535418aeb8be0bbc7c55)
(cherry picked from commit 1f4d2cf714e70ab27ceaaeb75df02650f527b570)
2025-09-12 15:32:47 +08:00
jiangkai.zhao
16731a90b0 ENH:add rib wall wipe tower
jira: none

Change-Id: I9699cc74e206851284949f89230e986435b9e1b7
(cherry picked from commit eabfa6b272590698886ecec33b89207605b91993)
(cherry picked from commit 1d33d1c37d4dada1cd1129ff16fe46d07933ad26)
2025-09-12 15:31:11 +08:00
xun.zhang
606d28dc26 ENH: add tip link for filament group in viewer
1.Also update wiki

jira:STUDIO-9944

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Iaa282054da40b6936dc6c741fe7ef7ca62f868f2
(cherry picked from commit caa51852afcaa207d4204b420612524cb0f7017a)
2025-09-10 16:55:08 +08:00
xin.zhang
c9f2d88cf5 FIX: wrap the text
jira: [none]
Change-Id: I8deb09ac6caa3c3a4ab45d75286e8697d0babb06
(cherry picked from commit 3cb5ee0b303c28be9a9aca37cab5afb10a65b1e9)
2025-09-10 16:37:20 +08:00
zhou.xu
193083bbd7 FIX:modify text and fix show bug of SyncAmsInfoDialog
jira: STUDIO-9974
Change-Id: Id10dd54bc23e98cd709860b563fc26b4c570b98f
(cherry picked from commit c3990592ac4f531c162fb37fd08893a6cefdfbc4)
2025-09-10 16:37:15 +08:00
zhimin.zeng
83971debef FIX: the machine status is not refreshed after unbinding
jira: STUDIO-10017
Change-Id: I351a17abac132369ecf342ffb79b17228d5ef250
(cherry picked from commit 4a01c840ab73a455e1580169f57c25b10fa9e85f)
2025-09-10 16:37:11 +08:00
xin.zhang
4887de8cbe FIX: move the state record to higher coding level
jira: [STUDIO-10050]
Change-Id: I1e0721c80492688c66e700979461ac0bdd396ef4
(cherry picked from commit 371ef9c554dff57e0685519b1c0931c8999c5841)
2025-09-10 16:36:40 +08:00
zhou.xu
054162a192 FIX:change control for two dialog
jira: STUDIO-10038
Change-Id: Ia88ebc9c5a61920108cdec2ae33fdf73cf6e0b00
(cherry picked from commit 4c9d8917007a7eea742253e2417b3faeab1985db)
2025-09-10 16:36:34 +08:00
tao wang
2fc1b8479e FIX:added n3s load/unload filament steps
Change-Id: I75ebf4d3c7854ded933d1a755b13cab48b1efc90
(cherry picked from commit 17dddbdccc1692642493dfbda237d15f7b69b573)
2025-09-10 16:36:25 +08:00
chunmao.guo
9a7ee39837 FIX: nozzle AMS rescale
Change-Id: I8006c72947463d23984fa62ce3a9a2e2d40e990f
Jira: STUDIO-10045
(cherry picked from commit 2d4cdc82181d8fa8b5c16f7baeb2a46e12b3fc07)
2025-09-10 16:36:18 +08:00
chunmao.guo
484279a7e9 FIX: liveview_remote protocol missing agora
Change-Id: If3a46c67e139e3abc47dc672e32246eb6b59f9fd
Jira: STUDIO-10041
(cherry picked from commit 71d9d8969e4bf502adaa56f165fc857be7fe6f5a)
2025-09-10 16:33:02 +08:00
xun.zhang
324816cc6f FIX: ui issues with filament map dialog
jira:STUDIO-10040,STUDIO-10039

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I939df4fc0fe3eb8d287cf1efc7d459c0790d04c7
(cherry picked from commit e24a0bc60323a528b020d21871405c95f1775e0c)
2025-09-10 16:32:37 +08:00
zhimin.zeng
e89c217da8 FIX: timelapse should not enable when not supporting timelapse
jira: STUDIO-9946
Change-Id: Ic8f369972c598c812e30d197927fa5fb63be133b
(cherry picked from commit 7897cd68c99392f1b6254b8d436b1d54c8565942)
2025-09-10 16:32:32 +08:00
xin.zhang
6cbdfe76c8 FIX: update some translation
jira: [none]
Change-Id: I0b6e14b78c26188b20d8303444ed294eee64dff2
(cherry picked from commit 3bef21933f60e3c813881232ef4fea44db56f395)
2025-09-10 16:32:15 +08:00
xin.zhang
4fb8ab03fe FIX: paint the invalid remain as 100%
jira: [STUDIO-9967]
Change-Id: Ie0b96d6a12e5d5b526e92360f7e93087134ed0a9
(cherry picked from commit 716f22046db7de19ad298e6babed4398512bf7e7)
2025-09-10 16:31:58 +08:00
xin.zhang
00c9ab01fb FIX: update the wrap DIP
jira: [STUDIO-10037]
Change-Id: I24c7d1ad54bbcfb4ac43609bff1dd9cd10db2e60
(cherry picked from commit 0c80f1a9754a727c2087b4f56942ec1b8f589fe5)
2025-09-10 16:31:54 +08:00
zhou.xu
8c06b19a7b ENH:translate text
jira:none
Change-Id: I2d37d7ba4867b1507d2a8073dfdfc836b7c8e112
(cherry picked from commit 5427e9e0522b370e85ef0b2eab8394ae5f41ed40)
2025-09-10 16:31:39 +08:00
zhou.xu
996ca9752e FIX:All plates share the current mapping
jira: STUDIO-10008
Change-Id: I5d04c95dea7bd6b56c97258863a190f0f0c3b4e6
(cherry picked from commit a1de92523fffd3558bf7a30fa98fa3958737c1a6)
2025-09-10 16:30:09 +08:00
xin.zhang
bc939f27b9 FIX: add the translation
jira: [STUDIO-9148]
Change-Id: I937b0fb93be39bd7567a5049a2fd1ed5f0aad9d2
(cherry picked from commit a039401683f136257262d51dcfb66f86f8c06df0)
2025-09-10 16:30:04 +08:00
xin.zhang
491f7091dd FIX: disable send button for PrintStatusLanModeNoSdcard
jira: [STUDIO-100013]
Change-Id: I8077d81ab9ecdc8f4c3e5fe5269c87f4ebc41640
(cherry picked from commit b47885b1378ef51e7d006b81f0799336e54de995)
2025-09-10 16:29:59 +08:00
xun.zhang
6a2d4b878b ENH: refine logic in filament group in gcodeviewer
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Id89daec05f2d4017d326c6473bd62008dd9f0b11
(cherry picked from commit 2e26c5812a98e47a25d97e7f574e8a4d8e8f7f9e)
2025-09-10 16:29:49 +08:00
chunmao.guo
eb218f28cb FIX: adjust text switch printer inconsistant variant values
Change-Id: Ie494b57698f45fbf0eea0546a486d6514002887e
Jira: none
(cherry picked from commit 33684a12f65768329873cb83d88c8582109e5c43)
2025-09-10 16:29:09 +08:00
zhou.xu
962e57eb51 ENH:add MaterialSyncItem
jira: STUDIO-9994
Change-Id: Id0d2ebd8dd68854f5cc1c821c7453b75852b8ba7
(cherry picked from commit 012d90bd7e546be17b654a2f71e90628ffd596e5)
2025-09-10 16:28:52 +08:00
tao wang
2a8badec9f FIX:hide advanced options when device incompatible
jira:[STUDIO-9973]

Change-Id: I34338e8f87ccc709d4a9f69ce16af17269c91784
(cherry picked from commit b675a2e4331ef5704d6b99804ac6c0d39979e3bb)
2025-09-10 16:28:47 +08:00
tao wang
6a2fa8e648 FIX:Update the translation of the best strategy
jira:[STUDIO-10001]

Change-Id: Idb20d2042f7bbe14891f3c1e8e1bdef947b01071
(cherry picked from commit efcad28fb224ac742d226f615f4bd98940f74c42)
2025-09-10 16:28:42 +08:00
tao wang
d901ab323d ENH:aAdd protection logic for AMS backup
Change-Id: I5ae871aa03cfe706c7c079cd60a4422cae4464fb
(cherry picked from commit 2b1fdcf327748d2a1e93539447d00b6ae59dbf81)
2025-09-10 16:28:37 +08:00
chunmao.guo
b9f6e43159 FIX: switch diameter texts
Change-Id: I2e93cdd0895f3b7f2531d96c64f7caa8d0440194
Jira: none
(cherry picked from commit 50f9bdbd91de69b160013bf8b6a9bd561e23474e)
2025-09-10 16:28:24 +08:00
tao wang
4da45516cb ENH:add unmatched status for ams mapping
jira:[STUDIO-9995]

Change-Id: I9400ae8ef33a2292565395a8fb4fedbe71437da6
(cherry picked from commit dc4919ebd665554f2b935aa5b41c6c13c21615c5)
2025-09-10 16:27:42 +08:00
tao wang
1e1dd9ddf6 FIX:fixed AMS editing icon not displaying
jira:[STUDIO-10000]

Change-Id: If1d7594bc71369067e6ea15aa3a7e1cec21605cc
(cherry picked from commit a498efe5700aeba28decfaf1df470b586fcbca45)
2025-09-10 16:26:29 +08:00
zhou.xu
49743635f5 ENH:translate text
jira: none
Change-Id: I0bbacfc198b93f663d1e844664440e45cf39617d
(cherry picked from commit 248f6daf96591010654263d57c14bf45fef2a53b)
2025-09-10 16:26:15 +08:00
chunmao.guo
efb32b7c54 FIX: restore nozzle_volume_type later on_preset_loaded
Change-Id: I8fb9c8c5ff04f9f84a97750f48f763521b8f4b58
Jira: none
(cherry picked from commit 1dc94cffd3b72b3410639abf84ca4ba599f4c7f3)
2025-09-10 16:25:43 +08:00
zhou.xu
d017200c4d FIX:fix crash for "close wxframe at System Bar"
jira: STUDIO-9992
Change-Id: I8cdfff70394880a2dc04f2fa2e37ad6a11eba5a9
(cherry picked from commit 91452df326e80cb3d15f7680fe91bdd8d128c0d3)
2025-09-10 16:24:53 +08:00
chunmao.guo
d1f039b5f3 FIX: switch diameter button order & total ams count
Change-Id: Ife11b131269cd5b1ed6c1555621d5ea727a07027
Jira: STUDIO-9984, STUDIO-9739
(cherry picked from commit 35e8c0d5dab916ee1b103a475d638ad7958e561b)
2025-09-10 16:24:41 +08:00
tao wang
0e763dd300 ENH:Optimize translation
Change-Id: Ic45baaa974af044a1bc166faf6e27ca5ee4e155b
(cherry picked from commit 4a8304486789965c85a498d72250ea84088730a8)
2025-09-10 16:23:33 +08:00
xun.zhang
6d622a7f5f ENH: modify sentences for translate
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ic97b6d9dce8de77308f0893b55d621d5c250531e
(cherry picked from commit e82fd6b4752e0f72c33afb6d65d9c02b666585e4)
2025-09-10 16:22:30 +08:00
tao wang
d5e1689d8b ENH:adjust the UI of the Mapping pop-up window
jira:[none]

Change-Id: I26f07db9a9d4fd565fde1e58d01e2c60380f8492
(cherry picked from commit 8f11826bc0d845d13489487fc647758d1e1f4565)
2025-09-10 16:22:21 +08:00
zhou.xu
a90639130a ENH:add "only_external_material" logic
jira: STUDIO-9985
Change-Id: Iac15989bea39d1571eab66199737472381832017
(cherry picked from commit d317055f421ba2037f983ad1d99cd0e268b7274b)
2025-09-10 16:20:49 +08:00
xin.zhang
a071fd14ac FIX: the text does not align mid
jira: [STUDIO-9987]
Change-Id: Ibb2f7c3982414f11538230385b12708295b4f21c
(cherry picked from commit 36322e7cdbc8c7163b2e45ce69a08e8c77317b25)
2025-09-10 16:20:14 +08:00
zhou.xu
ca37c4b114 FIX:not map for unknown material
jira: STUDIO-9960
Change-Id: Ifd1b5f42676e9aa127805caa919ed2e3ef3f2900
(cherry picked from commit a3a54934e05ecd85584dfe631a4bf3242682bd8b)
2025-09-10 16:20:08 +08:00
Kunlong Ma
67036667b5 FIX: Incorrect use of BBL_RELEASE_TO_PUBLIC
JIRA: STUDIO-9672 STUDIO-9770 STUDIO-9886

Change-Id: Ia4892f0c34964956be9246432a0797085558088b
(cherry picked from commit df295edc0fcea57d23239ed9756fc956383c8eb3)
2025-09-10 16:20:03 +08:00
xun.zhang
1126d3f7dc ENH: update custom gcode for H2D
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I6c69c6ee3cd77c7b82d6b37592e9fc4ebfd539d9
(cherry picked from commit 785e0299719215f4a4f2b074ec7809e01f77f322)
2025-09-10 16:19:55 +08:00
zhou.xu
cbc1485b57 FIX:fix SyncNozzleAndAmsDialog display in dark mode
jira: STUDIO-9937
Change-Id: Ic31456ceb6998aceb010b2a4a3f879ec5bec836c
(cherry picked from commit d1a255db914e1a05225189cdd1ccbee205ebe4ee)
2025-09-10 16:19:51 +08:00
zhou.xu
8264e9ee41 FIX:upgrade cancel_paint_color api
jira: STUDIO-9907
Change-Id: Ie04fc4e1224e84810acde347b8ae9e73530f9031
(cherry picked from commit 915bae32d1d9023a0314361d1b257509fc676c7b)
2025-09-10 16:19:46 +08:00
lane.wei
48c67f6d94 ENH: GUI: remove object limited warning
jira: no-jira
Change-Id: I89bc082721bdc05ed2f41febc12a4f4252308ac0
(cherry picked from commit ff02619730f6af3910b535c419fc798b4a9a9d62)
2025-09-10 16:19:14 +08:00
lane.wei
d6715225c7 FIX: GUI: refine the error message when switch plate
also refine the text
jira: STUDIO-9809

Change-Id: Ifce527d3d19ead80b314611de8f3f861dc598188
(cherry picked from commit 014996d4258cef42ce943157d6485fad9cc98ee2)
2025-09-10 16:19:03 +08:00
zhou.xu
31f16dc42e FIX:pop error MessageDialog
jira: STUDIO-9955
Change-Id: I9ce6a68baaa7fc7548817a37c042091ae4b7e73a
(cherry picked from commit 3a6784342a8f965c151e9f8e3cdbc1f7983e6f80)
2025-09-10 16:18:03 +08:00
zhou.xu
6926626595 ENH:update AmsMapingPopup
jira: none
Change-Id: Icacbc7500eccddea8991dd552a0e4a040e83fdd7
(cherry picked from commit 065e05b37668f2f8409169e278d22b13519cd4d1)
2025-09-10 16:16:54 +08:00
zhimin.zeng
fbf2ccc226 FIX: crash when delete filament
jira: STUDIO-9956
Change-Id: Ibef1db35c2953040bb7df6b53ed3144f3ff85d96
(cherry picked from commit 99837d8c01e782ef6634ab60a06e05f48ca31437)
2025-09-10 16:16:50 +08:00
zhou.xu
2456729002 FIX:fix bug of SyncAmsInfoDialog
jira: STUDIO-9948 STUDIO-9950
Change-Id: Ic97dfb7787c9e27386003b2dc3f88f1003456245
(cherry picked from commit 081df8f5809dc023487b239dc1419b20eacc7a40)
2025-09-10 16:14:02 +08:00
zhou.xu
3392d3136d FIX:fix bug of dual_extruder
jira:STUDIO-9622
(cherry picked from commit 9514b6225f2170dc3baa34f27e6a435de1fc8439)
2025-09-10 16:13:56 +08:00
zhimin.zeng
1b1ccc398f FIX: modify the error code after slice
jira: none
Change-Id: Ie82198d7037d75468d14da435e1df1dbf47d91fc
(cherry picked from commit baf38583c99000006f4ce6177b8b6c852c1d5843)
2025-09-10 16:13:52 +08:00
xin.zhang
389a7ff3a6 FIX: update the bitmap by dpi
jira: [STUDIO-9952]
Change-Id: I88d91146c83d11f7dc87b4dd5698087a342646d4
(cherry picked from commit 05f67d14f6d1853739a38dd05d68a8553bb99a75)
2025-09-10 16:13:20 +08:00
qing.zhang
34f4300f4e ENH: add filament change length for color change
Jira: none

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I84ab638d6af056ede9b9524d1395eb42fa731150
(cherry picked from commit 9b46d437bad707d38a978bc768e0359979e5fb19)
2025-09-10 16:00:00 +08:00
zhou.xu
c84358f309 ENH:translate text
jira: none
Change-Id: I80ec70f104a7e845a552e1054f52a0c9b17db870
(cherry picked from commit 4f3cab72a7c79dde9d14c31ca1db08a586c9d423)
2025-09-10 15:30:45 +08:00
chunmao.guo
6779336bb7 FIX: ams count dialog not default button
Change-Id: I5eb563d734953d185425f745acac3cfb3eadb4a4
Jira: STUDIO-9936
(cherry picked from commit a5acf20506aeb4c2720dbe367ae5651dda88df7f)
2025-09-10 15:30:29 +08:00
xun.zhang
733353fbc9 ENH: update nozzle volume for H2D
jira:none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I21e56af3d4d2d3eb2ec4265ce3f34bac649b18f0
(cherry picked from commit 3213963399140b6d4035d8547af5215f123df686)
2025-09-10 15:30:00 +08:00
zhou.xu
c2b8f7ecae FIX:update SyncAmsInfoDialog
jira: STUDIO-9928 STUDIO-9934
Change-Id: Ica81cb037ff0b99cc53a762b280a666e8c832ab3
(cherry picked from commit eeb474d2cee9187961db1941be952f806ff6c76d)
2025-09-10 15:29:28 +08:00
tao wang
d2f3742805 FIX:Update some Chinese translations
Change-Id: I6098ff6f14ee9203c120593636945a5c4388c9fa
(cherry picked from commit 2c9074715c979537f15d131077dc3f44f268a6d3)
2025-09-10 15:28:54 +08:00
xin.zhang
21571e6eba FIX: enlarge the scroll rate
jira: [STUDIO-9924]
Change-Id: Ic6cabccf3febc484bdd05b10cb6dfa1b0b78d710
(cherry picked from commit a07b45ba854813a1b776bd5e66130093d605a82b)
2025-09-10 15:28:32 +08:00
xun.zhang
4742521930 FIX: always empty popup in unprintable case
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I90fcb90ef01e8cc398683bf00eb8d87eefe95069
(cherry picked from commit f79ba9e315689202f592cac3dcc3027c4eae9164)
2025-09-10 15:28:25 +08:00
lane.wei
6ce74ddd6b ENH: presets: add more logs to debug some issues
jira: no-jira
Change-Id: I84dd4eb8fb32bde2ebcefccfb89fa53d64b3ef7f
(cherry picked from commit d09e0233683f951cb52e1dc5809dda5d3284f655)
2025-09-10 15:28:16 +08:00
zhimin.zeng
d04f09fa18 FIX: The filament_map of the disk is incorrect in manual mode
jira: STUDIO-9484
Change-Id: I920f387b10d46c2fa1b9385bf3d920c8b8df8806
(cherry picked from commit 4cf4c82c9e226204be84449d2e7df382d5a73ccf)
2025-09-10 15:27:05 +08:00
zhimin.zeng
cae74be2a4 FIX: the filament printable check is incorrect
jira: none
Change-Id: I3026699e81c287d6bed739175bb37c1f82ae7134
(cherry picked from commit 45689481e5416b3607b440d2c4552e28b8adf22e)
2025-09-10 15:27:00 +08:00
zhimin.zeng
98f305f32c FIX: auto sync extruder list after connect printer
when enter in prepare page
jira: none

Change-Id: I3dd0ac4fbc283d5c4b8e85d01724251cc1a7131e
(cherry picked from commit 34ed8441a16499f922e82b6c83f140eda58055a5)
2025-09-10 15:26:54 +08:00
tao wang
8267224756 ENH:some UI optimizations
Change-Id: I3395ab87552d6beb3481bf2049bfd1096933f36d
(cherry picked from commit 66a783d126e55360cbbc35503c03f0366aacdf68)
2025-09-10 15:26:13 +08:00
tao wang
b4c9477732 ENH:update tips for best mapping rule
jira:[STUDIO-9927]

Change-Id: I62e0f52ffb7bd112017f7bded5d6fb520bdced49
(cherry picked from commit 664335e8986fbe47763167b3fc1c44078976abc0)
2025-09-10 15:25:44 +08:00
zhou.xu
dfa9e8d3bd FIX:add deal_btn_sync api
jira: none
Change-Id: Ib0d2cd95a927622f746767c606cfb1feb56240a6
(cherry picked from commit 8a92c26aad11aa089d9a93beed813667013ec617)
2025-09-10 15:25:38 +08:00
xun.zhang
0ad660b1d3 ENH: add options list for param dialog
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ic2dc62fae487b8c167ccb6d53572cba0fbc727c9
(cherry picked from commit d599757bf8541e3be6cdd7aeb9a15599eced586b)
2025-09-10 15:25:21 +08:00
chunmao.guo
819e11733a FIX: PrinterFileSystem less thumbnail batch count to 2
Change-Id: If741fa8a394ab510f0bf15fa90cd43c8f14a7c80
Jira: none
(cherry picked from commit bc8f79e2fec6ae568b9f403f21d694659b5dea79)
2025-09-10 15:23:43 +08:00
xin.zhang
7a7d15c5ef FIX: the lost codes
jira: [none]
Change-Id: If7696167052a12f35a7869d24e18249aa0410215
(cherry picked from commit 96e43fa9892f16067cdbeae71a58d8031df10f12)
2025-09-10 15:22:26 +08:00
xin.zhang
cd022b5f93 FIX: move the message location; disale the AP supporting check
jira: [none]
Change-Id: I55ea491584c978cc4b22815d582f0cbfe1be1d2a
(cherry picked from commit 196a87431be9a32e9c08b730d3cf991b71ebec12)
2025-09-10 15:22:20 +08:00
xin.zhang
4356fd3529 FIX: fill the background
jira: [STUDIO-9915]
Change-Id: I88df69d892528fd47f46dc2909901ad9aaf89879
(cherry picked from commit 225431eccc68e34ceb60da9e868044ba6eee72c1)
2025-09-10 15:22:11 +08:00
zhou.xu
8a6eddb7c2 NEW:add SyncNozzleAndAmsDialog
jira: none
Change-Id: Ib2e8d645a1b9a280da5c91b6de2fee313075bc17
(cherry picked from commit 4845e4c585cf2d57e028dd6e9ebc221b66dea324)
2025-09-10 15:06:02 +08:00
chunmao.guo
d01f553dc6 ENH: optimize set ams number popup
Change-Id: I7765b47785ee80d74d7b75701747585b6cd5db51
Jira: STUDIO-9829
(cherry picked from commit 3573bbd985cff965f7077326f0ba6c8d847b9043)
2025-09-10 15:03:50 +08:00
zhimin.zeng
33ebbdb15b FIX: Adjust the depth interpolation of wipe tower
jira: none
Change-Id: I9b4e4b9c0f1fcf260257bf19c7dd4a8a5933b0b6
(cherry picked from commit 133fef3b78a201bbcaad43dc2d77024ac99ba983)
2025-09-10 15:03:42 +08:00
xun.zhang
c605f73d80 ENH: update translation
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I9b260cb3e21b9052c9a2d65378bd0e795f6db6f3
(cherry picked from commit 2507eba37d5f09cca51b3e9f9f281b2208e57eb1)
2025-09-10 15:02:23 +08:00
xin.zhang
1ab2f775fc FIX: update the text and translation
jira: [STUDIO-9754]
Change-Id: Ic140be70b2fe8f4047c2cdd9d0cf7a17c7366ef2
(cherry picked from commit d8ae1e78307135be4691c080435fa0a613a26a2f)
2025-09-10 15:01:35 +08:00
zhimin.zeng
00f19fcd72 ENH: add timelapse warning for multi-extruder printer
jira: none
Change-Id: I09a25f00eef6d3fab6ad948a13c8eb308f134dbb
(cherry picked from commit d7acee50e88812e8a0bd7b9afea7aca5d5826841)
2025-09-10 15:01:19 +08:00
zhou.xu
80cd896896 ENH:update SyncAmsInfoDialog
jira: none
Change-Id: Icdfaa85500a0f448b9959923b863e6fbf72b397f
(cherry picked from commit baa2282dede7886720cdb564ef4de22710c5528c)
2025-09-10 15:00:55 +08:00
xun.zhang
242f62861e ENH: chamber temperature set to 60 for H2D
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ic7f955888c3c451e36d1c12623f34a3487d6b9fb
(cherry picked from commit efc2548cd04fed3541069ea22603b816b3ed12b4)
2025-09-10 15:00:39 +08:00
xun.zhang
f29133cf58 ENH: update custom gcode for H2D
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I5747a7cf019fee24a79c26743fcd227948846b51
(cherry picked from commit 496786297834d72c530df595c79eaec1e1a95c20)
2025-09-10 15:00:31 +08:00
xun.zhang
ae75d8b8a5 ENH: update some sentences and refine ui
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ibba2d6c880fcb810f861cf06eb7a30a512cbbacf
(cherry picked from commit 5195e824814a1ee38d789f331ec86e73807d412a)
2025-09-10 15:00:25 +08:00
xin.zhang
196dba481d FIX: remove the text
jira: [STUDIO-9905]
Change-Id: Ia37ec1b3819d2beda9ca2fcb8cecab3eed5193fd
(cherry picked from commit ace06ed45efe54166922f7908c2631f13e98370e)
2025-09-10 14:57:59 +08:00
xin.zhang
9b1abd02ff FIX: move the message to dialog
jira: [STUDIO-9580]
Change-Id: I95f6d8ee56767b682956ce84cc74c096984afbef
(cherry picked from commit 3697ff05a4a6935422792b64fe1be4b6cc5be09d)
2025-09-10 14:47:41 +08:00
xin.zhang
ae267aeca5 FIX: update the check logic
jira: [STUDIO-9715]
Change-Id: I38fcc7fb45c34b2ff675807b7dcbcd1aaa20449c
(cherry picked from commit 52cfb30119ff324b202ab768ff01cf883a24eaed)
2025-09-10 14:43:35 +08:00
xin.zhang
b63e0ee556 FIX: disable send print while the ams is during setting up
jira: [STUDIO-9813]
Change-Id: I55dcca9aab4a9923636c1cf7a0a27bc7e4b9586d
(cherry picked from commit 5b800d034266489e5b288aa7a51ce6d244ae06b8)
2025-09-10 14:43:26 +08:00
xun.zhang
c8fa5e1e4e ENH: update extruder unprintable tip before slice
jira:none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I3a47e1505c3410e1ba41e4d12903ccf4db486240
(cherry picked from commit 086e977d897c2a9022321e2611c82f39147462be)
2025-09-10 14:42:30 +08:00
liz.li
fe204f972f ENH: collapse the dailytips by default when slicing
jira: STUDIO-9658

Change-Id: Iad5bd087337e7d0540f0da4cdb25873f4f1ac6fb
(cherry picked from commit ce54aa8a8408789ae21dc2091da12dec36e8be21)
2025-09-10 14:40:56 +08:00
zhou.xu
70e82e2a92 ENH:translate text
jira: none
Change-Id: I35a9607f12734569ba33e3f9cf392483425b590f
(cherry picked from commit 5ddcd39c7f2096dac869e92d556b8843aaca9806)
2025-09-10 14:40:29 +08:00
chunmao.guo
b3a320cc2e ENH: sync ams info to extruder group
Change-Id: Id0aace998a759c6e91aabb2685306e54e06d152e
Jira: STUDIO-9828
(cherry picked from commit 2bae63e3819bc2dc04dc64c1d53b10d2f04edeff)
2025-09-10 12:39:00 +08:00
tao wang
8e78915cd2 ENH:O1D hot bed temperature no longer checks voltage
jira:[STUDIO-9088]

Change-Id: Ia11154705770919694c58b908b3886fe3feb432a
(cherry picked from commit 7e16329d24c9e31ff5fc99eb74ab4b4b9a5e2b13)
2025-09-10 12:37:36 +08:00
tao wang
d6e86ad7bf FIX:multi printer control using ext pool
jira:[STUDIO-9610]

Change-Id: I32e7d6701f12e32facd5b0ac536129526582c954
(cherry picked from commit 44db9102ae538b0558ff7f14bfc588e59558ee5b)
2025-09-10 11:18:05 +08:00
tao wang
5d6638d395 FIX:confirm data validity before loading AMS
jira:[STUDIO-9577]

Change-Id: Id0e9d3eef5527f45f25c5b9e8c8fc6e1d109fe29
(cherry picked from commit 0ef08bc6289d8476d9adcbb5569a3ed38ff2df87)
2025-09-10 11:17:54 +08:00
zhou.xu
ee12c32b11 ENH:update SyncAmsInfoDialog
jira: none
Change-Id: I7549dd3334fd9bcc4eba5d3b41786516fd879f38
(cherry picked from commit 9b1717fa56b1d5baacc3801f23d1586050970574)
2025-09-10 11:17:47 +08:00
zhimin.zeng
ea06ea32f9 FIX: 1. add auto sync on connect printer
2. remove printer list in prepare page
jira: none

Change-Id: Iab4009c5249663f309221d3fcc02e0bd676e554b
(cherry picked from commit 19e8ab26481cfcc9b81dded0bc91c5075c940012)
2025-09-10 11:08:42 +08:00
zhimin.zeng
125ab80729 FIX: the extruder_id of cali is incorrect with N3S
jira: STUDIO-9888
Change-Id: I25c4a436e322923a247d1c6d3c3de9f0319bb420
(cherry picked from commit 13355ca669229839e8c8943f80cc50533256d0d7)
2025-09-10 11:01:27 +08:00
xin.zhang
b733133ef1 FIX: update the translation wrap; enlarge layout
jira: [STUDIO-9814]
Change-Id: I120c09b9b537fe670ace0f75d1b73c42372d2ea6
(cherry picked from commit 5c1916d3a173225ba6a44ef5f5a61a6e42a79792)
2025-09-10 11:00:51 +08:00
zhimin.zeng
b2c2289156 FIX: modify the wipe tower parameters
jira: none
Change-Id: I9b18166b83df71ace1585944741dffd18de42bbc
(cherry picked from commit 8df768a4479498fdfa82b227ce489006a09432ea)
2025-09-10 10:59:36 +08:00
chunmao.guo
d626c38ae7 FIX: something
Change-Id: I2923786337f97f4297b0444522c620891aa2ad90
Jira: STUDIO-9725 filament menu delete icon
Jira: STUDIO-9785 StaticGroup border color
Jira: STUDIO-9716 update badge icon
Jira: STUDIO-9815 click printer/bed panel for combobox
Jira: STUDIO-9867 label with for single noozle
Jira: STUDIO-9739 ams page up/down
(cherry picked from commit 1cde0b844a97f3420db4999927f05a833b92b0fb)
2025-09-10 10:43:06 +08:00
tao wang
5c2281bb07 FIX:fixed the disabled status of multi-color materials
Change-Id: I5472dc667fc81681af92a3b16e9fde9c8c1d9158
(cherry picked from commit e563b30b4d5c19e83cbd9c690ae6b9bd6d0bcfa2)
2025-09-10 10:38:30 +08:00
tao wang
b93140f019 ENH:update some Chinese translations
Change-Id: I884dd719b182c2cd702e3aa9880d3e94ed99bc69
(cherry picked from commit 45f9102b6883607f7e1ba58526a76de032bccc85)
2025-09-10 10:38:08 +08:00
tao wang
e7215fef59 ENH:redraw the ams preview item
jira:[STUDIO-9823, STUDIO-9609,STUDIO-9366]

Change-Id: I9bb71986e474257dc4d22fcb66706e4f61228e4e
(cherry picked from commit 538316469a07ea27bf7b5a2c8b6cfeb86c1cf97e)
2025-09-10 10:37:50 +08:00
xin.zhang
d11a793774 FIX: update hms files
jira: [none]
Change-Id: If7bd7c159fe05340b3863d09f4dd1d1731c8ab4c
(cherry picked from commit ade9688be9b3f3d353c370398787cdd5a1463ca3)
2025-09-10 10:36:58 +08:00
xin.zhang
b5dc52b00e FIX: sort the filament names
jira: [STUDIO-9825]
Change-Id: I29a313db9a012124888357008afea1ddba39a3e5
(cherry picked from commit 1a676645eb522821428cc3167bfb8ac43277e330)
2025-09-10 10:07:22 +08:00
Arthur
b3b19210b6 ENH: improve auto arranging of multiple single color objects
If two objects have similar area, sort them by extruder id.

jira: STUDIO-9760
github: #5738
Change-Id: I6041fef4d3bfccce767555ac382688eea59e73c7
(cherry picked from commit ac4873d97686135b773226eb3487f0cc8cfe0503)
2025-09-10 10:05:07 +08:00
zhou.xu
200a811dca ENH:add "text to image" function in TextInput
jira: none
Change-Id: Ibdb57b74511432e81faa0c556bb6e639d5a174f5
(cherry picked from commit 09323aeed34f29f105b95d3d6a2c7a151e17e42a)
2025-09-10 09:55:52 +08:00
zhou.xu
2e8a5ecd87 FIX:update SyncAmsInfoDialog
jira: none
Change-Id: I8c34d47e799c56e2b1887794dc8a7bfaf8904d77
(cherry picked from commit e06aed7cbf144cdd77f9b7caa160c1c7f7941794)
2025-09-10 09:47:00 +08:00
Arthur
7889dddee8 ENH: reduce 100% overhang wall speed to 10mm/s
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)
2025-09-10 09:35:38 +08:00
xin.zhang
20b10ead1e FIX: update some translation
jira: [none]
Change-Id: I6b87aaebe880c925df4bc2bb9234b53b15abb773
(cherry picked from commit 1ed22291281637a8f8d7631274ea2c9fd6ea7ac4)
2025-09-10 09:25:02 +08:00
xin.zhang
086da0d4a1 FIX: the icon diffs in normal and dark display
jira: [STUDIO-9786]
Change-Id: I935133161d3ecf09b72eb235bba335c5086e5674
(cherry picked from commit fed792d3794c28a2a80341e252e95d9db6a209ff)
2025-09-10 09:24:31 +08:00
xin.zhang
2878eb50f1 FIX: add a warning dialog
jira: [STUDIO-9715]
Change-Id: I376235de8a8569e63530eca914dc977a670a769c
(cherry picked from commit 4f1ad8016e11d5440127b45c48854c1ed2cf75aa)
2025-09-10 09:22:19 +08:00
xin.zhang
16a32d0cc4 FIX: wxCUSTOMEVT_SET_TEMP_FINISH triggered twice while press enter
jira: [none]
Change-Id: I356fc4c6649dfe332fcb419bde0339d340d89242
(cherry picked from commit 541f91acec10eb7813c3a2c43411407252ca7d63)
2025-09-10 09:21:46 +08:00
xin.zhang
c2a91c613d FIX: Can do switch while printing pause
jira: [STUDIO-9789]
Change-Id: I8d5d2195adcd2cd048d95303f0562f24b696e34e
(cherry picked from commit f3777db02d1ae61ff2ad996bf1dbb6c3aba8a1c3)
2025-09-10 09:21:38 +08:00
yongfang.bian
046685c626 Fix:step mesh using boost thread
github: #5304
Change-Id: I4afc5978b00eed20c46a1bf4100c9a0f0328daf8
(cherry picked from commit 151f40ad4dbf871576937f9674ac532c32df27d0)
2025-09-10 09:08:54 +08:00
xun.zhang
555e9e3ded ENH: update process profile for H2D
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ia157b81ad03083a34b7456998625682b6b69e6fc
(cherry picked from commit 2c1bcde53de8e125991307e653c49faa1c7430c7)
2025-09-10 09:08:34 +08:00
zhimin.zeng
63cefd9e05 FIX: fix error blacklist prompt
jira: STUDIO-9647
Change-Id: I66e4838c6462e7ca8a5dd6228df54ab98987e6f8
(cherry picked from commit 56651d75d1180c1e222a0b70c4931eff40245f08)
2025-09-10 09:03:20 +08:00
tao wang
919606110c ENH:optimize some layouts at different resolutions
jira:[STUDIO-9807]

Change-Id: I3d432734a6b3f494ed79d816b754d6d1cbcd3a0f
(cherry picked from commit d134b66446e5a9561152b6545fe79d19a70dddfe)
2025-09-10 09:02:43 +08:00
zhimin.zeng
10e676e439 ENH: Add prompt information when mixture of PLA and PETG
jira: STUDIO-9659
Change-Id: I03a09dd796074d0872010672bdd85688bb7f1715
(cherry picked from commit 903b230f389ac8fce2816a8d46a0675019af0b04)
2025-09-10 08:53:00 +08:00
Noisyfox
cb26af8477 Fix compile error 2025-09-10 08:04:34 +08:00
xun.zhang
260310e2fb FIX: white spaces in capsule button
jira:STUDIO-9769

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I7d9b7ab1483574f67bfd6cd25132d28295e22bc2
(cherry picked from commit 481199c6a24306a6f0e4d93e66b574cedea1e700)
2025-09-10 07:32:52 +08:00
xun.zhang
270c52b2c7 ENH: consider type when select best map for ams
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)
2025-09-10 07:32:41 +08:00
zhimin.zeng
c781f6f450 FIX: preset is incorrect when opening MW file
jira: STUDIO-9793
Change-Id: Ib1405c5badc4857a506ecea41ce4708eb2f83423
(cherry picked from commit e1d11d814ec0846fde047b54bfb2fadcd9303eec)
2025-09-10 07:30:47 +08:00
tao wang
9c7e3f864b ENH:hide the picture of the extruder
Change-Id: I7ca3e38570067ad769303d1d0d29d3bbde99a81e
(cherry picked from commit 15f33638a1017572aea3523e916328e47cb8861e)
2025-09-10 07:30:29 +08:00
tao wang
1052036719 ENH:allow fan control when printing
jira:[STUDIO-9700]

Change-Id: I3637705b8c9dfe1b35766bf35dab2a286ee1e7a1
(cherry picked from commit 8f5887735a31cffab94b27d937479bbcb5da487d)
2025-09-10 07:29:31 +08:00
xin.zhang
ff21ff5618 FIX: the calibration dialog fault
jira: [none]
Change-Id: I775ae45aa992fec281c6c5452c2ce9454b80aa4b
(cherry picked from commit 44e056932fcdf7c88e2ea55c78508c9bc9552b40)
2025-09-10 07:29:26 +08:00
xin.zhang
0803186472 FIX: update dark mode text color
jira: [STUDIO-9781]
Change-Id: Ief8c0d820beb698ae19057fba4ad21ef3278f6a9
(cherry picked from commit 20d62fe504e772d2e41d7a86989dc22faba10c15)
2025-09-10 07:29:16 +08:00
xin.zhang
34e06c2b4f FIX: the load filament steps shown fault
jira: [STUDIO-9684]
Change-Id: Ic238993302156788200482ed34e3092b9ab94dfd
(cherry picked from commit f8b4949353fbb4cead3249d5e8f6beb06859164c)
2025-09-10 07:27:48 +08:00
zhimin.zeng
9f831d7536 Fix: modify the max_k_value
jira: none
Change-Id: I5c2a9d00f63ee310cdc144521da6d37e70fd23d1
(cherry picked from commit 8c5a202f4ac05e8109e148e9ef32844f0dec6805)
(cherry picked from commit 0ab64d0ccecb038d7cc928c8ca0fe61911c93d0e)
2025-09-10 07:25:25 +08:00
zhimin.zeng
3decb8d4af FIX: fix some translation and style issues
jira: STUDIO-9777 & STUDIO-9726 & STUDIO-9717 & STUDIO-9720
Change-Id: I05e6df6bb1416988a1862fc589058241d5344a58
(cherry picked from commit d833ab7d48729b527748662872df1ec33567b5ab)
2025-09-10 07:25:19 +08:00
zhou.xu
217084d3c3 FIX:update printer_name status after change plate
jira: none
Change-Id: I35b0b1e739a6db580dc48f54ca59a9a6cb787d7c
(cherry picked from commit 60eeab896b279824e58823c3c45685ddf78f1cfa)
2025-09-10 07:25:11 +08:00
xun.zhang
7315b69b02 ENH: update trans
jira: NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Iec86e9f51c10d10f81764eef09aa81a3562bd273
(cherry picked from commit 69ff576c2d505030f2ee4d5b3154eeb8c219769c)
2025-09-09 17:22:41 +08:00
zhimin.zeng
04643255e7 FIX: back up the selected printer in prepare page
jira: none
Change-Id: Ibd163f78c4ce911a88459ecca96660ed4aa68ab2
(cherry picked from commit 392e8e18915d0db26ca8a3840d5783cc81cd1c1c)
2025-09-09 17:22:13 +08:00
zhou.xu
0ffe93a093 ENH:update AMS control
jira: none
Change-Id: Idae5c85cc6bd7948e413b5cea68a75ffa7aba005
(cherry picked from commit ad7fadceaa0e6a5a89421317a041fd09937d01c2)
2025-09-09 17:18:50 +08:00
zhou.xu
8b7bcc32de ENH:translate text
jira: none
Change-Id: I3d3ccde644cef0591dc1be318c3a1bfba1b9792d
(cherry picked from commit 55fbcad56e4d155e62bb300343fa0ab2d54119c8)
2025-09-09 17:18:28 +08:00
zhou.xu
b82bf9beba FIX:update text for SyncAmsInfoDialog
jira: none
Change-Id: Iae7a3edd6e8ac3353867158204da6a235680318f
(cherry picked from commit 8d84763c810b1e10bcdc2f6e37a746f22f3a3bad)
2025-09-09 17:17:13 +08:00
xun.zhang
fc09eb2138 ENH: temperoraily disable map dialog after slice
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I6d3d90db3508642e0e56015296d3efd50248bd05
(cherry picked from commit 3ddc30a60a36c531b004b7bacc0c583f9d6add3d)
2025-09-09 17:17:07 +08:00
xun.zhang
d674f49855 ENH: modify nozzle diameter sequence
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ia17f86e3f035ad9389d0f44f8378c822f8cc947e
(cherry picked from commit d3927a59e99ab5fc484934703d4eb08b0e728179)
2025-09-09 17:16:54 +08:00
xun.zhang
9732c0b845 ENH: some tip logic optimize
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)
2025-09-09 17:16:41 +08:00
xin.zhang
f97c9e3e7d FIX: update the display of switch extruder
jira: [STUDIO-9746] [STUDIO-9359]
Change-Id: I12ce46c935883e5dba709576b944275af547d3dd
(cherry picked from commit 80b5e4f4d637d1daaebdc784ef2d8eb5a8e25193)
2025-09-09 17:06:38 +08:00
zhou.xu
622d11cd17 ENH:add "Sync filaments with AMS successfully" notification
jira: none
Change-Id: I1fac8e617eff8553e1c0a43c687f736beb3f3b19
(cherry picked from commit fca8946145b71c85a9cd11804c7e955f2d0df924)
2025-09-09 17:06:02 +08:00
zhimin.zeng
4a6b8c4146 FIX: The name in cali save page is not displayed for multi_extruder.
jira: STUDIO-9721
Change-Id: I8906b2d401f87f5ed2f7d143196708251bb2a02e
(cherry picked from commit bd5111f12feac83729f2d652a293b4f4dde5b7e8)
2025-09-09 17:04:53 +08:00
tao wang
8a58583122 FIX:fixed fan control issue on macOS
Change-Id: Id5b31ad46d3cb521b2d5252e6656037605e11d73
(cherry picked from commit c0899e05eff3dd906cc8ee5d8353a9abcefedaa2)
2025-09-09 16:53:40 +08:00
Kunlong Ma
9e16287b21 FIX: hide fan when device not in fdm
JIRA: none

Change-Id: I14a6e01b4e0950ca1bc3c805fe00313cfd7caf06
(cherry picked from commit c12b4f13911a7f6057eced54dba9e41cf75985ea)
2025-09-09 16:52:44 +08:00
zhou.xu
632281fcc0 FIX:update left_extruder_only_area.svg
jira: none
Change-Id: I00728c87faf75a24233edd5f9ba1595b1fe2617a
(cherry picked from commit 5bd6cf87e271a40326153fb0614b33178e16a0c8)
2025-09-09 16:52:37 +08:00
xin.zhang
6c57be89d2 FIX: update HMS files supply for duzhong
jira: [none]
Change-Id: I93bb103d4fbebe3f35986a0c08147614b62cfc00
(cherry picked from commit db6f52187bd5d38ed22cdbbe95f798427f941549)
2025-09-09 16:52:31 +08:00
tao wang
8d5ee46a3c ENH:reset the filament loading status after change printer
jira:[none]

Change-Id: Idc25491752ab979cf96962345f0c28b7b81ad4cc
(cherry picked from commit ef09f8ee91f9ea05e97e496e90047865927782d1)
2025-09-09 16:52:22 +08:00
tao wang
dc5844df33 ENH:Optimize the display of AMS(for macos)
jira:[STUDIO-9569]

Change-Id: I6838b17358b1eb987152ea984c6a31af03a7ef67
(cherry picked from commit 1f7f2dcc46d93ec4e73908880c94140b9d36f390)
2025-09-09 16:51:35 +08:00
xin.zhang
3fd3253e5a FIX: the filament load step is different
jira: [STUDIO-9684]
Change-Id: I3145d86ad5f6fccd54ab3116e14bcbcbbe1134cf
(cherry picked from commit 37c0e0e1c5bce00250ffaf7c27e8f42f5108e361)
2025-09-09 16:51:30 +08:00
xin.zhang
b7a8c28b1c FIX: refresh the preview when changed
jira: [STUDIO-9576]
Change-Id: Ic742fa3dd5011dbafc0353b20039b2f33df8d300
(cherry picked from commit d1e50a4e7020b46374d24a16e4520c97b28d51b6)
2025-09-09 16:51:25 +08:00
xin.zhang
0d528d2f17 FIX: the dialog display fault
jira: [STUDIO-9730]
Change-Id: I6ecd12c4ac4710ea63868963a806b219298c86d0
(cherry picked from commit fbb9ebcf7d7964cf476bb4d1fb40531d4df2db77)
2025-09-09 16:51:19 +08:00
xin.zhang
9c6b57f3c7 FIX: copy and override HMS files
jira: [STUDIO-9570]
Change-Id: Id2a1002a484e40c835d3dc54262ca0e9c84d20c6
(cherry picked from commit 1e6e376a150722785884bf1fc6a3c50bb6d8cd84)
2025-09-09 16:51:13 +08:00
xin.zhang
e0940cb3e9 FIX: update the HMS resources
jira: [none]
Change-Id: I3a6c02a559b6d660b325a49d551f4ca8139885bc
(cherry picked from commit fcb8e8deaf2eeaa7a2f4b321231b46ae87873d4f)
2025-09-09 16:51:07 +08:00
lane.wei
42c1005e76 ENH: using shared area for fillbeds when obj is small
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)
2025-09-09 16:08:12 +08:00
xin.zhang
c015a56f24 FIX: update the calibration dialog
jira: [STUDIO-9769] [STUDIO-9547]
Change-Id: I29149a978b86c27b244690083e0c3bb96566e60b
(cherry picked from commit 329807156a1d5aa60069beb3ae62527e8295bfc7)
2025-09-09 15:42:10 +08:00
xun.zhang
1f3ddf2bc9 FIX: missing conveinent mode in dark mode
jira:STUDIO-9565

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I1ad34bafc0a86c40644e664abf160fe225a67ab9
(cherry picked from commit 6aee70b9674875a392cb9264657f8e1ee16c3811)
2025-09-09 15:41:47 +08:00
xun.zhang
24c80fed57 ENH: enhance unprintable filament check in height
1. Detect unprintable filament for each extruder by printable height

jira:STUDIO-9630

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I7731196d96745af935d0a34961f035b458b27ec5
(cherry picked from commit 459671dcb687eb0640ac64fdb5f0dab1802a7eb4)
2025-09-09 15:41:39 +08:00
xun.zhang
ed6f2eb39c ENH: update some params for filamnet in H2D
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I1171dbf41f840bb0a59045c70a811a5da2bbd694
(cherry picked from commit 6b13655f9dbd87d1f1bf0f0d62346b2043e3890d)
2025-09-09 15:41:33 +08:00
chunmao.guo
80c4891926 FIX: support maximum 999 recent projects
Change-Id: I2465990583a1295f40e3c4c6ef9237657e38a91c
Jira: STUDIO-9107
(cherry picked from commit d29fa512acd0c21255fbf8d6f5f0488214677e83)
2025-09-09 15:41:25 +08:00
zhou.xu
8fcbe52770 ENH:translate text
jira: none
Change-Id: I41b48933f49f4825cd527c27876aa3e6ed629d97
(cherry picked from commit 56da788d953d46a1c47f126137775ebadc52d923)
2025-09-09 15:40:51 +08:00
xun.zhang
19b466ccf0 ENH: add global map mode tag for pop up
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)
2025-09-09 15:40:26 +08:00
zhimin.zeng
ea759fdc90 FIX: highlight sync button when the info is inconsistent with printer
STUDIO-9603

Change-Id: I1fc8954e8becce1d382e7559abc03537442613f2
(cherry picked from commit b16f9c20f428d07a71e8233a9709d4b18665b65b)
2025-09-09 15:40:06 +08:00
zhimin.zeng
5c4e8ca25f FIX: fix the drawing problem caused by timelapse gcode
jira: STUDIO-9620
Change-Id: Iaa1af887e646a136e657ccecabe3c8e6824131b3
(cherry picked from commit b028f971d663dcafd63b0ce92cc9b606b7c9cf37)
2025-09-09 15:39:55 +08:00
zhimin.zeng
ccc52c20c9 FIX: modify the H2D picture
jira: STUDIO-9592
Change-Id: I18a8a75ee77bf828bf148c4f7d49f6603141789c
(cherry picked from commit d3f9723349dbbb3194a45a125e94065fc7d87924)
2025-09-09 15:37:41 +08:00
zhou.xu
e2d86888b5 FIX:add mode for syscAMsInfoDialog
jira: none
Change-Id: Iabfc9953f86cd08a2357a9197d6e1afe8d781d9f
(cherry picked from commit eaeac42b19b322f56b501c0d2ce99c4a6b2fd050)
2025-09-09 15:35:19 +08:00
xin.zhang
ed3175f7a0 FIX: disable the extruder switch while printing
jira: [STUDIO-9648]
Change-Id: I027bf7f72b77c35422b2d904f3b0839dcbe3669e
(cherry picked from commit 27d5ca4ac6a8eb8aa938d4537bb2902c21a9cd82)
2025-09-09 15:33:57 +08:00
xin.zhang
c04d50f885 FIX: safe the ams_id traverse
jira: [none]
Change-Id: I58b7769f843f3dbef8b51a15768711257f590dba
(cherry picked from commit f0efb9af0d1f5df72f2b43d8ffef581d177c49a4)
2025-09-09 15:33:39 +08:00
Noisyfox
1a27e545a6 Fix compile error 2025-09-09 14:55:29 +08:00
chunmao.guo
b1b9c02368 FIX: something gui
Change-Id: Ia5ed59d2acca441030a917ae6867cca70bb2231f
Jira: STUDIO-9705, STUDIO-9714
(cherry picked from commit 7bf976babc8d12118200c5ebe8f1df976d269199)
2025-09-09 14:41:24 +08:00
xun.zhang
a7578be62f ENH: update gcode for H2D
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I8b33061aba2ba142bc435c56148e3a5ac500e413
(cherry picked from commit 17706151445e94005ccad956c473daee0b576aa7)
2025-09-09 14:41:24 +08:00
tao wang
92db9ad8c5 ENH:sync AMS does not checking version info
jira:[STUDIO-9692]

Change-Id: I76be87fe219ddd79cae27a7cf5c05315efb0b331
(cherry picked from commit 8f2ab037fd97ead60f8d941c90230306e9227d95)
2025-09-09 14:41:24 +08:00
xin.zhang
25900bb917 FIX: can not send print since the param fault
jira: [STUDIO-9724]
Change-Id: I1e8870e6e0b182ed6c026784b169cfcf56c56e4c
(cherry picked from commit 181316374321822da231612cc7e87f77395a20ac)
2025-09-09 14:41:24 +08:00
tao wang
eeebaa3f74 FIX:will not be selected printer again when leaving monitor page
jira:[none]

Change-Id: Idf4c5ff385b0333bcfa24b68ecce01d460f53eec
(cherry picked from commit 7b9c9345ace2504526771ac991be436ad8eb9ee8)
2025-09-09 14:41:24 +08:00
tao wang
5eeea0beba ENH:fix mapping rules when printing from SD card
jira:[STUDIO-9699]

Change-Id: I6019875b312cd29d20d69c876d195e5da1a88d18
(cherry picked from commit 062d4745dd9d19c62b618235ef819f247e538e68)
2025-09-09 14:41:24 +08:00
xin.zhang
63a796e14a FIX: clear the previous status
jira: [STUDIO-9690]
Change-Id: Id1df7d7998ac2a03c98514e447bc0ecefcb920b7
(cherry picked from commit 9744d9a6b1505cc7014963f4859f0315a0fdacfa)
2025-09-09 14:41:24 +08:00
xin.zhang
d6fc1826e3 FIX: parse the local HMS file with diff structure
jira: [STUDIO-9617]
Change-Id: I023f84cdf1cc30126871fee19c1bb94d89a25814
(cherry picked from commit 5377e994a4803c53fcc635266dda7e78e97d0c34)
2025-09-09 14:41:23 +08:00
zhimin.zeng
6ab141e0e1 ENH: add PPS-CF/PPA-CF detection for multi-extruder printer
jira: STUDIO-9660

Change-Id: I1df024e178b8561569b493888d6057d8f96aea3c
(cherry picked from commit b68a7b3bd6ad5c980885fbaed3c635ae1a424f73)
2025-09-09 14:41:23 +08:00
Arthur
0c27260cda ENH: set H2 series' best_object_pos to 0.3x0.5
So objects are auto arranged near the chamber fan.

jira: none

Change-Id: Ia7c76c0b048fad51728d2b24c9dd6530c8c30497
(cherry picked from commit 0f37893bea4961e1461df0c55bb4ad95bd4fb17f)
2025-09-09 14:41:23 +08:00
xin.zhang
cd1c06de26 FIX: upgrade is not available in LAN mode
jira: [STUDIO-9691]
Change-Id: I22c2403c62d889194cc1d738576f92e90762463c
(cherry picked from commit e55b2159c5df43f16af9d8d6719277707f996bf2)
2025-09-09 14:41:23 +08:00
xin.zhang
cf90949a34 FIX: update the latest HMS resources
jira: [STUDIO-9617]
Change-Id: I39eacc70067e58916b16433031fdc69af7b379f3
(cherry picked from commit 48c7d6b77018946db3246e4cbfaf0a81a0ec009f)
2025-09-09 14:41:23 +08:00
xin.zhang
28439b3650 FIX: the dialog continues popup
jira: [STUDIO-9680]
Change-Id: I9c12db6b9b1223fc611f980529814a71249b4080
(cherry picked from commit 29bbc0aa413872c11af50ecd8c8b3dbe20db215a)
2025-09-09 14:41:23 +08:00
chunmao.guo
ab986945be FIX: something with gui
Change-Id: Ia9007ea0f446f6d83031cc2c4091db06bb5762d7
Jira: STUDIO-9482, STUDIO-9579, STUDIO-9545
(cherry picked from commit 53e9661372cf63b87d2f9605d4131eec0ecaa82c)
2025-09-09 14:41:22 +08:00
chunmao.guo
a8d10da9dd ENH: show printer preset short name
Change-Id: Ice1f30ca9dae1363afa2971039af514d8dd5af11
Jira: none
(cherry picked from commit d6181c25b342623176b2db1f21181dc655e64a4e)
2025-09-09 14:41:22 +08:00
xun.zhang
56d40ca24f ENH: refine time estimation in filament change
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)
2025-09-09 14:41:17 +08:00
xun.zhang
74cf5b424a ENH: enable pop up when slice btn is disabled
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)
2025-09-09 11:27:29 +08:00
xin.zhang
f8cd89fdee FIX: support internal HMS
jira: [STUDIO-9617]
Change-Id: I5c073966244171a85f43e4bb014b02c00886fef3
(cherry picked from commit d5a8675badce0400dde4e3a2e9956c65d8878cf2)
2025-09-09 11:24:16 +08:00
zhimin.zeng
54b8fab63a FIX: fix bug when enable timelapse
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)
2025-09-09 11:24:09 +08:00
zhimin.zeng
29f9b4e9a7 FIX: not need check nozzle type for X/P/A
2. modify the ams color
jira: STUDIO-9643  STUDIO-9572

Change-Id: I75ddffc6aa18d9b88df823170c44cfe6af905d03
(cherry picked from commit f4bcbfaf4a8594f30f2809cf1c7109824f581f1c)
2025-09-09 11:24:02 +08:00
Noisyfox
950bb297f9 Fix compile error 2025-09-09 11:19:39 +08:00
Kunlong Ma
1dc6882b90 FIX: fix send sd card with cloud issue
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)
2025-09-09 11:09:31 +08:00
tao wang
35bc6da4bb ENH:folding filament loading area
jira:[STUDIO-9598]

Change-Id: If5c1bd12aa3307f0bda640361352f079a1851b91
(cherry picked from commit ff4fc92c6cdde91b2d078109be0f2b3ace2cce89)
2025-09-09 11:07:22 +08:00
tao wang
5cbb201469 ENH:fet the correct Agora status
jira:[none]

Change-Id: Ic779e41f0b652212aa8e4ce016cfe1ef2aba3608
(cherry picked from commit 1c1b366d0035298b387fbeb3a7ee69ef4afb8e2d)
2025-09-09 11:07:10 +08:00
xin.zhang
b5a3e0e29c FIX: optimize the GUI dialog
jira: [STUDIO-9580]
Change-Id: I01bb5b116f472d2b5de51cdff4f074aca2f3447c
(cherry picked from commit 98f076c04949c0df588b66ae1dfc2ad1fabc99f3)
2025-09-09 11:05:45 +08:00
xun.zhang
897a78ce9a ENH: refine the logic of filament map dialog
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)
2025-09-09 11:03:56 +08:00
tao wang
522a8b63d1 ENH:disable switching extruders when printing
jira:[STUDIO-9624]

Change-Id: I75322fae98d8e42b9ee9a9d85d60be19a1a7686c
(cherry picked from commit 3060a8606a39a09fd7d9f785788d5424c19f8d08)
2025-09-09 11:03:18 +08:00
xin.zhang
f9144e29c4 FIX: try fix the image shown problem
jira: [STUDIO-9627]
Change-Id: I78e83c5072c8be46df7300703072554dc6e1fce9
(cherry picked from commit 6b9d9b5ed7d7cb2664647face05b76a2726fa85e)
2025-09-09 11:03:12 +08:00
zhimin.zeng
b61670a503 FIX: cannot continue slice all when sync extruder list now
jira: STUDIO-9613
Change-Id: I1ce6953f4a802051a9ee9464518b55e9fc1f8e2b
(cherry picked from commit 74f189e807b50db00f185dad499bace51b3ee8ef)
2025-09-09 11:03:06 +08:00
zhimin.zeng
9c7db003f5 FIX: swapping high temperature plate and texture plate icons
jira: STUDIO-9442
Change-Id: I5b3a510bf48831048bd30921a64212e4a1b18098
(cherry picked from commit ccd993b63d68b1fc0ddef5cf03a73f65e8bc584b)
2025-09-09 11:02:55 +08:00
zhimin.zeng
1b442e2c47 FIX: add printer picture for H2D
jira: STUDIO-9592
Change-Id: I1e6b0cc04f3dba8578b5c59eeb1d24ba522f0c72
(cherry picked from commit dec14c4bac748c894c91d796eeaf1ee698973b12)
2025-09-09 11:02:36 +08:00
xin.zhang
4c7dca1a0b FIX: update some text and images
jira: [STUDIO-9548] [STUDIO-8978]
Change-Id: I7cb42c5afd91cd4f3c1d751fbaef5f4d6251c0e6
(cherry picked from commit cdf10bc27aa7deb29bd78beda2d49df84d19e502)
2025-09-09 11:01:35 +08:00
xin.zhang
f50534eeab FIX: the temper icon is not visible
jira: [STUDIO-9574]
Change-Id: Ia42aa20eb085807c753495acb7f046056081df9d
(cherry picked from commit 0ba1166e79f8c7e3d5a31b1d6c7a10659ae28145)
2025-09-09 10:48:58 +08:00
zhou.xu
32e0d8a5c9 NEW:add bed texture for double extruder
jira: none
Change-Id: I7608ba5beec6e598f53ceca9e23301f258466593
(cherry picked from commit 886705237446380191c11b9347fd1c732775e51f)
2025-09-09 10:48:43 +08:00
zhou.xu
94ac262624 FIX:fix bug of m_is_add_filament
jira: STUDIO-9625
Change-Id: I5810ba9234d52391777a05f37c765d5bddd152ee
(cherry picked from commit 02bfa2b0792bc1eb4527f13e4210dccc9430a816)
2025-09-09 10:47:26 +08:00
xin.zhang
8f71f55202 FIX: add protection of empty HMS folder
jira: [none]
Change-Id: Ie963c58d525f8a40543104dcdb4f9ee3b188a03f
(cherry picked from commit 126d5a14ee72163c5d48baf7acb4131c335f69cc)
2025-09-09 10:46:43 +08:00
xin.zhang
2cbf14fdfd FIX: update HMS to support multi-type machines
jira: [STUDIO-9582]
Change-Id: I5ad4083d666db4237d355ac8bd8160afb8e8a35f
(cherry picked from commit 954a27016953bcf4f07b2a3e14ac1f5faf68c644)
2025-09-09 10:46:37 +08:00
xin.zhang
e785282ecf FIX: the extruder diameter check fault
jira: [none]
Change-Id: Ib5719996b0b660bb68ab20c7c38cc6b2ce3a9286
(cherry picked from commit 0bbc185b712777abbd5b36376cae926d100780af)
2025-09-09 10:46:29 +08:00
chunmao.guo
583edf1e32 FIX: something
1. split translate filament_extruder_variant
2. printer sync icon dark mode
3. translate Extruder 1/2 to Left/Right Extruder
4. parse error code from get_camera_url
5. smaller printer bed image

Jira: STUDIO-8542, STUDIO-9056, STUDIO-7681, STUDIO-9487
Change-Id: I8a10fbe4e6d17e7a3e35e8846e3d964084d07f50
(cherry picked from commit 626256beb6fb8a90a99578b5208cb588ead5dd80)
(cherry picked from commit 9c81c2cf5e0e50a65c99903445734e0f16529198)
2025-09-09 10:44:41 +08:00
tao wang
7f1d86c2bc FIX:fixed the issue of didn't selecting printer on sending print pages
jira:[none]

Change-Id: Iabafeff76b35d7e95c330a987baee6f3e0254923
(cherry picked from commit c77341acc5ba9c8460e346172c16572cd22017c8)
2025-09-09 10:43:21 +08:00
xin.zhang
b09a8ef2a9 FIX: the API return wrong extruder number; remove the assert
jira: [STUDIO-9532]
Change-Id: Ia91a1d277e35f17588de417aee68f418eceb0a11
(cherry picked from commit 2034cadb562d2d4f39a84d0e7c72bc02a23a5f3e)
2025-09-09 10:39:45 +08:00
xin.zhang
94ceb3e0a7 FIX: modify the words to recognize Standard flow
jira: [STUDIO-9531]
Change-Id: I827577b00e7245fe4d11d34c5736c57c815ffe5f
(cherry picked from commit 8aa7c070d3f1d7e1c1b24805278d9faec9a93da2)
2025-09-09 10:39:03 +08:00
xin.zhang
961ad3dbc7 FIX: the extruder image do not show in mac
jira: [STUDIO-9504]
Change-Id: I8457b6beaccc30492e1275926a7213c8ce328d15
(cherry picked from commit e86b061473799e34efce53abeb8954e591d87836)
2025-09-09 10:38:56 +08:00
xin.zhang
f4f4a3da12 FIX: update the machine list while selecting machine to print
jira: [STUDIO-8235]
Change-Id: I97529089339fcf25776a324c77ab6c77a67bcae9
(cherry picked from commit d994fa4b907755a9cb91c1e454455bd9e7a23b51)
2025-09-09 10:38:35 +08:00
xin.zhang
7c7c2e23cc FIX: support HMS json for 094
jira: [STUDIO-9512]
Change-Id: I2b9a0d696137367a00850c9dc07ee77a14e3b772
(cherry picked from commit 34a136b283a5a4b86444b29b0f7d7531ec349cb7)
2025-09-09 10:14:39 +08:00
zhou.xu
3e9a8b8b3a FIX:add error deal:mtl file lost some material
jira: github 5687
Change-Id: I2394d27b027cfe34ac3cb260735aceaee65ff6d9
(cherry picked from commit 58f9c7d0b2800c4b8b67991f5d3e43d57a6cd1eb)
2025-09-09 10:14:19 +08:00
zhou.xu
e36e7089eb ENH:Optimize interface of "obj import"
jira: none
Change-Id: I7c80fa21895081150a48eb75293a3f3429f9916c
(cherry picked from commit 40d9c20b0d95e9be74c74052835965685776ce9a)
2025-09-09 10:00:03 +08:00
zhou.xu
926c22b797 NEW:add "obj preview thumnailData" function
jira: none

Change-Id: I688c2f05bf85fca376418115acddb5066ef980eb
(cherry picked from commit 16f2b2bcb5fd157f25aa7012dabd99a8d31aec07)
(cherry picked from commit 7cc21b5e9745a84d75ea13b66f5653520bb1cba3)
2025-09-09 09:39:43 +08:00
lane.wei
d4d86a5966 ENH: CLI: add support for colored obj
jira: no-jira
Change-Id: If9e698d60b71e8835a3ae46c75e9c8c2878556a7
(cherry picked from commit a2b2ec9cb80e3bafabd07a377aff9e11188be346)
(cherry picked from commit 201d3b18cc9d482192c9962717527f9e12ed6603)
2025-09-07 23:58:51 +08:00
zhou.xu
cfa00b938f NEW:active "import obj color" in command line
jira: none
Change-Id: I8bc5d4a1eea116305037b8194ff1d2e8aab83ce9
(cherry picked from commit 7df9f9d27d174b30a54ed27756d4a4a157557019)
(cherry picked from commit b97d44dae4854c342b835d3fd5265a22aec5d174)
2025-09-07 23:58:35 +08:00
zhou.xu
b54c5769ff ENH:reduce unnecessary filament in obj import
jira: none
Change-Id: I417b889204e4fa6f9dc2860695ef71518a5f6095
(cherry picked from commit bdde293d45de5e90d096e4856dcc6fde671528b3)
2025-09-07 23:55:07 +08:00
zhou.xu
e9cd160ae7 FIX:plate number corresponds to plate number in 3D
jira: none
Change-Id: I632e3e3330bddcc7744de8ebc69900feb57e1b41
(cherry picked from commit 5d30cb58834a0b9839f557644bb6c6a9689e12b4)
2025-09-07 23:27:40 +08:00
zhimin.zeng
73fe8b8a87 FIX: modify the text of calibration
jira: STUDIO-9499
Change-Id: Ie4ccde7e9e2d0aebdc604da74716036954445be8
(cherry picked from commit 6b90e5b877cc861f9ea66065d5e9079c0189a538)
2025-09-07 23:27:35 +08:00
zhimin.zeng
ca70cfd8b8 FIX: the wrong alignment of wipe tower perimeter for some model
jira: STUDIO-9133
Change-Id: If7771ccaf383e2abb4ff738c83e4b638315f274c
(cherry picked from commit 0121cf2d691e0c8880e49a5933f65956f02c4a2f)
2025-09-07 23:26:59 +08:00
tao wang
9b49c69693 FIX:fixed SD card printing mapping issue
jira:[none]

Change-Id: I809a306701d60b9d9a069be70b11ae707e3c3544
(cherry picked from commit 29acfabeab379d13b4d4fe6afc8600bc35dc6e64)
2025-09-07 23:26:48 +08:00
chunmao.guo
b6b6ef57da FIX: local file proto
Change-Id: Ie45dc223a027e3855f1242bfeed2f346b1df600f
Jira: none
(cherry picked from commit e709ddacc8388970b62b62f1958736e13c4dca96)
2025-09-07 23:24:44 +08:00
chunmao.guo
ef5463f9fe ENH: call Bambu source deinit
Change-Id: I7b96056aabe7a894c66fcaf61e24f783f5a1e217
Jira: STUDIO-7666
(cherry picked from commit 9f85798a0bc8d02b3f0a30fd42934f58b48e67e9)
2025-09-07 23:24:38 +08:00
chunmao.guo
f2022f431b FIX: reset bambu lib after restart network plugin
Change-Id: I4a3a4b7420745835ca3fa00c6edebe9d8d98cbf6
Jira: STUDIO-7571
(cherry picked from commit 28d9c6743fae80bfd40e4ee391e30d62cb16d4ab)
2025-09-07 23:19:41 +08:00
tao wang
ac3ead14d2 ENH:optimize device page lag
jira:[none]

Change-Id: I0f6f1b257922d0e25152df9d42814551fa4a89ae
(cherry picked from commit 570751668e120b92953593c38bf2469474e98d8f)
2025-09-07 22:50:48 +08:00
zhimin.zeng
048f91be5c FIX: fix crash when the preset name has Chinese characters
jira: STUDIO-9096
Change-Id: I8925a9ed5c39c52515a581bd824fa57bd6823164
(cherry picked from commit 901a3bf66610cc901b9f368b31383baec02127d8)
2025-09-07 22:48:10 +08:00
xun.zhang
1d32826aa5 ENH: modify process profile for H2D in high flow
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I966843e45fb3243b35e84137c78b786ce3d2e7cd
(cherry picked from commit 5980be0fd7e5a04fda0bd0b5b501455942245381)
2025-09-07 22:48:01 +08:00
xun.zhang
4a0d0a412e ENH: update fan related settings for H2D
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I9ea172f676b22d5a83c2dd57caa1549192b1c3a5
(cherry picked from commit 4f5b6275f552c970e16cb570ddf61903b5738bfe)
2025-09-07 22:46:20 +08:00
jiangkai.zhao
ea2d23c718 FIX: fix some bugs in wipe_tower's skip points
jira:none

Change-Id: I387a168ccfe65032b3b926d02d8da4ab7aed317e
(cherry picked from commit cbcee1b79876b14a04e069fc6072f174c854f0cf)
2025-09-07 22:46:14 +08:00
zhimin.zeng
307d51d903 FIX: initialize variables is_tool_change of wipe tower
and and modify the start position for tpu
jira: none

Change-Id: I75b09e7839ddd3b9fffe77392e573e1d8caa00d5
(cherry picked from commit fce47aa8cb59fb718ff30a7c7eebda30fc83119d)
2025-09-07 22:46:04 +08:00
xun.zhang
4970db4ee2 ENH: modify fan speed for bambu tpu for AMS
Set fan speed to 40

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I861f78e2cca4b31daf41e2cba0a4b9b11a658a5d
(cherry picked from commit 4a087ef78070af66d7551aacdca74c9a2d4463f2)
2025-09-07 22:45:59 +08:00
xun.zhang
4cec1cd79c ENH: update plate temp for asa filaments
jira:none

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Icd88b23c9e1b5027f5aff4aeba594e953aed9ac4
(cherry picked from commit 5034222197181808a622d7eaa0117b4595676d01)
2025-09-07 22:45:32 +08:00
zhimin.zeng
612c8c28df FIX: modify the timelapse gcode
recover the y position when timelapse gcode end
jira:none

Change-Id: I80b9b65395722e0190aa7d50bb064e095d8ec09d
(cherry picked from commit db5e28ddaa1d4d7c58888d817dd77c176556e106)
2025-09-07 22:44:55 +08:00
zhimin.zeng
57a067213c FIX: fix error start pos of wipe tower after tool_change
jira: none
Change-Id: I770030fb624e9c9de3bb0f8fcb4f3c29cab4f347
(cherry picked from commit 085995b3aa5dbadd7fd274babb99856f0791882d)
2025-09-07 22:44:47 +08:00
xun.zhang
385e5b24f9 FIX: increate filament idx in print apply
1.Used filament idx is 1 based

jira:STUDIO-9523,STUDIO-9522,STUDIO-9513

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ic669a079660b49cb71fb8c4750cae5f7874d825d
(cherry picked from commit 59907ef532c60ffe6a46dd5e1a5ff9d39fdc1591)
2025-09-07 22:16:58 +08:00
xin.zhang
a7c6b384e4 FIX: do not show refill if there is one tray
jira: none
Change-Id: I2623ca6d565716a9d3950af21175f4799800b956
(cherry picked from commit 920736cf4e5b561f95738f4614b243c61b54b488)
2025-09-07 22:15:53 +08:00
zhou.xu
d72075fbd6 FIX:protect null pointer for "MaterialItem *item"
jira: none
Change-Id: Idc07a461d06f0dfd4ce44833b4c73231f8aafa5e
(cherry picked from commit 6631afc05a5ffc95867fc72fdc963fe2db1d293f)
2025-09-07 22:15:47 +08:00
xin.zhang
d6c92423d7 FIX: update some translation
jira: none
Change-Id: I7bc210c054480ce5d2b10d714a7dfd63699dfed9
(cherry picked from commit 9e29cd3d213b1c63e7fcb4fce6664b8a1bc31956)
2025-09-07 21:57:37 +08:00
zhou.xu
7a19b7a9b4 FIX:add "is_new_project_in_gcode3mf" api in .gcode.3mf
jira: STUDIO-9437
Change-Id: I5deb03cb535d3099ecadb1ce626fc632f65cd814
(cherry picked from commit 60fde9ca0135acb6c67302aa929f3fe975044c59)
2025-09-07 21:56:08 +08:00
zhimin.zeng
b2c59ea0e4 FIX add prime_tower_skip_points parameter
jira: none
Change-Id: I696d6ca5d9bccf16b48110157cd6ec44839a05e8
(cherry picked from commit 9b5bbebf311c2d8d68ec89aeda3ddae2b267692e)
2025-09-07 21:55:17 +08:00
zhimin.zeng
b0f602ba1b FIX: timelapse gcode is not effective when print by object
jira: none
Change-Id: I36298c7c0ddea59f4cc9a5a1a19aeb7124bb2565
(cherry picked from commit e34940024f44ba76d76229346b3c913e6caa14f1)
2025-09-07 21:53:00 +08:00
jiangkai.zhao
70151fed7c ENH: Add gaps in the outer wall of the wipe_tower
and modify the path of travel to the wipe_tower after flushing

jira:none

Change-Id: Id4b0571fd12372c59cf522c13e256c7cc4ac3565
(cherry picked from commit 17771d0fbf753dd22411ce490586958bd643264e)
2025-09-07 21:47:16 +08:00
zhou.xu
4e0e04af96 FIX:exist null pointer
jira: STUDIO-9510
Change-Id: I64b13d7d4faa29715cd465501f166c8a0b966697
(cherry picked from commit 7d4e48aa8353a387e46f9106c030f7d3c2623958)
2025-09-07 21:38:32 +08:00
xin.zhang
9648adacc5 FIX: The ext ams display fault
jira: [STUDIO-9312]
Change-Id: Ia1f9dfd0d77ad0a7db2652a3c893d3b62a51bb93
(cherry picked from commit 8af0503e307e9f2a051b6eb73b3e4bfa14bf6bfc)
2025-09-07 21:38:24 +08:00
zhimin.zeng
e013019b11 FIX: add timelapse_gcode for H2D
jira: none
Change-Id: Iab0248c22963ca7d0dc75fc03d2ccda147059226
(cherry picked from commit c141ed25f5888f0bdd059d5fccb1c69890996fc0)
2025-09-07 21:37:50 +08:00
zhimin.zeng
793e3812d9 ENH: add timelapse gcode for multi_extruder
and add most used_extruder for print by object
jira:none

Change-Id: I021069e865992828b098d73c0d704ba7edbd55d8
(cherry picked from commit ae62f7b8e4b4258318c0d941963eddfb70e86c15)
2025-09-07 21:29:19 +08:00
zhimin.zeng
b3edd30bf7 ENH: wipe tower add solid infill for support filament
jira: none

Change-Id: I438e06b5e50259d5a9caefbc0d8580187c2b7051
(cherry picked from commit 8a6b9851dbca4162799960074ffe304b02a8b077)
2025-09-07 21:01:06 +08:00
zhimin.zeng
0112d0ce41 FIX: modify the picture of cali for multi_extruder
jira: none
Change-Id: I58e5674a1d25f6153785217e1bb4bf85246d56ce
(cherry picked from commit c87f7a5957aa41b55055c2b5b7ac64f72f3408d5)
2025-09-07 21:00:26 +08:00
zhou.xu
ad79ed6d93 ENH:add "SyncAmsInfoDialog"
JIRA: none

Change-Id: I8e26178f6da816e102a40b429c565696924c58ea
(cherry picked from commit 2a46460d5a65279cbb42c8aef2474172b1e1ae30)
(cherry picked from commit f7995d5a9f682107bd629841e2f903b0e6a0e7f2)
2025-09-07 20:55:54 +08:00
tao wang
417454a4c5 ENH:allow RFID for all AMS
Change-Id: Idb0b2eb71307748f3448f9746696cac946345df7
(cherry picked from commit ae5df57d385d7170e9c7230d9deca32e9d24dfb6)
2025-09-07 18:58:57 +08:00
zhou.xu
28e55e4ec8 ENH:move get_extruders_colors api to plater class
jira: none
Change-Id: I8c2b31d4963b01cb193b7f2a2a3650cf7252ebc5
(cherry picked from commit 3eeabc0722027b789c59130762bd57c2745cf188)
2025-09-07 18:52:14 +08:00
zhimin.zeng
e5b8039817 FIX: set wipe tower to default position when switch printer
jira: 8468
Change-Id: I6ad489ed127635115c050a40329757afc568135d
(cherry picked from commit c63351a165b334978a3f09bf95fe2c63056ec53a)
(cherry picked from commit 8214f92dc88f1885e36e5d91c3f13508e35ba101)
2025-09-07 18:39:26 +08:00
xin.zhang
33440082e6 FIX: wrong check while send print
jira: [STUDIO-9489]
Change-Id: I7ad5cc2a55cd9b55de3d98ad7bd30150b1f448af
(cherry picked from commit 1e712f19c97837ccda9d5b381f0668488036131e)
2025-09-07 18:30:36 +08:00
zhou.xu
8c2f658c93 FIX:add "check_objects_empty_and_gcode3mf" api
jira: none
Change-Id: I8ffa72f5898292dbb8c539b743acd18d12e8dbb7
(cherry picked from commit 3a233b06db4ab913143d552c2c554a8c664eba9b)
2025-09-07 18:29:47 +08:00
xun.zhang
5b03339b70 FIX: some filament group related bugs
1. Ignore machine filaments without enougn info

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I8973645555ae1d0986f90838797652258c4b57ac
(cherry picked from commit c75285002aa216ac903d5bf11cc2abc82dff1f63)
2025-09-07 18:25:45 +08:00
tao wang
931e30a066 FIX:display printer name when sending from storage
Change-Id: Ib26cb305468c96052e58b14e3b415ff2cd3a53d7
(cherry picked from commit d78f7d6ca7421b07436882f59ee58be89ee695bb)
2025-09-07 18:25:40 +08:00
tao wang
fa8485c040 FIX:fixed the display issue of the times of filament changes
jira:[none]

Change-Id: I3a1f4d6d0f05d8529a12b6dc64394d97a103ea6f
(cherry picked from commit 0cccc282c64b4fd60313a1d11adfeccaa97fe116)
2025-09-07 18:25:34 +08:00
xin.zhang
49d65c8ca5 FIX: support dark mode for nozzle
jira: [STUDIO-9384]
Change-Id: I9fa2ae969f1ae3210773ab5db590595fd27bd3d8
(cherry picked from commit 0d2733db0b773b5d2eb11193b6e2d2d37ebd6a6f)
2025-09-07 18:25:20 +08:00
xun.zhang
f127846914 ENH: enhance extruder unprintable area detection
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)
2025-09-07 18:24:59 +08:00
Noisyfox
3eaeb55f36 Fix compile error 2025-09-07 00:59:20 +08:00
xin.zhang
c259360dff FIX: support dark mode for print option
jira: [STUDIO-9431]
Change-Id: I9b57f684e5a0b21a3f82b2138f568dd233b8d718
(cherry picked from commit 2a07fcf8b9eb7e6a3c3c104ac2eb9de51380aec0)
2025-09-07 00:50:53 +08:00
tao wang
285927574e FIX:fixed the calculation error for tray existence
jira:[none]

Change-Id: Ibfeec9bef3d961b3c09a2a080a105a47840fafb6
(cherry picked from commit d55fd74e000fa069835824558d5a4b753ed9cb86)
2025-09-07 00:49:53 +08:00
tao wang
50a9bb66ee NEW:display the count of ext filamend load
jira:[STUDIO-9243]

Change-Id: Idc1ad4b47fe1eb313439eab287a6e4b622247558
(cherry picked from commit 1d1b247a6295cef3bf4ab5e26e446eabfd39c207)
2025-09-07 00:49:46 +08:00
xun.zhang
f636c494cd ENH: save filament change count in gcode result
1.Save filament change count per filament

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I26e7963c0b5fdcca7c7d0ec5590c3f40c1fc5eed
(cherry picked from commit 759d78dd2bad7157af8d41570ff24e5f7c4a364f)
2025-09-07 00:49:25 +08:00
xin.zhang
55ec1da34f FIX: the single AMS failed to show
jira: [STUDIO-9445]
Change-Id: I8a565f50a109355f85a66567d242998b26fa4bdc
(cherry picked from commit 5ca6d99fd697144eb50e06436a3296ab91880287)
2025-09-07 00:49:19 +08:00
zhou.xu
bf7c448fb6 FIX:update left_extruder_only_area.svg
jira: none
Change-Id: I2d98099e39f88e63f6c1ea8515e59c603ea5536a
(cherry picked from commit ce6db216de97aaf8e1fb6d16e90bb01e06858d1b)
2025-09-07 00:48:35 +08:00
xin.zhang
6d884ccbce FIX:update heating png for extruder ; remove useless label
jira: [STUDIO-9444] [STUDIO-9361]
Change-Id: Ic483efb235a8c11edf84f276fe6ba4c0dca43ffa
(cherry picked from commit 5b2ccfb2eb63ced99b32fd9635cfe7c72445e98b)
2025-09-07 00:47:46 +08:00
Kunlong Ma
81c7c8f9dc ENH: Restrictions on setting the air duct mode during printing
JIRA: STUDIO-9350

Change-Id: Ie6442eccfef78d5431316f91b68fd0e55d4644aa
(cherry picked from commit eaafe82f6f14462a1043db944f8e6763a822de12)
2025-09-07 00:47:35 +08:00
xun.zhang
3488ac6292 FIX: crash of filament group in cli mode
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)
2025-09-07 00:47:24 +08:00
xun.zhang
347cd4aadd ENH: refine some ui logics with filament map
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)
2025-09-07 00:46:58 +08:00
xin.zhang
b297ab18ee FIX: update check extruder type and diameter on sending to print; update trans
jira: [STUDIO-8650] [STUDIO-9220] [STUDIO-9392]
Change-Id: Ib543b8043d517ce312e7489cbee72e93bf0d9757
(cherry picked from commit 77abf5ad6e57cf392b868d38e65610e4d0716977)
2025-09-07 00:46:02 +08:00
Noisyfox
4600a38554 Fix compile error 2025-09-07 00:27:18 +08:00
tao wang
0030861915 FIX:fixed a single has incorrect AMS filamet road
jira:[none]

Change-Id: I26cdf08ddb5586cb1511d6aa1c42e7fd308c58f3
(cherry picked from commit a43ad7db0e1986757b3440a15682aaa906e34a8e)
2025-09-07 00:19:49 +08:00
xin.zhang
ac7127f63f FIX: the input warning tip not shown correctly
jira: [STUDIO-9382]
Change-Id: I2edc993bcca0dcc58bc2c9f407ae704398bcb9e5
(cherry picked from commit eb4ab1258a47e8c3e8c01edbe8cd6935c82a0e47)
2025-09-07 00:17:40 +08:00
xun.zhang
c4e29cca48 FIX: crash when delete filaments
1. Manually add filament map if 3mf don't have the param

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I9fcd8702d431b398fbf8356ee759ddc8e0775a68
(cherry picked from commit f3e89631f3b5fa2c66dff31c52e8c39509f0d0d2)
2025-09-07 00:17:35 +08:00
xin.zhang
669e5fe640 FIX: update the order of SelectMachineDialog
jira: [STUDIO-8235]
Change-Id: I8156032ec46464e375e74acaca5f4aa440298ce1
(cherry picked from commit 7b650e4aca6e1f2653e32acfe5d862573a62415d)
2025-09-07 00:17:26 +08:00
zhimin.zeng
9e799394d1 FIX: crash on cali save page
when switching between single and multi-extruder printer
jira: none

Change-Id: I2f3bf3677b2a5409021e8c6eec7f49daca0764fd
(cherry picked from commit 99e45a3e66cb9cd61588c330eff728a78ff65d40)
2025-09-07 00:17:17 +08:00
xin.zhang
6e877a2f7c FIX: support set temp to 65 for some devices
jira: [STUDIO-9412]
Change-Id: Ia19a05477d4b52b65afdbbab7b6f841caa15089c
(cherry picked from commit 067966e7046b642ff98512d16d49329c1f277a58)
2025-09-07 00:17:12 +08:00
zhimin.zeng
95b335937c FIX: Calibration adaptation encryption
jira: none
Change-Id: Ie42da224ca02261b0c32262be895c215878b7921
(cherry picked from commit 06df4c86ce7670b1d3b03ddf08b6a6ae3f32f73b)
2025-09-07 00:17:04 +08:00
xin.zhang
c569a3a4ff FIX: support set temp to 65 for some devices
jira: [STUDIO-9412]
Change-Id: I530a8c18ae4b4133526b3e9d91153a7b26512f38
(cherry picked from commit c23f1233db2be6475a434de575fe93c9c08fae75)
2025-09-07 00:16:47 +08:00
zhou.xu
b62fa12339 ENH:export system and graphics cart info to log
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)
2025-09-07 00:15:14 +08:00
zhimin.zeng
b6e8c7b14e FIX: fix the error travel and wipe path of wipe tower
jira: none
Change-Id: Ib195cfc87a08f367e5d722b4af85cd33b1d1efdc
(cherry picked from commit bb2b81dc992227fe90f33f11f54162925d12d5c9)
2025-09-07 00:13:52 +08:00
xun.zhang
4ecffb196d FIX: crash when delete filaments
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)
2025-09-07 00:13:26 +08:00
xun.zhang
c0cda458e5 FIX: wrong filament map in plate params
1.Always clear filament map when global map mode change if
plate filament map mode is default

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I38055b7c77668fdb211f6b459be1044d8d3c8f8c
(cherry picked from commit b492ab13a28b25599da9668d84447be260cbbc34)
(cherry picked from commit 48c45e06a571decf9cfe460cd680bfad75ace3fe)
2025-09-07 00:13:22 +08:00
xun.zhang
439761f71e ENH: refine match mode group result
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)
2025-09-07 00:13:17 +08:00
xun.zhang
da0e624bd0 FIX: invalid unprintable limits in enum algorithm
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)
2025-09-07 00:13:12 +08:00
zhou.xu
904b1217f4 FIX:allow event spreads to sidebar view
jira: none
Change-Id: If6f3179c31890349e8312bce0ffecb57e43c2a63
(cherry picked from commit 0d70dbf3d8822c5eaf3994b5ea569ee37d9452a8)
2025-09-07 00:12:45 +08:00
zhimin.zeng
d19b705986 FIX: fix crash when cannot find preset
jira: STUDIO-9422
Change-Id: If81e1ac9379ccbc4b40cbda5cf8cb876ea230173
(cherry picked from commit 758d37d0807288cf63fa2b7487a65d7097b94e8e)
2025-09-07 00:12:32 +08:00
zhimin.zeng
e0e6f77d7d FIX: modify cali text and picture
jira: STUDIO-8778 STUDIO-8824
Change-Id: Iecb0a52a100c3f0765e5eda07e0ed50226490e42
(cherry picked from commit 16791c72d62eabef96011ddc117b329385c5aa68)
2025-09-07 00:12:26 +08:00
xin.zhang
88938ad5dd FIX: update some message
jira: [STUDIO-9148] [STUDIO-9348] [STUDIO-9390]
Change-Id: I7fe2a4744a9b21db990ac819873817b0b5c0820b
(cherry picked from commit 8891bbcf17574b67ba507c9223c57acea59afd1f)
2025-09-07 00:10:32 +08:00
xin.zhang
80b20c15c5 FIX: support timelapse without SD card
jira: [STUDIO-9197]

Change-Id: Icef881b037719d94c9faa403e40d4cd25b6d1856
(cherry picked from commit 883cc7881b9914632d39e0dba489fa2d55a48f36)
2025-09-07 00:10:06 +08:00
zhou.xu
baf998c122 FIX:gcode_3mf() and .gcode file not need sync nozzle and ams
and current plate has no object not need sync nozzle and ams
jira: none

Change-Id: Ic3b724b3f05cce437228bca29ccd25bea021158f
(cherry picked from commit 6fe0dd2a3a9f726bfd255fca4e729249029af639)
2025-09-07 00:08:21 +08:00
tao wang
7235893726 FIX:fixed crashes when printer resources cannot be found
jira:[none]

Change-Id: I8866d067a177afcb5c0341b65d8999dc063cb7e3
(cherry picked from commit 0fe8675141c02c9c09e104b848318f42e126bd4a)
2025-09-07 00:08:16 +08:00
zhimin.zeng
da0adbf498 FIX: All extruder layer heights must be consistent in mutli-extruder
jira: STUDIO-8901
Change-Id: I713cfb298d26133daf86b94cf03a02833e8245cd
(cherry picked from commit e02482bcce207900daedafce05b2551a4baa57f3)
2025-09-07 00:08:08 +08:00
maosheng.wei
233edf9502 ENH: Optimize the creation of third-party printer presets
Allow custom input nozzle diameter and allow create custom nozzle diameter for system printer

Jira: XXXX

Change-Id: I78014fb03b20f80fa774a5af3ecf9395d2d02980
(cherry picked from commit 9d3bd858f43315ce95e8f8c03a5446ac7cdbbd97)
2025-09-07 00:07:52 +08:00
xin.zhang
e3cc0c91cb FIX:the calibration not show step texts
jira: [STUDIO-9308]
Change-Id: I0acb18cdbfec8d8f1507c4298568ac831ef060a0
(cherry picked from commit 8a7b45957c369622504fe16490ea7de06bf5d6a0)
2025-09-07 00:06:41 +08:00
chunmao.guo
15a0266a15 FIX: install plugin keep folder struct and symbolink
Jira: none
Change-Id: I079a3161e9b416ab3b2db52af63de9adff6be5af
(cherry picked from commit 448ce1efd87ff1fd46faeb87aa01daa376a09678)
2025-09-07 00:01:49 +08:00
zhimin.zeng
18279f7c37 FIX: some gcode path errors of wipe tower
jira: none
Change-Id: Ic669e95ecc32a232676c86e89fa1a6fe092efa36
(cherry picked from commit 1fe49fb2d1f7bd4572c3b5e588af06c94c08dd43)
2025-09-07 00:00:42 +08:00
zhimin.zeng
a3c740c228 FIX: the nozzle diameter and filament map of slice_info is empty
when start manual cali
jira: none
Change-Id: I34d580e2527b587e395da9914f6cd1b4a54646e6

(cherry picked from commit 49b9bc84614d16e38adcde82d7148008a0357062)
2025-09-07 00:00:37 +08:00
xin.zhang
4a999bb932 FIX: update the refill dialog text
jira: [STUDIO-8563]
Change-Id: Ib4c29f811a68fc8f0ccdea68110c77eea80deb00
(cherry picked from commit 3fa55062f65a4250dc287d54f73bebb2bb4ac700)
2025-09-07 00:00:20 +08:00
xin.zhang
afd2772689 FIX: update the refill dialog
jira: [STUDIO-8563]
Change-Id: Ib924f6f83839d0e6134f0243471a6fbc20a61616
(cherry picked from commit df129aebc19e8fbc02b17f540e43db01e16a2d9f)
2025-09-07 00:00:14 +08:00
xin.zhang
937ed0702f FIX: query hms crash while there is updating hms in other thread
jira: [STUDIO-9380]

Change-Id: I1b3d94008d4d03d3d41c10e1240fe832755ef9da
(cherry picked from commit 0d367638b58c046799f5212f2fca76c15f1d4dfe)
2025-09-06 23:57:31 +08:00
tao wang
9e3e2f05b8 FIX:fixed the error in the total number of steps when loading
jira:[STUDIO-9169]

Change-Id: I62e61f9ca01b4d04b0ef204df1694d8d0fbc06b2
(cherry picked from commit 2b1f8887ef3ec4e7d1b9dbbd10baeebd6cda7638)
2025-09-06 23:57:25 +08:00
xin.zhang
14f227d9a3 FIX:crash while using HMSQuery::query_hms_msg
jira: [STUDIO-9380]
Change-Id: I317a10b101fa0e7df471e04245778bdc3984212d
(cherry picked from commit 5edc01e8d1eeddeca2e42aa3a0b0385ff3584395)
2025-09-06 23:54:36 +08:00
zhimin.zeng
87f579c6e2 FIX: crash in new wiper tower
jira: none
Change-Id: I3d9b59b15ab93da201e07670155af28b7596081c
(cherry picked from commit 620b6053d8f51ce5bb1c68c84f2087e995840684)
2025-09-06 23:54:18 +08:00
xun.zhang
20603526b8 ENH: optimize custom gcode for H2D
1.Add AMS empty print detection switch
2.Enable heated bed tilt compensation
3.Increase material length for easier bundling
4.Add Z-axis vibration compensation

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I9e51d3812eab51447c47f947447b5e1f281ab9a7
(cherry picked from commit ce7a244c3dd73f3c7e2d809ea357a4ebef14653e)
2025-09-06 23:54:12 +08:00
xun.zhang
a91937a7f8 ENH: modify some sentences for translate
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I6ba3de47566c73ee8d6f8f5f24c854b9599dc073
(cherry picked from commit f858d6c7a8509d3b798bca40cb07eb63ab6efcc0)
2025-09-06 23:53:37 +08:00
xun.zhang
b2e587ce47 FIX: fail to translate in filamnet group pop up
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)
2025-09-06 23:53:29 +08:00
xun.zhang
a378afde0b FIX: unable to select filament map mode in macos
1. add wxPU_CONTAINS_CONTROLS when construct
2. fix some ui bugs

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I413dbaa35f3f79c97e2db3f8b2cdb5ab55739484
(cherry picked from commit cd23329267a1d2c9d28098d73bc007ce4fd58eb2)
2025-09-06 23:53:01 +08:00
xun.zhang
f9869d4b5b ENH: seperate statitics for auto for flush mode
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)
2025-09-06 23:52:55 +08:00
xun.zhang
52d18ab03a FIX: wrong filament map when switch printer preset
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)
2025-09-06 23:52:49 +08:00
xun.zhang
daad39949f ENH:add check machine sync status logic
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)
2025-09-06 23:52:43 +08:00
xun.zhang
057a1a4f5d ENH: refine ui logic with filament group
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)
2025-09-06 23:52:20 +08:00
xun.zhang
973c2f9cf3 ENH: refactor filament group
1.Seperate min flush max flow solver
2.Add "best match" mode for filament map
3.Refine code strucuture

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: If4ba09a0320366b862cec59f8ed1f22c392c53b9
(cherry picked from commit 414a2105c9d77bbf7771bdf3fdec40d96dc949c2)
2025-09-06 23:49:26 +08:00
xun.zhang
05bf5c114b ENH: filament map params switch to global param
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)
2025-09-06 23:49:11 +08:00
xun.zhang
66814d687e FIX: get wrong value in retract params
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)
2025-09-06 23:44:59 +08:00
zhimin.zeng
50daf0b5ca ENH: add nozzle initialization check
jira: none
Change-Id: I9378295113c78c1775fa396d592501758d888182
(cherry picked from commit 9c1d6b206722523d79cf07bec25d7866844e4eae)
2025-09-06 23:41:54 +08:00
zhimin.zeng
e5e121a036 FIX: disable the bed_exclude_area
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)
2025-09-06 23:40:29 +08:00
zhimin.zeng
916b94bd01 FIX: the speed of wipe tower wall is incorrect
after nozzle change gcode(for old wipe tower)
jira: none

Change-Id: Ifa4d27d112c180ab9fb9c6ef39f95b28a5f8c55a
(cherry picked from commit 64aa4e63fe09087ff367d47be5b40233af6ad42f)
2025-09-06 23:38:26 +08:00
zhimin.zeng
d35350cf14 ENH: add sync button for cali preset page
and modify some UI part
jira: none

Change-Id: I9462a10adb7017a7038e5cd7e30cf393b63ae77b
(cherry picked from commit da68a52247c3a963b9d5df339da8f80ead617839)
2025-09-06 23:38:15 +08:00
Noisyfox
c043f73a98 Fix compile error 2025-09-06 23:31:30 +08:00
xin.zhang
13d9fdb410 FIX:can not set chamber temp if there are Low temperature filament
jira: [STUDIO-9343]
Change-Id: I2af66de2a7683fe61053d0d2d0535cabc2da7477
(cherry picked from commit 6617aa81c88e608cb9f20bbf185c4f81eb0516b2)
2025-09-06 23:19:21 +08:00
xin.zhang
27d9445069 FIX: there are no tempature for R extruder
jira: [STUDIO-9340]
Change-Id: I42b63c05d1c37531e8611648d31613b6ef2556a8
(cherry picked from commit e50901b616bdddcb016226e5ae071d951df571ba)
2025-09-06 23:16:41 +08:00
tao wang
17a97cd536 ENH:set the max nozzle temper using config file
jira:[STUDIO-9307]

Change-Id: I5e45fa584a6949c77abf60894ea87b4de4ab7fce
(cherry picked from commit 1b53d6d8ccb57b560394e79b8cc4de3fe79fd165)
2025-09-06 23:16:34 +08:00
tao wang
09b7d41fe3 FIX:fixed obtaining incorrect bits
jira:[none]

Change-Id: I27a4ae24870276912b69fad1c0285889e749030b
(cherry picked from commit 207d81c76933c5cf2fe2d28ed70ab2d246af2615)
2025-09-06 23:15:44 +08:00
tao wang
caa921976c ENH:display preview images of more models
jira:[STUDIO-9353]

Change-Id: I1e1c23df196c43ae702078dce20f4fc86a02d047
(cherry picked from commit 881de812d8ddfcd33d67c68dcd26f8e81cfca5a4)
2025-09-06 23:14:23 +08:00
zhou.xu
ed6d6c807b ENH:center display ObjColorDialog
jira: STUDIO-9273
Change-Id: I3a5e8eeedf184b14c6aaa2ab655c4aa1bb01c02f
(cherry picked from commit 119610121c9a2c9ea188f61836947cb8c826cf6e)
2025-09-06 23:12:45 +08:00
Stone Li
a66ccf7f48 ENH: add more tips dialog
JIRA: STUDIO-7801

Change-Id: I672082d97c5afa144f704959c0c56d70fddd3a6a
Signed-off-by: Stone Li <stone.li@bambulab.com>
(cherry picked from commit 3f94e72cae8e799e25b623e0c0924d7cf813fc5a)
2025-09-06 23:12:06 +08:00
zhimin.zeng
7abea28715 FIX: crash when sync printer status
jira: none
Change-Id: I7198f34b12c720519cc2e092254572fe6ee50778
(cherry picked from commit 6aacef93af32f0316f0758df881744fcda2a09a7)
2025-09-06 23:11:01 +08:00
xin.zhang
80481892a5 FIX: update some text in calibration dialog
jira: [STUDIO-8558]
Change-Id: I97c49f438571340f80fd6a003f31c57d233cafda
(cherry picked from commit 2f271463c929c17b92c1850f3b72b6f7343c1ed3)
2025-09-06 23:10:20 +08:00
xin.zhang
8e91932cd1 FIX:fixed the build failed
jira: STUDIO-9194

Change-Id: I15873b69101183c68e7a46be1bd041419c950a88
(cherry picked from commit bc90ebd932a23a4b2e90d25a03e8aaad927ab293)
2025-09-06 23:09:09 +08:00
Mack
e0435c3e31 ENH:Optimize the gcode viewer and STEP mesh UI
jira: nojira
Change-Id: Ie8d4f1eace04b2c51d4975c67b9a4deb7d88a56f
(cherry picked from commit b9aa0397600ab0f5040ac719277c7b16b1371435)
2025-09-06 23:08:56 +08:00
zhimin.zeng
7e6a95c764 ENH: add thumbnail for printer and bed type
2. modify ams color style
jira: none

Change-Id: Ibc4cc21c4bcbd2e3c35f81c574f24786f41b9e62
(cherry picked from commit b391241a0b2bb0445e376ba7d130860293417076)
2025-09-06 23:08:21 +08:00
tao wang
40e53b587c FIX:fixed the incorrect upper limit of bed temperature
jira:[STUDIO-8650]

Change-Id: Ib9270caa57f4ce63f0ac1a0ace5c2a51b3b6fc14
(cherry picked from commit 7ff9b96837d29bfed1ca21b448332feafa3a96a7)
2025-09-06 23:06:55 +08:00
tao wang
b48d0861b7 FIX:fixed the layout of AMS on the left
STUDIO-9194

Change-Id: I55a8d51c95cba2ae65cafc9e50ea504ced948213
(cherry picked from commit 9d6cc9c37f2ddabc9cf28aab725fe3b7f2889cd8)
2025-09-06 23:06:33 +08:00
zhimin.zeng
a7c90b8dfe FIX: the brim cannot generated on left/right only printable area
jira: none
Change-Id: If1a46773cdbd66ea3ab8484dc5d58ce5bbd3ded2
(cherry picked from commit f127f95335056035f6967b0dff6532d12fe6d316)
2025-09-06 23:02:03 +08:00
zhimin.zeng
bdf5cc9063 FIX: the wipe tower is not show when enable smooth timelapse
jira:none

Change-Id: Iab7994e1ba15d09effe9ad57aebbe9520459f7cd
(cherry picked from commit c6e117fef0efbc0f921db961c1cbf68b895bf75a)
2025-09-06 23:00:41 +08:00
zhimin.zeng
6dff86bc1c ENH: add sync status for main frame
jira: none
Change-Id: Ie718baf4928d8c6cb336ea1f2a78de1e877d8624
(cherry picked from commit e4b7efada86e22438daa7000ee06629f32fc4369)
(cherry picked from commit a9e179a0abd6a6518b344de65b47db94e41b47ea)
2025-09-06 23:00:28 +08:00
zhimin.zeng
db026b7f87 FIX: cannot show printable area error
jira: STUDIO-9199
Change-Id: I1a02175b173496e2b9b4fd67e2c6b8680a3e3bb3
(cherry picked from commit 3daf67ef2115e196034e9012bdfb6d29a1eb3dbc)
2025-09-06 22:22:47 +08:00
zhimin.zeng
426236b53e FIX: Accuracy judgment problem of printable area
jira: none
Change-Id: I13cb2e34ec049947f7acce35110ed8e2e5fa6033
(cherry picked from commit c819ec27a596771ba77bfef9fb49e68002dc4bec)
2025-09-06 22:22:39 +08:00
Kunlong Ma
8097ffab25 FIX: fix can't send file with cloud
JIRA: STUDIO-9195

Change-Id: I688b93032a99827a8a75febd33b45a2ba260acde
(cherry picked from commit 820b3fe4f6a0cb7db873d11c89399033f827091f)
2025-09-06 22:22:28 +08:00
Kunlong Ma
1e44033480 FIX: fix fan issue
JIRA: STUDIO-9277 STUDIO-9280 STUDIO-9238 STUDIO-9239 STUDIO-9190
STUDIO-9189 STUDIO-9191

Change-Id: Id70f02fa40369d38c082d2d5a71a6b0808938e38
(cherry picked from commit fc7a2d28f27115eacd8bff5d713e08db9f310205)
2025-09-06 22:22:08 +08:00
zhimin.zeng
257fc86ca9 ENH: wipe tower support filaments that do not adhere to each other
jira:none

Change-Id: Ia52340f4e8bdb34791cb2019e9763bddfbc8dc5f
(cherry picked from commit e1e0de6efb667a2a198be47d75c90b0f2f0a4324)
2025-09-06 22:19:32 +08:00
tao wang
c1c862d2c3 FIX:fixed the issue of AMS not updating location
jira:[STUDIO-9182 STUDIO-9216]

Change-Id: I42e57b47abf357cdc99f71e1739ab9fc3a122d85
(cherry picked from commit 43083f1e4834163c11a961e743db1fb7ece52348)
2025-09-06 21:38:41 +08:00
xin.zhang
741d8d60da FIX:the extruder status display fault while has filament
jira: [STUDIO-9154]
Change-Id: Iadaa5479eb9770c795f2ebc45c8e5305c2c5640b
(cherry picked from commit 27c99677edee337bdda8b947508ff0d586eb1493)
2025-09-06 21:37:06 +08:00
xin.zhang
09a8ccaa18 FIX: always show select nozzle type notice
jira: [STUDIO-9151]
Change-Id: I432beaa11c0a776ca214cbfc675227f95837b426
(cherry picked from commit 6587ac01b83268982a049b5ac0c45f8aac2b3f5d)
2025-09-06 21:36:28 +08:00
xin.zhang
81e57f3d8d FIX:GUI error about nozzle temperature in device status page
jira:[STUDIO-9147]

Change-Id: I5148097418376e4cd0f0e1fbaaa5f25205f35e6e
(cherry picked from commit 99722056d72ece6338e7e3a076b73a47c874d71a)
2025-09-06 21:35:51 +08:00
tao wang
079dca6b07 FIX:fixed the display issue of multiple AMS
jira:[for ams]

Change-Id: Icb8ce708b0e65870d627dfbe8932e012fc36c6f9
(cherry picked from commit 2cdfc21b93e37b92deabb3ab8e7b39de2578f0b2)
(cherry picked from commit afbf3cf1976623c9a443f3471ec7ddcfb737d031)
2025-09-06 21:35:18 +08:00
Noisyfox
cdec42e361 Fix crash due to not reading the extruder_type option from preset files 2025-09-06 19:45:43 +08:00
tao wang
2834aad6f7 FIX:fixed unable to download to hms file
jira:[hms]

Change-Id: Idc06cf71a9156516f8237b42d470233edd44d4b4
(cherry picked from commit 06ccc46e067ccd4dc5fe51c27bbb3a2f7a925b3b)
(cherry picked from commit b30910953084e77b3edac97d7146665dcb7af555)
2025-09-05 19:49:40 +08:00
tao wang
a88beb02d1 ENH:change SD card to external storage
jira:[none ]

Change-Id: Ia8fb38151f75433344a085196728752d2fe6f159
(cherry picked from commit 6c7b61fcd8aefd9ad9da56da8b55e0c06865a677)
2025-09-05 19:48:50 +08:00
tao wang
e340573415 ENH:optimized the loadl/unload steps of multiple nozzles
jira:[STUDIO-9098 ]

Change-Id: Id2d5770aaefb61d688d7e8023146a34952ff1211
(cherry picked from commit 23832a823cabbc2f18079743243eb27ed93650c8)
2025-09-05 19:46:04 +08:00
tao wang
44e09c2fea FIX:fixed incorrect layout without AMS
jira:[none ]

Change-Id: I7cda157a149b89820b7936eb058a7ad8058d9e4b
(cherry picked from commit 5550b96305086684084cf538656e9bfada14f164)
(cherry picked from commit d1932d8c982c54fe8796d097464b0805db241a13)
2025-09-05 19:13:24 +08:00
tao wang
5be8b62cd4 NEW:support displaying new HMS error message
jira:[hms ]

Change-Id: I99c2877eba5476f2f5ee25636ebea2923c6aafdb
(cherry picked from commit 512ac4b6c18a3623a4197213c8e879b450023cf9)
(cherry picked from commit d4187d91e7b5f1b1da24b1e9331a140c58dd2702)
2025-09-05 19:11:27 +08:00
Noisyfox
fa7e866730 Fix BBL filament profile loading issue 2025-09-05 19:10:21 +08:00
zhou.xu
92a71d27dc FIX:ui_and_3d_volume_map should consider obj_idx
jira: github 5195
Change-Id: I0726b183257604336c274e60d8cc76a3f81877b7
(cherry picked from commit b82de541f5860553a4ec3d88396676f4cbca0b2e)
2025-09-05 18:51:06 +08:00
zhou.xu
8e288051e3 FIX:use ui_and_3d_volume_map to change filament
for cut and text object
jira:github 5195

Change-Id: I17cd57fef0e4882167643174ae2ba36023cbe349
(cherry picked from commit f7e49a3846ee9887924b777f5b2cb154d1b5cc1f)
2025-09-05 18:50:08 +08:00
tao wang
1ed2c423d6 NEW:new extrusion command
jira:[none ]

Change-Id: I721ce4b2eb5ab02a88dc370f14bbfdb1b91f40a1
(cherry picked from commit 79c534375f7650480208a662e0a8302bc4ff6c45)
(cherry picked from commit 7dd335f134e663ec3d2817dbea0d0077c9fcb986)
2025-09-05 18:13:13 +08:00
tao wang
bf81dcefe8 FIX:fixed the issue of crashing when changing DPI
jira:[STUDIO-9099 ]

Change-Id: I447a3f6dec830005494f291297097efe79d0f993
(cherry picked from commit 0174c991eb5bd1624192cacb323e6bd92ba74acf)
(cherry picked from commit 889c6165f9c44094882111198f1e98e9446938a4)
2025-09-05 18:13:00 +08:00
tao wang
bf247fba0f FIX:Fixed incorrect printer status
jira:[fixed device issue ]

Change-Id: Ibab8db09854adca1e80acaf3831c6e4191e137c7
(cherry picked from commit 0572d811780ac406214665af7748e4ba8243bdc8)
(cherry picked from commit b60cdcfed85b1dc89c23ee21cb613e5be86eb14d)
2025-09-05 18:12:50 +08:00
tao wang
2ec35f9dad ENH:update o1d printer config
jira:[o1d config]

Change-Id: Ib9f55352ca53085be3ea7c817439b0df93ae32d4
(cherry picked from commit 99c717e2717f2f8075c1158ed0bd5d9f518437d0)
2025-09-05 18:03:59 +08:00
tao wang
d63f9ac76b ENH:check external storage
jira:[STUDIO-9125 ]

Change-Id: I3a764abfe3e9e6867562634bac19130b9905c581
(cherry picked from commit d6f90a65116c06717fec93ca7d11a4c801bc2f3c)
2025-09-05 17:59:13 +08:00
zhimin.zeng
acb04e1d38 FIX: the error offset of nozzle change gcode
jira: STUDIO-9133
Change-Id: Ibc56d6d735a24cf2e18b7c87f91c83bdff30228b
(cherry picked from commit 78de72137ed0320d7e0de0620c938cd5821fae7a)
2025-09-05 17:59:08 +08:00
xin.zhang
8fb9cc2ee8 FIX:revise the size and alignment of GUI label
jira: [STUDIO-9215]

Change-Id: I0e3989644a6edb8d33bcc248fcf2a8d4d98efbe6
(cherry picked from commit 5b13591c9d47a530c76af884975d3b91bf595260)
2025-09-05 17:59:04 +08:00
xin.zhang
24ee292ea0 FIX:remove the fault description of "Use AMS"
jira: [STUDIO-9236]

Change-Id: Ibcfe7460a2ea5e530e807446362c67af8cc61fa8
(cherry picked from commit 71cf4c68dc21f8ca8c08c6a7137f9a1522202f18)
2025-09-05 17:57:17 +08:00
chunmao.guo
9a07c98405 FIX: multi_extruder.svg
Change-Id: I159b204769f4f8e70c4ba466fc91d48f092b6db2
Jira: none
(cherry picked from commit a444e360efb8ec8a8104265193835a9883e5dfeb)
2025-09-05 17:54:48 +08:00
zhou.xu
ac5f49ad73 FIX:ban reload scene in preview by left ui
jira: STUDIO-9228
Change-Id: I8a9a6eb8a7e81cc3cd912dcbc87b59fab4887245
(cherry picked from commit 0098b8a347e9d36b4ee45df126dffd87ce6b4bdc)
2025-09-05 17:53:32 +08:00
zhimin.zeng
a6fd63ab29 FIX: the speed override not recover
jira: none
Change-Id: I322206768435942dccd4ad233ad09aeaad080a1a
(cherry picked from commit 04d7c3485a23205ea8c275f8a9bc15930121171d)
2025-09-05 17:48:22 +08:00
zhou.xu
f571b6342d ENH:modify wxTextCtrl to SpinInput
in ObjColorDialog
jira:STUDIO-9057

Change-Id: Iff2c6bcab29d34fdc881439c8cfb4f6c8d6d0838
(cherry picked from commit 1663a5550dc9e5d2882b33be381b4d35cb696ed1)
2025-09-05 17:48:15 +08:00
lane.wei
61c112386e ENH: CLI: update compatibility
jira: no-jira
Change-Id: Id1de30ce19fe1accb08ad60653b739dc3c446e59
(cherry picked from commit ad2beb93447ae931c379e485acfcba6945519627)
(cherry picked from commit e92873206dfceb106158c03877828bb490ba2efd)
2025-09-05 17:46:48 +08:00
lane.wei
c01c0c90b6 ENH: CLI: fix an exception in CLI testing
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)
2025-09-05 17:46:35 +08:00
zhou.xu
20d5270da0 ENH:update svg for dual extruder machine
jira: STUDIO-9136
Change-Id: I35d48a27bf204b8d96a663d54d53ff2c3bf61cd6
(cherry picked from commit 46ec48445c9a17efb697b1337299be7bcab76674)
(cherry picked from commit 203fdf4cb35d424c5dbe6469f37b7bbd8cbc3c49)
2025-09-05 17:44:27 +08:00
zhou.xu
6c026234e3 FIX:fix bug of model object in instance coordinates
in move gizmo
jira:STUDIO-9180

Change-Id: I5c637dcfd1b284c833102097d510af747fbf7769
(cherry picked from commit ab60fcae031c0a6ce548021d5d2c16a82f67df2d)
2025-09-05 17:44:18 +08:00
lane.wei
8446869cb1 FIX: config: fix another potential crash when load gcode.3mf
jira: STUDIO-9131
Change-Id: I1bcac6dfa0454e4d6852b7c65bed8a82ac2af4b5
(cherry picked from commit a8f31fcd621deeab7dcc1091d4ae970021b52355)
(cherry picked from commit 6ce38e715a40bca7e3f83d4b74c7f1b09347789d)
2025-09-05 17:44:03 +08:00
lane.wei
b849426125 FIX: config: fix some potential crash when load gcode.3mf
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)
2025-09-05 17:43:57 +08:00
Noisyfox
3e27715843 Regroup 3rd party filaments for BBL printers 2025-09-05 17:42:43 +08:00
Noisyfox
4120c64c5e ENH: add profiles for H2D 2025-09-05 17:37:14 +08:00
Noisyfox
9fc3b38da8 Prepare for profile cherry-picking 2025-09-03 22:10:12 +08:00
zhou.xu
2a9814abeb FIX:get error config when use quick key
jira: STUDIO-9026
Change-Id: I28f4a7bf5ec7e421fada9ca3950e6125c2bb6936
(cherry picked from commit 32c42ccefacbd4b511b296d8796ca4a1874da532)
2025-08-28 15:49:49 +08:00
zhou.xu
b856b9a91a FIX:check "is_gcode_3mf" api
jira: STUDIO-9124&&gerrit27184
Change-Id: I13756818dce236f8b3a0f910156271ba334d5e8c
(cherry picked from commit 541ebc7ca42f663dc5b21330b186f94e84adbde3)
(cherry picked from commit 4202043f5e34b83fa20547e0eae1f576052e8c96)
2025-08-28 15:49:38 +08:00
zhimin.zeng
dd7e3bf72d FIX: fix crash when not find preset
jira: none
Change-Id: I2752294bd0cd0b063c1b164f2f14e96e54f9d9aa
(cherry picked from commit b85205f1de76e89e6400e5ecf9e5bfbbe38e6510)
(cherry picked from commit cb435671d0610a88fca6efe1beec3d25d1364acf)
2025-08-28 15:46:17 +08:00
zhimin.zeng
1bc373f10e FIX: fix build error
jira: none
Change-Id: Ie732916565536fc86b8dbf19b24ea99541f54772
(cherry picked from commit 7cc564fcc9cdd659c2d2eff7b9e56a8f9bf25b7f)
2025-08-28 15:24:54 +08:00
zhimin.zeng
03dddc4db3 FIX: the result of manual calibration cannot be saved
jira: 9122
Change-Id: I7169cacf2dec16ea386d23e7440a1f69282cb0db
(cherry picked from commit 859f6345e2c94bcccc5d70613c33a52805b6a98d)
2025-08-28 15:22:47 +08:00
zhimin.zeng
7a04d8d1fb ENH: add printable check before cali
jira: 8816
Change-Id: I7df5676ecc80c27b516f47efe00ac40d04a4a5c9
(cherry picked from commit 13a4edc97c5ba0fc5f8a0a7263608597ce923548)
2025-08-28 15:22:39 +08:00
zhimin.zeng
31b65dfbe9 FIX: array out of bounds
when slice one filament with multi_extruder printer
jira: none

Change-Id: Ic8deeb7df9c428e97bf904532362180fc1fd6738
(cherry picked from commit feb9b02067b2e4bbdba7ba429531d4fd6081913c)
2025-08-28 15:21:38 +08:00
chunmao.guo
660d2ee686 FIX: object params variant crash
Change-Id: Ia67b98c29a0cc97f8479911ffdefb942cb6c751f
Jira: none
(cherry picked from commit 8bf65c0963d1ee39bba12f67f33177d4ac6d6a60)
2025-08-28 15:18:42 +08:00
chunmao.guo
2a35173b8c ENH: printer sync buntton flush
Change-Id: I91e46fd0cf660c6f30e6221df910459c4b08b92c
Jira: none
(cherry picked from commit e2330d1af72d0fdd1cf496635a0aca95e7233799)
2025-08-28 15:16:10 +08:00
Stone Li
01052c9c15 NEW: add more info for multi-nozzles printers
JIRA: STUDIO-9111

Change-Id: I5ed619d57b6857f5d4a1e38662d2fe03640222a3
Signed-off-by: Stone Li <stone.li@bambulab.com>
(cherry picked from commit 993228d3e99e7976a3839b29453b53023ec18b71)
2025-08-28 15:01:52 +08:00
tao wang
0e5d3fd7b8 ENH:support setting nozzle data
jira:[none]

Change-Id: I75044d9b5529286e5c32a436a38d2e3c8fcf4d55
(cherry picked from commit 68b314eebd58c486cda79931c52a9bdcb72556a3)
2025-08-28 14:34:48 +08:00
Mack
1f9d27d880 FIX:The color scheme selection has been reset.
jira: nojira
Change-Id: I8bf7a8db4e40315b68e610008c865c319ba70172
(cherry picked from commit 5ae194be77187ba349389dc3726cacbcf89dea9c)
2025-08-28 14:10:57 +08:00
Kunlong Ma
853b496a4b ENH: Do not display unavailable storage when sent to SD card
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)
2025-08-28 14:10:49 +08:00
Kunlong Ma
5233702681 NEW: new fan ctrl
JIRA: none

Change-Id: I4e84d455fa728dffb00706f4c07310fcd1b8335c
(cherry picked from commit 0a739fe087933cc89af541817315c7a3d6096b22)
2025-08-28 11:29:00 +08:00
lane.wei
7c1830c04b FIX: CLI: fix the crash issues after new print_diff logic
jira: no-jira
Change-Id: I47beb83b96fcbd2322c878fa4edd5675749f0791
(cherry picked from commit c863a8268fea8fe79cbc4522d6642533474d429b)
2025-08-28 11:23:15 +08:00
zhimin.zeng
f6bb871b38 FIX: should not display sync dialog when open obj file
2. select machine with unchecked presets, cannot get the corresponding machine preset
jira: 9070 9065

Change-Id: Ic971a17eef464bead4f247d769ab6be4facb68d1
(cherry picked from commit a297b57249ed1ab8689506c64d12e39328647cf9)
2025-08-28 11:22:46 +08:00
xun.zhang
07148d2dfd ENH: set filament retract params even if nil
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)
2025-08-28 11:09:05 +08:00
zhimin.zeng
d637efee3d FIX: support sync N3S ams
jira: 9008
Change-Id: Icd63670f312562e0260277eb47e01e5d13789f31
(cherry picked from commit ee99497fd7f25e61eec1726c9b40267cf7a51045)
2025-08-28 10:35:23 +08:00
zhimin.zeng
dcaf10a16e FIX: fix the filament map dialog cannot open on mac
jira: none
Change-Id: I73bd2d41b46f4a7212c24e829423ff67fa07b22d
(cherry picked from commit 96197d8abd5b88c62dd31a140f9aa6c9fcc2fd1f)
2025-08-28 10:35:17 +08:00
tao wang
21b67d993f NEW:new fialment load/unload process
jira:[none]

Change-Id: Ie0076d5c7ec619414121c1f6d37876aaa4e044c1
(cherry picked from commit 5d9a7eaadcd5ab6dc2f18e65000ead81e7e8adb6)
2025-08-28 10:35:06 +08:00
tao wang
27780819e1 ENH:dynamically update use_ams options
jira:[none]

Change-Id: Ia555b3375d3a195b8b6c0e0d6f65b78dd997c810
(cherry picked from commit 58d6ac32f99c700da90aca1ec7ba1d986eb2eff7)
2025-08-26 21:15:31 +08:00
lane.wei
148ccec58d ENH: version: keep original version compare logic
jira: no-jira
Change-Id: I52461ec6dee540bd9b42ae9e4d2b367e3b1dd1a6
(cherry picked from commit 750dabf1b487ced27b32b278b1967e7941c35ca2)
2025-08-26 21:15:22 +08:00
lane.wei
bc9c08a614 ENH: version: refine file version process logic
only compare minor version when major equals
jira: no-jira

Change-Id: I0159c1b15db30238ad05b8ff7c83f6668fd11ac2
(cherry picked from commit e50e6985925582b4b686793244cc88bde3515d07)
2025-08-26 21:14:51 +08:00
xun.zhang
312371f84c FIX: use wrong retraction params in tool change
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)
2025-08-26 20:59:25 +08:00
zhimin.zeng
27e30373c8 FIX: ams control display bug
jira: none
Change-Id: I72c5977ff4246c19f4bf5ce7e20f797c0efe9e9a
(cherry picked from commit 7f43d427c30779f8e992a9893eed1ae57ae12446)
2025-08-26 20:59:15 +08:00
chunmao.guo
508ee2760d FIX: object configuration form cannot be used with multiple extruders
Change-Id: I0c78d0367a7e9f032b6c6efc63bfc6d54b28d091
Jira: STUDIO-7976
(cherry picked from commit f4ce4b3600da9dd471c3b9d02aebac093dfcbfc8)
2025-08-26 20:43:50 +08:00
chunmao.guo
5b25588c1f FIX: WebView UserAgent
Change-Id: Ibef6281fb2268ced064461b263368b568348050c
Jira: none
(cherry picked from commit bd3690d85ea1e8d0a5459094ea77eba2c94b4c9f)
2025-08-26 20:42:40 +08:00
chunmao.guo
88a728f444 FIX: PresetComboBox edit_btn crash
Change-Id: I7e311420e8c8779cac1654683298252be06a462a
Jira: STUDIO-9061
(cherry picked from commit 20a8a337d624d3e7d1233438d99a09cb6a9d2a38)
2025-08-26 20:40:55 +08:00
chunmao.guo
98295eeb06 FIX: empty param page remain in part tab
Change-Id: I41e90b53b0671df926ede7615e84b586e337b37a
Jira: STUDIO-9072
(cherry picked from commit 0948b983d748f5823271b063417e1f514adbc807)
2025-08-26 20:40:48 +08:00
zhimin.zeng
ab9f36dbf4 ENH: add ams control logic for main interface
jira: none
Change-Id: Iac75cdfc1b3ccd406a59e8b4e1eb75162b5239e8
(cherry picked from commit 5407c58de8328bf50d5459f3879b72d11382c70b)
2025-08-26 20:37:02 +08:00
zhimin.zeng
6d91d1a2e9 FIX: fix the error retract of nozzle change
jira: none
Change-Id: I4773307263cbbca0955dd44bbf046e45d91f1b5f
(cherry picked from commit 0d55524fca6ea1ea4ca6387df8cfb725a90269c9)
2025-08-26 20:36:53 +08:00
qing.zhang
70c80d6530 ENH: match first filaments with physical extruder
Jira: none

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I3907476c4644e2b0c2c097edf2bbf93e3a92cf90
(cherry picked from commit 419ce016984a27f4ec89ee1e2bb0cf272165152c)
2025-08-26 20:34:12 +08:00
qing.zhang
d9eac89a9f FIX: set initial one to initial no support extruder
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)
2025-08-26 20:33:18 +08:00
lane.wei
a2c6ea7d15 FIX: cali: fix the 3mf wrong issue when cali for multi-extruder
jira: no-jira
Change-Id: I352e4dd499f4e4dd22cdc21f3f62428a0baa5bfb
(cherry picked from commit f9cd3dd8764ab551c2aa85cdb7383b19bc345f36)
2025-08-26 20:27:08 +08:00
tao wang
592734dbf7 NEW:support led control
jira:[device page]

Change-Id: Id1ce67262a2c70e93425c0c79f2f3b2fd0a747a6
(cherry picked from commit b89aa86a8ecabbafdd5a4201f0cec24a9db87db8)
2025-08-26 20:12:52 +08:00
tao wang
f2598e0265 NEW:support multiple extruder new control
jira:[device page]

Change-Id: Idf68a3385172cbaa123cedb4e2b814c15cc09f07
(cherry picked from commit 7700b911a6fec782ce6b484b9b030963283a846c)
2025-08-26 20:12:40 +08:00
qing.zhang
6b093f11b6 ENH: get first filaments & non support filament
Jira: none

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I9370e48b634f21a2d3fd11d437f699b5cdb5ce43
(cherry picked from commit 666e49e2990cfb8a8855dd80c81c85688d5a0f02)
2025-08-26 19:53:56 +08:00
Kunlong Ma
139826677a NEW: support send to sd card with cloud
JIRA: STUDIO-7378

Change-Id: I95fee50db29825e508d276d52c7a3e85e1347ebd
(cherry picked from commit 13db95ceb4f18b8cbce1e67447eeaa6ee36cc8ad)
2025-08-26 19:48:52 +08:00
zhimin.zeng
ccfb28ad10 FIX: the status of printer is incorrect when open file
jira: none
Change-Id: I1e61de1c56573f64ca4ca7413aff3bf1d228396a
(cherry picked from commit 3592429383b66f06c0e17661450777595db3f3ef)
2025-08-26 19:42:53 +08:00
tao wang
34a4946b3f ENH:auto adjust ams list size
jira:[none]

Change-Id: Ie8bba9a74ab5edc5a20724ceeee96069d9ad17dc
(cherry picked from commit 33bb1f69b1026b6d874f7cf164fbe50b8877ed58)
2025-08-26 19:42:27 +08:00
qing.zhang
d55aced0b4 ENH: get most used extruder id
Jira: none

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I9c498cefb07b3bdf89a17bfd75a3075c2294c934
(cherry picked from commit e0508a9e5136cec6ba69cc8a4d186079802f841a)
2025-08-26 14:25:06 +08:00
zhimin.zeng
6afd3a961b ENH: add connected to printer preset list
and add group name
jira:none

Change-Id: Iecc4ec38ff071105f856c2034ceac0d5bde3b7b0
(cherry picked from commit c44cc2db1a4b27955e0099b06f2508faf824b538)
2025-08-26 13:31:48 +08:00
tao wang
7b81f21093 FIX:replace button click event for pop dialog
jira:[none]

Change-Id: I2d36a10ffeb128f1fcc8aedab5eb5ea286f8a1dc
(cherry picked from commit 4030bde50df95e6ee861aa7369e7e15cf61f36a9)
2025-08-26 10:56:32 +08:00
tao wang
40bdbed840 FIX:fix the logic of some sending pages
jira:[STUDIO-8890]

Change-Id: I22a29d236365052d4fbe31e69aea72efaa6aa88a
(cherry picked from commit 60986488e720998b5921060f01daaedaa8e865c1)
2025-08-26 10:54:51 +08:00
tao wang
9b97ebeec5 ENH:reduce the refresh times of sending printed pages
jira:[none]

Change-Id: Iaa4864afa09e71a7b8fd09baf289ee17fa07eafc
(cherry picked from commit a0c9fad05291e7614d94b7cec3c4f32d1f1345d8)
2025-08-26 10:53:15 +08:00
zhimin.zeng
410549dc89 FIX: Modify bounds checking for manual calibration
jira: none
Change-Id: Iba816fa7a81eb4ecfb1ab51c975cddfc4bce72cb
(cherry picked from commit 97314db430bcafbc3133e43092f093abcc4d4739)
2025-08-26 10:53:08 +08:00
chunmao.guo
c806aa05b7 FIX: transfer input events to children of PopupWindow
Change-Id: I2ff9ba91a548402d77308aa88de34976a146a571
Jira: STUDIO-8942
(cherry picked from commit 23e30c7227474adf4efe5ee93f985e1140da9b6f)
2025-08-26 10:53:02 +08:00
zhimin.zeng
b871e9318f FIX: the nums of nozzle_volume_type is incorrect
when save MW 3mf file as multi-extruder
jira:none

Change-Id: I848e348277fb047c2c3569508d2adbe940e40255
(cherry picked from commit 17edbd8cd57b761027bb3c1f4d318578ab27430e)
2025-08-26 10:52:50 +08:00
tao wang
fe6338449e ENH:Advanced option supports folding
jira:[none]

Change-Id: I7017ea4a246b05d142e4a49d499d57e46f3c4428
(cherry picked from commit eea4abe6b72229bdf3d7f4fb250341f3659e9ab1)
2025-08-26 10:52:43 +08:00
tao wang
2fe7f8c61b NEW:support previewing pad types
jira:[none]

Change-Id: I75285e8665a1efbfa02c2d859962ed958098bd07
(cherry picked from commit 22bb81e0cd9955146474a3e9e8ac02e4ed45551a)
2025-08-26 10:46:16 +08:00
chunmao.guo
d1f45e87b0 ENH: new printer layout
Change-Id: I8acc59b2446a13c8f7fe3a6bdf090f39d4896b1f
Jira: STUDIO-8859
(cherry picked from commit d723fa714f34d572052b5cae0847472529f2c62f)
2025-08-26 10:26:29 +08:00
chunmao.guo
c9ed30bc59 ENH: add badge for StaticBox and StaticGroup
Change-Id: I8b6e7938de524102809784b078de337da789cde8
Jira: STUDIO-8858
(cherry picked from commit 9733ef0144aebb0c6e711b7d56c36a3d187f628a)
2025-08-26 10:11:48 +08:00
tao wang
c92347ce51 ENH:show nozzle offset option
jira:[none]

Change-Id: Iaf2665014c505412247e26521cdcb91217bdc7a4
(cherry picked from commit 557f5dcbbe45a578c8e7d7f5dc2aff2f5c15be67)
2025-08-26 10:11:48 +08:00
tao wang
2e132ee835 NEW:new sending page layout(for top area)
jira:[none]

Change-Id: I359476fd80cd3fb3e55f071bf0e649e57e93ef2d
(cherry picked from commit aa3e21dc5bbb428ca5597d617f11400280de5d75)
2025-08-26 10:11:48 +08:00
xun.zhang
b215169f25 FIX: wrong default value for ext printable height
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)
2025-08-26 10:11:47 +08:00
lane.wei
ca5bd00d0e ENH: config: refine the object config logic when extruder count changes
1. add logic in CLI
2. add logic to process height range
jira: no-jira

Change-Id: I8a7ba1a78dacad7131cafa3fb8b742027276c7e8
(cherry picked from commit 9a6624653b7b66101f1a74715227a0f2b4588f16)
2025-08-26 10:11:47 +08:00
lane.wei
1297857f66 ENH: config: process object config values after printer switch
jira: no-jira
Change-Id: I01532c42c20aa63b1b9621e175a98cad06bdf577
(cherry picked from commit cc86a62d408cb40942c49277a7f239144d7a5567)
2025-08-26 10:11:43 +08:00
zhimin.zeng
b8f8151340 FIX: fix the extruder_type error
jira: none
Change-Id: Iff97613b5dd0c76f9883c031ab396cd27a27b20d
(cherry picked from commit 10d9c12202219a9accbb5bd8b1e9841def9b8c61)
2025-08-24 23:18:30 +08:00
zhimin.zeng
6cb1ffdbf5 FIX: handle DirectDrive of old file
jira: none
Change-Id: I5acb1689dc1628709631f02b110c7626d93762c8
(cherry picked from commit c17b4b78f3c2a02508e10bd0c7b9b4f624eda0c3)
2025-08-24 23:18:30 +08:00
chunmao.guo
4b9aaa7341 ENH: ComboBox second drop list & align center
Change-Id: I468468a1a86bb8e89468070b0323aace6279fd09
Jira: STUDIO-8857
(cherry picked from commit 120ac092e38993a91132b6b3d87777ef8e728f0e)
2025-08-24 23:18:30 +08:00
chunmao.guo
d3a164251c FIX: ComboBox set icon
Change-Id: If74ccca3649913d8cf6664347d082f75e4425b00
Jira: STUDIO-8640
(cherry picked from commit 7ce090d2b5308650d5cb10f0dac021efa181214d)
2025-08-24 23:18:30 +08:00
zhimin.zeng
038dd56006 FIX: the wipe tower is not correct for tpu
jira: none
Change-Id: I79ed204638602013d73525e23a2b74af2c0efff2
(cherry picked from commit 78eea0a36f86f014d004643d23edee1beb5d6d7f)
2025-08-24 23:18:30 +08:00
lane.wei
eac07fd8e3 ENH: buildvolume: add logic to support extruder_printable_height
jira: no-jira
Change-Id: I962c4aed8c536c0fd8b89ae090cd0463c5d645db
(cherry picked from commit 43773d77010492453473797e77e83e9a4630c25f)
2025-08-24 23:18:30 +08:00
lane.wei
5c646d4b42 FIX: config: fix the warning string missing issue
also fix the assert
jira: no-jira

Change-Id: I6becb689ff6a1dd2894d5004da796ece8fb23324
(cherry picked from commit ab588003e3bbd844f83b568106f60ef976fc6530)
2025-08-24 23:18:30 +08:00
lane.wei
928debaff8 FIX: CLI: fix the crash issue with no args
jira: no-jira
Change-Id: I21a15d5fee87036fcc4b5d1b6ada47f43c9b43b1
(cherry picked from commit 8d93a26c5b303f662f3ec9f37ebac0b9f792ac5e)
2025-08-24 23:18:29 +08:00
zhimin.zeng
34ebd54680 ENH: add print_outer_first for wipe tower
and modify the min_depth_per_height
jira: none

Change-Id: I4860df661b4dd1f66677112d14e60560bc4a73be
(cherry picked from commit 00810d685d01a91b5373f3315413aaef1fe49cbc)
2025-08-24 23:18:29 +08:00
zhimin.zeng
96f081df27 FIX: the gcode.3mf cannot display correctly
because the empty value of unprintable_filament_map
jira: none

Change-Id: I223fde51e31c2206b81512737058c7015cb10816
(cherry picked from commit bde01dc1814f7cef812d7f441cd969e0f3ab7747)
2025-08-24 23:18:29 +08:00
zhimin.zeng
ac19851e52 ENH: Add automatic slicing behavior for some steps
jira: none
Change-Id: If94726eee45724985b3b49b36695086da24f7848
(cherry picked from commit 0476a83264660841c5601168ab6f11a9c70411ff)
2025-08-24 23:18:29 +08:00
zhimin.zeng
0b014edecd FIX: 1. the status of ams item is not correct
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)
2025-08-24 23:18:29 +08:00
xun.zhang
e273cf9cf2 ENH: seperate reorder from toolorder construct
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)
2025-08-24 23:18:29 +08:00
tao wang
1af3b014a9 FIX:remove tips about AMS
jira:[none]

Change-Id: I1b44ac90ef31e105cb6e6804d25d5caa29915764
(cherry picked from commit 065bb6a7facebccdd74a1a3ec127185a0b349cd9)
2025-08-24 23:18:29 +08:00
zhimin.zeng
5935b75fe5 ENH: Add extruder_printable_height
to support different printable height of multi_extruder
jira:none

Change-Id: I265c65e15fc8f598c3456556557bb6977b5de820
(cherry picked from commit 933adbaaf0eaf361e39f131dd5536dca91214d43)
2025-08-24 23:18:29 +08:00
zhimin.zeng
55d8d77430 FIX: fix some cali bug
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)
2025-08-24 23:18:29 +08:00
xun.zhang
d941f80483 FIX: filament group crash in cli mode
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)
2025-08-24 23:18:28 +08:00
zhimin.zeng
68b925f290 FIX: fix crash of slice
jira: none
Change-Id: I68b1557d5a361d175abdff99a0542ca105b76f7f
(cherry picked from commit 02c2fb6f6c18cba9fd4d74f70559eb9cb665609e)
2025-08-24 23:18:28 +08:00
zhimin.zeng
dfe137200c FIX: enhance for cali
1. Optimize the message for repeat names
2. Modify the recommended name
jira:none

Change-Id: Iebc5807208dcbe2086f690fda453a2f2abb032f7
(cherry picked from commit 4fe716a9c9268838929bdb8e08372fcd521d4fa2)
2025-08-24 23:18:28 +08:00
zhimin.zeng
37ff918ea9 FIX: modify the name of high flow
jira: none
Change-Id: Icd1a0ac91e957fc38a6f072b1bb3af0c97be398e
(cherry picked from commit ea0691f092755d7e68db3ecf8b46b0e86a8fadb2)
2025-08-24 23:18:28 +08:00
zhimin.zeng
3297fe658e FIX: the flush volume matrix is modified when loading MW file
jira: STUDIO-8736
Change-Id: I671b920b222c001c6c08f43911b0e9a156bb154c
(cherry picked from commit d484ec3ec0aa4152ff42639fc980761e5ac77095)
2025-08-24 23:18:28 +08:00
tao wang
8f6cfda2f3 ENH:optimization of select machine page
jira:[for new selectmachine page]

Change-Id: I003889f6f675e08403160e410498b065cdfaf59e
(cherry picked from commit 9afe123026ba5a4ffc13f7f3ce0e04100418db03)
2025-08-24 23:18:28 +08:00
lane.wei
d0cbf620d7 FIX: config: fix some loading issue with filament_self_index
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)
2025-08-24 23:18:28 +08:00
zhimin.zeng
71f9126b77 FIX: fix crash when loading 3mf file
jira: none
Change-Id: Ice2a518518994871d23a6f478145edd36f0343a2
(cherry picked from commit b495bfd4e9dbdc11bc4e5e4146abfd0bdca137bc)
2025-08-24 23:18:28 +08:00
Noisyfox
1b30bf799c Fix compile error 2025-08-24 23:18:28 +08:00
tao wang
2b2e7f7603 ENH:add protection for invalid nozzle data
jira:[invalid nozzle data]

Change-Id: I56983af991bc3e9f69c2d30429987bb860618eaf
(cherry picked from commit 9b3de1bd3f3d5e5c15d072f80658e95fe0fc7491)
2025-08-24 23:18:28 +08:00
zhimin.zeng
214ed3b6c4 FIX: incorrect sync status for multi_extruder printer
jira: STUDIO-8636
Change-Id: Ib61c7c88b5a7c381d09bcee108cf50389b17cd34
(cherry picked from commit 7831a55f70c6929c47baefff46e994636a2d6a2f)
2025-08-24 23:18:28 +08:00
zhimin.zeng
2c1b7e86e5 FIX: Painting displays incorrectly when removing color
jira: STUDIO-8657
Change-Id: I0fdfac500716d83f45c73dc07feab032e793e7a5
(cherry picked from commit 695b3c78e4b283df1ac5e5f63e73b0cbbc6196a2)
2025-08-24 23:18:27 +08:00
xun.zhang
f8375d2199 ENH: wrong filament id in MultiExtPrintableError
jira:STUDIO-8645

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I20d84fab66486ef6d90e86f0f2d8c5db98175b5e
(cherry picked from commit f618caa07711d86e69832161d0e26b08dd3bfa3f)
2025-08-24 23:18:27 +08:00
zhimin.zeng
758e13e821 FIX: fix incorrect pa value for virtual slot
jira: STUDIO-8540
Change-Id: I2224db2ca2a45a81550427c8387edfa2427b5f79
(cherry picked from commit 585da1ef374452c2eb10fb9bc93f08c862f49c59)
2025-08-24 23:18:27 +08:00
zhimin.zeng
dba57efec7 FIX: modify for cali
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)
2025-08-24 23:18:27 +08:00
tao wang
46cc60c431 FIX:Fix the issue of extruder matching errors
jira:[for nozzle match]

Change-Id: I6965500bfb7feef6d18d28bea8a53a3c477f5e36
(cherry picked from commit 7bcf4b6cc5bc38e723bfd8dcd495c60a55134490)
2025-08-24 23:18:27 +08:00
zhimin.zeng
1e6a186e2b ENH: support auto pa cali for multi_extruder printer
jira: none
Change-Id: I835a0e20de81f9af7c40983e00bdb37ea6c95a68
(cherry picked from commit 4e387d4ace4332a7c2b6c0ab695b80a51597d0c7)
2025-08-24 23:18:27 +08:00
zhimin.zeng
4073cae8e5 ENH: enhance for wipe tower
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)
2025-08-24 23:18:27 +08:00
zhimin.zeng
84d8d619e5 FIX: the default value is not correct
and the pa profile not display in AMS setting dialog after switch nozzle diameter
jira: 8620

Change-Id: I38b3905b1490edbc8dfe32335a3f8600485050c1
(cherry picked from commit 2322d5f14f3f703a03db3c12c87ef3855b88cf63)
2025-08-24 23:18:27 +08:00
zhimin.zeng
3678adfd6c FIX: crash when sync extruder ams info
jira: none
Change-Id: I48f098499e4cc3f1b2b7926443bce94bd7c06dda
(cherry picked from commit 8fdc2ec622cd929bb4943aaf8d8b68f587944a83)
2025-08-24 23:18:27 +08:00
tao wang
49fdaf2f5d NEW:support new nozzle and extder data
jira:[new nozzle data]

Change-Id: Ief37b42794ce1469163fcd8227431ec77957508e
(cherry picked from commit db8ae4ccb3069347e1303de104302357bc352754)
2025-08-24 23:18:27 +08:00
zhimin.zeng
bd3b69abf9 FIX: fix crash bug when switching resolution
jira: none
Change-Id: Ie1879a2a120502db2f2a9b3b8cac1f8a2b9737f9
(cherry picked from commit 28d0fc9bbe40386f799aa3dab3367aed56fe0d0a)
2025-08-24 23:18:27 +08:00
zhimin.zeng
65e0967b94 FIX: switch to 0.2 from 0.4 nozzle, AMS item display 0.0
jira: STUDIO-7816
Change-Id: Ic5ab4a2004ebe10e3b3c0a0e3fba9386987dc2fb
(cherry picked from commit 3acfc87452b320636b3c6f0def8ff1412980c5c3)
2025-08-24 23:18:27 +08:00
xun.zhang
9ed5d8a1a9 ENH: use physical extruder map to get ext id
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ibfaacfc31863404153a80289bd5cb47d72418060
(cherry picked from commit 8616784886afe119b39783559760794caea179d8)
2025-08-24 23:18:26 +08:00
xun.zhang
f382ee98db ENH: add map for logic ext to physical ext
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I0d250de87b3c3d6c9ceb4efd3099c82104e5fc1b
(cherry picked from commit b45d2f53801abc209cb98670c0960efc21ab120e)
2025-08-24 23:18:26 +08:00
zhimin.zeng
ba957d1580 FIX: slice crash with incorrect filament_map of single printer
jira: none
Change-Id: I49bdcf03fc8abb24e41e0545e2d9cd3c55941df4
(cherry picked from commit 83681128e0c14c8f50952011122d6eceacce496a)
2025-08-24 23:18:26 +08:00
Noisyfox
679794d3c3 Update code structure to match BBS 2025-08-24 23:18:25 +08:00
Noisyfox
f04a3dced9 Fix compile error 2025-08-24 23:18:25 +08:00
zhimin.zeng
6975a68338 ENH: add a prompt dialog box to prompt
for synchronization of machine information when opening a file
jira:none

Change-Id: I7b3419bb3489a5b6a37a99b5021c7e69ac35a009
(cherry picked from commit 6437437fe0c83f7c14f7ee5b339475d6db559a56)
2025-08-24 23:18:25 +08:00
zhimin.zeng
f20c916e05 ENH:add layer_filament_list.json record used filaments for each layer
jira: none
Change-Id: Ib293ff9fdd284fef9e6de93260e2ba7cc3d66daa
(cherry picked from commit 28046fbc23e174868f41535764076888a680d116)
2025-08-24 23:18:25 +08:00
zhimin.zeng
1765388326 FIX: modify the filament id for painting color
jira: none
Change-Id: I25dcab95f1499783afd892c790f1e18232ea4f72
(cherry picked from commit f7a0e66e0dd16531d2318843ec86630232880867)
2025-08-24 23:18:25 +08:00
zhimin.zeng
e8d77ddb58 FIX: show k value when select default pa profile
jira: STUDIO-8540
Change-Id: I1c92628fa888f935762d31968237e28d65594e51
(cherry picked from commit 3f791574cd5ae384ee295e595f35d45c78ac719f)
2025-08-24 23:18:25 +08:00
zhimin.zeng
6599f37c83 ENH: add tpu check before slicing
jira: none
Change-Id: I7d4f053e67f4a4aa22ef990d597d28cb894c4195
(cherry picked from commit 60cdf3b6551a8c18c10db0a746e1b15b764eda66)
2025-08-24 23:18:25 +08:00
zhou.xu
5dda30f9cc ENH:update "extruder only area" svg to clearly displayed
jira: none
Change-Id: I43cd78bff8e1d1b2b0beb7d5c4886caac9198053
(cherry picked from commit a08d79c7c5f6256b7cf79ded88673938893ce051)
2025-08-24 23:18:25 +08:00
lane.wei
db0f3e484a ENH: CLI: support multi-extruder slicing
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)
2025-08-24 23:18:25 +08:00
zhimin.zeng
c99047c6a7 FIX: add ams status check before print
jira: none
Change-Id: I5fd03ec596ddddd1b568325c509914cd9aec0f61
(cherry picked from commit 8fca76aac9742934c27c66f824d6190bb6e9279e)
2025-08-24 23:18:24 +08:00
xun.zhang
e6f72db6bf FIX: wrong flush statistics in sequence mode
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Iec3557900fce7b3c70e05705f9ea0e987fdff3cd
(cherry picked from commit 563e4ca8cf1756b514a893699c29410bfe68afb5)
2025-08-24 23:18:24 +08:00
xun.zhang
d7af75359f ENH: save filament sequences in gcode result
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I79c2eb4002c72568d487df417c914ab0b8a14a67
(cherry picked from commit a289370b19e78693698db388d4057e25ba285d6b)
2025-08-24 23:18:24 +08:00
zhimin.zeng
53745a5767 FIX: UI display problem of filament map dialog
jira: 8467
Change-Id: I4bf3aa8d0b743a910362def4fc565e9001d79c53
(cherry picked from commit ea5137d6187e151586cc78f424a3873870fe0a33)
2025-08-24 23:18:24 +08:00
zhimin.zeng
4d3fada5d1 FIX: Mixed mappings are not allowed
jira: none
Change-Id: Ia29aa3ea5b953983e6b4e71b11fdb53a518bd0cf
(cherry picked from commit 159ad9fe0d82c9e4b157b4eb83ea509d7ba104d1)
2025-08-24 23:18:24 +08:00
zhou.xu
8874585c89 ENH:add calc_extruder_only_area api
jira: none
Change-Id: Ic49348915bce53e9cd63effb5053a93a40840e04
(cherry picked from commit 647467e25b83588bfde25429e64320cb42c1ac99)
2025-08-24 23:18:24 +08:00
zhimin.zeng
a1586b348f NEW:add "slice error" for double extruder
jira: none
Change-Id: I58e86c33bc91456d42efcc1a0cad003432bb13df
(cherry picked from commit 166a46caa8157e246adfeec591dc13383a47b252)
2025-08-24 23:18:24 +08:00
zhou.xu
78229089bf FIX:fix warning for icon_size define
jira: none
Change-Id: I0393677c5c29354aeca41917daecc87721d9d9ce
(cherry picked from commit 97584e0a1e73a0ce2152ce88c1ffd58abfc96c73)
2025-08-24 23:18:24 +08:00
lane.wei
6c79e8262a ENH: Scene: check object position error in 3DScene for multi-extruder
for some obvious error, we identified it and show to user

JIRA: no-jira
Change-Id: Id0365e89c4121ccccb9b5627a98428704432ab58
(cherry picked from commit 270ae086fbca576b75901313959c92cbfb913db6)
2025-08-24 23:18:24 +08:00
Noisyfox
5a9439ab4f Fix NPE 2025-08-24 23:18:24 +08:00
zhou.xu
1f7dc5a641 FIX:create new project should delete notification
in last project
jira:none

Change-Id: I936e9a737f8b5e43905936d8796aeedd70248268
(cherry picked from commit e3330c6fba7db7932e485a1d0543ce23ce43cdfe)
2025-08-24 23:18:24 +08:00
Noisyfox
1b55440b15 Fix compile 2025-08-24 23:18:23 +08:00
zhimin.zeng
64a2199733 FIX: Add a matching rule with the same name for PA value
jira: 8339
Change-Id: I134139fd8cff9cb47b29523e90d5dd4f2667c387
(cherry picked from commit 489285c9b89bdd21812c5e7429263fb28fd30f20)
2025-08-24 23:18:23 +08:00
Bastien Nocera
ea4357df3e libslic3r: Fix declaration in FlushVolPredictor.hpp
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)
2025-08-24 23:18:23 +08:00
xun.zhang
b71d14b526 ENH: consider colors with de < 5 as the same
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)
2025-08-24 23:18:23 +08:00
xun.zhang
179eab1355 ENH: add module flush vol predictor
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ie1b0d4c443df4a26ff1b010e73d589162a0fbff7
(cherry picked from commit 475e9b34ff85cf6058ac639fde4b73264e350195)
2025-08-24 23:18:23 +08:00
xun.zhang
a2ae7e1ddd FIX: disable unprintable logic for single ext
1.Disable unprintable logic for single extruder printers

jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Iecb4cc80455288925d3acb5688b81aa9ef1c3a8a
(cherry picked from commit c6ddd329e3397cc4cafac4665b9fdf2dabb657f6)
2025-08-24 23:18:23 +08:00
zhimin.zeng
56af264273 FIX: add object id for gcode check
and display plater limit error individually
jira: none

Change-Id: Ie6105642667530901be494b344ce853e728ae5fa
(cherry picked from commit acd6016fc834c749307205448e05bffee954c71e)
2025-08-24 23:18:23 +08:00
zhimin.zeng
eec174ccf0 FIX: remove auto sync for extruder
jira: none
Change-Id: I924c5d8c8d15139dfcb1532322ad7cf813aece3b
(cherry picked from commit e956106c158d67d265c641b959ad1ed397ece09a)
2025-08-24 23:18:23 +08:00
tao wang
3141dbd57c FIX:fix the issue of macOS crashing easily
jira:[udesk 7578206]

Change-Id: If5e0b2d0969ca70815a5d2c9cca71654c9e1817b
(cherry picked from commit 8dfa6839e5e3a9bebb03616ff6d0c0c1699ad22f)
2025-08-24 23:18:23 +08:00
zhimin.zeng
d841b2d178 FIX: Add a matching rule with the same name for PA value
jira: 8339
Change-Id: Ib11be988a8e3cdbcaa853627cb946446730062c4
(cherry picked from commit f4379b3e193ac6d30b8ee91b5c3ff5518aec1f31)
2025-08-24 23:18:23 +08:00
Mack
f888fafc07 ENH:colour arrangement ui text width limit
jira: nojira
Change-Id: I6a8f4341e671aa88704346bfeb1d8be3725619a1
(cherry picked from commit 3cb36b51119ef4468febeab9246e103226c42a07)
2025-08-24 23:18:23 +08:00
zhou.xu
4e4e9f7d15 FIX: get nozzle_diameter error
jira: none
Change-Id: Ic33854a0d7322fe9154910480d2ea3ceae524f79
(cherry picked from commit 12912f6772b3c11d5df658be1fc8c17ccb5565cc)
2025-08-24 23:18:23 +08:00
zhou.xu
5b9510981d FIX:reset is_load_extruder_only_area_textures flag
when change machine
jira:none

Change-Id: I97c97fae3d4ded0e25d518c0ae4a5cef9c640b45
(cherry picked from commit c26521470fb7a35b09a67559d8ec3facf2b3988a)
2025-08-24 23:18:22 +08:00
tao wang
9b9e339d15 FIX:Fix the issue of text wrapping
Change-Id: I360c08e37d58359b30df460df07ed8266ac5dd6a
(cherry picked from commit 54a3e4786e11b47111b33a80788a376f0d238daa)
2025-08-24 23:18:22 +08:00
xun.zhang
041ca29ab7 ENH: modify filament group strategy
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Iac837beeb7a5c4684aea38c3e3925a67cd916fe8
(cherry picked from commit e3f4496adf87ce68691c2e511b065925784c54e1)
2025-08-24 23:18:22 +08:00
tao wang
1b11416cb8 FIX:fixed the crash when sent print when no printer available
Change-Id: I2974ff7c3f7e753239718f9bfd8b4977672dc651
(cherry picked from commit 9f3c98dcfb8801fe70e9dd02f0f931be6c5556be)
2025-08-24 23:18:22 +08:00
zhimin.zeng
679a4a7fa3 FIX: Inconsistent filament map box width at other resolutions
jira: none
Change-Id: Ib8d8478848252264ba43ad9a9091403f92d8314e
(cherry picked from commit 2a75d397c4ca523c61b51e0853bad8f9e0f7d7c4)
2025-08-24 23:18:22 +08:00
chunmao.guo
f73273519f FIX: not set extruder index of option to -1
Change-Id: I67b053db9936e71eed54cafe8f8f7a63a7f85822
Jira: none
(cherry picked from commit 6a282118f8c4ea2f42df46c8cf6967e8485097e3)
2025-08-24 23:18:22 +08:00
chunmao.guo
8ace17eaef FIX: AMSCountPopupWindow wxPU_CONTAINS_CONTROLS
Change-Id: Iff7c79640e1fddc1bb4c5f73b4bbbe81122515d9
Jira: none
(cherry picked from commit 0e0599c7226897e22010eea06554d0466fdb1419)
2025-08-24 23:18:22 +08:00
zhimin.zeng
5d17c51aa9 FIX: add set to Optimal button
2. modify the manual mode of filament_dialog
jira: none
Change-Id: I2ce6834eb65de2da70e7649346fc88b90f280b29

Change-Id: I18448e800fe3338f045d35f7a1fa6c3e3c8eef79
(cherry picked from commit 5dce0ebc06f6aace50374fa37bd91cabb5213385)
2025-08-24 23:18:22 +08:00
xun.zhang
950da4ecfd ENH: do not consider empty filament
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)
2025-08-24 23:18:22 +08:00
tao wang
99f0e35069 FIX:fix some new ui issues
jira:[new ui]

Change-Id: I1283de641d4f2e4acfd5bef91716f9029665c465
(cherry picked from commit 65e8b4ee7e816cc313e8d7a33f06c6f1638dceef)
2025-08-24 23:18:22 +08:00
Mack
b6197c460b FIX:loss is_auto
jira: nojira
Change-Id: I3511b0abdbdb94b9517a1b21c95ce224d0f7422d
(cherry picked from commit c4cdc2e8f3960a9128ab7a8a7a62717351bcdbbc)
2025-08-24 23:18:22 +08:00
liz.li
0b71026bed ENH: add filament arrangement drag image and other UI details
jira: new

Change-Id: I2ebbfd2a20c2d2f6059c2508467cd69dd272f943
(cherry picked from commit 3e633455def0a40f9f041320c7cd3cc4ae65be02)
2025-08-24 23:18:22 +08:00
xun.zhang
a6dc8c27a8 FIX: invalid pop up when changing machine profile
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)
2025-08-24 23:18:20 +08:00
Mack
e26e2ca793 ENH:change Color Arrangement ui
jira: nojira
Change-Id: I77f84675da0b4fe7069c76c14668026fc3d8932a
(cherry picked from commit 785b8c7b2f5ee014fedea57a88693888d2b8ca26)
2025-08-24 23:18:20 +08:00
zhimin.zeng
4ac3edf780 FIX: fix incorrect flush_volume_matrix size when switch printer
jira: none
Change-Id: Idaaaaa65b2ea7fdefd41d1c589e5404f8296ae4a
(cherry picked from commit 927170c6304795b0ad75560688348b4febb96a42)
2025-08-24 23:18:20 +08:00
xun.zhang
c362a99a11 FIX: empty filament map
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)
2025-08-24 23:18:20 +08:00
xun.zhang
2c75d2f1b9 ENH: Select group that best fit filaments in AMS
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)
2025-08-24 23:18:19 +08:00
zhimin.zeng
b553cf68da FIX: flush_volume_matrix and flush_multiplier is incorrect
jira: none
Change-Id: Ie2d73b90b9ac7f5a6945b2bac859b76d2132f55a
(cherry picked from commit b17c5e7e017a3019224bf105758ef23658308254)
2025-08-24 23:18:19 +08:00
hang.xu
291225ae35 FIX: Aix and temp control
jira: none

Change-Id: I7a9db8178a77727c85ad2b727771179fc5e8050a
(cherry picked from commit e6b14bdefb949d3a61479e54b7b27450b344de18)
2025-08-24 23:18:19 +08:00
Noisyfox
00ece36f38 Fix del filament button spacing 2025-08-24 23:18:19 +08:00
xun.zhang
e1ebe832dd ENH: refine filament group algorithm
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)
2025-08-24 23:18:19 +08:00
zhimin.zeng
3e9e9a1fa0 ENH: modify the error information of gcode check
jira: none
Change-Id: Icccd17e110408f2fdb9890307139de0f9821f008
(cherry picked from commit 2ee87600cb6d1d09808447bb6ec996224d633905)
2025-08-24 23:18:19 +08:00
zhimin.zeng
1737829922 FIX: crash when sending print with empty ams_id
jira: none
Change-Id: I89dc87af28b45c69eac86810444de2519dfccd08
(cherry picked from commit f53e00ec6d9350046df4b9dc70cec75039b6d5d1)
2025-08-24 23:18:19 +08:00
liz.li
cbfbe80ed8 ENH: filament preset edit menu should not change to self
jira: new

Change-Id: Ia8eb3db05f83932d2eb0b8ef2ba8014e99c8e057
(cherry picked from commit 12932832ae793b142f66e2a9c6d9a5fd819e4125)
2025-08-24 23:18:19 +08:00
zhimin.zeng
a99d8736a7 FIX: change small filament to large filament is incorrect
jira: none
Change-Id: I0f7b10fb557ac5cb147bfebf0445de9ea862d602
(cherry picked from commit a35d9b3138853efa16c733a228f244b547da27c4)
2025-08-24 23:18:19 +08:00
liz.li
7370dead32 ENH: refine dual extruder related UI details
jira: new

Change-Id: I63dd6278f3e7d22336482dba0f178150ebe55f1d
(cherry picked from commit 73c05eee3bbcbed6fc5909db638fa4bac9a75bfc)
2025-08-24 23:18:19 +08:00
zhimin.zeng
626affffd8 ENH: enhance cali history dialog for mutli_extruder
jira: none
Change-Id: Id23ae2c12b93b9f49d3031fbb9a49930d072b02c
(cherry picked from commit 8b8b6bdec8d81e56fc78e27d1cdeec077c56e9f5)
2025-08-24 23:18:18 +08:00
zhimin.zeng
859e5373a5 FIX: Modify calibration protocol
jira: none
Change-Id: Ib0fdf4fd1ab514c2db4d1731ad0d37d3dc38fce5
(cherry picked from commit d479d1186a63e9432f3b063cc70c9f691cd6214b)
2025-08-24 23:18:18 +08:00
zhimin.zeng
ca6a3fe17b FIX: Prompt user when mix ams and vtslot in an extruder
jira: none
Change-Id: I9a1d4936056fc872c75bf0454e4ca89665ece2f8
(cherry picked from commit 65c00e00fe8709255c40e94679fa4ced6d3ae688)
2025-08-24 23:18:18 +08:00
zhimin.zeng
9e05f88a36 FIX: fix the crash bug when slicing
jira: none
Change-Id: Ieaec4fda4c653e6595322356bd16226640d2e932
(cherry picked from commit d715353fa634660cb420920d96466cb23bc6576e)
2025-08-24 23:18:18 +08:00
zhimin.zeng
1bcc4614b8 FIX: modify UI of FilamentMapDialog
1. Modify dragging behavior
2. The swap button is grayed out in automatic mode
jira:none

Change-Id: Idff795bf092c4959c67d0711b0be316fba997684
(cherry picked from commit c7486e1c5e56667cab61ee9a97898f03b65b64b8)
2025-08-24 23:18:18 +08:00
zhimin.zeng
1658c6c54d FIX: When the printer is inconsistent with the current preset
when the ams is 0/0, should not consider the print connect status
jira:none

Change-Id: I2288ff15894d5c734a98b830df6678cab2bd12fc
(cherry picked from commit 20837717d411016251c4831586b0fa61350a08b2)
2025-08-24 23:18:18 +08:00
zhimin.zeng
b0329ac88d FIX: Should not sync when machine types are inconsistent
jira: none
Change-Id: If769fe0d19fb06c4a70e616416bf28f194ebcd45
(cherry picked from commit 8360bd24735073f5882ab014cd80a30d93238ebc)
2025-08-24 23:18:18 +08:00
zhimin.zeng
454002d65c FIX: auto filament map does not consider vt slot
when it has ams
jira:none

Change-Id: Id101a17375059a3aabc8e35d08352cd394a894e6
(cherry picked from commit 14ceceb3d73c0a5e02c7b9cd748978f847fdf03e)
2025-08-24 23:18:18 +08:00
Mack
8bfe3a818c ENH: color arrangement ui
jira: STUDIO-8124
Change-Id: Ibcde0e002ffd652b350bd05a9453ce7aaefd7bca
(cherry picked from commit 65e3829f92ceb0bd2152ff255640453a8216cc0c)
2025-08-24 23:18:18 +08:00
zhimin.zeng
e2efccac09 ENH: Enhance ams synchronization prompts
jira: none
Change-Id: Ide3141f980dc8de0284f3301414eca5c58a24204
(cherry picked from commit f30c7d3355bfba43a54fc1300e077d3694657e90)
2025-08-24 23:18:18 +08:00
xun.zhang
77fbe2e0ff ENH: support virtual G1
1.We need virtual G1 command for statistics

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I0db0f7f0f0c2d61e43582154e0bd76bd0097c8da
(cherry picked from commit b34395358b4dd716eba7998a02f1cd3f6720c957)
2025-08-24 23:18:18 +08:00
xun.zhang
0889ff619e FIX: crash when ams filament list is empty
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)
2025-08-24 23:18:18 +08:00
xun.zhang
fd5c390500 ENH: remove a useless assert
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ief29b7cc8adc16218f1b3608a35448bd95e54c80
(cherry picked from commit 2f11ca8a03087aad9b5039db4258f652c8eadbf1)
2025-08-24 23:18:18 +08:00
xun.zhang
dcfa224cf2 ENH: do another map for ams filaments
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)
2025-08-24 23:18:18 +08:00
zhimin.zeng
22d00f89b0 ENH: add tpu check for send print and cali
jira: 8234
Change-Id: I5706071d900079477abc9558461811a8d85fb0ab
(cherry picked from commit f0d2ad3dbe2e29548a8b3621a863cd38b543b6b4)
2025-08-24 23:18:17 +08:00
zhimin.zeng
45eb45e531 FIX: add switch_filament_maps.svg
jira: none
Change-Id: Ibbecc55405041524ba84d32b4c912112de3da2e6
(cherry picked from commit 4a472a8c6a6a8da7670f21ec4b9c94c81e0896d6)
2025-08-24 23:18:17 +08:00
xun.zhang
d6a93ed8b6 ENH: add wall vol speed when filament change
1.Add placeholder for outer wall volumetric speed when changing
filament

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ib1d5608f95bc12777db5d848f6b037c27ea0fd03
(cherry picked from commit 8472e3011cbb957c361e391833c76a5542e7f2de)
2025-08-24 23:18:17 +08:00
Noisyfox
e677fb1936 Fix crash when opening extruder settings 2025-08-24 23:18:17 +08:00
zhimin.zeng
eddab8bf8d NEW: Add "change filament to"
jira: none
Change-Id: Ic5550ed257e03033681de91ebca521390f902f66
(cherry picked from commit 51de6253ce0525da3345c496e0a70c5fe8ff542a)
2025-08-24 23:18:17 +08:00
xun.zhang
be6095b4a7 FIX: missing filament start gcode with 1 color
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)
2025-08-24 23:18:17 +08:00
zhimin.zeng
7c6edc004f ENH: modify the UI of filament map dialog
jira: none
Change-Id: I513a518de4509fb7adbc81d9fc3b0fc43fb3244a
(cherry picked from commit 631baa3999ece2540c66cbf1488c55b64cadaf8e)
2025-08-24 23:18:17 +08:00
zhimin.zeng
df7a9b1267 FIX: single ams should not include vt slot
jira: none
Change-Id: I338b57c031b551783abea78ef021537d2d89dee9
(cherry picked from commit f68a8aed24c5a0e09bea3845a19e765d68e4791a)
2025-08-24 23:18:17 +08:00
lane.wei
84fe6250b2 FIX: config: fix the 3mf export invalid issue when using single filament
JIRA: no-jira
Change-Id: I1faf1fd7ac2b3dfd99594856e3c84da12d805627
(cherry picked from commit 913bace1eb13f74eaea100897efeccd30a9253ed)
2025-08-24 23:18:17 +08:00
lane.wei
082c213dcf ENH: config: add extrudrer variant check logic
when load config from 3mf

Change-Id: I946ba777853e479418fcd1b49209f75ed41f33f3
(cherry picked from commit 5defd2b7c315d658be52caf8eb97e80b41458f31)
2025-08-24 23:18:17 +08:00
lane.wei
508c5d5bc9 ENH: config: add exception when load old invalid 3mf
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)
2025-08-24 23:18:17 +08:00
xun.zhang
c0369b2c81 ENH: enhance accuracy of weight calculation
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)
2025-08-24 23:18:17 +08:00
zhimin.zeng
c06de43231 FIX: crash when opening old version file
jira: STUDIO-8155
Change-Id: I67ac46f8e01d7c3ed2dedf40c1dab9841a3af02b
(cherry picked from commit 0e848f4fba903a043fb1b1781c5827e72de48de1)
2025-08-24 23:18:17 +08:00
zhimin.zeng
c9708236ac FIX: fix ui display problem
jira: STUDIO-8143 STUDIO-8142
Change-Id: I50abb78f9585378d3ef7278377dfb35d5db6189d
(cherry picked from commit 00a6e17c6c21e741f8427f6841047fe49e6330cf)
2025-08-24 23:18:16 +08:00
zhimin.zeng
72d758c3b0 FIX: modify unprintable_filament_ids should regroup
jira: none
Change-Id: Ifb8105f6e301aaed9ca4e62a37b9d3a1616e755b
(cherry picked from commit fec7129437fc781b918ae1819c280440ea3fb54b)
2025-08-24 23:18:16 +08:00
zhimin.zeng
42f8070fc9 FIX: flush_volume use correct extra_flush_volume
and fix extruder_offset bug

jira: none
Change-Id: I84644ad5b54994ae65269531311386cacd972bf3
(cherry picked from commit 71987627efe4fcdcc7940a48d043a7cecc485c02)
2025-08-24 23:18:16 +08:00
Noisyfox
1a03d33795 Fix some build error 2025-08-24 23:18:16 +08:00
lane.wei
9142654795 ENH: config: add default_nozzle_volume_type in printer
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)
2025-08-24 23:18:16 +08:00
hang.xu
b2f2e41b80 NEW: Add tag for variable layer_height
jira: STUDIO-7412

Change-Id: I4b5c8e158b073b302db6faad77bb8ca0f70f766a
(cherry picked from commit ffc34acf783aa1f6ac23f24a96fff30be90880d0)
(cherry picked from commit 86a8e6c433799d931e441d5ea387702b03ff50f8)
2025-08-24 23:18:16 +08:00
zhimin.zeng
d6e3d5272e FIX: incorrect print sequence of support filament on first layer
jira: none
Change-Id: I893fc773849a5557c138de3f9bd1c3ec1e1978df
(cherry picked from commit 3b988f6b77d2375b98f30727a8d72a4524970f62)
2025-08-24 23:18:16 +08:00
zhimin.zeng
444d7fa81a ENH: Add limited filament maps to slice info
jira: none
Change-Id: I7b08943ba5f4e7fa9be18ba3f64caee182888d45
(cherry picked from commit 85ebb469959499d5c2d7fe349e0d8e92045c9fab)
2025-08-24 23:18:16 +08:00
hang.xu
71b4962b83 FIX: Prevent sending print when nozzle type dismatch
jira: none

Change-Id: I0278fd9bc22a9d9fd44b4d776f54de5fc07db6d0
(cherry picked from commit d1aac2513e94721099286025bb32e613d0a429ac)
2025-08-24 23:18:14 +08:00
hang.xu
dd99af4cec FIX: double nozzle hybrid mapping
jira: none

Change-Id: I64908776a6265da7809814e62c9e7a860f39bffd
(cherry picked from commit c96102043bc46f134cf039edabd0d80877e9ef8e)
2025-08-24 23:18:14 +08:00
qing.zhang
1b70bd38f2 ENH: check wethether filaments print on first layer
Jira: none

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I1cc7cd9e9bbbcdf72112c0949196c09ef414cf91
(cherry picked from commit 67039a6f4d51482fe689a2aad0a900f3339a5c62)
2025-08-24 23:18:14 +08:00
zhimin.zeng
c77be9cf3b ENH: some fix of previous patch
some fix to
Ib37896f9101d93ca63c7edb0b1e6328045a5ddb3
I4b5c8e158b073b302db6faad77bb8ca0f70f766a

Change-Id: Iec62a4df45159bac3db63c48feef16ec1aa35ae7
(cherry picked from commit 6fb06eb7790c1469d433f5ecec97d5be966e94af)
2025-08-24 23:18:14 +08:00
zhimin.zeng
bd178d9369 ENH: Pass ams information for slicing
jira: none
Change-Id: I3fe12189b6e8246fd553dcd8659bf7f98e622767
(cherry picked from commit b620a4122e2371d8311a307fa1db377e5a155222)
2025-08-24 23:18:14 +08:00
zhimin.zeng
f2bfd51492 FIX: limit the wipe tower to common areas for multi_extruder
jira: none
Change-Id: I58d061904610a5e33679e7254721bc43dcc22e64
(cherry picked from commit 64f471c2cceb9c08ff8b5f6af10ca95771ccaf57)
2025-08-24 23:18:14 +08:00
xun.zhang
e77d2abf47 ENH: add tpu check when printing by object
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I366aa8387dfc8d1c94fe836ee4898424d04737c3
(cherry picked from commit f39eabfd9fac3e3abf6c360a74a73abf453778bb)
2025-08-24 23:18:14 +08:00
zhimin.zeng
6e7b2e9614 FIX: fix build error
(cherry picked from commit 885e96d8db30a688c3fc65f828c2c4b78499b4c3)
2025-08-24 23:18:14 +08:00
zhimin.zeng
135b39526e ENH: Add gcode check for multi_extruder
jira: none
Change-Id: Iebc43e608c4509eb62b280af2d401fa9e0e089ba
(cherry picked from commit c75c10e312b8d0bd5404d92db88c95a9e6186bc1)
2025-08-24 23:18:14 +08:00
xun.zhang
7bd16a3ca7 ENH: add filament cluster algorithm
1.Add new KMediods algorithm
2.Consider physical and geometric printables
3.Refine code structure

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I1412835c3c6380f9cedb44ff6914004365bba889
(cherry picked from commit c53a35856d8d1cbd3a632a8510f1ddfdf9117106)
2025-08-24 23:18:13 +08:00
zhimin.zeng
8eb0a59723 FIX: fix flow ratio calib bug for single extruder printer
2. modify the filament_flow_ratio to nullable
jira:none

Change-Id: I3f0569ee643cfe9473c6029ca0e04f4b80c8332e
(cherry picked from commit ed61d1d31bdc79f064567deacf35e05bd123880d)
2025-08-24 23:18:13 +08:00
zhimin.zeng
e7d2c51326 ENH: flow_ratio cali support multi_extuder
jira: none
Change-Id: I03399040a772043d3d20116b0588fd04e0725be1
(cherry picked from commit 38b3c32b6ae2ca63e815623144cb4c2a9c194977)
2025-08-24 23:18:13 +08:00
Noisyfox
d6e219c52f Fix build error 2025-08-24 23:18:13 +08:00
zhimin.zeng
f0b0f21090 FIX: recover delete filament button
jira: none
Change-Id: I4972883081e424f5e0ac1c60a7cfc28d5248f442
(cherry picked from commit c1bf153a19153830601d425d5b3ba7bd2a10f11d)
2025-08-24 23:18:13 +08:00
qing.zhang
5fda94a53b FIX: remove extra filament change
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)
2025-08-24 23:18:13 +08:00
zhimin.zeng
0ff33f8f7e ENH: support tpu for multi_extruder
jira: none
Change-Id: I556804aadac00406e7214b86f7925170a90c55ce
(cherry picked from commit ede9f90a792f3f39e82916543efaf187ce80d66c)
2025-08-24 23:18:13 +08:00
lane.wei
011f0d7d0c FIX: model: fix the bbox computing issue when update_instances_print_volume_state
JIRA: STUDIO-7498
Change-Id: I80fac3253d1bd6fcc49a4eb08dd68fe2e458c148
(cherry picked from commit 22feef013c2fc8c3c222a280e7b618d617ec041e)
2025-08-24 23:18:13 +08:00
hang.xu
5474cff20c FIX: Parse virtual slot info
jira: STUDIO-7724, STUDIO-7725

Change-Id: Id9181511b7503787fe06403be6ecb782d78cb21e
(cherry picked from commit 286eca79c2c0824522f0917123c9315f8df65dee)
2025-08-24 23:18:13 +08:00
Noisyfox
82497c18db Fix build error 2025-08-24 23:18:13 +08:00
lane.wei
6e063bdc8d ENH: 3dbed: support rendering extruder area with different color
JIRA: STUDIO-7494
Change-Id: I717999e8b7ab1d7d350299b412a3a270c6ba7a9e
(cherry picked from commit 62b1d00d1fd6675fd067b76778d6a577dfae0c24)
2025-08-24 23:18:12 +08:00
lane.wei
f702ad9fd2 ENH: dual_extruder: add logic to process extruder_printable_area
JIRA: STUDIO-7498
Change-Id: I1cf53db93acf41b06cb1b9569a0679487c9f1e41
(cherry picked from commit e5be69dedd1ba6dc289a14b89598c9a6101dacb3)
2025-08-24 23:18:12 +08:00
xun.zhang
e433e49e2f ENH: add some params for multi extruder
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)
2025-08-24 23:18:12 +08:00
xun.zhang
297292ccf3 ENH: extruder printable area default to be empty
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: If4aad7329cd97141eaec3e438dee165e86536c66
(cherry picked from commit 68ed20dd096d6fcd74f7dfa606548a6f640ec688)
2025-08-24 23:18:12 +08:00
zhimin.zeng
d77b6bd841 FIX: move the lift gcode from change_filament_gcode to GCode.cpp
and delete ;nozzle_change_gcode of change_filament_gcode
jira:none

Change-Id: I79c2896afe15b59ba3932240edcb6330e230470f
(cherry picked from commit 8cf72ab46cea16fcd3b988593843b3766b296dc9)
2025-08-24 23:18:12 +08:00
zhimin.zeng
6fdb2569c5 FIX: modify the filament_change_gcode
and set 1/4 max_volumetic_speed for TPU
jira: none

Change-Id: I492ce178a88fb702fc051f8a0abec6a4b5706d00
(cherry picked from commit c1dec339dd7b5f9e70d3a9c132654aa589085757)
2025-08-24 23:18:12 +08:00
xun.zhang
4f42d6bd8e ENH: add ConfigOptionPointsGroups
1.Add extruder printable area

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I753344917a67e3d8ac361c15c3d374b5ef951d21
(cherry picked from commit 92fa0ff010f9ee8dee24f4c00b5217f92ecb04f6)
2025-08-24 23:18:12 +08:00
Noisyfox
cd321f1711 Fix build 2025-08-24 23:18:12 +08:00
chunmao.guo
7834f468d1 ENH: vertical layout button
Change-Id: I0b205298688c9df88dcfe6eb6e72cc887a9ed5be
Jira: none
(cherry picked from commit 56ed912c3ee12fb0ee39f1dad191c4d379aa3015)
2025-08-24 23:18:12 +08:00
zhimin.zeng
0116923f58 FIX: single printer should not display summary item for default
jira: 7948
Change-Id: I9d13ebe8e52eb46e1ef9f7bd62f814bc7837dbe6
(cherry picked from commit aba72bb04f9decd5ca02400626aeadfab35b243e)
2025-08-24 23:18:12 +08:00
zhimin.zeng
9409ec35a3 FIX: modify for virtual slot when multi_extruder
jira: none
Change-Id: Ic7284018ecb44e24536788b05dba572b96460e66
(cherry picked from commit 52e890fba1584bf9687a24ee46890c00f531e383)
2025-08-24 23:18:11 +08:00
zhimin.zeng
3cbaac7669 FIX: slice status error when print by object
jira: none
Change-Id: Iaa8453cbf79a38984cdae085418165287fee21b1
(cherry picked from commit e5d2ea39094369742e5d562709f52d16ca08aa73)
2025-08-24 23:18:11 +08:00
hang.xu
6b3ccc543d FIX:Change text in stop printing dialog
jira: STUDIO-7899

Change-Id: Ic93f7322aa35c06dd98df2b70c9f24f94a62467c
(cherry picked from commit b2418c74172364f875a08844fd7bb103a849a973)
2025-08-24 23:18:11 +08:00
zhimin.zeng
4685bf10c9 ENH: calib support multi_extruder(UI part)
jira: none
Change-Id: I3009c2f8b601dc078cfed787dc3531fc1d4848d6
(cherry picked from commit 11f61abefaca6f0810e76266e50729432a3aa15e)
2025-08-24 23:18:11 +08:00
xun.zhang
250b827e19 FIX: compile warings caused by 64bit shift
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ibce8e160a922c266bfb9b6a52fad01466fee8bef
(cherry picked from commit c6251b4d64b043aa6a161fe900eafe8b06a1d27f)
2025-08-24 23:18:11 +08:00
xun.zhang
4c279b6497 ENH: support custom layer sequence
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I73f030f2009b66aef20e3492f742d85970081e8a
(cherry picked from commit 1525c3c3aca88c729ed1527af9d2afe486a283e1)
2025-08-24 23:18:11 +08:00
zhimin.zeng
6c6e9afd02 ENH: add summary for gcode preview
jira: none
Change-Id: I481536e0d950ebe695236e55ffca8113a26d8033
(cherry picked from commit 1040f007b658c0a34e0cef5a677373829c1b81b4)
2025-08-24 23:18:11 +08:00
hang.xu
49631198bb FIX: Add bed type in send print page
jira: STUDIO-7824

Change-Id: I64d9ed41b862ed4e3b8c21218c289132d767105e
(cherry picked from commit 7bb5060b739b3a95fe889ae64e8d7289e2c928d9)
2025-08-24 23:18:11 +08:00
zhimin.zeng
1ada437979 FIX: enhance filament_map auto manual behavior
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)
2025-08-24 23:18:11 +08:00
hang.xu
00388756ed FIX: Mapping UI display
jira: STUDIO-7473, 7817

Change-Id: Ibd014985b3b4997bd86700537e1d8a7d0d18176f
(cherry picked from commit 66701cc4c9f6c975ebd30b35e519ca8189dc9b7d)
2025-08-24 23:18:11 +08:00
hang.xu
dee99d7a50 NEW:Use new ams mappiong item ui/ux
jira:[STUDIO-7347]

Change-Id: Iba306c4a1b5ae59e406a6862428b425a48002870
(cherry picked from commit 260a7202fc07af028db74159c34106c058fd07ff)
2025-08-24 23:18:11 +08:00
Noisyfox
67edef75bb Fix compile 2025-08-24 23:18:11 +08:00
xun.zhang
5d4cb375b0 ENH: add tool order function
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)
2025-08-24 23:18:10 +08:00
xun.zhang
ec98375192 ENH: optmize code structure of tool order
1.Put reorder functions in ToolOrderUtils

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I49c7b447ba1f41f3747ba3127d842c4e3957b5ff
(cherry picked from commit 0f70c81a7d5686d8e80396f8f865f25b72618907)
2025-08-24 23:18:10 +08:00
Mack
9380260a74 FIX: load_from_svg_file_change_color() supports 8bit colour values
JIRA: nojira
Change-Id: I72e68bd9cb547064736d130205074da0e7eabd60
(cherry picked from commit 8bdac292a0bd34786189f4ca320f646340157d2c)
2025-08-24 23:18:10 +08:00
zhimin.zeng
94abdf8088 FIX: only single extruder printer display the icon
of FilamentSettingDialog
jira: 7714

Change-Id: I5d6eca802b9be1fcdeaa28d9e4fbc4862d8c8378
(cherry picked from commit b7176bfdd14c88362058d374c8573d1bb22d6a03)
2025-08-24 23:18:10 +08:00
hang.xu
5d70958c55 FIX: the order of cans in AMSLite
jira: STUDIO-7765, STUDIO-7766, STUDIO-7767, STUDIO-7721, STUDIO-7713

Change-Id: If95e0667fc1d615c0494b007f7f7408f68e5b21c
(cherry picked from commit 9b510c0aeb4e9b8f26c285e1f6d5402852be1895)
2025-08-24 23:18:10 +08:00
zhimin.zeng
955bb4dea8 ENH: wipe tower support nozzle change
jira: none
Change-Id: I398a508cbc8d02644b60e504405392254329ef10
(cherry picked from commit 8b2a94ed5f8b757ccc4919b9182f3d8edaf767fd)
2025-08-24 23:18:10 +08:00
chunmao.guo
4a031af091 ENH: drop variant modify values if inconsistant
Change-Id: I6c3e487e4b222df63f91aceccff13c3afd002ab8
Jira: none
(cherry picked from commit 9801a10f7f660c25eb5f8269350f126d5facbd6a)
2025-08-24 23:18:10 +08:00
xun.zhang
6598b626e7 ENH: save multi extruder state in gcode processor
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)
2025-08-24 23:18:10 +08:00
xun.zhang
e7308673ec FIX: wrong prepare time with chamber temp
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)
2025-08-24 23:18:10 +08:00
lane.wei
d9cac68a45 FIX: fix a typo in GCodeProcessor
Change-Id: I56b9eaedc3cb062d17facf7352eb469524db5b60
(cherry picked from commit 1bb3b64cfc1aabad9ece3e5d5c0f55a9cb3367c5)
(cherry picked from commit ced9e43be6)
2025-08-24 23:18:10 +08:00
chunmao.guo
193ab1da34 ENH: config apply_only vector at index
Change-Id: I7bf5a44b2d3db2e21207696b6ef7e41a499da078
Jira: STUDIO-7747
(cherry picked from commit 5f30ee389e804f3a71021cdec231a0c92d21d83c)
2025-08-24 23:18:09 +08:00
hang.xu
53a1827731 FIX: Ams control display
jira: NONE

Change-Id: I221eb4167dad894c9e7f32141d33c5c96934df96
(cherry picked from commit 065c8d029eb9df4deb85ce22fe41896fa7c2a883)
2025-08-24 23:18:09 +08:00
xun.zhang
504b34b6d4 FIX: wrong placeholder data when filament change
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: If6f6db1a2086c17541c7984c2db33d7bbcf21801
(cherry picked from commit ab81baee928c48d2b5dfcaf478f87b826f629425)
2025-08-24 23:18:08 +08:00
xun.zhang
8331f8eba8 ENH: add manual grouping mode stats
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)
2025-08-24 23:18:08 +08:00
xun.zhang
0fec5317d6 FIX: wrong filament map in layer filament
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)
2025-08-24 23:18:08 +08:00
zhimin.zeng
366701958c FIX: only display used filament on filament dialog
jira: none
Change-Id: Id643d1efad26eb2719f873543c2e451fe59dc5bb
(cherry picked from commit 1d4ce2bad5c4878f75208486d5862009154fc7ff)
2025-08-24 23:18:08 +08:00
xun.zhang
ef7d233d93 ENH: modify forcast limit number
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)
2025-08-24 23:18:08 +08:00
zhimin.zeng
7c182ca27c FIX: modify the filament_set image for drak mode
jira: none
Change-Id: I54beabbdc3d1e4ba74d1d00e8e14b917f53be722
(cherry picked from commit 2fb0daf27f11a1b845912b3dd0f329c931def832)
2025-08-24 23:18:08 +08:00
zhimin.zeng
4f2547358d FIX: only multi-nozzle display multi-extruder combobox
jira: 7686
Change-Id: Ic95d0789582e0a9dbb0edc2421ee076fdadb3572
(cherry picked from commit a174000ec18dae27d37976bdef6810914ba5f0ee)
2025-08-24 23:18:08 +08:00
lane.wei
48a3f58c13 FIX: plater: fix the slicing state not correct issue
after change the filament maps, we should invalidate state
jira:none

Change-Id: If2923d959f5120bd80c5bdf3933609cf8b282523
(cherry picked from commit 5f0bb395ad6464039bdacec58c924044a27587a0)
2025-08-24 23:18:08 +08:00
xun.zhang
067d1484ab ENH: add filament saved by multi extruder
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)
2025-08-24 23:18:08 +08:00
Noisyfox
afac07c166 Don't bother with extruder variants
Fix compile error
2025-08-24 23:18:08 +08:00
xun.zhang
8b866d0ce6 ENH: add greedy algorithm for filament reorder
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)
2025-08-24 23:18:08 +08:00
lane.wei
7c48eac832 ENH: config: refine some small logic
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)
2025-08-24 23:18:08 +08:00
xun.zhang
f021235ceb FIX: mistake in profiles
1.Spelling mistake in long retraction
2.Some params length change to 4

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I8952df7a1bbf060471e24a19eaeddde017d17d82
(cherry picked from commit 7ce2bb70df1b4f45f27e8e91293e1dbf4456956c)
2025-08-24 23:18:08 +08:00
tao wang
7c01515d9a FIX:Fix some multi nozzle issues
jira:[for multi nozzle]

Change-Id: Ibb9dafc3e664adb3a9058766f47f2d28938d6a0b
(cherry picked from commit e746035f31f20a30f12abcbd4c8da64b70d5d7fa)
2025-08-24 23:18:07 +08:00
zhimin.zeng
5bc39afc9b FIX: edit filament dialog crash after ams sync
jira: none
Change-Id: Ia551fa75400cef217e6d630aee76d00a06449b1a
(cherry picked from commit fe9e88f1c861aec2703dc19940897f28caf8c5f8)
2025-08-24 23:18:07 +08:00
xun.zhang
74bf8ad58e FIX: unable to custom first layer filament order
jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I0107ebf6a85ea0deba93ff558835138981365670
(cherry picked from commit e95179427fe31cf3365afdccbaadce84c31407f8)
2025-08-24 23:18:07 +08:00
hang.xu
e5477ba206 FIX: Ext auto fill when mapping item is empty
jira: [Ext auto fill]

Change-Id: I4a8844555e33fcf9f7054fc2e0e254621dec0a1d
(cherry picked from commit 8b4182d0c1de3e7f70fd1f17c032681f12af0045)
2025-08-24 23:18:07 +08:00
xun.zhang
cc4c03d76f ENH: add grab length
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)
2025-08-24 23:18:07 +08:00
xun.zhang
78e7821041 ENH: enable long retraction for multi_extruder
jira:NEW

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I41daa7a5f1eabf0a805a86d72d00544c8f4edb4a
(cherry picked from commit 887ca8f45f9b66ea24ca82dc7b84f411f6fe7b59)
2025-08-24 23:18:07 +08:00
zhimin.zeng
a9bec75ea2 ENH: add extruder_ams_count behavior
1. save to appconfig and project setting
2. use it to group
jira: none

Change-Id: Id4048fc1b47f6904b2e9c0154aaa3a2b03590437
(cherry picked from commit da32b878b3d7ca95ae5c4786102848c1e8a5ab2d)
2025-08-24 23:18:07 +08:00
zhimin.zeng
c34eb170f1 NEW: Add FilamentMapDialog
support drag drop to modify the filament map
jira: none

Change-Id: I0ed3180a0fa8e95e7c871bb039eb844faccd1344
(cherry picked from commit 67f67d76889668fdd80ae5e496b6cbca5f771a43)
2025-08-24 23:18:07 +08:00
zhimin.zeng
58cd714283 FIX: add plate_set_filament_map.svg
jira:none

Change-Id: I45480fadc8ed9fe5f3da92184c488956a16fd270
(cherry picked from commit aff19b857de31bb3734fd8446d80f7b1b0990587)
2025-08-24 23:18:07 +08:00
xun.zhang
d415073b14 ENH: optimize filament group algorithm
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)
2025-08-24 23:18:07 +08:00
hang.xu
aa858a83eb FIX:Ams cannot mapping
jira: [ams mapping]

Change-Id: I17b88b169c30e7c567e5e505bd7f7c56357466eb
(cherry picked from commit 9166c1d0c482c38044b90df06b089f5b0ac8f042)
2025-08-24 23:18:07 +08:00
Mack
5e64197e08 FIX: inconsistent colour arrange display at different resolutions
JIRA: no
Change-Id: Id838bf68c8a58d9075994052af10fa31bacc2ed3
(cherry picked from commit 91ea29eb56a148606cc645dfbca17fe470cb6131)
2025-08-24 23:18:06 +08:00
xun.zhang
5a6b215ef0 ENH: add filament group strategy
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)
2025-08-24 23:18:06 +08:00
zhimin.zeng
7aa1980813 FIX: fix bug when delete filament
update filament of HeightRange
jira: none

Change-Id: I62cb21a65ecdfc36e8bc7d0915a85ecba578e49f
(cherry picked from commit 8232a716e64fcfbd12fc7ebdaeeef4bfde261f66)
2025-08-24 23:18:06 +08:00
zhimin.zeng
d6864a161c FIX: update filament map of plate when switching preset
that has different nozzle nums
jira:none

Change-Id: If78571ddf4fa7ac17e7dcf47013075821b8567a6
(cherry picked from commit a6ad5c8be86313085922e3063eec2aba029a5a99)
2025-08-24 23:18:06 +08:00
zhimin.zeng
0135b251cd FIX: save filament_maps to slice_info
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)
2025-08-24 23:18:06 +08:00
xun.zhang
df1e125e1d FIX: compatible with one extruder reorder
jira:NEW

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I7e350ba8728ac4b3dd34093ff4e9647d0a2ba671
(cherry picked from commit cc81e57ac947375a525281e7cbf52437c740a746)
2025-08-24 23:18:06 +08:00
xun.zhang
400ff4d007 FIX: logic error in filament change
jira:NEW

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I7e2b1333d4b82e4495375fcf4daec3aea08be445
(cherry picked from commit 7128e2925a7b75c6e1bee76b739cef8c4fd46c89)
2025-08-24 23:18:06 +08:00
lane.wei
f52dd41b23 ENH: config: remove unused custome_defined logic
also improve project_embedded
1. remove unused is_custom_defined
2. improve project_embedded to support multi-extruder diff

jira: no-jira

Change-Id: I1db28c3cfd59ccc31c6855af30305396c71c4e9a
(cherry picked from commit 0434853bf32b063f7850fd4e0c9c3a6045375225)
2025-08-24 23:18:06 +08:00
zhimin.zeng
18e08ec6a1 FIX: Clean up the code
1. Refactor recommended code for print by object
2. Calibration adaptation sends print command

jira: none

Change-Id: I24fd92d6aca07a7067e09bb200854e5bec72a324
(cherry picked from commit ad03fae1eba75a866d806a4319ef7edde2fb3562)
2025-08-24 23:18:06 +08:00
xun.zhang
c424c63ec9 ENH: alternate multi-head printing sequence
jira:NEW

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I739438e8c411b638571d5291f3e5ad3d54650a73
(cherry picked from commit 1ab2964ee3b0357233a0a3747edefc12db51d46c)
2025-08-24 23:18:06 +08:00
Noisyfox
113fa34555 Show SEMM related items for BBL printers 2025-08-24 23:18:06 +08:00
xun.zhang
aee14d307a FIX: wrong flush logic
1.Fix flush calc logic
2.Rename m_extruder in GCodeWriter

jira:NEW

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I38f023fbad983305632ca62cbfb3909759013c25
(cherry picked from commit f1b0805ed13eb94d6eb61e12330db3d628c0241b)
2025-08-24 23:18:05 +08:00
xun.zhang
0ad75a223b ENH: new filament group algorithm
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)
2025-08-24 23:18:05 +08:00
zhimin.zeng
2ff3b46a7e FIX: fix build error
jira: none
Change-Id: I97df69b728fc3871b7c33e1fd3ba068e741d51c7
(cherry picked from commit 326d7d28b47017bdbd98873a6437ef84116291ba)
2025-08-24 23:18:05 +08:00
zhimin.zeng
48f1d74127 ENH: calib support multi_extruder
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)
2025-08-24 23:18:05 +08:00
hang.xu
8a491cd55a NEW:change mapping popup layout for multi nozzles.
jira:[Popup for multi nozzles]

Change-Id: I07e6d8f0469d2dcf0037d53e2ca8e22de78ca233
(cherry picked from commit 0924fce6858654c331eafcb91e43252f62e703bf)
2025-08-24 23:18:05 +08:00
lane.wei
22ce2ebc9a ENH: config: add the extruder variant apply logic in Print::Apply()
we need to keep the original values and update after pre-slice
jira: no-jira

Change-Id: I232d3c43340b4a23bc42121bd05380746e736f20
(cherry picked from commit 7b7ebf1b959ba5c967baff30fb226c808a2e7d44)
2025-08-24 23:18:05 +08:00
Mack
d7029d383f FIX:gcode viewer color arrangement recommendation
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)
2025-08-24 23:18:05 +08:00
xun.zhang
c376677537 ENH: enable params with silent mode
jira:NEW

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Id46fa5de3a58e0fd3c3b0aa28524a03ca9a38f1a
(cherry picked from commit 3c32b2c5a6587a3fd65d235475faa2e3c4c4726a)
2025-08-24 23:18:05 +08:00
chunmao.guo
5a00e9c704 FIX: config deep compare & plate config extruder switch
Change-Id: Iae1716e6511e252f131ab4355f9521d7611d7133
(cherry picked from commit 7e7e8723667852b34851fc19095f879b975773ba)
2025-08-24 23:18:05 +08:00
hang.xu
905f6b4291 NEW: two nozzles ams mapping
jira:[two nozzles ams mapping]

Change-Id: I914439114b2946cdc1e3e4eb07a37f75f0529c12
(cherry picked from commit 62ef51d0512bdbaf115b92d95ffd0407a15f48bb)
2025-08-24 23:18:04 +08:00
lane.wei
11445c6fe1 ENH: context: update filament_maps under auto mode after process
JIRA: no-jira
Change-Id: Ia14ed67343b876532931e3106d667973d9ea233d
(cherry picked from commit d520fc59ebae76460a8994f88753c7a2ea75ea69)
2025-08-24 23:18:04 +08:00
Mack
fb2226208a NEW: gcode viewer add recommended colour filament widget
Change-Id: I37f38a175bb3f4a574a4855f8fef04e704da259c
(cherry picked from commit 4014c61f889f5cf0b7830123fb0a72690ff4e1e5)
2025-08-24 23:18:04 +08:00
chunmao.guo
f33f2fbc7d FIX: support config editing of type FloatsOrPercents
Change-Id: If0821dc357b14f1b72aa1c89b3b0378947e80a5c
Jira: none
(cherry picked from commit 115fb9ce072273acf8df558a33fe48cf71f8e35b)
(cherry picked from commit 0c03a6b3616b855ccad5e629834d09672de334d7)
2025-08-24 23:18:03 +08:00
chunmao.guo
fc76348330 FIX: serialize ConfigOptionFloatsOrPercentsNullable
Change-Id: I32cf705e6e040f25012a741e6ee20a311a66a7e3
Jira: STUDIO-8040
(cherry picked from commit ef480670ac8da77135d342e7e4dc74c838b5d713)
(cherry picked from commit 0b92ffee351203d3bdef75bb580b13fa009ccb96)
2025-08-24 23:18:03 +08:00
chunmao.guo
80aa3f1163 ENH: edit object config variant value
Change-Id: I97490f555a8a2848ccea78f74d79f71b0e93b36d
(cherry picked from commit 582b2d470f138d5263e689c647347d8bf119b645)
2025-08-24 23:18:03 +08:00
chunmao.guo
269fdcb324 FIX: ams filament & process config dirty
Change-Id: I80d9b30c82aa2830b821e7317370756d4e99e36d
(cherry picked from commit b45e30543e4dbddd7a4da5612660c34d1db659f8)
2025-08-24 23:18:03 +08:00
zhimin.zeng
e2c3926c76 ENH: support recommended filament map when print by object
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)
2025-08-24 23:18:03 +08:00
zhimin.zeng
8db3e3cd54 FIX: backend get the extruder id based on filament_map
Change-Id: Ib7679c0fc67336e462467dab9f5b4d4684d6eb19
(cherry picked from commit dcd9fd501354da33baea2adc0f645fabe8880cf1)
2025-08-24 23:18:02 +08:00
chunmao.guo
f5d2a1bc0c ENH: param tab variant index & extruder switch
Change-Id: Icad6bce3b23ea98d5ef497ceabacc52f294af8f2
(cherry picked from commit 575572f184dc49eb763aa0b27f52f375dcb52f2d)
2025-08-24 23:18:02 +08:00
zhimin.zeng
fab6b21e4d FIX: parameters modify of printer preset
Ensure correct behavior when modifying parameters of printer preset

Change-Id: Ic627a8e202bf4224b742336cc43ac611ddc5c997
(cherry picked from commit 366a14d8f715cbeca3d0f70a4727d91b6f0ca82e)
2025-08-24 23:18:02 +08:00
zhimin.zeng
a94b0e3dba ENH: Add recommend filament maps method
Change-Id: I3945a8b9f0a57e10a1d230003f21c9877cc5f342
(cherry picked from commit 8c8c9a967b032a270a60e6cf075fe41a6f329e1c)
2025-08-24 23:18:02 +08:00
lane.wei
018f0c0353 ENH: add stride in get_index_for_extruder
JIRA: no-jira
Change-Id: If529296bf6d35edc35aee3ff497184dce70332d1
(cherry picked from commit e770043c4d7a3e96acfb27f306853cc339da7529)
2025-08-24 23:18:02 +08:00
lane.wei
aba8c12d07 ENH: add check logic of filament_map when Print::Apply
Change-Id: Ibab353c4b16183611d63d75bcdf5f370cb578f21
(cherry picked from commit bbc4d701bf0f492566fb0ebefbf286630ae2136d)
2025-08-24 23:18:02 +08:00
lane.wei
f0e1a7d5c9 ENH: filament: delete filament_extruder_id related logic
jira: no jira
Change-Id: Ie0d8e31a6a3eef0400b3ba6238f817bad4daca24
(cherry picked from commit e9081ba8d4013874c972f401b3633942028621b8)
2025-08-24 23:18:02 +08:00
zhimin.zeng
69d0d88da1 ENH: Display and modification of printer presets
Change-Id: I6a38704864fd4994a845686a299bec67f1b9b9b3
(cherry picked from commit 5b0d5259571d2b1c629ba7d88101134ec4548708)
2025-08-24 23:18:02 +08:00
lane.wei
d4e3f443cd FIX: fix the compiling issue
jira: no jira
Change-Id: I864e16fb40a7735d25e5df667148de8bc4d3f120
(cherry picked from commit b08ed80f82ebf46a3ca6b130784553e0c4b0d278)
2025-08-24 23:18:02 +08:00
chunmao.guo
2fe654587b ENH: filament actions and dual extruder filaments
Change-Id: I12a83f29c96887fc910976ac8e025c4f1508d945
(cherry picked from commit 0065ea986fc41132df43cca6704c8c98318e6b71)
2025-08-24 23:18:02 +08:00
Noisyfox
4861fc7e6b Update delete filament btn
(cherry picked from commit 6becf796e0e4d8e6f92d4226ba26cb84023e9c72)
2025-08-24 23:18:01 +08:00
Noisyfox
e6b434e746 Remove duplicated code
(cherry picked from commit 4732123bb8c1c1e3952d45d3b84b4377fad7fb35)
2025-08-24 23:18:01 +08:00
lane.wei
141af16fa2 ENH: config: add filament_maps in partplate
Change-Id: I1183830788e703f1d33a8a4b620b58b822283dd4
(cherry picked from commit b0e3ab037e3f5af0851539af5ac15b8f96daf548)
2025-08-24 23:18:01 +08:00
zhimin.zeng
fe09c20725 ENH: support delete any filament id
Change-Id: I71bcd54985b3f9e19a19d04327d00b402ec22380
(cherry picked from commit f3d67a98ac770e6f045a76bed4531139763b33cf)
2025-08-24 23:18:01 +08:00
zhimin.zeng
84dc2d8835 ENH: flush_volume support multi_extruder and fix bug
Change-Id: Id6b041f71ee6e55e68a6937f24ce791caac8e708
(cherry picked from commit 6fbad9ed33b2868a2fffbebdc3a98926431a1093)
2025-08-24 23:18:01 +08:00
zhimin.zeng
57916c7452 FIX: Use the same api to get the extruder id
jira: none
Change-Id: I05b3040b176374deee3e95bc52364fe7b33bb257
(cherry picked from commit 8b2544df41456377b09719de15460b19b7c71e09)
2025-08-24 23:18:01 +08:00
qing.zhang
cca85fe861 ENH: implement mult extruder params
Jira: none

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I906b106aa4c73272a418528db0e964d9130b0dd7
(cherry picked from commit 8af6f6d13b609b7ed5f25c3b36b966f533054d7b)
2025-08-24 23:18:01 +08:00
lane.wei
d9efd47c90 NEW: config: add logic in config system to support multiple extruder
1. add nozzle_volume_type
2. add extruder_variant_list
3. add printer_extruder_variant,print_extruder_variant, filament_extruder_variant
4. construct backend fullprintconfig

Change-Id: I50659634e2cde363112ff5ded6c199d7548c6f2f
(cherry picked from commit 03058ba29dd358acd9726d1c58561e16409e8d04)
2025-08-24 23:18:01 +08:00
Noisyfox
ffd07a5f34 Don't bother with extruder variants 2025-08-24 23:18:01 +08:00
chunmao.guo
9433db8d54 FIX: impl sync extruder information & fix something
Change-Id: I5f7224f646729cba94505487d00015a8e48443c5
(cherry picked from commit 26bf483bfe089cc6730e1c1da452497feb320520)
2025-08-24 23:18:00 +08:00
chunmao.guo
76a8cc6ba4 ENH: dual extruder nozzle setting on sidebar
Change-Id: I7bc4209b311360c3357e3974f0e66a51daa78232
(cherry picked from commit 507c6a9b2cc4f854ef78acd07bc452ffb21b6bdb)
2025-08-24 23:18:00 +08:00
tao wang
b46b69ebad NEW:support new ext slot mapping
jira:[support new mapping]

Change-Id: Iaf88f7bd57177df772a926ad162bd3b5a141327a
(cherry picked from commit 3b93bd2dd305026457e9f63ca3faeb153b59c9a5)
2025-08-24 23:18:00 +08:00
qing.zhang
bba00b2e7a ENH: remove the appended T cmd after change filament
Jira: none

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: Id5da64626b7343a71dcb38c06f5b5caf43ec40e2
(cherry picked from commit 7da565f0582f470274d279e52daf0dd889f0de7d)
2025-08-24 23:18:00 +08:00
zhou.xu
95a5914c26 NEW:add "extruder_only_area" textures for
double extruder machine
jira:none

Change-Id: Iaf4118fb00641537838dae7cc5fdaaf07ccc9851
(cherry picked from commit a8d6c9fe8976dbcb79c1f89efb7107073cb17856)
(cherry picked from commit c74a769c14d702dbb78d479e49be927028502037)
2025-08-24 23:17:59 +08:00
7017 changed files with 1823810 additions and 207065 deletions

View File

@@ -0,0 +1,19 @@
---
allowed-tools: Bash(git checkout --branch:*), Bash(git add:*), Bash(git status:*), Bash(git push:*), Bash(git commit:*), Bash(gh pr create:*)
description: Commit, push, and open a PR
---
## Context
- Current git status: !`git status`
- 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.

View File

@@ -0,0 +1,38 @@
---
allowed-tools: Bash(gh issue view:*), Bash(gh search:*), Bash(gh issue list:*), Bash(gh api:*), Bash(gh issue comment:*)
description: Find duplicate GitHub issues
---
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
🤖 OrcaSlicer bot
---

View File

@@ -0,0 +1,40 @@
---
allowed-tools: Bash(gh issue list:*), Bash(gh issue view:*), Bash(gh issue edit:*), TodoWrite
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:
```bash
gh issue list --repo OrcaSlicer/OrcaSlicer --state open --label bug --limit 1000 --json number,title,updatedAt,comments,reactions | jq -r '.[] | select((.updatedAt >= (now - 259200 | strftime("%Y-%m-%dT%H:%M:%SZ"))) and ((.comments | length) + ([.reactions[].content] | length) >= 50)) | "\(.number)"'
```
2. Save the list of issue numbers and create a TODO list with ALL of them. This ensures you process every single one.
3. For each issue in your TODO list:
- Use `gh issue view <number> --repo OrcaSlicer/OrcaSlicer --json title,body,labels,comments` to get full details
- Read and understand the full issue content and comments to determine actual user impact
- Evaluate: Is this truly blocking users from using Claude Code?
- Consider: "crash", "stuck", "frozen", "hang", "unresponsive", "cannot use", "blocked", "broken"
- Does it prevent core functionality? Can users work around it?
- Be conservative - only flag issues that truly prevent users from getting work done
4. For issues that are truly blocking and don't already have the "oncall" label:
- Use `gh issue edit <number> --repo OrcaSlicer/OrcaSlicer --add-label "oncall"`
- Mark the issue as complete in your TODO list
5. After processing all issues, provide a summary:
- List each issue number that received the "oncall" label
- Include the issue title and brief reason why it qualified
- If no issues qualified, state that clearly
Important:
- Process ALL issues in your TODO list systematically
- Don't post any comments to issues
- Only add the "oncall" label, never remove it
- Use individual `gh issue view` commands instead of bash for loops to avoid approval prompts

View File

@@ -17,13 +17,6 @@
"customizations": {
"vscode": {
"settings": {
"cmake.configureArgs": [
"-DSLIC3R_GTK=3",
"-DBBL_RELEASE_TO_PUBLIC=1",
"-DBBL_INTERNAL_TESTING=0",
"-DSLIC3R_STATIC=1",
"-DCMAKE_PREFIX_PATH=${workspaceFolder}/deps/build/destdir/usr/local"
]
},
// Add the IDs of extensions you want installed when the container is created.

View File

@@ -48,7 +48,7 @@ PROJECT_NAME = OrcaSlicer
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 1.6.3
PROJECT_NUMBER = latest
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
@@ -68,7 +68,7 @@ PROJECT_LOGO = ./resources/images/OrcaSlicer_32px.png
# entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used.
OUTPUT_DIRECTORY = ../
OUTPUT_DIRECTORY = .
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096
# sub-directories (in 2 levels) under the output directory of each output format
@@ -1059,7 +1059,11 @@ EXCLUDE_SYMLINKS = NO
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories for example use the pattern */test/*
EXCLUDE_PATTERNS =
EXCLUDE_PATTERNS = */deps/*
EXCLUDE_PATTERNS = */build/*
EXCLUDE_PATTERNS = */deps_src/*
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
@@ -1286,7 +1290,7 @@ GENERATE_HTML = YES
# The default directory is: html.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_OUTPUT = OrcaSlicer_Dev_Document
HTML_OUTPUT = internal_docs
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
# generated HTML page (for example: .htm, .php, .asp).
@@ -1565,7 +1569,7 @@ TOC_EXPAND = NO
# protocol see https://www.sitemaps.org
# This tag requires that the tag GENERATE_HTML is set to YES.
SITEMAP_URL =
SITEMAP_URL = internals.orcaslicer.com
# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that

View File

@@ -8,7 +8,7 @@ body:
**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.
- type: checkboxes

View File

@@ -4,5 +4,5 @@ contact_links:
url: https://discord.gg/P4VE9UY9gJ
about: Please ask and answer support "how do I?"questions here.
- name: Discussion Forum
url: https://github.com/SoftFever/OrcaSlicer/discussions
url: https://github.com/OrcaSlicer/OrcaSlicer/discussions
about: Please raise ideas and feature suggestions here.

View File

@@ -8,7 +8,7 @@ body:
Thanks for taking the time to fill out this feature request!
If your idea is still at the formulation stage, or you're not sure it would
be useful to many users, you can raise it as a discussion topic under [Ideas](https://github.com/SoftFever/OrcaSlicer/discussions/categories/ideas)
be useful to many users, you can raise it as a discussion topic under [Ideas](https://github.com/OrcaSlicer/OrcaSlicer/discussions/categories/ideas)
or you can raise it on the [Discord server](https://discord.gg/P4VE9UY9gJ).
- type: checkboxes
attributes:

View File

@@ -0,0 +1,11 @@
name: 'Apt Install Deps'
description: 'Install the packages needed for building and deploying'
runs:
using: 'composite'
steps:
- name: Install dependencies from build_linux.sh
shell: bash
run: |
mkdir -p ${{ github.workspace }}/deps/build/destdir
sudo env "ORCA_UPDATER_SIG_KEY=$ORCA_UPDATER_SIG_KEY" ./build_linux.sh -ur
sudo chown $USER -R ./

View File

@@ -14,7 +14,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Assign the user or unassign stale assignments
uses: takanome-dev/assign-issue-action@v2.3
# Note: v3.0.0 is broken (dist/index.mjs vs action.yml expects index.js)
# See: https://github.com/takanome-dev/assign-issue-action/issues/426
uses: takanome-dev/assign-issue-action@v2.2
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
maintainers: 'noisyfox,softfever'

View File

@@ -0,0 +1,31 @@
name: Auto-close duplicate issues
description: Auto-closes issues that are duplicates of existing issues
on:
schedule:
- cron: "0 9 * * *"
workflow_dispatch:
jobs:
auto-close-duplicates:
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Auto-close duplicate issues
run: bun run scripts/auto-close-duplicates.ts
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}
GITHUB_REPOSITORY_NAME: ${{ github.event.repository.name }}
STATSIG_API_KEY: ${{ secrets.STATSIG_API_KEY }}

View File

@@ -0,0 +1,44 @@
name: Backfill Duplicate Comments
description: Triggers duplicate detection for old issues that don't have duplicate comments
on:
workflow_dispatch:
inputs:
days_back:
description: 'How many days back to look for old issues'
required: false
default: '90'
type: string
dry_run:
description: 'Dry run mode (true to only log what would be done)'
required: false
default: 'true'
type: choice
options:
- 'true'
- 'false'
jobs:
backfill-duplicate-comments:
runs-on: ubuntu-latest
timeout-minutes: 30
permissions:
contents: read
issues: read
actions: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Backfill duplicate comments
run: bun run scripts/backfill-duplicate-comments.ts
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DAYS_BACK: ${{ inputs.days_back }}
DRY_RUN: ${{ inputs.dry_run }}

View File

@@ -21,6 +21,7 @@ on:
- release/*
paths:
- 'deps/**'
- 'deps_src/**'
- 'src/**'
- '**/CMakeLists.txt'
- 'version.inc'
@@ -30,8 +31,9 @@ on:
- 'build_release_macos.sh'
- 'scripts/flatpak/**'
schedule:
- cron: '35 7 * * *' # run once a day near midnight US Pacific time
- cron: '0 17 * * *' # run once a day at 1 AM Singapore time (UTC+8)
workflow_dispatch: # allows for manual dispatch
inputs:
@@ -41,47 +43,123 @@ on:
default: false
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build_all:
name: Build All
build_linux:
strategy:
fail-fast: false
# Don't run scheduled builds on forks:
if: ${{ !cancelled() && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }}
uses: ./.github/workflows/build_check_cache.yml
with:
os: ${{ vars.SELF_HOSTED && 'orca-lnx-server' || 'ubuntu-24.04' }}
build-deps-only: ${{ inputs.build-deps-only || false }}
secrets: inherit
build_windows:
# Don't run scheduled builds on forks:
if: ${{ !cancelled() && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }}
uses: ./.github/workflows/build_check_cache.yml
with:
os: ${{ vars.SELF_HOSTED && 'orca-win-server' || 'windows-latest' }}
build-deps-only: ${{ inputs.build-deps-only || false }}
force-build: ${{ github.event_name == 'schedule' }}
secrets: inherit
build_macos_arch:
strategy:
fail-fast: false
matrix:
include:
# Deprecate 20.04appimage
# - os: ubuntu-20.04
- os: ubuntu-24.04
- os: windows-latest
- os: macos-14
arch: arm64
arch:
- arm64
- x86_64
# Don't run scheduled builds on forks:
if: ${{ !cancelled() && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }}
uses: ./.github/workflows/build_check_cache.yml
with:
os: ${{ matrix.os }}
os: ${{ vars.SELF_HOSTED && 'orca-macos-arm64' || 'macos-14' }}
arch: ${{ matrix.arch }}
build-deps-only: ${{ inputs.build-deps-only || false }}
force-build: ${{ github.event_name == 'schedule' }}
secrets: inherit
build_macos_universal:
name: Build macOS Universal
needs: build_macos_arch
if: ${{ !cancelled() && needs.build_macos_arch.result == 'success' && !inputs.build-deps-only && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }}
uses: ./.github/workflows/build_orca.yml
with:
os: ${{ vars.SELF_HOSTED && 'orca-macos-arm64' || 'macos-14' }}
arch: universal
macos-combine-only: true
secrets: inherit
unit_tests:
name: Unit Tests
runs-on: ${{ vars.SELF_HOSTED && 'orca-lnx-server' || 'ubuntu-24.04' }}
needs: build_linux
if: ${{ !cancelled() && success() }}
steps:
- name: Checkout
uses: actions/checkout@v6
with:
sparse-checkout: |
.github
scripts
tests
- name: Apt-Install Dependencies
if: ${{ !vars.SELF_HOSTED }}
uses: ./.github/actions/apt-install-deps
- name: Restore Test Artifact
uses: actions/download-artifact@v8
with:
name: ${{ github.sha }}-tests
- uses: lukka/get-cmake@latest
with:
cmakeVersion: "~4.3.0" # use most recent 4.3.x version
useLocalCache: true # <--= Use the local cache (default is 'false').
useCloudCache: true
- name: Unpackage and Run Unit Tests
timeout-minutes: 20
run: |
tar -xvf build_tests.tar
scripts/run_unit_tests.sh
- name: Upload Test Logs
uses: actions/upload-artifact@v7
if: ${{ failure() }}
with:
name: unit-test-logs
path: build/tests/**/*.log
- name: Publish Test Results
if: always()
uses: EnricoMi/publish-unit-test-result-action@v2
with:
files: "ctest_results.xml"
- name: Delete Test Artifact
if: success()
uses: geekyeggo/delete-artifact@v5
with:
name: ${{ github.sha }}-tests
flatpak:
name: "Flatpak"
container:
image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-47
image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-49
options: --privileged
volumes:
- /usr/local/lib/android:/usr/local/lib/android
- /usr/share/dotnet:/usr/share/dotnet
- /opt/ghc:/opt/ghc1
- /usr/local/share/boost:/usr/local/share/boost1
- /opt/hostedtoolcache:/opt/hostedtoolcache1
strategy:
fail-fast: false
matrix:
variant:
- arch: x86_64
runner: ubuntu-24.04
- arch: aarch64
runner: ubuntu-24.04-arm
# Don't run scheduled builds on forks; skip entirely on self-hosted runners
if: ${{ !cancelled() && !vars.SELF_HOSTED && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }}
runs-on: ${{ matrix.variant.runner }}
env:
date:
@@ -90,39 +168,68 @@ jobs:
steps:
- name: "Remove unneeded stuff to free disk space"
run:
rm -rf /usr/local/lib/android/* /usr/share/dotnet/* /opt/ghc1/* "/usr/local/share/boost1/*"
- uses: actions/checkout@v5
rm -rf /usr/local/lib/android/* /usr/share/dotnet/* /opt/ghc1/* "/usr/local/share/boost1/*" /opt/hostedtoolcache1/*
- uses: actions/checkout@v6
- name: Get the version and date
run: |
ver_pure=$(grep 'set(SoftFever_VERSION' version.inc | cut -d '"' -f2)
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
ver="PR-${{ github.event.number }}"
git_commit_hash="${{ github.event.pull_request.head.sha }}"
else
ver=V$ver_pure
git_commit_hash="${{ github.sha }}"
fi
echo "ver=$ver" >> $GITHUB_ENV
echo "ver_pure=$ver_pure" >> $GITHUB_ENV
echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV
echo "git_commit_hash=$git_commit_hash" >> $GITHUB_ENV
shell: bash
- uses: flathub-infra/flatpak-github-actions/flatpak-builder@master
# Manage flatpak-builder cache externally so PRs restore but never upload
- name: Restore flatpak-builder cache
if: github.event_name == 'pull_request'
uses: actions/cache/restore@v5
with:
path: .flatpak-builder
key: flatpak-builder-${{ matrix.variant.arch }}-${{ github.event.pull_request.base.sha }}
restore-keys: flatpak-builder-${{ matrix.variant.arch }}-
- name: Save/restore flatpak-builder cache
if: github.event_name != 'pull_request'
uses: actions/cache@v5
with:
path: .flatpak-builder
key: flatpak-builder-${{ matrix.variant.arch }}-${{ github.sha }}
restore-keys: flatpak-builder-${{ matrix.variant.arch }}-
- name: Disable debug info for faster CI builds
run: |
sed -i '/^build-options:/a\ no-debuginfo: true\n strip: true' \
scripts/flatpak/com.orcaslicer.OrcaSlicer.yml
shell: bash
- name: Inject git commit hash into Flatpak manifest
run: |
sed -i "/name: OrcaSlicer/{n;s|buildsystem: simple|buildsystem: simple\n build-options:\n env:\n git_commit_hash: \"$git_commit_hash\"|}" \
scripts/flatpak/com.orcaslicer.OrcaSlicer.yml
shell: bash
- uses: flatpak/flatpak-github-actions/flatpak-builder@master
with:
bundle: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
manifest-path: scripts/flatpak/io.github.softfever.OrcaSlicer.yml
cache: true
manifest-path: scripts/flatpak/com.orcaslicer.OrcaSlicer.yml
cache: false
arch: ${{ matrix.variant.arch }}
upload-artifact: false
- name: Upload artifacts Flatpak
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
path: '/__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak'
- name: Deploy Flatpak to nightly release
if: ${{github.ref == 'refs/heads/main'}}
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main'
uses: WebFreak001/deploy-nightly@v3.2.0
with:
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
release_id: 137995723
asset_path: /__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
asset_name: OrcaSlicer-Linux-flatpak_nightly_${{ matrix.variant.arch }}.flatpak
asset_content_type: application/octet-stream
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted

View File

@@ -26,23 +26,24 @@ jobs:
valid-cache: ${{ steps.cache_deps.outputs.cache-hit }}
steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v6
with:
lfs: 'true'
lfs: 'false'
- name: set outputs
id: set_outputs
env:
# todo: this is mad! refactor other build scripts to use same name
dep-folder-name: ${{ inputs.os == 'windows-latest' && '/OrcaSlicer_dep' || inputs.os == 'macos-14' && '' || inputs.os != 'macos-14' && '/destdir' || '' }}
output-cmd: ${{ inputs.os == 'windows-latest' && '$env:GITHUB_OUTPUT' || '"$GITHUB_OUTPUT"'}}
# Keep macOS cache keys and paths architecture-specific.
cache-os: ${{ runner.os == 'macOS' && format('macos-{0}', inputs.arch) || (runner.os == 'Windows' && 'windows' || 'linux-clang') }}
dep-folder-name: ${{ runner.os == 'macOS' && format('/{0}', inputs.arch) || '/OrcaSlicer_dep' }}
output-cmd: ${{ runner.os == 'Windows' && '$env:GITHUB_OUTPUT' || '"$GITHUB_OUTPUT"'}}
run: |
echo cache-key=${{ inputs.os }}-cache-orcaslicer_deps-build-${{ hashFiles('deps/**') }} >> ${{ env.output-cmd }}
echo cache-key=${{ env.cache-os }}-cache-orcaslicer_deps-build-${{ hashFiles('deps/**') }} >> ${{ env.output-cmd }}
echo cache-path=${{ github.workspace }}/deps/build${{ env.dep-folder-name }} >> ${{ env.output-cmd }}
- name: load cache
id: cache_deps
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: ${{ steps.set_outputs.outputs.cache-path }}
key: ${{ steps.set_outputs.outputs.cache-key }}

View File

@@ -26,7 +26,7 @@ on:
jobs:
build_deps:
name: Build Deps
if: inputs.build-deps-only || inputs.force-build || inputs.valid-cache != true
if: ${{ !cancelled() && (inputs.build-deps-only || inputs.force-build || inputs.valid-cache != true) }}
runs-on: ${{ inputs.os }}
env:
date:
@@ -34,115 +34,103 @@ jobs:
# Setup the environment
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v6
with:
lfs: 'true'
lfs: 'false'
- name: load cached deps
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: ${{ inputs.cache-path }}
key: ${{ inputs.cache-key }}
- uses: lukka/get-cmake@latest
with:
cmakeVersion: "~3.28.0" # use most recent 3.28.x version
cmakeVersion: "~4.3.0" # use most recent 4.3.x version
useLocalCache: true # <--= Use the local cache (default is 'false').
useCloudCache: true
- name: setup dev on Windows
if: inputs.os == 'windows-latest'
if: runner.os == 'Windows'
uses: microsoft/setup-msbuild@v2
- name: Get the date on Ubuntu and macOS
if: inputs.os != 'windows-latest'
if: runner.os != 'Windows'
run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV
shell: bash
- name: Get the date on Windows
if: inputs.os == 'windows-latest'
if: runner.os == 'Windows'
run: echo "date=$(Get-Date -Format 'yyyyMMdd')" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
shell: pwsh
# Build Dependencies
- name: Build on Windows
if: inputs.os == 'windows-latest'
if: runner.os == 'Windows'
working-directory: ${{ github.workspace }}
run: |
choco install strawberryperl
.\build_release_vs2022.bat deps
.\build_release_vs2022.bat pack
cd ${{ github.workspace }}/deps/build
if (-not "${{ vars.SELF_HOSTED }}") {
choco install strawberryperl
}
.\build_release_vs.bat deps
.\build_release_vs.bat pack
shell: pwsh
- name: Build on Mac ${{ inputs.arch }}
if: inputs.os == 'macos-14'
if: runner.os == 'macOS'
working-directory: ${{ github.workspace }}
run: |
brew install automake texinfo libtool
brew list
brew uninstall --ignore-dependencies zstd
./build_release_macos.sh -dx -a universal -t 10.15 -1
for arch in arm64 x86_64; do
(cd "${{ github.workspace }}/deps/build/${arch}" && \
find . -mindepth 1 -maxdepth 1 ! -name 'OrcaSlicer_dep' -exec rm -rf {} +)
done
brew install zstd
if [ -z "${{ vars.SELF_HOSTED }}" ]; then
brew install automake texinfo libtool
fi
./build_release_macos.sh -dx ${{ !vars.SELF_HOSTED && '-1' || '' }} -a ${{ inputs.arch }} -t 10.15
(cd "${{ github.workspace }}/deps/build/${{ inputs.arch }}" && \
find . -mindepth 1 -maxdepth 1 ! -name 'OrcaSlicer_dep' -exec rm -rf {} +)
- name: Install Ubuntu Build Dependencies
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
working-directory: ${{ github.workspace }}
env:
apt-cmd: ${{ (inputs.os == 'ubuntu-20.04' && 'apt-fast') || (inputs.os == 'ubuntu-24.04' && 'sudo apt-get') || '' }}
webkit-ver: ${{ (inputs.os == 'ubuntu-20.04' && '4.0') || (inputs.os == 'ubuntu-24.04' && '4.1') || '' }}
run: |
${{ env.apt-cmd }} update
${{ env.apt-cmd }} install -y cmake git g++ build-essential libgl1-mesa-dev m4 \
libwayland-dev libxkbcommon-dev wayland-protocols extra-cmake-modules pkgconf \
libglu1-mesa-dev libcairo2-dev libgtk-3-dev libsoup2.4-dev libwebkit2gtk-${{ env.webkit-ver }}-dev \
libgstreamer1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-base1.0-dev \
gstreamer1.0-plugins-bad wget sudo autoconf curl libunwind-dev texinfo
- name: Apt-Install Dependencies
if: runner.os == 'Linux' && !vars.SELF_HOSTED
uses: ./.github/actions/apt-install-deps
- name: Build on Ubuntu
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
if: runner.os == 'Linux'
working-directory: ${{ github.workspace }}
run: |
mkdir -p ${{ github.workspace }}/deps/build
mkdir -p ${{ github.workspace }}/deps/build/destdir
sudo ./build_linux.sh -ur
sudo chown $USER -R ./
./build_linux.sh -dr
./build_linux.sh -drlL
cd deps/build
tar -czvf OrcaSlicer_dep_ubuntu_$(date +"%Y%m%d").tar.gz destdir
# Upload Artifacts
# - name: Upload Mac ${{ inputs.arch }} artifacts
# if: inputs.os == 'macos-14'
# uses: actions/upload-artifact@v4
# if: runner.os == 'macOS'
# uses: actions/upload-artifact@v6
# with:
# name: OrcaSlicer_dep_mac_${{ env.date }}
# path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep*.tar.gz
- name: Upload Windows artifacts
if: inputs.os == 'windows-latest'
uses: actions/upload-artifact@v4
with:
name: OrcaSlicer_dep_win64_${{ env.date }}
path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep*.zip
# - name: Upload Windows artifacts
# if: runner.os == 'Windows'
# uses: actions/upload-artifact@v6
# with:
# name: OrcaSlicer_dep_win64_${{ env.date }}
# path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep*.zip
- name: Upload Ubuntu artifacts
if: ${{ ! env.ACT && inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04' }}
env:
ubuntu-ver: ${{ (inputs.os == 'ubuntu-20.04' && '2004') || (inputs.os == 'ubuntu-24.04' && '2404') || '' }}
uses: actions/upload-artifact@v4
with:
name: OrcaSlicer_dep_ubuntu_${{ env.ubuntu-ver }}_${{ env.date }}
path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep_ubuntu_*.tar.gz
# - name: Upload Ubuntu artifacts
# if: runner.os == 'Linux' && !env.ACT
# env:
# ubuntu-ver: '2404'
# uses: actions/upload-artifact@v6
# with:
# name: OrcaSlicer_dep_ubuntu_${{ env.ubuntu-ver }}_${{ env.date }}
# path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep_ubuntu_*.tar.gz
build_orca:
name: Build OrcaSlicer
needs: [build_deps]
if: ${{ !cancelled() && !inputs.build-deps-only && inputs.force-build || (inputs.valid-cache == true && needs.build_deps.result == 'skipped') || (inputs.valid-cache != true && success()) }}
if: ${{ !cancelled() && !inputs.build-deps-only && (inputs.force-build || (inputs.valid-cache == true && needs.build_deps.result == 'skipped') || (inputs.valid-cache != true && success())) }}
uses: ./.github/workflows/build_orca.yml
with:
cache-key: ${{ inputs.cache-key }}

View File

@@ -2,10 +2,10 @@ on:
workflow_call:
inputs:
cache-key:
required: true
required: false
type: string
cache-path:
required: true
required: false
type: string
os:
required: true
@@ -13,6 +13,10 @@ on:
arch:
required: false
type: string
macos-combine-only:
required: false
type: boolean
default: false
jobs:
build_orca:
@@ -22,16 +26,19 @@ jobs:
date:
ver:
ver_pure:
ubuntu-ver: '2404'
ubuntu-ver-str: '_Ubuntu2404'
ORCA_UPDATER_SIG_KEY: ${{ secrets.ORCA_UPDATER_SIG_KEY }}
steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v6
with:
lfs: 'true'
lfs: 'false'
- name: load cached deps
uses: actions/cache@v4
if: ${{ !(runner.os == 'macOS' && inputs.macos-combine-only) }}
uses: actions/cache@v5
with:
path: ${{ inputs.cache-path }}
key: ${{ inputs.cache-key }}
@@ -39,24 +46,29 @@ jobs:
- uses: lukka/get-cmake@latest
with:
cmakeVersion: "~3.28.0" # use most recent 3.28.x version
cmakeVersion: "~4.3.0" # use most recent 4.3.x version
useLocalCache: true # <--= Use the local cache (default is 'false').
useCloudCache: true
- name: Get the version and date on Ubuntu and macOS
if: inputs.os != 'windows-latest'
if: runner.os != 'Windows'
run: |
ver_pure=$(grep 'set(SoftFever_VERSION' version.inc | cut -d '"' -f2)
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
ver="PR-${{ github.event.number }}"
git_commit_hash="${{ github.event.pull_request.head.sha }}"
else
ver=V$ver_pure
git_commit_hash=""
fi
echo "ver=$ver" >> $GITHUB_ENV
echo "ver_pure=$ver_pure" >> $GITHUB_ENV
echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV
echo "git_commit_hash=$git_commit_hash" >> $GITHUB_ENV
shell: bash
- name: Get the version and date on Windows
if: inputs.os == 'windows-latest'
if: runner.os == 'Windows'
run: |
$date = Get-Date -Format 'yyyyMMdd'
$ref = "${{ github.ref }}"
@@ -65,29 +77,34 @@ jobs:
if ($eventName -eq 'pull_request') {
$ver = "PR" + $prNumber
$git_commit_hash = "${{ github.event.pull_request.head.sha }}"
} else {
$versionContent = Get-Content version.inc -Raw
if ($versionContent -match 'set\(SoftFever_VERSION "(.*?)"\)') {
$ver = $matches[1]
}
$ver = "V$ver"
$git_commit_hash = ""
}
echo "ver=$ver" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
echo "date=$date" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
echo "git_commit_hash=$git_commit_hash" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
echo "date: ${{ env.date }} version: ${{ env.ver }}"
shell: pwsh
# Mac
- name: Install tools mac
if: inputs.os == 'macos-14'
if: runner.os == 'macOS' && !inputs.macos-combine-only
run: |
brew install libtool
brew list
mkdir -p ${{ github.workspace }}/deps/build
if [ -z "${{ vars.SELF_HOSTED }}" ]; then
brew install libtool
brew list
fi
mkdir -p ${{ github.workspace }}/deps/build/${{ inputs.arch }}
- name: Free disk space
if: inputs.os == 'macos-14'
if: runner.os == 'macOS' && !inputs.macos-combine-only && !vars.SELF_HOSTED
run: |
df -hI /dev/disk3s1s1
sudo find /Applications -maxdepth 1 -type d -name "Xcode_*.app" ! -name "Xcode_15.4.app" -exec rm -rf {} +
@@ -95,14 +112,58 @@ jobs:
df -hI /dev/disk3s1s1
- name: Build slicer mac
if: inputs.os == 'macos-14'
if: runner.os == 'macOS' && !inputs.macos-combine-only
working-directory: ${{ github.workspace }}
run: |
./build_release_macos.sh -s -n -x -a universal -t 10.15 -1
./build_release_macos.sh -s -n -x ${{ !vars.SELF_HOSTED && '-1' || '' }} -a ${{ inputs.arch }} -t 10.15
- name: Pack macOS app bundle ${{ inputs.arch }}
if: runner.os == 'macOS' && !inputs.macos-combine-only
working-directory: ${{ github.workspace }}
run: |
tar -czvf OrcaSlicer_Mac_bundle_${{ inputs.arch }}_${{ github.sha }}.tar.gz -C build/${{ inputs.arch }} OrcaSlicer
- name: Upload macOS app bundle ${{ inputs.arch }}
if: runner.os == 'macOS' && !inputs.macos-combine-only
uses: actions/upload-artifact@v7
with:
name: OrcaSlicer_Mac_bundle_${{ inputs.arch }}_${{ github.sha }}
path: ${{ github.workspace }}/OrcaSlicer_Mac_bundle_${{ inputs.arch }}_${{ github.sha }}.tar.gz
- name: Download macOS app bundles
if: runner.os == 'macOS' && inputs.macos-combine-only
uses: actions/download-artifact@v8
with:
pattern: OrcaSlicer_Mac_bundle_*_${{ github.sha }}
path: ${{ github.workspace }}/mac_bundles
- name: Extract macOS app bundles
if: runner.os == 'macOS' && inputs.macos-combine-only
working-directory: ${{ github.workspace }}
run: |
mkdir -p build/arm64 build/x86_64
arm_bundle=$(find "${{ github.workspace }}/mac_bundles/OrcaSlicer_Mac_bundle_arm64_${{ github.sha }}" -name '*.tar.gz' -print -quit)
x86_bundle=$(find "${{ github.workspace }}/mac_bundles/OrcaSlicer_Mac_bundle_x86_64_${{ github.sha }}" -name '*.tar.gz' -print -quit)
tar -xzvf "$arm_bundle" -C "${{ github.workspace }}/build/arm64"
tar -xzvf "$x86_bundle" -C "${{ github.workspace }}/build/x86_64"
- name: Build universal mac app bundle
if: runner.os == 'macOS' && inputs.macos-combine-only
working-directory: ${{ github.workspace }}
run: |
./build_release_macos.sh -u -x ${{ !vars.SELF_HOSTED && '-1' || '' }} -a universal -t 10.15
- name: Delete intermediate per-arch artifacts
if: runner.os == 'macOS' && inputs.macos-combine-only
uses: geekyeggo/delete-artifact@v5
with:
name: |
OrcaSlicer_Mac_bundle_arm64_${{ github.sha }}
OrcaSlicer_Mac_bundle_x86_64_${{ github.sha }}
# Thanks to RaySajuuk, it's working now
- name: Sign app and notary
if: (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/')) && inputs.os == 'macos-14'
if: github.repository == 'OrcaSlicer/OrcaSlicer' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/')) && runner.os == 'macOS' && inputs.macos-combine-only
working-directory: ${{ github.workspace }}
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
@@ -116,6 +177,8 @@ jobs:
security create-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH
# Set the temporary keychain as the default to prevent codesign from accessing the locked login keychain
security default-keychain -s "$KEYCHAIN_PATH"
security import $CERTIFICATE_PATH -P $P12_PASSWORD -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $P12_PASSWORD $KEYCHAIN_PATH
@@ -144,18 +207,17 @@ jobs:
fi
# Notarize main DMG
xcrun notarytool store-credentials "notarytool-profile" --apple-id "${{ secrets.APPLE_DEV_ACCOUNT }}" --team-id "${{ secrets.TEAM_ID }}" --password "${{ secrets.APP_PWD }}"
xcrun notarytool submit "OrcaSlicer_Mac_universal_${{ env.ver }}.dmg" --keychain-profile "notarytool-profile" --wait
xcrun notarytool submit "OrcaSlicer_Mac_universal_${{ env.ver }}.dmg" --apple-id "${{ secrets.APPLE_DEV_ACCOUNT }}" --team-id "${{ secrets.TEAM_ID }}" --password "${{ secrets.APP_PWD }}" --wait
xcrun stapler staple OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
# Notarize profile validator DMG if it exists
if [ -f "OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg" ]; then
xcrun notarytool submit "OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg" --keychain-profile "notarytool-profile" --wait
xcrun notarytool submit "OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg" --apple-id "${{ secrets.APPLE_DEV_ACCOUNT }}" --team-id "${{ secrets.TEAM_ID }}" --password "${{ secrets.APP_PWD }}" --wait
xcrun stapler staple OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
fi
- name: Create DMG without notary
if: github.ref != 'refs/heads/main' && inputs.os == 'macos-14'
if: github.ref != 'refs/heads/main' && runner.os == 'macOS' && inputs.macos-combine-only
working-directory: ${{ github.workspace }}
run: |
mkdir -p ${{ github.workspace }}/build/universal/OrcaSlicer_dmg
@@ -174,25 +236,25 @@ jobs:
fi
- name: Upload artifacts mac
if: inputs.os == 'macos-14'
uses: actions/upload-artifact@v4
if: runner.os == 'macOS' && inputs.macos-combine-only
uses: actions/upload-artifact@v7
with:
name: OrcaSlicer_Mac_universal_${{ env.ver }}
path: ${{ github.workspace }}/OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
- name: Upload OrcaSlicer_profile_validator DMG mac
if: inputs.os == 'macos-14'
uses: actions/upload-artifact@v4
if: runner.os == 'macOS' && inputs.macos-combine-only && !vars.SELF_HOSTED
uses: actions/upload-artifact@v7
with:
name: OrcaSlicer_profile_validator_Mac_universal_DMG_${{ env.ver }}
path: ${{ github.workspace }}/OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
if-no-files-found: ignore
- name: Deploy Mac release
if: github.ref == 'refs/heads/main' && inputs.os == 'macos-14'
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' && runner.os == 'macOS' && inputs.macos-combine-only && !vars.SELF_HOSTED
uses: WebFreak001/deploy-nightly@v3.2.0
with:
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
release_id: 137995723
asset_path: ${{ github.workspace }}/OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
asset_name: OrcaSlicer_Mac_universal_nightly.dmg
@@ -200,10 +262,10 @@ jobs:
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
- name: Deploy Mac OrcaSlicer_profile_validator DMG release
if: github.ref == 'refs/heads/main' && inputs.os == 'macos-14'
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' && runner.os == 'macOS' && inputs.macos-combine-only && !vars.SELF_HOSTED
uses: WebFreak001/deploy-nightly@v3.2.0
with:
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
release_id: 137995723
asset_path: ${{ github.workspace }}/OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
asset_name: OrcaSlicer_profile_validator_Mac_universal_nightly.dmg
@@ -212,74 +274,74 @@ jobs:
# Windows
- name: setup MSVC
if: inputs.os == 'windows-latest'
if: runner.os == 'Windows'
uses: microsoft/setup-msbuild@v2
- name: Install nsis
if: inputs.os == 'windows-latest'
if: runner.os == 'Windows' && !vars.SELF_HOSTED
run: |
dir "C:/Program Files (x86)/Windows Kits/10/Include"
choco install nsis
- name: Build slicer Win
if: inputs.os == 'windows-latest'
if: runner.os == 'Windows'
working-directory: ${{ github.workspace }}
env:
WindowsSdkDir: 'C:\Program Files (x86)\Windows Kits\10\'
WindowsSDKVersion: '10.0.26100.0\'
run: .\build_release_vs2022.bat slicer
run: .\build_release_vs.bat slicer
- name: Create installer Win
if: inputs.os == 'windows-latest'
if: runner.os == 'Windows' && !vars.SELF_HOSTED
working-directory: ${{ github.workspace }}/build
run: |
cpack -G NSIS
- name: Pack app
if: inputs.os == 'windows-latest'
if: runner.os == 'Windows'
working-directory: ${{ github.workspace }}/build
shell: cmd
run: '"C:/Program Files/7-Zip/7z.exe" a -tzip OrcaSlicer_Windows_${{ env.ver }}_portable.zip ${{ github.workspace }}/build/OrcaSlicer'
- name: Pack PDB
if: inputs.os == 'windows-latest'
if: runner.os == 'Windows' && !vars.SELF_HOSTED
working-directory: ${{ github.workspace }}/build/src/Release
shell: cmd
run: '"C:/Program Files/7-Zip/7z.exe" a -m0=lzma2 -mx9 Debug_PDB_${{ env.ver }}_for_developers_only.7z *.pdb'
- name: Upload artifacts Win zip
if: inputs.os == 'windows-latest'
uses: actions/upload-artifact@v4
if: runner.os == 'Windows'
uses: actions/upload-artifact@v7
with:
name: OrcaSlicer_Windows_${{ env.ver }}_portable
path: ${{ github.workspace }}/build/OrcaSlicer
- name: Upload artifacts Win installer
if: inputs.os == 'windows-latest'
uses: actions/upload-artifact@v4
if: runner.os == 'Windows' && !vars.SELF_HOSTED
uses: actions/upload-artifact@v7
with:
name: OrcaSlicer_Windows_${{ env.ver }}
path: ${{ github.workspace }}/build/OrcaSlicer*.exe
- name: Upload artifacts Win PDB
if: inputs.os == 'windows-latest'
uses: actions/upload-artifact@v4
if: runner.os == 'Windows' && !vars.SELF_HOSTED
uses: actions/upload-artifact@v7
with:
name: PDB
path: ${{ github.workspace }}/build/src/Release/Debug_PDB_${{ env.ver }}_for_developers_only.7z
- name: Upload OrcaSlicer_profile_validator Win
if: inputs.os == 'windows-latest'
uses: actions/upload-artifact@v4
if: runner.os == 'Windows' && !vars.SELF_HOSTED
uses: actions/upload-artifact@v7
with:
name: OrcaSlicer_profile_validator_Windows_${{ env.ver }}
path: ${{ github.workspace }}/build/src/Release/OrcaSlicer_profile_validator.exe
- name: Deploy Windows release portable
if: github.ref == 'refs/heads/main' && inputs.os == 'windows-latest'
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' && runner.os == 'Windows' && !vars.SELF_HOSTED
uses: WebFreak001/deploy-nightly@v3.2.0
with:
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
release_id: 137995723
asset_path: ${{ github.workspace }}/build/OrcaSlicer_Windows_${{ env.ver }}_portable.zip
asset_name: OrcaSlicer_Windows_nightly_portable.zip
@@ -287,10 +349,10 @@ jobs:
max_releases: 1
- name: Deploy Windows release installer
if: github.ref == 'refs/heads/main' && inputs.os == 'windows-latest'
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' && runner.os == 'Windows' && !vars.SELF_HOSTED
uses: WebFreak001/deploy-nightly@v3.2.0
with:
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
release_id: 137995723
asset_path: ${{ github.workspace }}/build/OrcaSlicer_Windows_Installer_${{ env.ver }}.exe
asset_name: OrcaSlicer_Windows_Installer_nightly.exe
@@ -298,10 +360,10 @@ jobs:
max_releases: 1
- name: Deploy Windows OrcaSlicer_profile_validator release
if: github.ref == 'refs/heads/main' && inputs.os == 'windows-latest'
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' && runner.os == 'Windows' && !vars.SELF_HOSTED
uses: WebFreak001/deploy-nightly@v3.2.0
with:
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
release_id: 137995723
asset_path: ${{ github.workspace }}/build/src/Release/OrcaSlicer_profile_validator.exe
asset_name: OrcaSlicer_profile_validator_Windows_nightly.exe
@@ -309,42 +371,35 @@ jobs:
max_releases: 1
# Ubuntu
- name: Install dependencies
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
env:
apt-cmd: ${{ (inputs.os == 'ubuntu-20.04' && 'apt-fast') || (inputs.os == 'ubuntu-24.04' && 'sudo apt-get') || '' }}
webkit-ver: ${{ (inputs.os == 'ubuntu-20.04' && '4.0') || (inputs.os == 'ubuntu-24.04' && '4.1') || '' }}
libfuse2-pkg: ${{ (inputs.os == 'ubuntu-20.04' && 'libfuse2') || (inputs.os == 'ubuntu-24.04' && 'libfuse2t64') || '' }}
- name: Apt-Install Dependencies
if: runner.os == 'Linux' && !vars.SELF_HOSTED
uses: ./.github/actions/apt-install-deps
# Tests must built at the same time as the slicer;
# if you untangle them feel free to separate them here too
- name: Build slicer and tests
if: runner.os == 'Linux'
shell: bash
run: |
${{ env.apt-cmd }} update
${{ env.apt-cmd }} install -y autoconf build-essential cmake curl eglexternalplatform-dev \
extra-cmake-modules file git libcairo2-dev libcurl4-openssl-dev libdbus-1-dev libglew-dev libglu1-mesa-dev \
libglu1-mesa-dev libgstreamer1.0-dev libgstreamerd-3-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev \
libgtk-3-dev libgtk-3-dev libmspack-dev libsecret-1-dev libsoup2.4-dev libssl-dev libudev-dev libwayland-dev \
libwebkit2gtk-${{ env.webkit-ver }}-dev libxkbcommon-dev locales locales-all m4 pkgconf sudo wayland-protocols wget ${{ env.libfuse2-pkg }}
- name: Install dependencies from build_linux.sh
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
shell: bash
run: sudo env "ORCA_UPDATER_SIG_KEY=$ORCA_UPDATER_SIG_KEY" ./build_linux.sh -ur
- name: Fix permissions
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
shell: bash
run: sudo chown $USER -R ./
- name: Build slicer
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
shell: bash
env:
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
run: |
./build_linux.sh -isr
./build_linux.sh -istrlL
mv -n ./build/OrcaSlicer_Linux_V${{ env.ver_pure }}.AppImage ./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
chmod +x ./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
tar -cvpf build_tests.tar build/tests
# Use tar because upload-artifacts won't always preserve directory structure
# and doesn't preserve file permissions
- name: Upload Test Artifact
if: runner.os == 'Linux'
uses: actions/upload-artifact@v7
with:
name: ${{ github.sha }}-tests
overwrite: true
path: build_tests.tar
retention-days: 5
if-no-files-found: error
- name: Build orca_custom_preset_tests
if: github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-24.04'
if: github.ref == 'refs/heads/main' && runner.os == 'Linux' && !vars.SELF_HOSTED
working-directory: ${{ github.workspace }}/build/src/Release
shell: bash
run: |
@@ -353,38 +408,31 @@ jobs:
zip -r orca_custom_preset_tests.zip user/
- name: Upload artifacts Ubuntu
if: ${{ ! env.ACT && inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04' }}
env:
ubuntu-ver: ${{ (inputs.os == 'ubuntu-20.04' && '2004') || (inputs.os == 'ubuntu-24.04' && '2404') || '' }}
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
uses: actions/upload-artifact@v4
if: ${{ ! env.ACT && runner.os == 'Linux' }}
uses: actions/upload-artifact@v7
with:
name: OrcaSlicer_Linux_ubuntu_${{ env.ubuntu-ver }}_${{ env.ver }}
path: './build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage'
- name: Upload OrcaSlicer_profile_validator Ubuntu
if: ${{ ! env.ACT && inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04' }}
env:
ubuntu-ver: ${{ (inputs.os == 'ubuntu-20.04' && '2004') || (inputs.os == 'ubuntu-24.04' && '2404') || '' }}
uses: actions/upload-artifact@v4
if: ${{ ! env.ACT && runner.os == 'Linux' && !vars.SELF_HOSTED }}
uses: actions/upload-artifact@v7
with:
name: OrcaSlicer_profile_validator_Linux_ubuntu_${{ env.ubuntu-ver }}_${{ env.ver }}
path: './build/src/Release/OrcaSlicer_profile_validator'
- name: Deploy Ubuntu release
if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && (inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04') }}
env:
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
if: ${{ github.repository == 'OrcaSlicer/OrcaSlicer' && ! env.ACT && github.ref == 'refs/heads/main' && runner.os == 'Linux' && !vars.SELF_HOSTED }}
uses: WebFreak001/deploy-nightly@v3.2.0
with:
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
release_id: 137995723
asset_path: ./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
asset_name: OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_nightly.AppImage
asset_content_type: application/octet-stream
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
- name: Deploy Ubuntu release
if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-24.04' }}
if: ${{ github.repository == 'OrcaSlicer/OrcaSlicer' && ! env.ACT && github.ref == 'refs/heads/main' && runner.os == 'Linux' && !vars.SELF_HOSTED }}
uses: rickstaa/action-create-tag@v1
with:
tag: "nightly-builds"
@@ -393,12 +441,10 @@ jobs:
message: "nightly-builds"
- name: Deploy Ubuntu OrcaSlicer_profile_validator release
if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && (inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04') }}
env:
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
if: ${{ github.repository == 'OrcaSlicer/OrcaSlicer' && ! env.ACT && github.ref == 'refs/heads/main' && runner.os == 'Linux' && !vars.SELF_HOSTED }}
uses: WebFreak001/deploy-nightly@v3.2.0
with:
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
release_id: 137995723
asset_path: ./build/src/Release/OrcaSlicer_profile_validator
asset_name: OrcaSlicer_profile_validator_Linux${{ env.ubuntu-ver-str }}_nightly
@@ -406,10 +452,10 @@ jobs:
max_releases: 1
- name: Deploy orca_custom_preset_tests
if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-24.04' }}
if: ${{ github.repository == 'OrcaSlicer/OrcaSlicer' && ! env.ACT && github.ref == 'refs/heads/main' && runner.os == 'Linux' && !vars.SELF_HOSTED }}
uses: WebFreak001/deploy-nightly@v3.2.0
with:
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
release_id: 137995723
asset_path: ${{ github.workspace }}/resources/profiles/orca_custom_preset_tests.zip
asset_name: orca_custom_preset_tests.zip

View File

@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
uses: actions/checkout@v6
- name: Install gettext
run: |

View File

@@ -1,8 +1,8 @@
name: Check profiles
on:
on:
pull_request:
branches:
- main
branches:
- main
paths:
- 'resources/profiles/**'
- ".github/workflows/check_profiles.yml"
@@ -10,25 +10,32 @@ on:
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
description: 'Log level'
required: true
default: 'warning'
permissions:
contents: read
jobs:
check_translation:
check_profiles:
name: Check profiles
runs-on: ubuntu-24.04
steps:
steps:
- name: Checkout repository
uses: actions/checkout@v5
uses: actions/checkout@v6
- name: Run extra JSON check
id: extra_json_check
continue-on-error: true
run: |
python3 ./scripts/orca_extra_profile_check.py
set +e
python3 ./scripts/orca_extra_profile_check.py 2>&1 | tee ${{ runner.temp }}/extra_json_check.log
exit ${PIPESTATUS[0]}
# download
- name: Download
- name: Download
working-directory: ${{ github.workspace }}
run: |
curl -LJO https://github.com/SoftFever/Orca_tools/releases/download/1/OrcaSlicer_profile_validator
@@ -36,16 +43,76 @@ jobs:
# validate profiles
- name: validate system profiles
id: validate_system
continue-on-error: true
run: |
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2
set +e
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2 2>&1 | tee ${{ runner.temp }}/validate_system.log
exit ${PIPESTATUS[0]}
- name: validate custom presets
id: validate_custom
continue-on-error: true
working-directory: ${{ github.workspace }}
run: |
curl -LJO https://github.com/SoftFever/OrcaSlicer/releases/download/nightly-builds/orca_custom_preset_tests.zip
unzip ./orca_custom_preset_tests.zip -d ${{ github.workspace }}/resources/profiles
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2
set +e
curl -LJO https://github.com/OrcaSlicer/OrcaSlicer/releases/download/nightly-builds/orca_custom_preset_tests.zip
unzip -q ./orca_custom_preset_tests.zip -d ${{ github.workspace }}/resources/profiles
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2 2>&1 | tee ${{ runner.temp }}/validate_custom.log
exit ${PIPESTATUS[0]}
- name: Prepare comment artifact
if: ${{ always() && github.event_name == 'pull_request' && (steps.extra_json_check.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }}
run: |
mkdir -p ${{ runner.temp }}/profile-check-results
{
echo "## :x: Profile Validation Errors"
echo ""
if [ "${{ steps.extra_json_check.outcome }}" = "failure" ]; then
echo "### Extra JSON Check Failed"
echo ""
echo '```'
head -c 30000 ${{ runner.temp }}/extra_json_check.log || echo "No output captured"
echo '```'
echo ""
fi
if [ "${{ steps.validate_system.outcome }}" = "failure" ]; then
echo "### System Profile Validation Failed"
echo ""
echo '```'
head -c 30000 ${{ runner.temp }}/validate_system.log || echo "No output captured"
echo '```'
echo ""
fi
if [ "${{ steps.validate_custom.outcome }}" = "failure" ]; then
echo "### Custom Preset Validation Failed"
echo ""
echo '```'
head -c 30000 ${{ runner.temp }}/validate_custom.log || echo "No output captured"
echo '```'
echo ""
fi
echo "---"
echo "*Please fix the above errors and push a new commit.*"
} > ${{ runner.temp }}/profile-check-results/pr_comment.md
echo "${{ github.event.pull_request.number }}" > ${{ runner.temp }}/profile-check-results/pr_number.txt
- name: Upload comment artifact
if: ${{ always() && github.event_name == 'pull_request' && (steps.extra_json_check.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }}
uses: actions/upload-artifact@v7
with:
name: profile-check-results
path: ${{ runner.temp }}/profile-check-results/
retention-days: 1
- name: Fail if any check failed
if: ${{ always() && (steps.extra_json_check.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }}
run: |
echo "One or more profile checks failed. See above for details."
exit 1

View File

@@ -0,0 +1,46 @@
name: Post profile check comment
# NOTE: The workflow name in the 'workflows' filter below must match the 'name'
# field in check_profiles.yml exactly. If that name changes, update it here too.
on:
workflow_run:
workflows: ["Check profiles"]
types:
- completed
permissions:
pull-requests: write
jobs:
post_comment:
name: Post PR comment
runs-on: ubuntu-24.04
if: ${{ github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'failure' }}
steps:
- name: Download artifact
id: download
uses: actions/download-artifact@v8
continue-on-error: true
with:
name: profile-check-results
run-id: ${{ github.event.workflow_run.id }}
github-token: ${{ github.token }}
- name: Post comment on PR
if: ${{ steps.download.outcome == 'success' }}
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
run: |
if [ ! -f pr_number.txt ] || [ ! -f pr_comment.md ]; then
echo "No comment artifact found, skipping."
exit 0
fi
PR_NUMBER=$(cat pr_number.txt)
if ! [[ "$PR_NUMBER" =~ ^[0-9]+$ ]]; then
echo "Invalid PR number: $PR_NUMBER"
exit 1
fi
gh pr comment "$PR_NUMBER" --body-file pr_comment.md

View File

@@ -1,71 +0,0 @@
name: Claude Code Review
on:
workflow_dispatch:
jobs:
claude-review:
# Optional: Filter by PR author
# if: |
# github.event.pull_request.user.login == 'external-contributor' ||
# github.event.pull_request.user.login == 'new-developer' ||
# github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR'
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
issues: read
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v5
with:
fetch-depth: 1
- name: Run Claude Code Review
id: claude-review
uses: anthropics/claude-code-action@beta
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
# Optional: Specify model (defaults to Claude Sonnet 4, uncomment for Claude Opus 4.1)
# model: "claude-opus-4-1-20250805"
# Direct prompt for automated review (no @claude mention needed)
direct_prompt: |
Please review this pull request and provide feedback on:
- Code quality and best practices
- Potential bugs or issues
- Performance considerations
- Security concerns
- Test coverage
Be constructive and helpful in your feedback.
# Optional: Use sticky comments to make Claude reuse the same comment on subsequent pushes to the same PR
# use_sticky_comment: true
# Optional: Customize review based on file types
# direct_prompt: |
# Review this PR focusing on:
# - For TypeScript files: Type safety and proper interface usage
# - For API endpoints: Security, input validation, and error handling
# - For React components: Performance, accessibility, and best practices
# - For tests: Coverage, edge cases, and test quality
# Optional: Different prompts for different authors
# direct_prompt: |
# ${{ github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' &&
# 'Welcome! Please review this PR from a first-time contributor. Be encouraging and provide detailed explanations for any suggestions.' ||
# 'Please provide a thorough code review focusing on our coding standards and best practices.' }}
# Optional: Add specific tools for running tests or linting
# allowed_tools: "Bash(npm run test),Bash(npm run lint),Bash(npm run typecheck)"
# Optional: Skip review for certain conditions
# if: |
# !contains(github.event.pull_request.title, '[skip-review]') &&
# !contains(github.event.pull_request.title, '[WIP]')

View File

@@ -1,64 +0,0 @@
name: Claude Code
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened, assigned]
pull_request_review:
types: [submitted]
jobs:
claude:
if: |
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
issues: read
id-token: write
actions: read # Required for Claude to read CI results on PRs
steps:
- name: Checkout repository
uses: actions/checkout@v5
with:
fetch-depth: 1
- name: Run Claude Code
id: claude
uses: anthropics/claude-code-action@beta
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
# This is an optional setting that allows Claude to read CI results on PRs
additional_permissions: |
actions: read
# Optional: Specify model (defaults to Claude Sonnet 4, uncomment for Claude Opus 4.1)
# model: "claude-opus-4-1-20250805"
# Optional: Customize the trigger phrase (default: @claude)
# trigger_phrase: "/claude"
# Optional: Trigger when specific user is assigned to an issue
# assignee_trigger: "claude-bot"
# Optional: Allow Claude to run specific commands
# allowed_tools: "Bash(npm install),Bash(npm run build),Bash(npm run test:*),Bash(npm run lint:*)"
# Optional: Add custom instructions for Claude to customize its behavior for your project
# custom_instructions: |
# Follow our coding standards
# Ensure all new code has tests
# Use TypeScript for new files
# Optional: Custom environment variables for Claude
# claude_env: |
# NODE_ENV: test

81
.github/workflows/dedupe-issues.yml vendored Normal file
View File

@@ -0,0 +1,81 @@
name: Orca Issue Dedupe
description: Automatically dedupe GitHub issues using AI
on:
issues:
types: [opened]
workflow_dispatch:
inputs:
issue_number:
description: 'Issue number to process for duplicate detection'
required: true
type: string
jobs:
dedupe-issues:
runs-on: ubuntu-latest
timeout-minutes: 30
permissions:
contents: read
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Run Claude Code slash command
uses: anthropics/claude-code-base-action@beta
with:
prompt: "/dedupe ${{ github.repository }}/issues/${{ github.event.issue.number || inputs.issue_number }}"
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
claude_args: "--model claude-sonnet-4-5-20250929"
claude_env: |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Log duplicate comment event to Statsig
if: always()
env:
STATSIG_API_KEY: ${{ secrets.STATSIG_API_KEY }}
run: |
ISSUE_NUMBER=${{ github.event.issue.number || inputs.issue_number }}
REPO=${{ github.repository }}
if [ -z "$STATSIG_API_KEY" ]; then
echo "STATSIG_API_KEY not found, skipping Statsig logging"
exit 0
fi
# Prepare the event payload
EVENT_PAYLOAD=$(jq -n \
--arg issue_number "$ISSUE_NUMBER" \
--arg repo "$REPO" \
--arg triggered_by "${{ github.event_name }}" \
'{
events: [{
eventName: "github_duplicate_comment_added",
value: 1,
metadata: {
repository: $repo,
issue_number: ($issue_number | tonumber),
triggered_by: $triggered_by,
workflow_run_id: "${{ github.run_id }}"
},
time: (now | floor | tostring)
}]
}')
# Send to Statsig API
echo "Logging duplicate comment event to Statsig for issue #${ISSUE_NUMBER}"
RESPONSE=$(curl -s -w "\n%{http_code}" -X POST https://events.statsigapi.net/v1/log_event \
-H "Content-Type: application/json" \
-H "STATSIG-API-KEY: ${STATSIG_API_KEY}" \
-d "$EVENT_PAYLOAD")
HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
BODY=$(echo "$RESPONSE" | head -n-1)
if [ "$HTTP_CODE" -eq 200 ] || [ "$HTTP_CODE" -eq 202 ]; then
echo "Successfully logged duplicate comment event for issue #${ISSUE_NUMBER}"
else
echo "Failed to log duplicate comment event for issue #${ISSUE_NUMBER}. HTTP ${HTTP_CODE}: ${BODY}"
fi

78
.github/workflows/doxygen-docs.yml vendored Normal file
View File

@@ -0,0 +1,78 @@
name: Generate Doxygen Documentation
on:
schedule:
- cron: '0 0 * * 1' # Every Monday at midnight UTC
workflow_dispatch: # Manual trigger
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true
jobs:
build-and-deploy:
name: Build and Deploy Docs
runs-on: ubuntu-latest
timeout-minutes: 60
# Only run on main branch of the main repository
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main'
permissions:
contents: read
steps:
- uses: thejerrybao/setup-swap-space@v1
with:
swap-space-path: /swapfile
swap-size-gb: 8
remove-existing-swap-files: true
- name: Checkout repository
uses: actions/checkout@v6
- name: Install Doxygen and Graphviz
run: |
set -euo pipefail
sudo apt-get update
sudo apt-get install -y doxygen graphviz
- name: Generate documentation
run: |
set -euo pipefail
# Override DOT_NUM_THREADS to avoid parallel dot race condition bug
sed -i 's/^DOT_NUM_THREADS.*/DOT_NUM_THREADS = 1/' .doxygen
doxygen .doxygen
# Verify documentation was generated
if [ ! -f "internal_docs/index.html" ]; then
echo "Error: Documentation generation failed - index.html not found"
exit 1
fi
- name: Install Rclone
run: |
set -euo pipefail
sudo -v
curl -fsSL https://rclone.org/install.sh | sudo bash
- name: optimize
run: |
set -euo pipefail
rm -f internal_docs/Nodes.xml internal_docs/Tokens.xml
find internal_docs -name "*.map" -type f -delete || true
find internal_docs -name "*.md5" -type f -delete || true
- name: upload
# We configure rclone dynamically using environment variables
run: |
set -euo pipefail
# Remove existing config if it exists to avoid conflicts
rclone config delete cloudflare 2>/dev/null || true
rclone config create cloudflare s3 \
provider Cloudflare \
access_key_id ${{ secrets.R2_ACCESS_KEY_ID }} \
secret_access_key ${{ secrets.R2_SECRET_ACCESS_KEY }} \
endpoint ${{ secrets.R2_ENDPOINT }}
rclone sync internal_docs/ cloudflare:orcaslicer-internals \
--progress \
--transfers 512 \
--checkers 512
echo "Documentation upload completed successfully"

View File

@@ -1,73 +0,0 @@
name: Orca bot
on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
jobs:
stale:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
contents: write # only for delete-branch option
steps:
- uses: actions/stale@v9
with:
# PAT for GitHub API authentication
repo-token: ${{ secrets.GITHUB_TOKEN }}
# Max number of operations per run
operations-per-run: 1000
# Order to get issues/PRs
ascending: true
# ISSUES
# Do not auto-close an issue if it is assigned to a milestone
exempt-all-issue-milestones: true
# Exempt all issues with assignees from stale
exempt-all-issue-assignees: true
# Exempt feature requests
exempt-issue-labels: "enhancement"
# Idle number of days before marking issues stale
days-before-issue-stale: 90
# Idle number of days before marking issues close
days-before-issue-close: 7
# Label to apply on staled issues
stale-issue-label: "stale"
# Issue close reason
close-issue-reason: not_planned
# Remove stale label from issues on updates
remove-issue-stale-when-updated: true
# Issue stale message
stale-issue-message: "Orca bot: this issue is stale because it has been open for 90 days with no activity."
# Issue closure message
close-issue-message: "Orca bot: This issue was closed because it has been inactive for 7 days since being marked as stale."
# PRs
# Do not auto-close a PR if it is assigned to a milestone
exempt-all-pr-milestones: true
# Exempt all PRs with assignees from stale
exempt-all-pr-assignees: true
# Skip the stale action for draft PRs
exempt-draft-pr: true
# Idle number of days before marking PRs stale
days-before-pr-stale: -1
# Idle number of days before marking PRs close
days-before-pr-close: -1
# Label to apply on staled PRs
stale-pr-label: "stale"
# Label to apply on closed PRs
close-pr-label: not_planned
# Remove stale label from PRs on updates
remove-pr-stale-when-updated: true
# PR stale message
stale-pr-message: "Orca bot: this PR is stale because it has been open for XX days with no activity."
# PR closure message
close-pr-message: "Orca bot: This PR was closed because it has been inactive for X days since being marked as stale."
# Delete branch after closing a stale PR
delete-branch: true

View File

@@ -1,46 +0,0 @@
name: Publish docs to Wiki
# Trigger this action only if there are changes pushed to the doc/** directory under the main branch
on:
push:
paths:
- doc/** # This includes all sub folders
branches:
- main # This can be changed to any branch of your preference
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
env:
USER_TOKEN: ${{ secrets.GH_WIKI_PAT }} # This is the repository secret personal access token
USER_NAME: ${{ vars.BOT_USER_NAME }} # Enter the username of your (bot) account
OWNER: ${{ github.event.repository.owner.name }} # This is the repository owner
REPOSITORY_NAME: ${{ github.event.repository.name }} # This is the repository name
jobs:
publish_docs_to_wiki:
name: Publish docs to Wiki
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
# 1. Clone the current wiki master branch to a folder named `tmp_wiki`
- name: Pull content from wiki
run: |
git config --global user.name "$USER_NAME"
git config --global user.email "$USER_NAME"@users.noreply.github.com
git clone https://"$USER_TOKEN"@github.com/SoftFever/"$REPOSITORY_NAME".wiki.git tmp_wiki
# 4. Synchronize differences between `doc` & `tmp_wiki`
# 5. Push new Wiki content
- name: Push main repo content to wiki
run: |
rsync -av --delete doc/ tmp_wiki/ --exclude .git
cd tmp_wiki
git add .
git commit -m "Updated Wiki content"
git push origin master

View File

@@ -21,7 +21,7 @@ jobs:
steps:
- name: Cache shellcheck download
id: cache-shellcheck-v0_11
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: ~/shellcheck
key: ${{ runner.os }}-shellcheck-v0_11
@@ -36,7 +36,7 @@ jobs:
tar -xvf ~/sc.tar.xz -C ~
mv ~/shellcheck-"${INPUT_VERSION}"/shellcheck ~/shellcheck
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
fetch-depth: 1

View File

@@ -10,10 +10,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
uses: actions/checkout@v6
- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.12'

View File

@@ -1,335 +0,0 @@
name: Validate Documentation
on:
pull_request:
paths:
- 'src/slic3r/GUI/Tab.cpp'
- 'doc/**/*.md'
workflow_dispatch:
permissions:
contents: read
pull-requests: write
issues: write
jobs:
validate:
runs-on: windows-latest
name: Check Documentation
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v46
with:
files: |
src/slic3r/GUI/Tab.cpp
doc/**/*.md
- name: Run validation
if: steps.changed-files.outputs.any_changed == 'true'
shell: pwsh
run: |
# Helper Functions
function Normalize-Fragment($fragment) {
return $fragment.ToLower().Trim() -replace '[^a-z0-9\s-]', '' -replace ' ', '-' -replace '^-+|-+$', ''
}
function Add-BrokenReference($sourceFile, $line, $target, $issue, $type) {
return @{
SourceFile = $sourceFile
Line = $line
Target = $target
Issue = $issue
Type = $type
}
}
function Validate-Fragment($fragment, $availableAnchors, $sourceFile, $line, $target, $type) {
$cleanFragment = $fragment.StartsWith('#') ? $fragment.Substring(1) : $fragment
$normalizedFragment = Normalize-Fragment $cleanFragment
if ($availableAnchors -notcontains $normalizedFragment) {
return Add-BrokenReference $sourceFile $line $target "Fragment does not exist" $type
}
return $null
}
# Initialize
$tabFile = Join-Path $PWD "src/slic3r/GUI/Tab.cpp"
$docDir = Join-Path $PWD 'doc'
$brokenReferences = @()
$docIndex = @{}
Write-Host "Validating documentation..." -ForegroundColor Blue
# Validate paths
$hasTabFile = Test-Path $tabFile
if (-not $hasTabFile) { Write-Host "::warning::Tab.cpp file not found at: $tabFile" }
if (-not (Test-Path $docDir)) { Write-Host "::error::doc folder does not exist"; exit 1 }
# Build documentation index
$mdFiles = Get-ChildItem -Path $docDir -Filter *.md -Recurse -File -ErrorAction SilentlyContinue
foreach ($mdFile in $mdFiles) {
$baseName = [System.IO.Path]::GetFileNameWithoutExtension($mdFile.Name)
$relPath = (Resolve-Path $mdFile.FullName).Path.Substring($docDir.Length).TrimStart('\', '/')
$content = Get-Content -Path $mdFile.FullName -Encoding UTF8 -Raw
$lines = Get-Content -Path $mdFile.FullName -Encoding UTF8
# Extract anchors
$anchors = @()
$anchors += [regex]::Matches($content, '(?i)<a\s+[^>]*(?:name|id)\s*=\s*[`"'']([^`"'']+)[`"'']') |
ForEach-Object { $_.Groups[1].Value.ToLower() }
$anchors += [regex]::Matches($content, '(?m)^#+\s+(.+)$') |
ForEach-Object { Normalize-Fragment $_.Groups[1].Value.Trim() }
# Parse links
$links = @()
$inCodeFence = $false
for ($i = 0; $i -lt $lines.Count; $i++) {
$line = $lines[$i]
if ($line.TrimStart() -match '^(```|~~~)') {
$inCodeFence = -not $inCodeFence
continue
}
if ($inCodeFence) { continue }
$lineForParsing = [regex]::Replace($line, '`[^`]*`', '')
foreach ($linkMatch in [regex]::Matches($lineForParsing, '(?<!!)[^\]]*\]\(([^)]+)\)')) {
$destRaw = $linkMatch.Groups[1].Value.Trim()
# Handle internal fragments
if ($destRaw.StartsWith('#')) {
$fragment = $destRaw.Substring(1)
if ($fragment.Contains('#')) {
$brokenReferences += Add-BrokenReference $relPath ($i + 1) $destRaw "Internal link must use only one #." "Link"
} else {
$validationResult = Validate-Fragment $fragment $anchors $relPath ($i + 1) $destRaw "Link"
if ($validationResult) { $brokenReferences += $validationResult }
}
continue
}
# Skip external URLs
if ($destRaw -match '^(?:https?:|mailto:|data:|#|\\)') { continue }
# Check for double ##
if ($destRaw.Contains('##')) {
$brokenReferences += Add-BrokenReference $relPath ($i + 1) $destRaw "Use single # for fragments." "Link"
continue
}
# Parse file and fragment
$destParts = $destRaw -split '#', 2
$destNoFragment = $destParts[0]
$fragment = ($destParts.Length -gt 1) ? $destParts[1] : $null
if ($destNoFragment) {
$leaf = ($destNoFragment -split '[\\/]')[-1]
if ($leaf) {
$targetBase = $leaf.ToLower().EndsWith('.md') ? $leaf.Substring(0, $leaf.Length - 3) : $leaf
$targetBase = $targetBase.Trim()
if ($targetBase) {
$linkInfo = @{
TargetBase = $targetBase
Fragment = $fragment
Line = $i + 1
SourceFile = $relPath
}
$links += $linkInfo
}
}
}
}
}
$docIndex[$baseName] = @{ Anchors = $anchors; Links = $links }
}
# Parse Tab.cpp references
if ($hasTabFile) {
$regex = 'optgroup->append_single_option_line\s*\(\s*(?:"([^"]+)"|([^,]+?))\s*,\s*"([^"]+)"\s*\)'
$lines = Get-Content -Path $tabFile -Encoding UTF8
for ($i = 0; $i -lt $lines.Count; $i++) {
foreach ($match in [regex]::Matches($lines[$i], $regex)) {
$arg2Full = $match.Groups[3].Value.Trim()
if ($arg2Full.Contains('##')) {
$brokenReferences += Add-BrokenReference "Tab.cpp" ($i + 1) $arg2Full "Use single # for fragments." "Link"
continue
}
$arg2Parts = $arg2Full -split '#', 2
$docBase = $arg2Parts[0].Trim()
$fragment = ($arg2Parts.Length -gt 1) ? $arg2Parts[1].Trim() : $null
if (-not $docIndex.ContainsKey($docBase)) {
$brokenReferences += Add-BrokenReference "Tab.cpp" ($i + 1) $docBase "File does not exist" "Link"
} elseif ($fragment) {
$validationResult = Validate-Fragment $fragment $docIndex[$docBase].Anchors "Tab.cpp" ($i + 1) "$docBase#$fragment" "Link"
if ($validationResult) { $brokenReferences += $validationResult }
}
}
}
}
# Validate markdown links
foreach ($baseName in $docIndex.Keys) {
foreach ($link in $docIndex[$baseName].Links) {
if (-not $docIndex.ContainsKey($link.TargetBase)) {
$brokenReferences += Add-BrokenReference $link.SourceFile $link.Line "$($link.TargetBase).md" "File does not exist" "Link"
} elseif ($link.Fragment) {
$validationResult = Validate-Fragment $link.Fragment $docIndex[$link.TargetBase].Anchors $link.SourceFile $link.Line "$($link.TargetBase)#$($link.Fragment)" "Link"
if ($validationResult) { $brokenReferences += $validationResult }
}
}
}
# Validate images
Write-Host "Validating images..." -ForegroundColor Blue
$expectedUrlPattern = '^https://github\.com/SoftFever/OrcaSlicer/blob/main/([^?]+)\?raw=true$'
foreach ($file in $mdFiles) {
$lines = Get-Content $file.FullName -Encoding UTF8
$relPath = (Resolve-Path $file.FullName).Path.Substring($docDir.Length).TrimStart('\', '/')
$inCodeFence = $false
for ($lineNumber = 0; $lineNumber -lt $lines.Count; $lineNumber++) {
$line = $lines[$lineNumber]
if ($line.TrimStart() -match '^(```|~~~)') {
$inCodeFence = -not $inCodeFence
continue
}
if ($inCodeFence) { continue }
$lineForParsing = [regex]::Replace($line, '`[^`]*`', '')
# Process markdown and HTML images
$imagePatterns = @(
@{ Pattern = "!\[([^\]]*)\]\(([^)]+)\)"; Type = "Markdown"; AltGroup = 1; UrlGroup = 2 }
@{ Pattern = '<img\s+[^>]*>'; Type = "HTML"; AltGroup = -1; UrlGroup = -1 }
)
foreach ($pattern in $imagePatterns) {
foreach ($match in [regex]::Matches($lineForParsing, $pattern.Pattern)) {
$altText = ""
$url = ""
if ($pattern.Type -eq "Markdown") {
$altText = $match.Groups[$pattern.AltGroup].Value
$url = $match.Groups[$pattern.UrlGroup].Value
} else {
# Extract from HTML
$imgTag = $match.Value
if ($imgTag -match 'alt\s*=\s*[`"'']([^`"'']*)[`"'']') { $altText = $matches[1] }
if ($imgTag -match 'src\s*=\s*[`"'']([^`"'']*)[`"'']') { $url = $matches[1] }
}
if (-not $altText.Trim() -and $url) {
$brokenReferences += Add-BrokenReference $relPath ($lineNumber + 1) $match.Value "[$($pattern.Type)] Missing alt text for image" "Image"
} elseif ($url -and $altText) {
# Validate URL format and file existence
if ($url -match $expectedUrlPattern) {
$relativePathInUrl = $matches[1]
$fileNameFromUrl = [System.IO.Path]::GetFileNameWithoutExtension($relativePathInUrl)
if ($altText -ne $fileNameFromUrl) {
$brokenReferences += Add-BrokenReference $relPath ($lineNumber + 1) $match.Value "[$($pattern.Type)] Alt text `"$altText`" ≠ filename `"$fileNameFromUrl`"" "Image"
}
$expectedImagePath = Join-Path $PWD ($relativePathInUrl -replace "/", "\")
if (-not (Test-Path $expectedImagePath)) {
$brokenReferences += Add-BrokenReference $relPath ($lineNumber + 1) $match.Value "[$($pattern.Type)] Image not found at path: $relativePathInUrl" "Image"
}
} else {
$urlIssues = @()
if (-not $url.StartsWith('https://github.com/SoftFever/OrcaSlicer/blob/main/')) { $urlIssues += "URL must start with expected prefix" }
if (-not $url.EndsWith('?raw=true')) { $urlIssues += "URL must end with '?raw=true'" }
if ($url -match '^https?://(?!github\.com/SoftFever/OrcaSlicer)') { $urlIssues += "External URLs not allowed" }
$issueText = "[$($pattern.Type)] URL format issues: " + ($urlIssues -join '; ')
$brokenReferences += Add-BrokenReference $relPath ($lineNumber + 1) $match.Value $issueText "Image"
}
}
}
}
}
}
# Report results
$linkErrors = $brokenReferences | Where-Object { $_.Type -eq "Link" }
$imageErrors = $brokenReferences | Where-Object { $_.Type -eq "Image" }
if ($brokenReferences.Count -gt 0) {
Write-Host "::error::Documentation validation failed"
# Build error summary for PR comment
$errorSummary = ""
# Report link errors
if ($linkErrors) {
Write-Host "::group::🔗 Link Validation Errors"
$errorSummary += "## 🔗 Link Validation Errors`n`n"
$linkErrors | Group-Object SourceFile | ForEach-Object {
Write-Host "📄 $($_.Name):" -ForegroundColor Yellow
$errorSummary += "**📄 doc/$($_.Name):**`n"
$_.Group | Sort-Object Line | ForEach-Object {
Write-Host " Line $($_.Line): $($_.Target) - $($_.Issue)" -ForegroundColor Red
Write-Host "::error file=doc/$($_.SourceFile),line=$($_.Line)::$($_.Target) - $($_.Issue)"
$errorSummary += "- Line $($_.Line): ``$($_.Target)`` - $($_.Issue)`n"
}
$errorSummary += "`n"
}
Write-Host "::endgroup::"
}
# Report image errors
if ($imageErrors) {
Write-Host "::group::🖼️ Image Validation Errors"
$errorSummary += "## 🖼️ Image Validation Errors`n`n"
$imageErrors | Group-Object SourceFile | ForEach-Object {
Write-Host "📄 $($_.Name):" -ForegroundColor Yellow
$errorSummary += "**📄 doc/$($_.Name):**`n"
$_.Group | Sort-Object Line | ForEach-Object {
Write-Host " Line $($_.Line): $($_.Issue)" -ForegroundColor Red
Write-Host "::error file=doc/$($_.SourceFile),line=$($_.Line)::$($_.Issue)"
$errorSummary += "- Line $($_.Line): $($_.Issue)`n"
}
$errorSummary += "`n"
}
Write-Host "::endgroup::"
}
# Export error summary for PR comment
Add-Content -Path $env:GITHUB_ENV -Value "VALIDATION_ERRORS<<EOF"
Add-Content -Path $env:GITHUB_ENV -Value $errorSummary
Add-Content -Path $env:GITHUB_ENV -Value "EOF"
exit 1
} else {
Write-Host "::notice::All documentation is valid!"
exit 0
}
- name: Comment on PR
if: failure() && github.event_name == 'pull_request'
uses: actions/github-script@v7
with:
script: |
const validationErrors = process.env.VALIDATION_ERRORS || '';
const body = `❌ **Documentation validation failed**
${validationErrors || 'Please check the workflow logs for details about the validation errors.'}`;
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: body
})

14
.github/workflows/winget_updater.yml vendored Normal file
View File

@@ -0,0 +1,14 @@
name: Publish to WinGet
on:
release:
types: [ released ]
jobs:
publish:
runs-on: windows-latest
steps:
- uses: vedantmgoyal9/winget-releaser@main
with:
identifier: SoftFever.OrcaSlicer
version: ${{ github.event.release.tag_name }}
token: ${{ secrets.WINGET_TOKEN }}
installers-regex: '\.exe$'

7
.gitignore vendored
View File

@@ -36,6 +36,13 @@ src/OrcaSlicer-doc/
/deps/DL_CACHE/
/deps/DL_CACHE
**/.flatpak-builder/
*.no-debug.yml
resources/profiles/user/default
*.code-workspace
deps_src/build/
test.js
/.cache/
.clangd
internal_docs/
*.flatpak
/flatpak-repo/

View File

@@ -9,67 +9,43 @@ OrcaSlicer is an open-source 3D slicer application forked from Bambu Studio, bui
## Build Commands
### Building on Windows
**Always use this command to build the project when testing build issues on Windows.**
```bash
# Build everything
build_release_vs2022.bat
# Build with debug symbols
build_release_vs2022.bat debug
# Build only dependencies
build_release_vs2022.bat deps
# Build only slicer (after deps are built)
build_release_vs2022.bat slicer
cmake --build . --config %build_type% --target ALL_BUILD -- -m
```
### Building on macOS
**Always use this command to build the project when testing build issues on macOS.**
```bash
# Build everything (dependencies and slicer)
./build_release_macos.sh
# Build only dependencies
./build_release_macos.sh -d
# Build only slicer (after deps are built)
./build_release_macos.sh -s
# Use Ninja generator for faster builds
./build_release_macos.sh -x
# Build for specific architecture
./build_release_macos.sh -a arm64 # or x86_64 or universal
# Build for specific macOS version target
./build_release_macos.sh -t 11.3
cmake --build build/arm64 --config RelWithDebInfo --target all --
```
### Building on Linux
**Always use this command to build the project when testing build issues on Linux.**
```bash
# First time setup - install system dependencies
./build_linux.sh -u
cmake --build build/arm64 --config RelWithDebInfo --target all --
# Build dependencies and slicer
./build_linux.sh -dsi
# Build everything (alternative)
./build_linux.sh -dsi
# Individual options:
./build_linux.sh -d # dependencies only
./build_linux.sh -s # slicer only
./build_linux.sh -i # build AppImage
# Performance and debug options:
./build_linux.sh -j N # limit to N cores
./build_linux.sh -1 # single core build
./build_linux.sh -b # debug build
./build_linux.sh -c # clean build
./build_linux.sh -r # skip RAM/disk checks
./build_linux.sh -l # use Clang instead of GCC
```
### Build test:
**Always use this command to build the project when testing build issues on Windows.**
```bash
cmake --build . --config %build_type% --target ALL_BUILD -- -m
```
### Building on macOS
**Always use this command to build the project when testing build issues on macOS.**
```bash
cmake --build build/arm64 --config RelWithDebInfo --target all --
```
### Building on Linux
**Always use this command to build the project when testing build issues on Linux.**
```bash
cmake --build build --config RelWithDebInfo --target all --
```
### Build System
- Uses CMake with minimum version 3.13 (maximum 3.31.x on Windows)
@@ -107,9 +83,10 @@ cd build && ctest --output-on-failure
Run individual test suites:
```bash
# From build directory
./tests/libslic3r/libslic3r_tests
./tests/fff_print/fff_print_tests
./tests/sla_print/sla_print_tests
ctest --test-dir ./tests/libslic3r/libslic3r_tests
ctest --test-dir ./tests/fff_print/fff_print_tests
ctest --test-dir ./tests/sla_print/sla_print_tests
# and so on
```
## Architecture
@@ -254,4 +231,4 @@ Run individual test suites:
- **Regression testing** important due to algorithm complexity
- **Performance benchmarks** help catch performance regressions
- **Memory leak** detection important for long-running GUI application
- **Cross-platform** testing required before releases
- **Cross-platform** testing required before releases

View File

@@ -1,10 +1,20 @@
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "4.0")
set(CMAKE_POLICY_VERSION_MINIMUM 3.5 CACHE STRING "" FORCE)
endif()
cmake_minimum_required(VERSION 3.13)
# Verify that your CMake version is exactly 3.31.x series or lower on windows
if ( ((MSVC) OR (WIN32)) AND (${CMAKE_VERSION} VERSION_GREATER_EQUAL "4.0") )
message(FATAL_ERROR "Only cmake versions between 3.13.x and 3.31.x is supported on windows. Detected version: ${CMAKE_VERSION}")
# Verify that your CMake version is exactly 3.5 series or higher on windows
if ( (MSVC OR WIN32) AND (${CMAKE_VERSION} VERSION_LESS "3.5") )
message(FATAL_ERROR "CMake current version ${CMAKE_VERSION} is too old. Minimum required is 3.5.")
endif()
# The following line used to be in tests/CMakeLists.txt
# Having it there causes rebuilds of all targets on any CMakeLists.txt change under tests/
# It has no effect on how code is compiled or linked.
# It just lets you later do `set_property(TARGET foo PROPERTY FOLDER "bar")`
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
if (WIN32)
# Detect known CI environments
set(IS_CI FALSE)
@@ -55,6 +65,11 @@ endif ()
project(OrcaSlicer)
# Backward compatibility for old CMake versions
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_VERSION VERSION_LESS "3.25")
set(LINUX ON CACHE BOOL "" FORCE)
endif ()
include("version.inc")
include(GNUInstallDirs)
include(CMakeDependentOption)
@@ -67,8 +82,29 @@ if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type (default Release)" FORCE)
endif()
if (DEFINED BBL_RELEASE_TO_PUBLIC)
add_compile_definitions("BBL_RELEASE_TO_PUBLIC=${BBL_RELEASE_TO_PUBLIC}")
else ()
add_compile_definitions("BBL_RELEASE_TO_PUBLIC=$<CONFIG:Release>")
endif ()
find_package(Git)
if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
if(DEFINED ENV{git_commit_hash} AND NOT "$ENV{git_commit_hash}" STREQUAL "")
message(STATUS "Specified git commit hash: $ENV{git_commit_hash}")
if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
# Convert the given hash to short hash
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-parse --short "$ENV{git_commit_hash}"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
else()
# No .git directory (e.g., Flatpak sandbox) — truncate directly
string(SUBSTRING "$ENV{git_commit_hash}" 0 7 GIT_COMMIT_HASH)
endif()
add_definitions("-DGIT_COMMIT_HASH=\"${GIT_COMMIT_HASH}\"")
elseif(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
# Check current Git commit hash
execute_process(
COMMAND ${GIT_EXECUTABLE} log -1 --format=%h
@@ -80,31 +116,25 @@ if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
endif()
if(DEFINED ENV{SLIC3R_STATIC})
set(SLIC3R_STATIC_INITIAL $ENV{SLIC3R_STATIC})
set(SLIC3R_STATIC_INITIAL $ENV{SLIC3R_STATIC})
else()
if (MSVC OR MINGW OR APPLE)
set(SLIC3R_STATIC_INITIAL 1)
else()
set(SLIC3R_STATIC_INITIAL 0)
endif()
set(SLIC3R_STATIC_INITIAL 1)
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 "" CACHE PATH "Path to OpenVDB installation's find modules.")
set(SLIC3R_GTK "2" CACHE STRING "GTK version to use with wxWidgets on Linux")
set(SLIC3R_GTK "3" CACHE STRING "GTK version to use with wxWidgets on Linux")
set(IS_CROSS_COMPILE FALSE)
@@ -118,6 +148,10 @@ if (${COLORED_OUTPUT})
endif ()
if (APPLE)
list(LENGTH CMAKE_OSX_ARCHITECTURES _arch_len)
if (_arch_len GREATER 1)
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")
endif ()
set(CMAKE_FIND_FRAMEWORK LAST)
set(CMAKE_FIND_APPBUNDLE LAST)
list(FIND CMAKE_OSX_ARCHITECTURES ${CMAKE_SYSTEM_PROCESSOR} _arch_idx)
@@ -127,7 +161,7 @@ if (APPLE)
if (CMAKE_MACOSX_BUNDLE)
set(CMAKE_INSTALL_RPATH @executable_path/../Frameworks)
endif()
SET(CMAKE_XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "com.softfever3d.orca-slicer")
SET(CMAKE_XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "com.orcaslicer.OrcaSlicer")
message(STATUS "Orca: IS_CROSS_COMPILE: ${IS_CROSS_COMPILE}")
endif ()
@@ -137,9 +171,13 @@ option(SLIC3R_BUILD_SANDBOXES "Build development sandboxes" OFF)
option(BUILD_TESTS "Build unit tests" OFF)
option(ORCA_TOOLS "Build Orca tools" OFF)
if (FLATPAK)
set(SLIC3R_FHS ON CACHE BOOL "" FORCE)
set(SLIC3R_DESKTOP_INTEGRATION OFF CACHE BOOL "" FORCE)
endif ()
if (IS_CROSS_COMPILE)
message("Detected cross compilation setup. Tests and encoding checks will be forcedly disabled!")
set(SLIC3R_PERL_XS OFF CACHE BOOL "" FORCE)
set(BUILD_TESTS OFF CACHE BOOL "" FORCE)
endif ()
@@ -160,6 +198,13 @@ if(SLIC3R_DESKTOP_INTEGRATION)
add_definitions(-DSLIC3R_DESKTOP_INTEGRATION)
endif ()
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
message(STATUS "Automatically setting CMAKE_INSTALL_PREFIX")
set_property(CACHE CMAKE_INSTALL_PREFIX PROPERTY VALUE "${CMAKE_BINARY_DIR}/OrcaSlicer")
endif()
message(STATUS "CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}")
if (MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL Clang)
set(IS_CLANG_CL TRUE)
@@ -205,24 +250,61 @@ if (NOT MSVC)
add_compile_options(-fsigned-char)
endif ()
# Display and check CMAKE_PREFIX_PATH
message(STATUS "SLIC3R_STATIC: ${SLIC3R_STATIC}")
if (NOT "${CMAKE_PREFIX_PATH}" STREQUAL "")
message(STATUS "CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH} (from cache or command line)")
set(PREFIX_PATH_CHECK ${CMAKE_PREFIX_PATH})
elseif (NOT "$ENV{CMAKE_PREFIX_PATH}" STREQUAL "")
message(STATUS "CMAKE_PREFIX_PATH: $ENV{CMAKE_PREFIX_PATH} (from environment)")
set(PREFIX_PATH_CHECK $ENV{CMAKE_PREFIX_PATH})
if ("${DEP_BUILD_DIR}" STREQUAL "")
get_filename_component(BIN_DIR_NAME ${CMAKE_BINARY_DIR} NAME)
if (APPLE AND BIN_DIR_NAME STREQUAL "${CMAKE_OSX_ARCHITECTURES}")
file(RELATIVE_PATH BIN_DIR_NAME ${CMAKE_BINARY_DIR}/../.. ${CMAKE_BINARY_DIR})
endif ()
set(DEP_BUILD_DIR "${CMAKE_SOURCE_DIR}/deps/${BIN_DIR_NAME}" CACHE PATH "Path to dependencies build directory" FORCE)
message(STATUS "DEP_BUILD_DIR: ${DEP_BUILD_DIR} (generated automatically and saved to cache)")
set(AUTOGENERATED_DEP_BUILD_DIR ${DEP_BUILD_DIR} CACHE PATH "Provides the last autogenerated DEP_BUILD_DIR" FORCE)
else ()
message(STATUS "CMAKE_PREFIX_PATH: (default)")
message(STATUS "DEP_BUILD_DIR: ${DEP_BUILD_DIR} (from cache or command line)")
endif ()
if ("${CMAKE_PREFIX_PATH}" STREQUAL "" OR "${CMAKE_PREFIX_PATH}" STREQUAL "${AUTOGENERATED_PREFIX_PATH}")
if (DEFINED AUTOGENERATED_DEP_BUILD_DIR AND NOT "${DEP_BUILD_DIR}" STREQUAL "${AUTOGENERATED_DEP_BUILD_DIR}")
message(STATUS "CMAKE_PREFIX_PATH is being re-generated due to DEP_BUILD_DIR being manually updated")
set(REGEN_DESTDIR TRUE)
unset(AUTOGENERATED_DEP_BUILD_DIR CACHE)
endif ()
else ()
unset(AUTOGENERATED_PREFIX_PATH CACHE)
endif ()
# Display and check CMAKE_PREFIX_PATH
if ("${CMAKE_PREFIX_PATH}" STREQUAL "" OR REGEN_DESTDIR)
set(CMAKE_PREFIX_PATH "${DEP_BUILD_DIR}/OrcaSlicer_dep/usr/local" CACHE PATH "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} CACHE STRING "Provides the last autogenerated CMAKE_PREFIX_PATH" FORCE)
unset(REGEN_DESTDIR CACHE)
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.
if (NOT "$ENV{CMAKE_PREFIX_PATH}" STREQUAL "")
message(STATUS "CMAKE_PREFIX_PATH: $ENV{CMAKE_PREFIX_PATH} (from environment)")
list(APPEND PREFIX_PATH_CHECK $ENV{CMAKE_PREFIX_PATH})
endif ()
# Check all directories in CMAKE_PREFIX_PATH variables
foreach (DIR ${PREFIX_PATH_CHECK})
if (NOT EXISTS "${DIR}")
message(WARNING "CMAKE_PREFIX_PATH element doesn't exist: ${DIR}")
endif ()
endforeach ()
if (APPLE)
set(CMAKE_MACOSX_RPATH ON CACHE BOOL "")
set(CMAKE_MACOSX_BUNDLE ON CACHE BOOL "")
endif ()
if (APPLE AND CMAKE_MACOSX_RPATH AND "${CMAKE_INSTALL_RPATH}" STREQUAL "")
set(CMAKE_INSTALL_RPATH ${CMAKE_PREFIX_PATH})
endif ()
# Add our own cmake module path.
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/modules/)
message(STATUS "PROJECT_SOURCE_DIR: ${PROJECT_SOURCE_DIR}")
@@ -263,7 +345,11 @@ if(WIN32)
endif()
else()
# Try to use the default Windows 10 SDK path.
set(WIN10SDK_INCLUDE_PATH "$ENV{WindowsSdkDir}/Include/$ENV{WindowsSDKVersion}")
if (DEFINED ENV{WindowsSdkDir} AND DEFINED ENV{WindowsSDKVersion})
set(WIN10SDK_INCLUDE_PATH "$ENV{WindowsSdkDir}/Include/$ENV{WindowsSDKVersion}")
else ()
set(WIN10SDK_INCLUDE_PATH "C:/Program Files (x86)/Windows Kits/10/Include/10.0.26100.0")
endif ()
if (NOT EXISTS "${WIN10SDK_INCLUDE_PATH}/winrt/windows.graphics.printing3d.h")
message("${WIN10SDK_INCLUDE_PATH}/winrt/windows.graphics.printing3d.h was not found")
message("STL fixing by the Netfabb service will not be compiled")
@@ -348,7 +434,11 @@ if (NOT MSVC AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMP
endif()
if((${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang") AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 15)
add_compile_options(-Wno-error=enum-constexpr-conversion)
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag(-Wno-error=enum-constexpr-conversion HAS_WNO_ERROR_ENUM_CONSTEXPR_CONV)
if(HAS_WNO_ERROR_ENUM_CONSTEXPR_CONV)
add_compile_options(-Wno-error=enum-constexpr-conversion)
endif()
endif()
#GCC generates loads of -Wunknown-pragmas when compiling igl. The fix is not easy due to a bug in gcc, see
@@ -363,9 +453,12 @@ if (NOT MSVC AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMP
add_compile_options(-Wno-unknown-pragmas)
endif()
# Bit of a hack for flatpak building: compress the debug info with zstd to save space in CI
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 13.0)
add_compile_options(-gz=zstd)
# Compress the debug info with zstd to save space in Flatpak CI builds
if(FLATPAK)
if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 13.0) OR
("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 15.0))
add_compile_options(-gz=zstd)
endif()
endif()
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 14)
@@ -399,7 +492,8 @@ if (APPLE)
endif ()
if(MSVC)
# 添加编译选项,忽略警告 C4305 (格式转换截断)
# Ignore truncating casts in initializers & constructors
# https://learn.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4305
add_compile_options(/wd4305)
endif()
@@ -487,6 +581,7 @@ endif()
if(POLICY CMP0167)
cmake_policy(SET CMP0167 NEW)
endif()
set(Boost_NO_SYSTEM_PATHS TRUE)
find_package(Boost 1.83.0 REQUIRED COMPONENTS system filesystem thread log log_setup locale regex chrono atomic date_time iostreams program_options nowide)
add_library(boost_libs INTERFACE)
@@ -604,6 +699,10 @@ find_package(PNG REQUIRED)
set(OpenGL_GL_PREFERENCE "LEGACY")
find_package(OpenGL REQUIRED)
if(APPLE AND CMAKE_VERSION VERSION_GREATER_EQUAL "4.0")
set(OPENGL_LIBRARIES "-framework OpenGL" CACHE STRING "OpenGL framework" FORCE)
endif()
set(GLEW_ROOT "${CMAKE_PREFIX_PATH}")
message("GLEW_ROOT: ${GLEW_ROOT}")
# Find glew or use bundled version
@@ -638,7 +737,7 @@ add_custom_target(gettext_make_pot
)
add_custom_target(gettext_merge_po_with_pot
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMENT "Merge localization po with new generted pot file"
COMMENT "Merge localization po with new generated pot file"
)
file(GLOB BBL_L10N_PO_FILES "${BBL_L18N_DIR}/*/OrcaSlicer*.po")
foreach(po_file ${BBL_L10N_PO_FILES})
@@ -803,13 +902,6 @@ set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT O
add_dependencies(gettext_make_pot hintsToPot)
# Perl bindings, currently only used for the unit / integration tests of libslic3r.
# Also runs the unit / integration tests.
#FIXME Port the tests into C++ to finally get rid of the Perl!
if (SLIC3R_PERL_XS)
add_subdirectory(xs)
endif ()
if(SLIC3R_BUILD_SANDBOXES)
add_subdirectory(sandboxes)
endif()
@@ -859,7 +951,7 @@ set (CPACK_PACKAGE_VERSION_MINOR "${ORCA_VERSION_MINOR}")
set (CPACK_PACKAGE_VERSION_PATCH "${ORCA_VERSION_PATCH}")
set (CPACK_PACKAGE_FILE_NAME "OrcaSlicer_Windows_Installer_V${SoftFever_VERSION}")
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Orca Slicer is an open source slicer for FDM printers")
set (CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/SoftFever/OrcaSlicer")
set (CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/OrcaSlicer/OrcaSlicer")
set (CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME})
set (CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/resources/images\\\\OrcaSlicer.ico")
set (CPACK_NSIS_MUI_ICON "${CPACK_PACKAGE_ICON}")

View File

@@ -4,9 +4,9 @@
<img alt="OrcaSlicer logo" src="resources/images/OrcaSlicer.png" width="15%" height="15%">
</picture>
<a href="https://trendshift.io/repositories/952" target="_blank"><img src="https://trendshift.io/api/badge/repositories/952" alt="SoftFever%2FOrcaSlicer | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
<a href="https://trendshift.io/repositories/15552" target="_blank"><img src="https://trendshift.io/api/badge/repositories/15552" alt="OrcaSlicer%2FOrcaSlicer | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
[![GitHub Repo stars](https://img.shields.io/github/stars/SoftFever/OrcaSlicer)](https://github.com/SoftFever/OrcaSlicer/stargazers) [![Build all](https://github.com/SoftFever/OrcaSlicer/actions/workflows/build_all.yml/badge.svg?branch=main)](https://github.com/SoftFever/OrcaSlicer/actions/workflows/build_all.yml)
[![GitHub Repo stars](https://img.shields.io/github/stars/OrcaSlicer/OrcaSlicer)](https://github.com/OrcaSlicer/OrcaSlicer/stargazers) [![Build all](https://github.com/OrcaSlicer/OrcaSlicer/actions/workflows/build_all.yml/badge.svg?branch=main)](https://github.com/OrcaSlicer/OrcaSlicer/actions/workflows/build_all.yml)
OrcaSlicer: an open source Next-Gen Slicing Software for Precision 3D Prints.
Optimize your prints with ultra-fast slicing, intelligent support generation, and seamless printer compatibility—engineered for perfection.
@@ -18,7 +18,7 @@ Optimize your prints with ultra-fast slicing, intelligent support generation, an
<a href="https://www.orcaslicer.com/" style="font-size:2em;">OrcaSlicer.com</a>
#### Github Repository:
<a href="https://github.com/SoftFever/OrcaSlicer"><img src="https://img.shields.io/badge/OrcaSlicer-181717?style=flat&logo=github&logoColor=white" width="200" alt="GitHub Logo"/> </a>
<a href="https://github.com/OrcaSlicer/OrcaSlicer"><img src="https://img.shields.io/badge/OrcaSlicer-181717?style=flat&logo=github&logoColor=white" width="200" alt="GitHub Logo"/> </a>
#### Follow us:
<a href="https://twitter.com/real_OrcaSlicer"><img src="https://img.shields.io/badge/real__OrcaSlicer-000000?style=flat&logo=x&logoColor=white" width="200" alt="X Logo"/> </a>
@@ -29,10 +29,13 @@ Optimize your prints with ultra-fast slicing, intelligent support generation, an
<table border="2" style="border-color: #ffa500; background-color:rgb(232, 220, 180); color: #856404;">
<tr>
<td>
<strong>⚠️ CAUTION:</strong><br><br>
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>
- <a href="https://safebrowsing.google.com/safebrowsing/report_phish/">Google Safe Browsing</a><br>
- <a href="https://www.microsoft.com/en-us/wdsi/support/report-unsafe-site">Microsoft Security Intelligence</a><br>
- <a href="https://ipthreat.net/tools/reportphishing">IPThreat</a>
</td>
</tr>
</table>
@@ -41,64 +44,62 @@ If you come across any of these in search results, please <a href="https://safeb
# Main features
- **[Advanced Calibration Tools](https://github.com/SoftFever/OrcaSlicer/wiki/Calibration)**
- **[Advanced Calibration Tools](https://www.orcaslicer.com/wiki/Calibration)**
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.
- **[Open-Source](https://github.com/SoftFever/OrcaSlicer) & [Community Driven](https://discord.gg/P4VE9UY9gJ)**
- **[Open-Source](https://github.com/OrcaSlicer/OrcaSlicer) & [Community Driven](https://discord.gg/P4VE9UY9gJ)**
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:*
- [MicrosoftEdgeWebView2RuntimeInstallerX64](https://github.com/SoftFever/OrcaSlicer/releases/download/v1.0.10-sf2/MicrosoftEdgeWebView2RuntimeInstallerX64.exe)
- [MicrosoftEdgeWebView2RuntimeInstallerX64](https://github.com/OrcaSlicer/OrcaSlicer/releases/download/v1.0.10-sf2/MicrosoftEdgeWebView2RuntimeInstallerX64.exe)
- [Details of this runtime](https://aka.ms/webview2)
- [Alternative Download Link Hosted by Microsoft](https://go.microsoft.com/fwlink/p/?LinkId=2124703)
- [vcredist2019_x64](https://github.com/SoftFever/OrcaSlicer/releases/download/v1.0.10-sf2/vcredist2019_x64.exe)
- [vcredist2019_x64](https://github.com/OrcaSlicer/OrcaSlicer/releases/download/v1.0.10-sf2/vcredist2019_x64.exe)
- [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`
</details>
@@ -143,7 +144,7 @@ winget install --id=SoftFever.OrcaSlicer -e
# How to Compile
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.
@@ -193,20 +194,16 @@ Thank you! :)
<a href="https://ko-fi.com/G2G5IP3CP"><img src="https://img.shields.io/badge/Support_me_on_Ko--fi-FF5E5B?style=flat&logo=ko-fi&logoColor=white" height="50"></a>
<a href="https://paypal.me/softfever3d"><img src="https://img.shields.io/badge/PayPal-003087?style=flat&logo=paypal&logoColor=fff" height="50"></a>
## Some background
## Some Background
OrcaSlicer was originally forked from Bambu Studio, 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.

View File

@@ -5,6 +5,7 @@
# Based on the GitHub Actions workflow in .github/workflows/build_all.yml
set -e
SECONDS=0
# Colors for output
RED='\033[0;31m'
@@ -21,6 +22,8 @@ INSTALL_RUNTIME=false
JOBS=$(nproc)
FORCE_CLEAN=false
ENABLE_CCACHE=false
DISABLE_ROFILES_FUSE=false
NO_DEBUGINFO=true
CACHE_DIR=".flatpak-builder"
# Help function
@@ -36,6 +39,8 @@ show_help() {
echo " -c, --cleanup Clean build directory before building"
echo " -f, --force-clean Force clean build (disables caching)"
echo " --ccache Enable ccache for faster rebuilds (requires ccache in SDK)"
echo " --disable-rofiles-fuse Disable rofiles-fuse (workaround for FUSE issues)"
echo " --with-debuginfo Include debug info (slower builds, needed for Flathub)"
echo " --cache-dir DIR Flatpak builder cache directory [default: $CACHE_DIR]"
echo " -i, --install-runtime Install required Flatpak runtime and SDK"
echo " -h, --help Show this help message"
@@ -75,6 +80,14 @@ while [[ $# -gt 0 ]]; do
ENABLE_CCACHE=true
shift
;;
--disable-rofiles-fuse)
DISABLE_ROFILES_FUSE=true
shift
;;
--with-debuginfo)
NO_DEBUGINFO=false
shift
;;
--cache-dir)
CACHE_DIR="$2"
shift 2
@@ -186,22 +199,22 @@ echo -e "${GREEN}All required dependencies found${NC}"
# Install runtime and SDK if requested
if [[ "$INSTALL_RUNTIME" == true ]]; then
echo -e "${YELLOW}Installing GNOME runtime and SDK...${NC}"
flatpak install --user -y flathub org.gnome.Platform//47
flatpak install --user -y flathub org.gnome.Sdk//47
flatpak install --user -y flathub org.gnome.Platform//49
flatpak install --user -y flathub org.gnome.Sdk//49
fi
# Check if required runtime is available
if ! flatpak info --user org.gnome.Platform//47 &> /dev/null; then
echo -e "${RED}Error: GNOME Platform 47 runtime is not installed.${NC}"
if ! flatpak info --user org.gnome.Platform//49 &> /dev/null; then
echo -e "${RED}Error: GNOME Platform 49 runtime is not installed.${NC}"
echo "Run with -i flag to install it automatically, or install manually:"
echo "flatpak install --user flathub org.gnome.Platform//47"
echo "flatpak install --user flathub org.gnome.Platform//49"
exit 1
fi
if ! flatpak info --user org.gnome.Sdk//47 &> /dev/null; then
echo -e "${RED}Error: GNOME SDK 47 is not installed.${NC}"
if ! flatpak info --user org.gnome.Sdk//49 &> /dev/null; then
echo -e "${RED}Error: GNOME SDK 49 is not installed.${NC}"
echo "Run with -i flag to install it automatically, or install manually:"
echo "flatpak install --user flathub org.gnome.Sdk//47"
echo "flatpak install --user flathub org.gnome.Sdk//49"
exit 1
fi
@@ -242,8 +255,8 @@ mkdir -p "$BUILD_DIR"
rm -rf "$BUILD_DIR/build-dir"
# Check if flatpak manifest exists
if [[ ! -f "./scripts/flatpak/io.github.softfever.OrcaSlicer.yml" ]]; then
echo -e "${RED}Error: Flatpak manifest not found at scripts/flatpak/io.github.softfever.OrcaSlicer.yml${NC}"
if [[ ! -f "./scripts/flatpak/com.orcaslicer.OrcaSlicer.yml" ]]; then
echo -e "${RED}Error: Flatpak manifest not found at scripts/flatpak/com.orcaslicer.OrcaSlicer.yml${NC}"
exit 1
fi
@@ -279,6 +292,7 @@ BUILDER_ARGS=(
--verbose
--state-dir="$CACHE_DIR"
--jobs="$JOBS"
--mirror-screenshots-url=https://dl.flathub.org/media/
)
# Add force-clean only if explicitly requested (disables caching)
@@ -295,21 +309,40 @@ if [[ "$ENABLE_CCACHE" == true ]]; then
echo -e "${GREEN}Using ccache for compiler caching${NC}"
fi
# Disable rofiles-fuse if requested (workaround for FUSE issues)
if [[ "$DISABLE_ROFILES_FUSE" == true ]]; then
BUILDER_ARGS+=(--disable-rofiles-fuse)
echo -e "${YELLOW}rofiles-fuse disabled${NC}"
fi
# Use a temp manifest with no-debuginfo if requested
MANIFEST="scripts/flatpak/com.orcaslicer.OrcaSlicer.yml"
if [[ "$NO_DEBUGINFO" == true ]]; then
MANIFEST="scripts/flatpak/com.orcaslicer.OrcaSlicer.no-debug.yml"
sed '/^build-options:/a\ no-debuginfo: true\n strip: true' \
scripts/flatpak/com.orcaslicer.OrcaSlicer.yml > "$MANIFEST"
echo -e "${YELLOW}Debug info disabled (using temp manifest)${NC}"
fi
if ! flatpak-builder \
"${BUILDER_ARGS[@]}" \
"$BUILD_DIR/build-dir" \
scripts/flatpak/io.github.softfever.OrcaSlicer.yml; then
"$MANIFEST"; then
echo -e "${RED}Error: flatpak-builder failed${NC}"
echo -e "${YELLOW}Check the build log above for details${NC}"
rm -f "scripts/flatpak/com.orcaslicer.OrcaSlicer.no-debug.yml"
exit 1
fi
# Clean up temp manifest
rm -f "scripts/flatpak/com.orcaslicer.OrcaSlicer.no-debug.yml"
# Create bundle
echo -e "${YELLOW}Creating Flatpak bundle...${NC}"
if ! flatpak build-bundle \
"$BUILD_DIR/repo" \
"$BUNDLE_NAME" \
io.github.softfever.OrcaSlicer \
com.orcaslicer.OrcaSlicer \
--arch="$ARCH"; then
echo -e "${RED}Error: Failed to create Flatpak bundle${NC}"
exit 1
@@ -328,10 +361,10 @@ echo -e "${BLUE}To install the Flatpak:${NC}"
echo -e "flatpak install --user $BUNDLE_NAME"
echo ""
echo -e "${BLUE}To run OrcaSlicer:${NC}"
echo -e "flatpak run io.github.softfever.OrcaSlicer"
echo -e "flatpak run com.orcaslicer.OrcaSlicer"
echo ""
echo -e "${BLUE}To uninstall:${NC}"
echo -e "flatpak uninstall --user io.github.softfever.OrcaSlicer"
echo -e "flatpak uninstall --user com.orcaslicer.OrcaSlicer"
echo ""
if [[ "$FORCE_CLEAN" != true ]]; then
echo -e "${BLUE}Cache Management:${NC}"
@@ -339,3 +372,6 @@ if [[ "$FORCE_CLEAN" != true ]]; then
echo -e "• To force a clean build: $0 -f"
echo -e "• To clean cache manually: rm -rf $CACHE_DIR"
fi
elapsed=$SECONDS
printf "\nBuild completed in %dh %dm %ds\n" $((elapsed/3600)) $((elapsed%3600/60)) $((elapsed%60))

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -e # Exit immediately if a command exits with a non-zero status.
SECONDS=0
SCRIPT_NAME=$(basename "$0")
SCRIPT_PATH=$(dirname "$(readlink -f "${0}")")
@@ -7,31 +8,34 @@ SCRIPT_PATH=$(dirname "$(readlink -f "${0}")")
pushd "${SCRIPT_PATH}" > /dev/null
function usage() {
echo "Usage: ./${SCRIPT_NAME} [-1][-b][-c][-d][-h][-i][-j N][-p][-r][-s][-t][-u][-l][-L]"
echo "Usage: ./${SCRIPT_NAME} [-1][-b][-c][-d][-D][-e][-h][-i][-j N][-p][-r][-s][-t][-u][-l][-L]"
echo " -1: limit builds to one core (where possible)"
echo " -j N: limit builds to N cores (where possible)"
echo " -b: build in debug mode"
echo " -b: build in Debug mode"
echo " -c: force a clean build"
echo " -C: enable ANSI-colored compile output (GNU/Clang only)"
echo " -d: download and build dependencies in ./deps/ (build prerequisite)"
echo " -D: dry run"
echo " -e: build in RelWithDebInfo mode"
echo " -h: prints this help text"
echo " -i: build the Orca Slicer AppImage (optional)"
echo " -p: boost ccache hit rate by disabling precompiled headers (default: ON)"
echo " -r: skip RAM and disk checks (low RAM compiling)"
echo " -s: build the Orca Slicer (optional)"
echo " -t: build tests (optional)"
echo " -t: build tests (optional), requires -s flag"
echo " -u: install system dependencies (asks for sudo password; build prerequisite)"
echo " -l: use Clang instead of GCC (default: GCC)"
echo " -L: use ld.lld as linker (if available)"
echo "For a first use, you want to './${SCRIPT_NAME} -u'"
echo " and then './${SCRIPT_NAME} -dsi'"
echo "To build with tests: './${SCRIPT_NAME} -st' or './${SCRIPT_NAME} -dst'"
}
SLIC3R_PRECOMPILED_HEADERS="ON"
unset name
while getopts ":1j:bcCdhiprstulL" opt ; do
BUILD_DIR=build
BUILD_CONFIG=Release
while getopts ":1j:bcCdDehiprstulL" opt ; do
case ${opt} in
1 )
export CMAKE_BUILD_PARALLEL_LEVEL=1
@@ -40,7 +44,8 @@ while getopts ":1j:bcCdhiprstulL" opt ; do
export CMAKE_BUILD_PARALLEL_LEVEL=$OPTARG
;;
b )
BUILD_DEBUG="1"
BUILD_DIR=build-dbg
BUILD_CONFIG=Debug
;;
c )
CLEAN_BUILD=1
@@ -51,6 +56,13 @@ while getopts ":1j:bcCdhiprstulL" opt ; do
d )
BUILD_DEPS="1"
;;
D )
DRY_RUN="1"
;;
e )
BUILD_DIR=build-dbginfo
BUILD_CONFIG=RelWithDebInfo
;;
h ) usage
exit 1
;;
@@ -112,6 +124,21 @@ function check_available_memory_and_disk() {
fi
}
function print_and_run() {
cmd=()
# Remove empty arguments, leading and trailing spaces
for item in "$@" ; do
if [[ -n $item ]]; then
cmd+=( "$(echo "${item}" | xargs)" )
fi
done
echo "${cmd[@]}"
if [[ -z "${DRY_RUN}" ]] ; then
"${cmd[@]}"
fi
}
# cmake 4.x compatibility workaround
export CMAKE_POLICY_VERSION_MINIMUM=3.5
@@ -125,6 +152,8 @@ elif [[ "${DISTRIBUTION_LIKE}" == *"debian"* ]] || [[ "${DISTRIBUTION_LIKE}" ==
DISTRIBUTION="debian"
elif [[ "${DISTRIBUTION_LIKE}" == *"arch"* ]] ; then
DISTRIBUTION="arch"
elif [[ "${DISTRIBUTION_LIKE}" == *"suse"* ]] ; then
DISTRIBUTION="suse"
fi
if [ ! -f "./scripts/linux.d/${DISTRIBUTION}" ] ; then
@@ -137,7 +166,7 @@ else
source "./scripts/linux.d/${DISTRIBUTION}"
fi
echo "FOUND_GTK3=${FOUND_GTK3}"
echo "FOUND_GTK3_DEV=${FOUND_GTK3_DEV}"
if [[ -z "${FOUND_GTK3_DEV}" ]] ; then
echo "Error, you must install the dependencies before."
echo "Use option -u with sudo"
@@ -176,51 +205,27 @@ fi
if [[ -n "${BUILD_DEPS}" ]] ; then
echo "Configuring dependencies..."
read -r -a BUILD_ARGS <<< "${DEPS_EXTRA_BUILD_ARGS}"
BUILD_ARGS+=(-DDEP_WX_GTK3=ON)
if [[ -n "${CLEAN_BUILD}" ]]
then
rm -fr deps/build
print_and_run rm -fr deps/$BUILD_DIR
fi
mkdir -p deps/build
if [[ -n "${BUILD_DEBUG}" ]] ; then
# build deps with debug and release else cmake will not find required sources
mkdir -p deps/build/release
set -x
cmake -S deps -B deps/build/release "${CMAKE_C_CXX_COMPILER_CLANG[@]}" "${CMAKE_LLD_LINKER_ARGS[@]}" -G Ninja \
-DSLIC3R_PCH="${SLIC3R_PRECOMPILED_HEADERS}" \
-DDESTDIR="${SCRIPT_PATH}/deps/build/destdir" \
-DDEP_DOWNLOAD_DIR="${SCRIPT_PATH}/deps/DL_CACHE" \
"${COLORED_OUTPUT}" \
"${BUILD_ARGS[@]}"
set +x
cmake --build deps/build/release
BUILD_ARGS+=(-DCMAKE_BUILD_TYPE=Debug)
mkdir -p deps/$BUILD_DIR
if [[ $BUILD_CONFIG != Release ]] ; then
BUILD_ARGS+=(-DCMAKE_BUILD_TYPE="${BUILD_CONFIG}")
fi
set -x
cmake -S deps -B deps/build "${CMAKE_C_CXX_COMPILER_CLANG[@]}" "${CMAKE_LLD_LINKER_ARGS[@]}" -G Ninja \
-DSLIC3R_PCH="${SLIC3R_PRECOMPILED_HEADERS}" \
-DDESTDIR="${SCRIPT_PATH}/deps/build/destdir" \
-DDEP_DOWNLOAD_DIR="${SCRIPT_PATH}/deps/DL_CACHE" \
"${COLORED_OUTPUT}" \
"${BUILD_ARGS[@]}"
set +x
cmake --build deps/build
print_and_run cmake -S deps -B deps/$BUILD_DIR "${CMAKE_C_CXX_COMPILER_CLANG[@]}" "${CMAKE_LLD_LINKER_ARGS[@]}" -G Ninja "${COLORED_OUTPUT}" "${BUILD_ARGS[@]}"
print_and_run cmake --build deps/$BUILD_DIR
fi
if [[ -n "${BUILD_ORCA}" ]] ; then
if [[ -n "${BUILD_ORCA}" ]] || [[ -n "${BUILD_TESTS}" ]] ; then
echo "Configuring OrcaSlicer..."
if [[ -n "${CLEAN_BUILD}" ]] ; then
rm -fr build
print_and_run rm -fr $BUILD_DIR
fi
read -r -a BUILD_ARGS <<< "${ORCA_EXTRA_BUILD_ARGS}"
if [[ -n "${FOUND_GTK3_DEV}" ]] ; then
BUILD_ARGS+=(-DSLIC3R_GTK=3)
fi
if [[ -n "${BUILD_DEBUG}" ]] ; then
BUILD_ARGS+=(-DCMAKE_BUILD_TYPE=Debug -DBBL_INTERNAL_TESTING=1)
else
BUILD_ARGS+=(-DBBL_RELEASE_TO_PUBLIC=1 -DBBL_INTERNAL_TESTING=0)
if [[ $BUILD_CONFIG != Release ]] ; then
BUILD_ARGS+=(-DCMAKE_BUILD_TYPE="${BUILD_CONFIG}")
fi
if [[ -n "${BUILD_TESTS}" ]] ; then
BUILD_ARGS+=(-DBUILD_TESTS=ON)
@@ -229,47 +234,42 @@ if [[ -n "${BUILD_ORCA}" ]] ; then
BUILD_ARGS+=(-DORCA_UPDATER_SIG_KEY="${ORCA_UPDATER_SIG_KEY}")
fi
echo "Configuring OrcaSlicer..."
set -x
cmake -S . -B build "${CMAKE_C_CXX_COMPILER_CLANG[@]}" "${CMAKE_LLD_LINKER_ARGS[@]}" -G "Ninja Multi-Config" \
-DSLIC3R_PCH="${SLIC3R_PRECOMPILED_HEADERS}" \
-DCMAKE_PREFIX_PATH="${SCRIPT_PATH}/deps/build/destdir/usr/local" \
-DSLIC3R_STATIC=1 \
-DORCA_TOOLS=ON \
"${COLORED_OUTPUT}" \
"${BUILD_ARGS[@]}"
set +x
print_and_run cmake -S . -B $BUILD_DIR "${CMAKE_C_CXX_COMPILER_CLANG[@]}" "${CMAKE_LLD_LINKER_ARGS[@]}" -G "Ninja Multi-Config" \
-DSLIC3R_PCH=${SLIC3R_PRECOMPILED_HEADERS} \
-DORCA_TOOLS=ON \
"${COLORED_OUTPUT}" \
"${BUILD_ARGS[@]}"
echo "done"
echo "Building OrcaSlicer ..."
if [[ -n "${BUILD_DEBUG}" ]] ; then
cmake --build build --config Debug --target OrcaSlicer
else
cmake --build build --config Release --target OrcaSlicer
if [[ -n "${BUILD_ORCA}" ]]; then
echo "Building OrcaSlicer ..."
print_and_run cmake --build $BUILD_DIR --config "${BUILD_CONFIG}" --target OrcaSlicer
echo "Building OrcaSlicer_profile_validator .."
print_and_run cmake --build $BUILD_DIR --config "${BUILD_CONFIG}" --target OrcaSlicer_profile_validator
./scripts/run_gettext.sh
fi
echo "Building OrcaSlicer_profile_validator .."
if [[ -n "${BUILD_DEBUG}" ]] ; then
cmake --build build --config Debug --target OrcaSlicer_profile_validator
else
cmake --build build --config Release --target OrcaSlicer_profile_validator
if [[ -n "${BUILD_TESTS}" ]] ; then
echo "Building tests ..."
print_and_run cmake --build ${BUILD_DIR} --config "${BUILD_CONFIG}" --target tests/all
fi
./scripts/run_gettext.sh
echo "done"
fi
if [[ -n "${BUILD_IMAGE}" || -n "${BUILD_ORCA}" ]] ; then
pushd build > /dev/null
echo "[9/9] Generating Linux app..."
pushd $BUILD_DIR > /dev/null
build_linux_image="./src/build_linux_image.sh"
if [[ -e ${build_linux_image} ]] ; then
extra_script_args=""
if [[ -n "${BUILD_IMAGE}" ]] ; then
extra_script_args="-i"
fi
${build_linux_image} ${extra_script_args}
print_and_run ${build_linux_image} ${extra_script_args} -R "${BUILD_CONFIG}"
echo "done"
fi
popd > /dev/null # build
fi
elapsed=$SECONDS
printf "\nBuild completed in %dh %dm %ds\n" $((elapsed/3600)) $((elapsed%3600/60)) $((elapsed%60))
popd > /dev/null # ${SCRIPT_PATH}

View File

@@ -31,8 +31,8 @@ if "%1"=="slicer" (
)
echo "building deps.."
echo cmake ../ -G "Visual Studio 16 2019" -A x64 -DDESTDIR="%CD%/OrcaSlicer_dep" -DCMAKE_BUILD_TYPE=%build_type% -DDEP_DEBUG=%debug% -DORCA_INCLUDE_DEBUG_INFO=%debuginfo%
cmake ../ -G "Visual Studio 16 2019" -A x64 -DDESTDIR="%CD%/OrcaSlicer_dep" -DCMAKE_BUILD_TYPE=%build_type% -DDEP_DEBUG=%debug% -DORCA_INCLUDE_DEBUG_INFO=%debuginfo%
echo cmake ../ -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=%build_type%
cmake ../ -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=%build_type%
cmake --build . --config %build_type% --target deps -- -m
if "%1"=="deps" exit /b 0
@@ -43,8 +43,8 @@ cd %WP%
mkdir %build_dir%
cd %build_dir%
echo cmake .. -G "Visual Studio 16 2019" -A x64 -DBBL_RELEASE_TO_PUBLIC=1 -DCMAKE_PREFIX_PATH="%DEPS%/usr/local" -DCMAKE_INSTALL_PREFIX="./OrcaSlicer" -DCMAKE_BUILD_TYPE=%build_type%
cmake .. -G "Visual Studio 16 2019" -A x64 -DBBL_RELEASE_TO_PUBLIC=1 %SIG_FLAG% -DCMAKE_PREFIX_PATH="%DEPS%/usr/local" -DCMAKE_INSTALL_PREFIX="./OrcaSlicer" -DCMAKE_BUILD_TYPE=%build_type% -DWIN10SDK_PATH="C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0"
echo cmake .. -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=%build_type%
cmake .. -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=%build_type% %SIG_FLAG%
cmake --build . --config %build_type% --target ALL_BUILD -- -m
cd ..
call scripts/run_gettext.bat

View File

@@ -2,8 +2,9 @@
set -e
set -o pipefail
SECONDS=0
while getopts ":dpa:snt:xbc:1h" opt; do
while getopts ":dpa:snt:xbc:i:1Tuh" opt; do
case "${opt}" in
d )
export BUILD_TARGET="deps"
@@ -34,19 +35,31 @@ while getopts ":dpa:snt:xbc:1h" opt; do
c )
export BUILD_CONFIG="$OPTARG"
;;
i )
export CMAKE_IGNORE_PREFIX_PATH="${CMAKE_IGNORE_PREFIX_PATH:+$CMAKE_IGNORE_PREFIX_PATH;}$OPTARG"
;;
1 )
export CMAKE_BUILD_PARALLEL_LEVEL=1
;;
T )
export BUILD_TESTS="1"
;;
u )
export BUILD_TARGET="universal"
;;
h ) echo "Usage: ./build_release_macos.sh [-d]"
echo " -d: Build deps only"
echo " -a: Set ARCHITECTURE (arm64 or x86_64 or universal)"
echo " -s: Build slicer only"
echo " -u: Build universal app only (requires existing arm64 and x86_64 app bundles)"
echo " -n: Nightly build"
echo " -t: Specify minimum version of the target platform, default is 11.3"
echo " -x: Use Ninja Multi-Config CMake generator, default is Xcode"
echo " -b: Build without reconfiguring CMake"
echo " -c: Set CMake build configuration, default is Release"
echo " -i: Add a prefix to ignore during CMake dependency discovery (repeatable), defaults to /opt/local:/usr/local:/opt/homebrew"
echo " -1: Use single job for building"
echo " -T: Build and run tests"
exit 0
;;
* )
@@ -85,12 +98,26 @@ if [ -z "$OSX_DEPLOYMENT_TARGET" ]; then
export OSX_DEPLOYMENT_TARGET="11.3"
fi
if [ -z "$CMAKE_IGNORE_PREFIX_PATH" ]; then
export CMAKE_IGNORE_PREFIX_PATH="/opt/local:/usr/local:/opt/homebrew"
fi
CMAKE_VERSION=$(cmake --version | head -1 | sed 's/[^0-9]*\([0-9]*\).*/\1/')
if [ "$CMAKE_VERSION" -ge 4 ] 2>/dev/null; then
export CMAKE_POLICY_VERSION_MINIMUM=3.5
export CMAKE_POLICY_COMPAT="-DCMAKE_POLICY_VERSION_MINIMUM=3.5"
echo "Detected CMake 4.x, adding compatibility flag (env + cmake arg)"
else
export CMAKE_POLICY_COMPAT=""
fi
echo "Build params:"
echo " - ARCH: $ARCH"
echo " - BUILD_CONFIG: $BUILD_CONFIG"
echo " - BUILD_TARGET: $BUILD_TARGET"
echo " - CMAKE_GENERATOR: $SLICER_CMAKE_GENERATOR for Slicer, $DEPS_CMAKE_GENERATOR for deps"
echo " - OSX_DEPLOYMENT_TARGET: $OSX_DEPLOYMENT_TARGET"
echo " - CMAKE_IGNORE_PREFIX_PATH: $CMAKE_IGNORE_PREFIX_PATH"
echo
# if which -s brew; then
@@ -109,8 +136,6 @@ echo
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$ARCH"
DEPS_DIR="$PROJECT_DIR/deps"
DEPS_BUILD_DIR="$DEPS_DIR/build/$ARCH"
DEPS="$DEPS_BUILD_DIR/OrcaSlicer_deps"
# For Multi-config generators like Ninja and Xcode
export BUILD_DIR_CONFIG_SUBDIR="/$BUILD_CONFIG"
@@ -133,11 +158,11 @@ function build_deps() {
if [ "1." != "$BUILD_ONLY". ]; then
cmake "${DEPS_DIR}" \
-G "${DEPS_CMAKE_GENERATOR}" \
-DDESTDIR="$DEPS" \
-DOPENSSL_ARCH="darwin64-${_ARCH}-cc" \
-DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \
-DCMAKE_OSX_ARCHITECTURES:STRING="${_ARCH}" \
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}"
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}" \
-DCMAKE_IGNORE_PREFIX_PATH="${CMAKE_IGNORE_PREFIX_PATH}" \
${CMAKE_POLICY_COMPAT}
fi
cmake --build . --config "$BUILD_CONFIG" --target deps
)
@@ -172,21 +197,27 @@ function build_slicer() {
if [ "1." != "$BUILD_ONLY". ]; then
cmake "${PROJECT_DIR}" \
-G "${SLICER_CMAKE_GENERATOR}" \
-DBBL_RELEASE_TO_PUBLIC=1 \
-DORCA_TOOLS=ON \
${ORCA_UPDATER_SIG_KEY:+-DORCA_UPDATER_SIG_KEY="$ORCA_UPDATER_SIG_KEY"} \
-DCMAKE_PREFIX_PATH="$DEPS/usr/local" \
-DCMAKE_INSTALL_PREFIX="$PWD/OrcaSlicer" \
${BUILD_TESTS:+-DBUILD_TESTS=ON} \
-DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \
-DCMAKE_MACOSX_RPATH=ON \
-DCMAKE_INSTALL_RPATH="${DEPS}/usr/local" \
-DCMAKE_MACOSX_BUNDLE=ON \
-DCMAKE_OSX_ARCHITECTURES="${_ARCH}" \
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}"
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}" \
-DCMAKE_IGNORE_PREFIX_PATH="${CMAKE_IGNORE_PREFIX_PATH}" \
${CMAKE_POLICY_COMPAT}
fi
cmake --build . --config "$BUILD_CONFIG" --target "$SLICER_BUILD_TARGET"
)
if [ "1." == "$BUILD_TESTS". ]; then
echo "Running tests for $_ARCH..."
(
set -x
cd "$PROJECT_BUILD_DIR"
ctest --build-config "$BUILD_CONFIG" --output-on-failure
)
fi
echo "Verify localization with gettext..."
(
cd "$PROJECT_DIR"
@@ -234,48 +265,54 @@ function build_slicer() {
done
}
function lipo_dir() {
local universal_dir="$1"
local x86_64_dir="$2"
# Find all Mach-O files in the universal (arm64-based) copy and lipo them
while IFS= read -r -d '' f; do
local rel="${f#"$universal_dir"/}"
local x86="$x86_64_dir/$rel"
if [ -f "$x86" ]; then
echo " lipo: $rel"
lipo -create "$f" "$x86" -output "$f.tmp"
mv "$f.tmp" "$f"
else
echo " warning: no x86_64 counterpart for $rel, keeping arm64 only"
fi
done < <(find "$universal_dir" -type f -print0 | while IFS= read -r -d '' candidate; do
if file "$candidate" | grep -q "Mach-O"; then
printf '%s\0' "$candidate"
fi
done)
}
function build_universal() {
echo "Building universal binary..."
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$ARCH"
# Create universal binary
echo "Creating universal binary..."
# PROJECT_BUILD_DIR="$PROJECT_DIR/build_Universal"
ARM64_APP="$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer.app"
X86_64_APP="$PROJECT_DIR/build/x86_64/OrcaSlicer/OrcaSlicer.app"
mkdir -p "$PROJECT_BUILD_DIR/OrcaSlicer"
UNIVERSAL_APP="$PROJECT_BUILD_DIR/OrcaSlicer/OrcaSlicer.app"
rm -rf "$UNIVERSAL_APP"
cp -R "$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer.app" "$UNIVERSAL_APP"
# Get the binary path inside the .app bundle
BINARY_PATH="Contents/MacOS/OrcaSlicer"
# Create universal binary using lipo
lipo -create \
"$PROJECT_DIR/build/x86_64/OrcaSlicer/OrcaSlicer.app/$BINARY_PATH" \
"$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer.app/$BINARY_PATH" \
-output "$UNIVERSAL_APP/$BINARY_PATH"
echo "Universal binary created at $UNIVERSAL_APP"
cp -R "$ARM64_APP" "$UNIVERSAL_APP"
echo "Creating universal binaries for OrcaSlicer.app..."
lipo_dir "$UNIVERSAL_APP" "$X86_64_APP"
echo "Universal OrcaSlicer.app created at $UNIVERSAL_APP"
# Create universal binary for profile validator if it exists
if [ -f "$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ] && \
[ -f "$PROJECT_DIR/build/x86_64/OrcaSlicer/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ]; then
echo "Creating universal binary for OrcaSlicer_profile_validator..."
ARM64_VALIDATOR="$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app"
X86_64_VALIDATOR="$PROJECT_DIR/build/x86_64/OrcaSlicer/OrcaSlicer_profile_validator.app"
if [ -d "$ARM64_VALIDATOR" ] && [ -d "$X86_64_VALIDATOR" ]; then
echo "Creating universal binaries for OrcaSlicer_profile_validator.app..."
UNIVERSAL_VALIDATOR_APP="$PROJECT_BUILD_DIR/OrcaSlicer/OrcaSlicer_profile_validator.app"
rm -rf "$UNIVERSAL_VALIDATOR_APP"
cp -R "$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app" "$UNIVERSAL_VALIDATOR_APP"
# Get the binary path inside the profile validator .app bundle
VALIDATOR_BINARY_PATH="Contents/MacOS/OrcaSlicer_profile_validator"
# Create universal binary using lipo
lipo -create \
"$PROJECT_DIR/build/x86_64/OrcaSlicer/OrcaSlicer_profile_validator.app/$VALIDATOR_BINARY_PATH" \
"$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app/$VALIDATOR_BINARY_PATH" \
-output "$UNIVERSAL_VALIDATOR_APP/$VALIDATOR_BINARY_PATH"
echo "Universal binary for OrcaSlicer_profile_validator created at $UNIVERSAL_VALIDATOR_APP"
cp -R "$ARM64_VALIDATOR" "$UNIVERSAL_VALIDATOR_APP"
lipo_dir "$UNIVERSAL_VALIDATOR_APP" "$X86_64_VALIDATOR"
echo "Universal OrcaSlicer_profile_validator.app created at $UNIVERSAL_VALIDATOR_APP"
fi
}
@@ -290,16 +327,22 @@ case "${BUILD_TARGET}" in
slicer)
build_slicer
;;
universal)
build_universal
;;
*)
echo "Unknown target: $BUILD_TARGET. Available targets: deps, slicer, all."
echo "Unknown target: $BUILD_TARGET. Available targets: deps, slicer, universal, all."
exit 1
;;
esac
if [ "$ARCH" = "universal" ] && [ "$BUILD_TARGET" != "deps" ]; then
if [ "$ARCH" = "universal" ] && { [ "$BUILD_TARGET" = "all" ] || [ "$BUILD_TARGET" = "slicer" ]; }; then
build_universal
fi
if [ "1." == "$PACK_DEPS". ]; then
pack_deps
fi
elapsed=$SECONDS
printf "\nBuild completed in %dh %dm %ds\n" $((elapsed/3600)) $((elapsed%3600/60)) $((elapsed%60))

158
build_release_vs.bat Normal file
View File

@@ -0,0 +1,158 @@
@REM OrcaSlicer build script for Windows with VS auto-detect
@echo off
set WP=%CD%
set _START_TIME=%TIME%
@REM Check for Ninja Multi-Config option (-x)
set USE_NINJA=0
for %%a in (%*) do (
if "%%a"=="-x" set USE_NINJA=1
)
if "%USE_NINJA%"=="1" (
echo Using Ninja Multi-Config generator
set CMAKE_GENERATOR="Ninja Multi-Config"
set VS_VERSION=Ninja
goto :generator_ready
)
@REM Detect Visual Studio version using msbuild
echo Detecting Visual Studio version using msbuild...
@REM Try to get MSBuild version - the output format varies by VS version
set VS_MAJOR=
for /f "tokens=*" %%i in ('msbuild -version 2^>^&1 ^| findstr /r "^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') do (
for /f "tokens=1 delims=." %%a in ("%%i") do set VS_MAJOR=%%a
set MSBUILD_OUTPUT=%%i
goto :version_found
)
@REM Alternative method for newer MSBuild versions
if "%VS_MAJOR%"=="" (
for /f "tokens=*" %%i in ('msbuild -version 2^>^&1 ^| findstr /r "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') do (
for /f "tokens=1 delims=." %%a in ("%%i") do set VS_MAJOR=%%a
set MSBUILD_OUTPUT=%%i
goto :version_found
)
)
:version_found
echo MSBuild version detected: %MSBUILD_OUTPUT%
echo Major version: %VS_MAJOR%
if "%VS_MAJOR%"=="" (
echo Error: Could not determine Visual Studio version from msbuild
echo Please ensure Visual Studio and MSBuild are properly installed
exit /b 1
)
if "%VS_MAJOR%"=="16" (
set VS_VERSION=2019
set CMAKE_GENERATOR="Visual Studio 16 2019"
) else if "%VS_MAJOR%"=="17" (
set VS_VERSION=2022
set CMAKE_GENERATOR="Visual Studio 17 2022"
) else if "%VS_MAJOR%"=="18" (
set VS_VERSION=2026
set CMAKE_GENERATOR="Visual Studio 18 2026"
) else (
echo Error: Unsupported Visual Studio version: %VS_MAJOR%
echo Supported versions: VS2019 (16.x^), VS2022 (17.x^), VS2026 (18.x^)
exit /b 1
)
echo Detected Visual Studio %VS_VERSION% (version %VS_MAJOR%)
echo Using CMake generator: %CMAKE_GENERATOR%
:generator_ready
@REM Pack deps
if "%1"=="pack" (
setlocal ENABLEDELAYEDEXPANSION
cd %WP%/deps/build
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do set build_date=%%c%%b%%a
echo packing deps: OrcaSlicer_dep_win64_!build_date!_vs!VS_VERSION!.zip
%WP%/tools/7z.exe a OrcaSlicer_dep_win64_!build_date!_vs!VS_VERSION!.zip OrcaSlicer_dep
goto :done
)
set debug=OFF
set debuginfo=OFF
if "%1"=="debug" set debug=ON
if "%2"=="debug" set debug=ON
if "%1"=="debuginfo" set debuginfo=ON
if "%2"=="debuginfo" set debuginfo=ON
if "%debug%"=="ON" (
set build_type=Debug
set build_dir=build-dbg
) else (
if "%debuginfo%"=="ON" (
set build_type=RelWithDebInfo
set build_dir=build-dbginfo
) else (
set build_type=Release
set build_dir=build
)
)
echo build type set to %build_type%
setlocal DISABLEDELAYEDEXPANSION
cd deps
mkdir %build_dir%
cd %build_dir%
set "SIG_FLAG="
if defined ORCA_UPDATER_SIG_KEY set "SIG_FLAG=-DORCA_UPDATER_SIG_KEY=%ORCA_UPDATER_SIG_KEY%"
if "%1"=="slicer" (
GOTO :slicer
)
echo "building deps.."
echo on
REM Set minimum CMake policy to avoid <3.5 errors
set CMAKE_POLICY_VERSION_MINIMUM=3.5
if "%USE_NINJA%"=="1" (
cmake ../ -G %CMAKE_GENERATOR% -DCMAKE_BUILD_TYPE=%build_type%
cmake --build . --config %build_type% --target deps
) else (
cmake ../ -G %CMAKE_GENERATOR% -A x64 -DCMAKE_BUILD_TYPE=%build_type%
cmake --build . --config %build_type% --target deps -- -m
)
@echo off
if "%1"=="deps" goto :done
:slicer
echo "building Orca Slicer..."
cd %WP%
mkdir %build_dir%
cd %build_dir%
echo on
set CMAKE_POLICY_VERSION_MINIMUM=3.5
if "%USE_NINJA%"=="1" (
cmake .. -G %CMAKE_GENERATOR% -DORCA_TOOLS=ON %SIG_FLAG% -DCMAKE_BUILD_TYPE=%build_type%
cmake --build . --config %build_type% --target ALL_BUILD
) else (
cmake .. -G %CMAKE_GENERATOR% -A x64 -DORCA_TOOLS=ON %SIG_FLAG% -DCMAKE_BUILD_TYPE=%build_type%
cmake --build . --config %build_type% --target ALL_BUILD -- -m
)
@echo off
cd ..
call scripts/run_gettext.bat
cd %build_dir%
cmake --build . --target install --config %build_type%
:done
@echo off
for /f "tokens=1-3 delims=:.," %%a in ("%_START_TIME: =0%") do set /a "_start_s=%%a*3600+%%b*60+%%c"
for /f "tokens=1-3 delims=:.," %%a in ("%TIME: =0%") do set /a "_end_s=%%a*3600+%%b*60+%%c"
set /a "_elapsed=_end_s - _start_s"
if %_elapsed% lss 0 set /a "_elapsed+=86400"
set /a "_hours=_elapsed / 3600"
set /a "_remainder=_elapsed - _hours * 3600"
set /a "_mins=_remainder / 60"
set /a "_secs=_remainder - _mins * 60"
echo.
echo Build completed in %_hours%h %_mins%m %_secs%s

View File

@@ -37,7 +37,6 @@ setlocal DISABLEDELAYEDEXPANSION
cd deps
mkdir %build_dir%
cd %build_dir%
set DEPS=%CD%/OrcaSlicer_dep
set "SIG_FLAG="
if defined ORCA_UPDATER_SIG_KEY set "SIG_FLAG=-DORCA_UPDATER_SIG_KEY=%ORCA_UPDATER_SIG_KEY%"
@@ -47,7 +46,9 @@ if "%1"=="slicer" (
echo "building deps.."
echo on
cmake ../ -G "Visual Studio 17 2022" -A x64 -DDESTDIR="%DEPS%" -DCMAKE_BUILD_TYPE=%build_type% -DDEP_DEBUG=%debug% -DORCA_INCLUDE_DEBUG_INFO=%debuginfo%
REM Set minimum CMake policy to avoid <3.5 errors
set CMAKE_POLICY_VERSION_MINIMUM=3.5
cmake ../ -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE=%build_type%
cmake --build . --config %build_type% --target deps -- -m
@echo off
@@ -60,7 +61,8 @@ mkdir %build_dir%
cd %build_dir%
echo on
cmake .. -G "Visual Studio 17 2022" -A x64 -DBBL_RELEASE_TO_PUBLIC=1 -DORCA_TOOLS=ON %SIG_FLAG% -DCMAKE_PREFIX_PATH="%DEPS%/usr/local" -DCMAKE_INSTALL_PREFIX="./OrcaSlicer" -DCMAKE_BUILD_TYPE=%build_type% -DWIN10SDK_PATH="%WindowsSdkDir%Include\%WindowsSDKVersion%\"
set CMAKE_POLICY_VERSION_MINIMUM=3.5
cmake .. -G "Visual Studio 17 2022" -A x64 -DORCA_TOOLS=ON %SIG_FLAG% -DCMAKE_BUILD_TYPE=%build_type%
cmake --build . --config %build_type% --target ALL_BUILD -- -m
@echo off
cd ..

View File

@@ -1,175 +0,0 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
#[=======================================================================[.rst:
Catch
-----
This module defines a function to help use the Catch test framework.
The :command:`catch_discover_tests` discovers tests by asking the compiled test
executable to enumerate its tests. This does not require CMake to be re-run
when tests change. However, it may not work in a cross-compiling environment,
and setting test properties is less convenient.
This command is intended to replace use of :command:`add_test` to register
tests, and will create a separate CTest test for each Catch test case. Note
that this is in some cases less efficient, as common set-up and tear-down logic
cannot be shared by multiple test cases executing in the same instance.
However, it provides more fine-grained pass/fail information to CTest, which is
usually considered as more beneficial. By default, the CTest test name is the
same as the Catch name; see also ``TEST_PREFIX`` and ``TEST_SUFFIX``.
.. command:: catch_discover_tests
Automatically add tests with CTest by querying the compiled test executable
for available tests::
catch_discover_tests(target
[TEST_SPEC arg1...]
[EXTRA_ARGS arg1...]
[WORKING_DIRECTORY dir]
[TEST_PREFIX prefix]
[TEST_SUFFIX suffix]
[PROPERTIES name1 value1...]
[TEST_LIST var]
)
``catch_discover_tests`` sets up a post-build command on the test executable
that generates the list of tests by parsing the output from running the test
with the ``--list-test-names-only`` argument. This ensures that the full
list of tests is obtained. Since test discovery occurs at build time, it is
not necessary to re-run CMake when the list of tests changes.
However, it requires that :prop_tgt:`CROSSCOMPILING_EMULATOR` is properly set
in order to function in a cross-compiling environment.
Additionally, setting properties on tests is somewhat less convenient, since
the tests are not available at CMake time. Additional test properties may be
assigned to the set of tests as a whole using the ``PROPERTIES`` option. If
more fine-grained test control is needed, custom content may be provided
through an external CTest script using the :prop_dir:`TEST_INCLUDE_FILES`
directory property. The set of discovered tests is made accessible to such a
script via the ``<target>_TESTS`` variable.
The options are:
``target``
Specifies the Catch executable, which must be a known CMake executable
target. CMake will substitute the location of the built executable when
running the test.
``TEST_SPEC arg1...``
Specifies test cases, wildcarded test cases, tags and tag expressions to
pass to the Catch executable with the ``--list-test-names-only`` argument.
``EXTRA_ARGS arg1...``
Any extra arguments to pass on the command line to each test case.
``WORKING_DIRECTORY dir``
Specifies the directory in which to run the discovered test cases. If this
option is not provided, the current binary directory is used.
``TEST_PREFIX prefix``
Specifies a ``prefix`` to be prepended to the name of each discovered test
case. This can be useful when the same test executable is being used in
multiple calls to ``catch_discover_tests()`` but with different
``TEST_SPEC`` or ``EXTRA_ARGS``.
``TEST_SUFFIX suffix``
Similar to ``TEST_PREFIX`` except the ``suffix`` is appended to the name of
every discovered test case. Both ``TEST_PREFIX`` and ``TEST_SUFFIX`` may
be specified.
``PROPERTIES name1 value1...``
Specifies additional properties to be set on all tests discovered by this
invocation of ``catch_discover_tests``.
``TEST_LIST var``
Make the list of tests available in the variable ``var``, rather than the
default ``<target>_TESTS``. This can be useful when the same test
executable is being used in multiple calls to ``catch_discover_tests()``.
Note that this variable is only available in CTest.
#]=======================================================================]
#------------------------------------------------------------------------------
function(catch_discover_tests TARGET)
cmake_parse_arguments(
""
""
"TEST_PREFIX;TEST_SUFFIX;WORKING_DIRECTORY;TEST_LIST"
"TEST_SPEC;EXTRA_ARGS;PROPERTIES"
${ARGN}
)
if(NOT _WORKING_DIRECTORY)
set(_WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
endif()
if(NOT _TEST_LIST)
set(_TEST_LIST ${TARGET}_TESTS)
endif()
## Generate a unique name based on the extra arguments
string(SHA1 args_hash "${_TEST_SPEC} ${_EXTRA_ARGS}")
string(SUBSTRING ${args_hash} 0 7 args_hash)
# Define rule to generate test list for aforementioned test executable
set(ctest_include_file "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_include-${args_hash}.cmake")
set(ctest_tests_file "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_tests-${args_hash}.cmake")
get_property(crosscompiling_emulator
TARGET ${TARGET}
PROPERTY CROSSCOMPILING_EMULATOR
)
add_custom_command(
TARGET ${TARGET} POST_BUILD
BYPRODUCTS "${ctest_tests_file}"
COMMAND "${CMAKE_COMMAND}"
-D "TEST_TARGET=${TARGET}"
-D "TEST_EXECUTABLE=$<TARGET_FILE:${TARGET}>"
-D "TEST_EXECUTOR=${crosscompiling_emulator}"
-D "TEST_WORKING_DIR=${_WORKING_DIRECTORY}"
-D "TEST_SPEC=${_TEST_SPEC}"
-D "TEST_EXTRA_ARGS=${_EXTRA_ARGS}"
-D "TEST_PROPERTIES=${_PROPERTIES}"
-D "TEST_PREFIX='${_TEST_PREFIX}'"
-D "TEST_SUFFIX='${_TEST_SUFFIX}'"
-D "TEST_LIST=${_TEST_LIST}"
-D "CTEST_FILE=${ctest_tests_file}"
-P "${_CATCH_DISCOVER_TESTS_SCRIPT}"
VERBATIM
)
file(WRITE "${ctest_include_file}"
"if(EXISTS \"${ctest_tests_file}\")\n"
" include(\"${ctest_tests_file}\")\n"
"else()\n"
" add_test(${TARGET}_NOT_BUILT-${args_hash} ${TARGET}_NOT_BUILT-${args_hash})\n"
"endif()\n"
)
if(NOT ${CMAKE_VERSION} VERSION_LESS "3.10.0")
# Add discovered tests to directory TEST_INCLUDE_FILES
set_property(DIRECTORY
APPEND PROPERTY TEST_INCLUDE_FILES "${ctest_include_file}"
)
else()
# Add discovered tests as directory TEST_INCLUDE_FILE if possible
get_property(test_include_file_set DIRECTORY PROPERTY TEST_INCLUDE_FILE SET)
if (NOT ${test_include_file_set})
set_property(DIRECTORY
PROPERTY TEST_INCLUDE_FILE "${ctest_include_file}"
)
else()
message(FATAL_ERROR
"Cannot set more than one TEST_INCLUDE_FILE"
)
endif()
endif()
endfunction()
###############################################################################
set(_CATCH_DISCOVER_TESTS_SCRIPT
${CMAKE_CURRENT_LIST_DIR}/CatchAddTests.cmake
)

View File

@@ -1,106 +0,0 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
set(prefix "${TEST_PREFIX}")
set(suffix "${TEST_SUFFIX}")
set(spec ${TEST_SPEC})
set(extra_args ${TEST_EXTRA_ARGS})
set(properties ${TEST_PROPERTIES})
set(script)
set(suite)
set(tests)
function(add_command NAME)
set(_args "")
foreach(_arg ${ARGN})
if(_arg MATCHES "[^-./:a-zA-Z0-9_]")
set(_args "${_args} [==[${_arg}]==]") # form a bracket_argument
else()
set(_args "${_args} ${_arg}")
endif()
endforeach()
set(script "${script}${NAME}(${_args})\n" PARENT_SCOPE)
endfunction()
macro(_add_catch_test_labels LINE)
# convert to list of tags
string(REPLACE "][" "]\\;[" tags ${line})
add_command(
set_tests_properties "${prefix}${test}${suffix}"
PROPERTIES
LABELS "${tags}"
)
endmacro()
macro(_add_catch_test LINE)
set(test ${line})
# use escape commas to handle properly test cases with commans inside the name
string(REPLACE "," "\\," test_name ${test})
# ...and add to script
add_command(
add_test "${prefix}${test}${suffix}"
${TEST_EXECUTOR}
"${TEST_EXECUTABLE}"
"${test_name}"
${extra_args}
)
add_command(
set_tests_properties "${prefix}${test}${suffix}"
PROPERTIES
WORKING_DIRECTORY "${TEST_WORKING_DIR}"
${properties}
)
list(APPEND tests "${prefix}${test}${suffix}")
endmacro()
# Run test executable to get list of available tests
if(NOT EXISTS "${TEST_EXECUTABLE}")
message(FATAL_ERROR
"Specified test executable '${TEST_EXECUTABLE}' does not exist"
)
endif()
execute_process(
COMMAND ${TEST_EXECUTOR} "${TEST_EXECUTABLE}" ${spec} --list-tests
OUTPUT_VARIABLE output
RESULT_VARIABLE result
)
# Catch --list-test-names-only reports the number of tests, so 0 is... surprising
if(${result} EQUAL 0)
message(WARNING
"Test executable '${TEST_EXECUTABLE}' contains no tests!\n"
)
elseif(${result} LESS 0)
message(FATAL_ERROR
"Error running test executable '${TEST_EXECUTABLE}':\n"
" Result: ${result}\n"
" Output: ${output}\n"
)
endif()
string(REPLACE "\n" ";" output "${output}")
set(test)
set(tags_regex "(\\[([^\\[]*)\\])+$")
# Parse output
foreach(line ${output})
# lines without leading whitespaces are catch output not tests
if(${line} MATCHES "^[ \t]+")
# strip leading spaces and tabs
string(REGEX REPLACE "^[ \t]+" "" line ${line})
if(${line} MATCHES "${tags_regex}")
_add_catch_test_labels(${line})
else()
_add_catch_test(${line})
endif()
endif()
endforeach()
# Create a list of all discovered tests, which users may use to e.g. set
# properties on the tests
add_command(set ${TEST_LIST} ${tests})
# Write CTest script
file(WRITE "${CTEST_FILE}" "${script}")

View File

@@ -1,225 +0,0 @@
#==================================================================================================#
# supported macros #
# - TEST_CASE, #
# - SCENARIO, #
# - TEST_CASE_METHOD, #
# - CATCH_TEST_CASE, #
# - CATCH_SCENARIO, #
# - CATCH_TEST_CASE_METHOD. #
# #
# Usage #
# 1. make sure this module is in the path or add this otherwise: #
# set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake.modules/") #
# 2. make sure that you've enabled testing option for the project by the call: #
# enable_testing() #
# 3. add the lines to the script for testing target (sample CMakeLists.txt): #
# project(testing_target) #
# set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake.modules/") #
# enable_testing() #
# #
# find_path(CATCH_INCLUDE_DIR "catch.hpp") #
# include_directories(${INCLUDE_DIRECTORIES} ${CATCH_INCLUDE_DIR}) #
# #
# file(GLOB SOURCE_FILES "*.cpp") #
# add_executable(${PROJECT_NAME} ${SOURCE_FILES}) #
# #
# include(ParseAndAddCatchTests) #
# ParseAndAddCatchTests(${PROJECT_NAME}) #
# #
# The following variables affect the behavior of the script: #
# #
# PARSE_CATCH_TESTS_VERBOSE (Default OFF) #
# -- enables debug messages #
# PARSE_CATCH_TESTS_NO_HIDDEN_TESTS (Default OFF) #
# -- excludes tests marked with [!hide], [.] or [.foo] tags #
# PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME (Default ON) #
# -- adds fixture class name to the test name #
# PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME (Default ON) #
# -- adds cmake target name to the test name #
# PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS (Default OFF) #
# -- causes CMake to rerun when file with tests changes so that new tests will be discovered #
# #
# One can also set (locally) the optional variable OptionalCatchTestLauncher to precise the way #
# a test should be run. For instance to use test MPI, one can write #
# set(OptionalCatchTestLauncher ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${NUMPROC}) #
# just before calling this ParseAndAddCatchTests function #
# #
# The AdditionalCatchParameters optional variable can be used to pass extra argument to the test #
# command. For example, to include successful tests in the output, one can write #
# set(AdditionalCatchParameters --success) #
# #
# After the script, the ParseAndAddCatchTests_TESTS property for the target, and for each source #
# file in the target is set, and contains the list of the tests extracted from that target, or #
# from that file. This is useful, for example to add further labels or properties to the tests. #
# #
#==================================================================================================#
if (CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.8)
message(FATAL_ERROR "ParseAndAddCatchTests requires CMake 2.8.8 or newer")
endif()
option(PARSE_CATCH_TESTS_VERBOSE "Print Catch to CTest parser debug messages" OFF)
option(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS "Exclude tests with [!hide], [.] or [.foo] tags" OFF)
option(PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME "Add fixture class name to the test name" ON)
option(PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME "Add target name to the test name" ON)
option(PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS "Add test file to CMAKE_CONFIGURE_DEPENDS property" OFF)
function(ParseAndAddCatchTests_PrintDebugMessage)
if(PARSE_CATCH_TESTS_VERBOSE)
message(STATUS "ParseAndAddCatchTests: ${ARGV}")
endif()
endfunction()
# This removes the contents between
# - block comments (i.e. /* ... */)
# - full line comments (i.e. // ... )
# contents have been read into '${CppCode}'.
# !keep partial line comments
function(ParseAndAddCatchTests_RemoveComments CppCode)
string(ASCII 2 CMakeBeginBlockComment)
string(ASCII 3 CMakeEndBlockComment)
string(REGEX REPLACE "/\\*" "${CMakeBeginBlockComment}" ${CppCode} "${${CppCode}}")
string(REGEX REPLACE "\\*/" "${CMakeEndBlockComment}" ${CppCode} "${${CppCode}}")
string(REGEX REPLACE "${CMakeBeginBlockComment}[^${CMakeEndBlockComment}]*${CMakeEndBlockComment}" "" ${CppCode} "${${CppCode}}")
string(REGEX REPLACE "\n[ \t]*//+[^\n]+" "\n" ${CppCode} "${${CppCode}}")
set(${CppCode} "${${CppCode}}" PARENT_SCOPE)
endfunction()
# Worker function
function(ParseAndAddCatchTests_ParseFile SourceFile TestTarget)
# If SourceFile is an object library, do not scan it (as it is not a file). Exit without giving a warning about a missing file.
if(SourceFile MATCHES "\\\$<TARGET_OBJECTS:.+>")
ParseAndAddCatchTests_PrintDebugMessage("Detected OBJECT library: ${SourceFile} this will not be scanned for tests.")
return()
endif()
# According to CMake docs EXISTS behavior is well-defined only for full paths.
get_filename_component(SourceFile ${SourceFile} ABSOLUTE)
if(NOT EXISTS ${SourceFile})
message(WARNING "Cannot find source file: ${SourceFile}")
return()
endif()
ParseAndAddCatchTests_PrintDebugMessage("parsing ${SourceFile}")
file(STRINGS ${SourceFile} Contents NEWLINE_CONSUME)
# Remove block and fullline comments
ParseAndAddCatchTests_RemoveComments(Contents)
# Find definition of test names
string(REGEX MATCHALL "[ \t]*(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)[ \t]*\\([^\)]+\\)+[ \t\n]*{+[ \t]*(//[^\n]*[Tt][Ii][Mm][Ee][Oo][Uu][Tt][ \t]*[0-9]+)*" Tests "${Contents}")
if(PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS AND Tests)
ParseAndAddCatchTests_PrintDebugMessage("Adding ${SourceFile} to CMAKE_CONFIGURE_DEPENDS property")
set_property(
DIRECTORY
APPEND
PROPERTY CMAKE_CONFIGURE_DEPENDS ${SourceFile}
)
endif()
foreach(TestName ${Tests})
# Strip newlines
string(REGEX REPLACE "\\\\\n|\n" "" TestName "${TestName}")
# Get test type and fixture if applicable
string(REGEX MATCH "(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)[ \t]*\\([^,^\"]*" TestTypeAndFixture "${TestName}")
string(REGEX MATCH "(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)" TestType "${TestTypeAndFixture}")
string(REGEX REPLACE "${TestType}\\([ \t]*" "" TestFixture "${TestTypeAndFixture}")
# Get string parts of test definition
string(REGEX MATCHALL "\"+([^\\^\"]|\\\\\")+\"+" TestStrings "${TestName}")
# Strip wrapping quotation marks
string(REGEX REPLACE "^\"(.*)\"$" "\\1" TestStrings "${TestStrings}")
string(REPLACE "\";\"" ";" TestStrings "${TestStrings}")
# Validate that a test name and tags have been provided
list(LENGTH TestStrings TestStringsLength)
if(TestStringsLength GREATER 2 OR TestStringsLength LESS 1)
message(FATAL_ERROR "You must provide a valid test name and tags for all tests in ${SourceFile}")
endif()
# Assign name and tags
list(GET TestStrings 0 Name)
if("${TestType}" STREQUAL "SCENARIO")
set(Name "Scenario: ${Name}")
endif()
if(PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME AND TestFixture)
set(CTestName "${TestFixture}:${Name}")
else()
set(CTestName "${Name}")
endif()
if(PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME)
set(CTestName "${TestTarget}:${CTestName}")
endif()
# add target to labels to enable running all tests added from this target
set(Labels ${TestTarget})
if(TestStringsLength EQUAL 2)
list(GET TestStrings 1 Tags)
string(TOLOWER "${Tags}" Tags)
# remove target from labels if the test is hidden
if("${Tags}" MATCHES ".*\\[!?(hide|\\.)\\].*")
list(REMOVE_ITEM Labels ${TestTarget})
endif()
string(REPLACE "]" ";" Tags "${Tags}")
string(REPLACE "[" "" Tags "${Tags}")
else()
# unset tags variable from previous loop
unset(Tags)
endif()
list(APPEND Labels ${Tags})
set(HiddenTagFound OFF)
foreach(label ${Labels})
string(REGEX MATCH "^!hide|^\\." result ${label})
if(result)
set(HiddenTagFound ON)
break()
endif(result)
endforeach(label)
if(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS AND ${HiddenTagFound} AND ${CMAKE_VERSION} VERSION_LESS "3.9")
ParseAndAddCatchTests_PrintDebugMessage("Skipping test \"${CTestName}\" as it has [!hide], [.] or [.foo] label")
else()
ParseAndAddCatchTests_PrintDebugMessage("Adding test \"${CTestName}\"")
if(Labels)
ParseAndAddCatchTests_PrintDebugMessage("Setting labels to ${Labels}")
endif()
# Escape commas in the test spec
string(REPLACE "," "\\," Name ${Name})
# Add the test and set its properties
add_test(NAME "\"${CTestName}\"" COMMAND ${OptionalCatchTestLauncher} $<TARGET_FILE:${TestTarget}> ${Name} ${AdditionalCatchParameters})
# Old CMake versions do not document VERSION_GREATER_EQUAL, so we use VERSION_GREATER with 3.8 instead
if(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS AND ${HiddenTagFound} AND ${CMAKE_VERSION} VERSION_GREATER "3.8")
ParseAndAddCatchTests_PrintDebugMessage("Setting DISABLED test property")
set_tests_properties("\"${CTestName}\"" PROPERTIES DISABLED ON)
else()
set_tests_properties("\"${CTestName}\"" PROPERTIES FAIL_REGULAR_EXPRESSION "No tests ran"
LABELS "${Labels}")
endif()
set_property(
TARGET ${TestTarget}
APPEND
PROPERTY ParseAndAddCatchTests_TESTS "\"${CTestName}\"")
set_property(
SOURCE ${SourceFile}
APPEND
PROPERTY ParseAndAddCatchTests_TESTS "\"${CTestName}\"")
endif()
endforeach()
endfunction()
# entry point
function(ParseAndAddCatchTests TestTarget)
ParseAndAddCatchTests_PrintDebugMessage("Started parsing ${TestTarget}")
get_target_property(SourceFiles ${TestTarget} SOURCES)
ParseAndAddCatchTests_PrintDebugMessage("Found the following sources: ${SourceFiles}")
foreach(SourceFile ${SourceFiles})
ParseAndAddCatchTests_ParseFile(${SourceFile} ${TestTarget})
endforeach()
ParseAndAddCatchTests_PrintDebugMessage("Finished parsing ${TestTarget}")
endfunction()

View File

@@ -0,0 +1,26 @@
set(_q "")
if(${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
set(_q QUIET)
set(_quietly TRUE)
endif()
find_package(${CMAKE_FIND_PACKAGE_NAME} ${${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION} CONFIG ${_q})
if (NOT ${CMAKE_FIND_PACKAGE_NAME}_FOUND)
include(CheckIncludeFileCXX)
add_library(draco INTERFACE)
target_include_directories(draco INTERFACE include)
if (_quietly)
set(CMAKE_REQUIRED_QUIET ON)
endif()
CHECK_INCLUDE_FILE_CXX("draco/draco_features.h" HAVE_DRACO_H)
if (NOT HAVE_DRACO_H)
if (${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED)
message(FATAL_ERROR "Draco library not found. Please install the dependency.")
elseif(NOT _quietly)
message(WARNING "Draco library not found.")
endif()
endif ()
endif()

View File

@@ -3,7 +3,7 @@
# PrusaSlicer specifics:
# This file is backported from CMake 3.15 distribution to behave uniformly
# across all versions of CMake. It explicitly adds GLEW_STATIC complile
# across all versions of CMake. It explicitly adds GLEW_STATIC compile
# definition to static targets which is needed to prevent link errors.
#[=======================================================================[.rst:
@@ -152,7 +152,7 @@ find_library(GLEW_STATIC_LIBRARY_RELEASE
PATHS ENV GLEW_ROOT)
find_library(GLEW_STATIC_LIBRARY_DEBUG
NAMES GLEWds glewd glewds glew32ds
NAMES GLEWds GLEWd glewd glewds glew32ds
PATH_SUFFIXES lib lib64
PATHS ENV GLEW_ROOT)
@@ -223,8 +223,13 @@ if(NOT TARGET GLEW::glew AND NOT GLEW_USE_STATIC_LIBS)
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${GLEW_INCLUDE_DIRS}")
if(APPLE)
set_target_properties(GLEW::glew
PROPERTIES INTERFACE_LINK_LIBRARIES OpenGL::GL)
if(CMAKE_VERSION VERSION_GREATER_EQUAL "4.0")
set_target_properties(GLEW::glew
PROPERTIES INTERFACE_LINK_LIBRARIES "-framework OpenGL")
else()
set_target_properties(GLEW::glew
PROPERTIES INTERFACE_LINK_LIBRARIES OpenGL::GL)
endif()
endif()
if(GLEW_SHARED_LIBRARY_RELEASE)
@@ -258,8 +263,13 @@ elseif(NOT TARGET GLEW::glew_s AND GLEW_USE_STATIC_LIBS)
set_target_properties(GLEW::glew_s PROPERTIES INTERFACE_COMPILE_DEFINITIONS GLEW_STATIC)
if(APPLE)
set_target_properties(GLEW::glew_s
PROPERTIES INTERFACE_LINK_LIBRARIES OpenGL::GL)
if(CMAKE_VERSION VERSION_GREATER_EQUAL "4.0")
set_target_properties(GLEW::glew_s
PROPERTIES INTERFACE_LINK_LIBRARIES "-framework OpenGL")
else()
set_target_properties(GLEW::glew_s
PROPERTIES INTERFACE_LINK_LIBRARIES OpenGL::GL)
endif()
endif()
if(GLEW_STATIC_LIBRARY_RELEASE)
@@ -292,8 +302,13 @@ if(NOT TARGET GLEW::GLEW)
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${GLEW_INCLUDE_DIRS}")
if(APPLE)
set_target_properties(GLEW::GLEW
PROPERTIES INTERFACE_LINK_LIBRARIES OpenGL::GL)
if(CMAKE_VERSION VERSION_GREATER_EQUAL "4.0")
set_target_properties(GLEW::GLEW
PROPERTIES INTERFACE_LINK_LIBRARIES "-framework OpenGL")
else()
set_target_properties(GLEW::GLEW
PROPERTIES INTERFACE_LINK_LIBRARIES OpenGL::GL)
endif()
endif()
if(TARGET GLEW::glew)

View File

@@ -3,13 +3,6 @@
#//
#// Description:
#// cmake module for finding NLopt installation
#// NLopt installation location is defined by environment variable $NLOPT
#//
#// following variables are defined:
#// NLopt_DIR - NLopt installation directory
#// NLopt_INCLUDE_DIR - NLopt header directory
#// NLopt_LIBRARY_DIR - NLopt library directory
#// NLopt_LIBS - NLopt library files
#//
#// Example usage:
#// find_package(NLopt 1.4 REQUIRED)
@@ -17,114 +10,27 @@
#//
#//-------------------------------------------------------------------------
include(FindPackageHandleStandardArgs)
set(NLopt_FOUND FALSE)
set(NLopt_ERROR_REASON "")
set(NLopt_DEFINITIONS "")
unset(NLopt_LIBS CACHE)
set(NLopt_DIR $ENV{NLOPT})
if(NOT NLopt_DIR)
set(NLopt_FOUND TRUE)
set(_NLopt_LIB_NAMES "nlopt")
find_library(NLopt_LIBS
NAMES ${_NLopt_LIB_NAMES})
if(NOT NLopt_LIBS)
set(NLopt_FOUND FALSE)
set(NLopt_ERROR_REASON "${NLopt_ERROR_REASON} Cannot find NLopt library '${_NLopt_LIB_NAMES}'.")
else()
get_filename_component(NLopt_DIR ${NLopt_LIBS} PATH)
endif()
unset(_NLopt_LIB_NAMES)
set(_NLopt_HEADER_FILE_NAME "nlopt.hpp")
find_file(_NLopt_HEADER_FILE
NAMES ${_NLopt_HEADER_FILE_NAME})
if(NOT _NLopt_HEADER_FILE)
set(NLopt_FOUND FALSE)
set(NLopt_ERROR_REASON "${NLopt_ERROR_REASON} Cannot find NLopt header file '${_NLopt_HEADER_FILE_NAME}'.")
endif()
unset(_NLopt_HEADER_FILE_NAME)
if(NOT NLopt_FOUND)
set(NLopt_ERROR_REASON "${NLopt_ERROR_REASON} NLopt not found in system directories (and environment variable NLOPT is not set).")
else()
get_filename_component(NLopt_INCLUDE_DIR ${_NLopt_HEADER_FILE} DIRECTORY )
endif()
unset(_NLopt_HEADER_FILE CACHE)
else()
set(NLopt_FOUND TRUE)
set(NLopt_INCLUDE_DIR "${NLopt_DIR}/include")
if(NOT EXISTS "${NLopt_INCLUDE_DIR}")
set(NLopt_FOUND FALSE)
set(NLopt_ERROR_REASON "${NLopt_ERROR_REASON} Directory '${NLopt_INCLUDE_DIR}' does not exist.")
endif()
set(NLopt_LIBRARY_DIR "${NLopt_DIR}/lib")
if(NOT EXISTS "${NLopt_LIBRARY_DIR}")
set(NLopt_FOUND FALSE)
set(NLopt_ERROR_REASON "${NLopt_ERROR_REASON} Directory '${NLopt_LIBRARY_DIR}' does not exist.")
endif()
set(_NLopt_LIB_NAMES "nlopt_cxx")
find_library(NLopt_LIBS
NAMES ${_NLopt_LIB_NAMES}
PATHS ${NLopt_LIBRARY_DIR}
NO_DEFAULT_PATH)
if(NOT NLopt_LIBS)
set(NLopt_FOUND FALSE)
set(NLopt_ERROR_REASON "${NLopt_ERROR_REASON} Cannot find NLopt library '${_NLopt_LIB_NAMES}' in '${NLopt_LIBRARY_DIR}'.")
endif()
unset(_NLopt_LIB_NAMES)
set(_NLopt_HEADER_FILE_NAME "nlopt.hpp")
find_file(_NLopt_HEADER_FILE
NAMES ${_NLopt_HEADER_FILE_NAME}
PATHS ${NLopt_INCLUDE_DIR}
NO_DEFAULT_PATH)
if(NOT _NLopt_HEADER_FILE)
set(NLopt_FOUND FALSE)
set(NLopt_ERROR_REASON "${NLopt_ERROR_REASON} Cannot find NLopt header file '${_NLopt_HEADER_FILE_NAME}' in '${NLopt_INCLUDE_DIR}'.")
endif()
unset(_NLopt_HEADER_FILE_NAME)
unset(_NLopt_HEADER_FILE CACHE)
endif()
# make variables changeable
mark_as_advanced(
NLopt_INCLUDE_DIR
NLopt_LIBRARY_DIR
NLopt_LIBS
NLopt_DEFINITIONS
)
unset(_q)
if (NLopt_FIND_QUIETLY)
set(_q QUIET)
endif ()
find_package(NLopt ${NLopt_VERSION} CONFIG ${_q})
find_package_handle_standard_args(NLopt CONFIG_MODE)
# report result
if(NLopt_FOUND)
message(STATUS "Found NLopt in '${NLopt_DIR}'.")
message(STATUS "Using NLopt include directory '${NLopt_INCLUDE_DIR}'.")
message(STATUS "Using NLopt library '${NLopt_LIBS}'.")
add_library(NLopt::nlopt INTERFACE IMPORTED)
set_target_properties(NLopt::nlopt PROPERTIES INTERFACE_LINK_LIBRARIES ${NLopt_LIBS})
set_target_properties(NLopt::nlopt PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${NLopt_INCLUDE_DIR})
set_target_properties(NLopt::nlopt PROPERTIES INTERFACE_COMPILE_DEFINITIONS "${NLopt_DEFINITIONS}")
# target_link_libraries(Nlopt::Nlopt INTERFACE ${NLopt_LIBS})
# target_include_directories(Nlopt::Nlopt INTERFACE ${NLopt_INCLUDE_DIR})
# target_compile_definitions(Nlopt::Nlopt INTERFACE ${NLopt_DEFINITIONS})
else()
if(NLopt_FIND_REQUIRED)
message(FATAL_ERROR "Unable to find requested NLopt installation:${NLopt_ERROR_REASON}")
else()
if(NOT NLopt_FIND_QUIETLY)
message(STATUS "NLopt was not found:${NLopt_ERROR_REASON}")
endif()
endif()
if(NLopt_FOUND AND NOT _q)
get_filename_component(NLOPT_LIBRARY_DIRS ${NLOPT_LIBRARY_DIRS} ABSOLUTE)
get_filename_component(NLOPT_INCLUDE_DIRS ${NLOPT_INCLUDE_DIRS} ABSOLUTE)
message(STATUS "Found NLopt in '${NLOPT_LIBRARY_DIRS}'.")
message(STATUS "Using NLopt include directory '${NLOPT_INCLUDE_DIRS}'.")
get_target_property(_configs NLopt::nlopt IMPORTED_CONFIGURATIONS)
foreach (_config ${_configs})
get_target_property(_lib NLopt::nlopt IMPORTED_LOCATION_${_config})
message(STATUS "Found NLopt ${_config} library: ${_lib}")
endforeach ()
endif()

View File

@@ -61,7 +61,7 @@
#
# * TBB_FOUND - Set to false, or undefined, if we havent found, or
# dont want to use TBB.
# * TBB_<component>_FOUND - If False, optional <component> part of TBB sytem is
# * TBB_<component>_FOUND - If False, optional <component> part of TBB system is
# not available.
# * TBB_VERSION - The full version string
# * TBB_VERSION_MAJOR - The major version
@@ -77,7 +77,7 @@
# tbbmalloc, tbbmalloc_debug, tbb_preview, or
# tbb_preview_debug.
#
# The following varibles should be used to build and link with TBB:
# The following variables should be used to build and link with TBB:
#
# * TBB_INCLUDE_DIRS - The include directory for TBB.
# * TBB_LIBRARIES - The libraries to link against to use TBB.

View File

@@ -1,15 +1,41 @@
find_path(LIBNOISE_INCLUDE_DIR libnoise/noise.h)
find_library(LIBNOISE_LIBRARY NAMES libnoise libnoise_static liblibnoise_static)
find_library(LIBNOISE_LIBRARY_RELEASE NAMES libnoise libnoise_static liblibnoise_static)
find_library(LIBNOISE_LIBRARY_DEBUG NAMES libnoised libnoise_staticd liblibnoise_staticd)
set(libnoise_LIB_FOUND FALSE)
if (LIBNOISE_LIBRARY_RELEASE OR LIBNOISE_LIBRARY_DEBUG)
set(libnoise_LIB_FOUND TRUE)
endif ()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(libnoise DEFAULT_MSG
LIBNOISE_LIBRARY
libnoise_LIB_FOUND
LIBNOISE_INCLUDE_DIR
)
if(libnoise_FOUND)
add_library(noise::noise STATIC IMPORTED)
set_target_properties(noise::noise PROPERTIES
IMPORTED_LOCATION "${LIBNOISE_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${LIBNOISE_INCLUDE_DIR}"
INTERFACE_INCLUDE_DIRECTORIES "${LIBNOISE_INCLUDE_DIR}"
)
if (NOT libnoise_FIND_QUIETLY)
message(STATUS "Found libnoise include directory: ${LIBNOISE_INCLUDE_DIR}")
if (LIBNOISE_LIBRARY_RELEASE)
message(STATUS "Found libnoise RELEASE library: ${LIBNOISE_LIBRARY_RELEASE}")
endif ()
if (LIBNOISE_LIBRARY_DEBUG)
message(STATUS "Found libnoise DEBUG library: ${LIBNOISE_LIBRARY_DEBUG}")
endif ()
endif ()
if (LIBNOISE_LIBRARY_RELEASE)
set_property(TARGET noise::noise APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
set_target_properties(noise::noise PROPERTIES IMPORTED_LOCATION_RELEASE ${LIBNOISE_LIBRARY_RELEASE})
endif ()
if (LIBNOISE_LIBRARY_DEBUG)
set_property(TARGET noise::noise APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
set_target_properties(noise::noise PROPERTIES IMPORTED_LOCATION_DEBUG ${LIBNOISE_LIBRARY_DEBUG})
endif ()
endif()

View File

@@ -11,7 +11,7 @@
<key>CFBundleIconFile</key>
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
<key>CFBundleIdentifier</key>
<string>com.softfever3d.orca-slicer</string>
<string>com.orcaslicer.OrcaSlicer</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleLongVersionString</key>
@@ -133,7 +133,7 @@
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
<key>NSAppTransportSecurity</key>
<dict>
<!-- Disable App Transport Security. Resolves https://github.com/SoftFever/OrcaSlicer/issues/791 -->
<!-- Disable App Transport Security. Resolves https://github.com/OrcaSlicer/OrcaSlicer/issues/791 -->
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>

View File

@@ -18,6 +18,7 @@ orcaslicer_add_cmake_project(Boost
-DBOOST_EXCLUDE_LIBRARIES:STRING=contract|fiber|numpy|stacktrace|wave|test
-DBOOST_LOCALE_ENABLE_ICU:BOOL=OFF # do not link to libicu, breaks compatibility between distros
-DBUILD_TESTING:BOOL=OFF
-DBOOST_IOSTREAMS_ENABLE_ZSTD:BOOL=OFF
"${_context_abi_line}"
"${_context_arch_line}"
)

View File

@@ -1,59 +0,0 @@
--- a/BGL/include/CGAL/boost/graph/iterator.h 2022-10-07 19:04:41 UTC
+++ b/BGL/include/CGAL/boost/graph/iterator.h
@@ -213,18 +213,7 @@ class Halfedge_around_source_iterator { (public)
{}
#ifndef DOXYGEN_RUNNING
- // design patter: "safe bool"
- // will be replaced by explicit operator bool with C++11
- typedef void (Halfedge_around_source_iterator::*bool_type)() const;
- void this_type_does_not_support_comparisons() const {}
-
- operator bool_type() const
- {
- return (! (this->base() == nullptr)) ?
- &Halfedge_around_source_iterator::this_type_does_not_support_comparisons : 0;
- }
-
bool operator==( const Self& i) const {
CGAL_assertion( anchor == anchor);
return ( g == i.g) && ( pos == i.pos) && ( winding == i.winding);
@@ -313,18 +302,7 @@ class Halfedge_around_target_iterator { (public)
{}
#ifndef DOXYGEN_RUNNING
- // design patter: "safe bool"
- // will be replaced by explicit operator bool with C++11
- typedef void (Halfedge_around_target_iterator::*bool_type)() const;
- void this_type_does_not_support_comparisons() const {}
-
- operator bool_type() const
- {
- return (! (this->base() == nullptr)) ?
- &Halfedge_around_target_iterator::this_type_does_not_support_comparisons : 0;
- }
-
bool operator==( const Self& i) const {
CGAL_assertion( anchor == anchor);
return ( g == i.g) && ( pos == i.pos) && ( winding == i.winding);
@@ -411,18 +389,6 @@ class Halfedge_around_face_iterator { (public)
const value_type& operator * ( ) const { return pos; }
pointer operator -> ( ) { return &pos; }
const value_type* operator -> ( ) const { return &pos; }
-
- // design patter: "safe bool"
- // will be replaced by explicit operator bool with C++11
- typedef void (Halfedge_around_face_iterator::*bool_type)() const;
-
- void this_type_does_not_support_comparisons() const {}
-
- operator bool_type() const
- {
- return (! (this->base() == nullptr)) ?
- &Halfedge_around_face_iterator::this_type_does_not_support_comparisons : 0;
- }
bool operator==( const Self& i) const {
CGAL_assertion( anchor == anchor);

View File

@@ -5,11 +5,10 @@ endif ()
orcaslicer_add_cmake_project(
CGAL
# GIT_REPOSITORY https://github.com/CGAL/cgal.git
# GIT_TAG bec70a6d52d8aacb0b3d82a7b4edc3caa899184b # releases/CGAL-5.0
# GIT_TAG 3654f780ae0c64675cabaef0e5ddaf904c48b4b7 # releases/CGAL-5.6.3
# For whatever reason, this keeps downloading forever (repeats downloads if finished)
URL https://github.com/CGAL/cgal/archive/refs/tags/v5.4.zip
URL_HASH SHA256=d7605e0a5a5ca17da7547592f6f6e4a59430a0bc861948974254d0de43eab4c0
PATCH_COMMAND git apply ${CGAL_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-clang19.patch
URL https://github.com/CGAL/cgal/releases/download/v5.6.3/CGAL-5.6.3.zip
URL_HASH SHA256=5d577acb4a9918ccb960491482da7a3838f8d363aff47e14d703f19fd84733d4
DEPENDS dep_Boost dep_GMP dep_MPFR
)

130
deps/CMakeLists.txt vendored
View File

@@ -1,3 +1,7 @@
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "4.0")
set(CMAKE_POLICY_VERSION_MINIMUM 3.5 CACHE STRING "" FORCE)
endif()
#
# This CMake project downloads, configures and builds OrcaSlicer dependencies on Unix and Windows.
#
@@ -16,8 +20,8 @@
# On Windows, architecture (64 vs 32 bits) is judged based on the compiler variant.
# To build dependencies for either 64 or 32 bit OS, use the respective compiler command line.
#
# WARNING: On UNIX platforms wxWidgets hardcode the destdir path into its `wx-conffig` utility,
# therefore, unfortunatelly, the installation cannot be copied/moved elsewhere without re-installing wxWidgets.
# WARNING: On UNIX platforms wxWidgets hardcode the destdir path into its `wx-config` utility,
# therefore, unfortunately, the installation cannot be copied/moved elsewhere without re-installing wxWidgets.
#
cmake_minimum_required(VERSION 3.2)
@@ -36,6 +40,11 @@ endif()
project(OrcaSlicer-deps)
# Backward compatibility for old CMake versions
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_VERSION VERSION_LESS "3.25")
set(LINUX ON CACHE BOOL "" FORCE)
endif ()
include(ExternalProject)
include(ProcessorCount)
@@ -44,9 +53,36 @@ if (NPROC EQUAL 0)
set(NPROC 1)
endif ()
set(DESTDIR "${CMAKE_CURRENT_BINARY_DIR}/destdir" CACHE PATH "Destination directory")
set(DEP_DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/DL_CACHE CACHE PATH "Path for downloaded source packages.")
set(FLATPAK FALSE CACHE BOOL "Toggles various build settings for flatpak, like /usr/local in DESTDIR or not building wxwidgets")
if ("${DESTDIR}" STREQUAL "" OR "${DESTDIR}" STREQUAL "${AUTOGENERATED_DESTDIR}")
if (LINUX AND (NOT DEFINED USE_OLD_DESTDIR_PREV OR USE_OLD_DESTDIR_PREV) AND EXISTS "${CMAKE_BINARY_DIR}/destdir/usr/local" AND NOT EXISTS "${CMAKE_BINARY_DIR}/OrcaSlicer_dep/usr/local")
set(USE_OLD_DESTDIR TRUE)
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 (NOT USE_OLD_DESTDIR AND USE_OLD_DESTDIR_PREV)
set(REGEN_DESTDIR TRUE)
endif ()
else ()
unset(AUTOGENERATED_DESTDIR CACHE)
endif ()
if ("${DESTDIR}" STREQUAL "" OR REGEN_DESTDIR)
if (USE_OLD_DESTDIR) # backward compatibility for old directory name
set(DESTDIR "${CMAKE_BINARY_DIR}/destdir" CACHE PATH "Path to dependencies install directory" FORCE)
else ()
set(DESTDIR "${CMAKE_BINARY_DIR}/OrcaSlicer_dep" CACHE PATH "Path to dependencies install directory" FORCE)
endif ()
set(DESTDIR_MSG "(generated automatically and saved to cache)")
set(AUTOGENERATED_DESTDIR ${DESTDIR} CACHE STRING "Provides the last autogenerated destdir" FORCE)
unset(REGEN_DESTDIR CACHE)
else ()
set(DESTDIR_MSG "(from cache or command line)")
endif ()
if (NOT FLATPAK)
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_DEBUG OFF)
set(ORCA_INCLUDE_DEBUG_INFO OFF)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(DEP_DEBUG ON)
message(STATUS "DEP_DEBUG has been automatically turned ON due to CMAKE_BUILD_TYPE being set to Debug")
elseif (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
set(ORCA_INCLUDE_DEBUG_INFO ON)
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_NAME STREQUAL "Linux")
option(DEP_WX_GTK3 "Build wxWidgets against GTK3" OFF)
option(DEP_WX_GTK3 "Build wxWidgets against GTK3" ON)
endif()
set(IS_CROSS_COMPILE FALSE)
if (APPLE)
list(LENGTH CMAKE_OSX_ARCHITECTURES _arch_len)
if (_arch_len GREATER 1)
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")
endif ()
set(CMAKE_FIND_FRAMEWORK LAST)
set(CMAKE_FIND_APPBUNDLE LAST)
list(FIND CMAKE_OSX_ARCHITECTURES ${CMAKE_SYSTEM_PROCESSOR} _arch_idx)
@@ -87,7 +140,7 @@ endif ()
# Slic3r compiles with a different version which will cause runtime errors.
# option(DEP_BUILD_IGL_STATIC "Build IGL as a static library. Might cause link errors and increase binary size." OFF)
message(STATUS "OrcaSlicer deps DESTDIR: ${DESTDIR}")
message(STATUS "OrcaSlicer deps DESTDIR: ${DESTDIR} ${DESTDIR_MSG}")
message(STATUS "OrcaSlicer download dir for source packages: ${DEP_DOWNLOAD_DIR}")
message(STATUS "OrcaSlicer deps debug build: ${DEP_DEBUG}")
@@ -128,13 +181,18 @@ if (NOT IS_CROSS_COMPILE OR NOT APPLE)
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/${projectname}
${_gen}
CMAKE_ARGS
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}
-DCMAKE_MODULE_PATH:STRING=${PROJECT_SOURCE_DIR}/../cmake/modules
-DCMAKE_PREFIX_PATH:STRING=${DESTDIR}
-DCMAKE_IGNORE_PREFIX_PATH:STRING=${CMAKE_IGNORE_PREFIX_PATH}
-DCMAKE_DEBUG_POSTFIX:STRING=d
-DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER}
-DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE}
-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS}
-DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_SHARED_LINKER_FLAGS}
-DCMAKE_MODULE_LINKER_FLAGS:STRING=${CMAKE_MODULE_LINKER_FLAGS}
-DBUILD_SHARED_LIBS:BOOL=OFF
${_cmake_osx_arch}
"${_configs_line}"
@@ -144,39 +202,26 @@ if (NOT IS_CROSS_COMPILE OR NOT APPLE)
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release -- ${_build_j}
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config Release
)
elseif(FLATPAK)
# the only reason this is here is because of the HACK at the bottom for ci
#
# note for future devs: shared libs may actually create a size reduction
# but orcaslicer_deps tends to get really funny regarding linking after that (notably boost)
# so, as much as I would like to use that, it's not happening
ExternalProject_Add(
dep_${projectname}
EXCLUDE_FROM_ALL ON
INSTALL_DIR ${DESTDIR}
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/${projectname}
${_gen}
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}
-DCMAKE_MODULE_PATH:STRING=${PROJECT_SOURCE_DIR}/../cmake/modules
-DCMAKE_PREFIX_PATH:STRING=${DESTDIR}
-DCMAKE_DEBUG_POSTFIX:STRING=d
-DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER}
-DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE}
-DBUILD_SHARED_LIBS:BOOL=OFF
${_cmake_osx_arch}
"${_configs_line}"
${DEP_CMAKE_OPTS}
${P_ARGS_CMAKE_ARGS}
${P_ARGS_UNPARSED_ARGUMENTS}
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release -- ${_build_j}
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config Release
# HACK: save space after each compile job, because CI
# reasoning: cmake changes directory after this command, so just keep only the folders
# so that it can navigate out
COMMAND find "${CMAKE_BINARY_DIR}/dep_${projectname}-prefix/" -type f -delete
)
if (FLATPAK)
# Free up space during flatpak builds to prevent running out of space during CI/CD
# note for future devs: shared libs may actually create a size reduction
# but orcaslicer_deps tends to get really funny regarding linking after that (notably boost)
# so, as much as I would like to use that, it's not happening
ExternalProject_Add_Step(dep_${projectname} free_download_space
DEPENDEES download # do after download
COMMENT "Freeing Space: Removing source archive"
WORKING_DIRECTORY ${DEP_DOWNLOAD_DIR}
COMMAND ${CMAKE_COMMAND} -E rm -r ${projectname}
)
ExternalProject_Add_Step(dep_${projectname} free_build_space
DEPENDEES install # do after install
COMMENT "Freeing Space: Removing source and build files"
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/dep_${projectname}-prefix/src
COMMAND ${CMAKE_COMMAND} -E rm -rf dep_${projectname} dep_${projectname}-build
)
endif ()
else()
ExternalProject_Add(
dep_${projectname}
@@ -185,8 +230,10 @@ else()
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/${projectname}
${_gen}
CMAKE_ARGS
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}
-DCMAKE_PREFIX_PATH:STRING=${DESTDIR}
-DCMAKE_IGNORE_PREFIX_PATH:STRING=${CMAKE_IGNORE_PREFIX_PATH}
-DBUILD_SHARED_LIBS:BOOL=OFF
${_cmake_osx_arch}
"${_configs_line}"
@@ -294,6 +341,8 @@ include(CGAL/CGAL.cmake)
include(NLopt/NLopt.cmake)
include(libnoise/libnoise.cmake)
include(Draco/Draco.cmake)
# I *think* 1.1 is used for *just* md5 hashing?
# 3.1 has everything in the right place, but the md5 funcs used are deprecated
@@ -320,10 +369,10 @@ if (NOT JPEG_FOUND)
set(JPEG_PKG dep_JPEG)
endif()
# flatpak builds wxwidgets separately
# flatpak builds wxwidgets separately, so it is not included in the deps target
set(WXWIDGETS_PKG "")
include(wxWidgets/wxWidgets.cmake)
if (NOT FLATPAK)
include(wxWidgets/wxWidgets.cmake)
set(WXWIDGETS_PKG "dep_wxWidgets")
endif()
@@ -357,6 +406,7 @@ set(_dep_list
${CURL_PKG}
${WXWIDGETS_PKG}
dep_Cereal
dep_Draco
dep_NLopt
dep_OpenVDB
dep_OpenCSG

4
deps/Draco/Draco.cmake vendored Normal file
View File

@@ -0,0 +1,4 @@
orcaslicer_add_cmake_project(Draco
URL https://github.com/google/draco/archive/refs/tags/1.5.7.zip
URL_HASH SHA256=27b72ba2d5ff3d0a9814ad40d4cb88f8dc89a35491c0866d952473f8f9416b77
)

View File

@@ -5,6 +5,8 @@ find_package(OpenGL QUIET REQUIRED)
orcaslicer_add_cmake_project(
GLEW
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/glew
CMAKE_ARGS
-DGLEW_USE_EGL=OFF
)
if (MSVC)

View File

@@ -3,9 +3,17 @@ project(GLEW)
find_package(OpenGL REQUIRED)
if(OpenGL_EGL_FOUND)
message(STATUS "building GLEW for EGL (hope that wxWidgets agrees, otherwise you won't have any output!)")
# Allow parent project to control EGL usage.
# Default to OFF since OrcaSlicer forces GDK_BACKEND=x11 (using GLX contexts).
# GLEW must use glXGetProcAddressARB (GLX) to match wxWidgets GL canvas.
# Using EGL function loading with GLX contexts causes rendering failures.
option(GLEW_USE_EGL "Use EGL instead of GLX for OpenGL function loading" OFF)
if(GLEW_USE_EGL)
message(STATUS "Building GLEW with EGL support")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DGLEW_EGL")
else()
message(STATUS "Building GLEW with GLX support")
endif()
add_library(GLEW src/glew.c)

2
deps/GMP/GMP.cmake vendored
View File

@@ -65,7 +65,7 @@ else ()
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/GMP
PATCH_COMMAND git apply ${GMP_DIRECTORY_FLAG} --verbose ${CMAKE_CURRENT_LIST_DIR}/0001-GMP_GCC15.patch
BUILD_IN_SOURCE ON
CONFIGURE_COMMAND env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure ${_cross_compile_arg} --enable-shared=no --enable-cxx=yes --enable-static=yes "--prefix=${DESTDIR}" ${_gmp_build_tgt}
CONFIGURE_COMMAND env "CC=${CMAKE_C_COMPILER}" "CXX=${CMAKE_CXX_COMPILER}" "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" "LDFLAGS=${CMAKE_EXE_LINKER_FLAGS}" ./configure ${_cross_compile_arg} --enable-shared=no --enable-cxx=yes --enable-static=yes "--prefix=${DESTDIR}" ${_gmp_build_tgt}
BUILD_COMMAND make -j
INSTALL_COMMAND make install
)

View File

@@ -25,12 +25,13 @@ else ()
endif ()
ExternalProject_Add(dep_MPFR
URL https://www.mpfr.org/mpfr-4.2.2/mpfr-4.2.2.tar.bz2
URL https://ftp.gnu.org/gnu/mpfr/mpfr-4.2.2.tar.bz2
https://www.mpfr.org/mpfr-4.2.2/mpfr-4.2.2.tar.bz2
URL_HASH SHA256=9ad62c7dc910303cd384ff8f1f4767a655124980bb6d8650fe62c815a231bb7b
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/MPFR
BUILD_IN_SOURCE ON
CONFIGURE_COMMAND autoreconf -f -i &&
env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure ${_cross_compile_arg} --prefix=${DESTDIR} --enable-shared=no --enable-static=yes --with-gmp=${DESTDIR} ${_gmp_build_tgt}
env "CC=${CMAKE_C_COMPILER}" "CXX=${CMAKE_CXX_COMPILER}" "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" "LDFLAGS=${CMAKE_EXE_LINKER_FLAGS}" ./configure ${_cross_compile_arg} --prefix=${DESTDIR} --enable-shared=no --enable-static=yes --with-gmp=${DESTDIR} ${_gmp_build_tgt}
BUILD_COMMAND make -j
INSTALL_COMMAND make install
DEPENDS dep_GMP

View File

@@ -16,6 +16,7 @@ orcaslicer_add_cmake_project(OCCT
#DEPENDS dep_Boost
DEPENDS ${FREETYPE_PKG}
CMAKE_ARGS
-DCMAKE_CXX_STANDARD=17
-DBUILD_LIBRARY_TYPE=${library_build_type}
-DUSE_TK=OFF
-DUSE_TBB=OFF

54
deps/OpenCV/0001-vs.patch vendored Normal file
View File

@@ -0,0 +1,54 @@
diff --git a/cmake/OpenCVDetectCXXCompiler.cmake b/cmake/OpenCVDetectCXXCompiler.cmake
index 7f229cde96..d8e20f8fe9 100644
--- a/cmake/OpenCVDetectCXXCompiler.cmake
+++ b/cmake/OpenCVDetectCXXCompiler.cmake
@@ -171,8 +171,10 @@ elseif(MSVC)
set(OpenCV_RUNTIME vc15)
elseif(MSVC_VERSION MATCHES "^192[0-9]$")
set(OpenCV_RUNTIME vc16)
- elseif(MSVC_VERSION MATCHES "^193[0-9]$")
+ elseif(MSVC_VERSION MATCHES "^19[34][0-9]$")
set(OpenCV_RUNTIME vc17)
+ elseif(MSVC_VERSION MATCHES "^195[0-9]$")
+ set(OpenCV_RUNTIME vc18)
else()
message(WARNING "OpenCV does not recognize MSVC_VERSION \"${MSVC_VERSION}\". Cannot set OpenCV_RUNTIME")
endif()
diff --git a/cmake/templates/OpenCVConfig.root-WIN32.cmake.in b/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
index b0f254ebe8..8f0178b0ae 100644
--- a/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
+++ b/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
@@ -137,7 +137,7 @@ elseif(MSVC)
set(OpenCV_RUNTIME vc14) # selecting previous compatible runtime version
endif()
endif()
- elseif(MSVC_VERSION MATCHES "^193[0-9]$")
+ elseif(MSVC_VERSION MATCHES "^19[34][0-9]$")
set(OpenCV_RUNTIME vc17)
check_one_config(has_VS2022)
if(NOT has_VS2022)
@@ -151,6 +151,24 @@ elseif(MSVC)
endif()
endif()
endif()
+ elseif(MSVC_VERSION MATCHES "^195[0-9]$")
+ set(OpenCV_RUNTIME vc18)
+ check_one_config(has_VS2026)
+ if(NOT has_VS2026)
+ set(OpenCV_RUNTIME vc17)
+ check_one_config(has_VS2022)
+ if(NOT has_VS2022)
+ set(OpenCV_RUNTIME vc16)
+ check_one_config(has_VS2019)
+ if(NOT has_VS2019)
+ set(OpenCV_RUNTIME vc15) # selecting previous compatible runtime version
+ check_one_config(has_VS2017)
+ if(NOT has_VS2017)
+ set(OpenCV_RUNTIME vc14) # selecting previous compatible runtime version
+ endif()
+ endif()
+ endif()
+ endif()
endif()
elseif(MINGW)
set(OpenCV_RUNTIME mingw)

View File

@@ -1,52 +0,0 @@
From 6fb3f6333150a777e835fc7c48e49750591bf7fe Mon Sep 17 00:00:00 2001
From: Benjamin Buch <bebuch@users.noreply.github.com>
Date: Thu, 23 May 2024 16:05:19 +0200
Subject: [PATCH] Support VS 2022 17.1x.y
With 17.10.0 the MSVC toolset was set to 19.40.x which breaks the compatibility test in the OpenCV's CMake Config files.
---
cmake/templates/OpenCVConfig.root-WIN32.cmake.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/cmake/templates/OpenCVConfig.root-WIN32.cmake.in b/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
index b0f254ebe8..62e36272f3 100644
--- a/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
+++ b/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
@@ -137,7 +137,7 @@ elseif(MSVC)
set(OpenCV_RUNTIME vc14) # selecting previous compatible runtime version
endif()
endif()
- elseif(MSVC_VERSION MATCHES "^193[0-9]$")
+ elseif(MSVC_VERSION MATCHES "^19[34][0-9]$")
set(OpenCV_RUNTIME vc17)
check_one_config(has_VS2022)
if(NOT has_VS2022)
--
2.45.2.windows.1
From f85818ba6f9031c450475a7453dee0acce31a881 Mon Sep 17 00:00:00 2001
From: Benjamin Buch <bebuch@users.noreply.github.com>
Date: Fri, 24 May 2024 11:10:09 +0200
Subject: [PATCH] Support VS 2022 17.1x.y in OpenCVDetectCXXCompiler.cmake
With 17.10.0 the MSVC toolset was set to 19.40.x which breaks the compatibility test in the OpenCV's CMake Config files.
---
cmake/OpenCVDetectCXXCompiler.cmake | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/cmake/OpenCVDetectCXXCompiler.cmake b/cmake/OpenCVDetectCXXCompiler.cmake
index 1743aca11f..448afd46ea 100644
--- a/cmake/OpenCVDetectCXXCompiler.cmake
+++ b/cmake/OpenCVDetectCXXCompiler.cmake
@@ -176,7 +176,7 @@ elseif(MSVC)
set(OpenCV_RUNTIME vc15)
elseif(MSVC_VERSION MATCHES "^192[0-9]$")
set(OpenCV_RUNTIME vc16)
- elseif(MSVC_VERSION MATCHES "^193[0-9]$")
+ elseif(MSVC_VERSION MATCHES "^19[34][0-9]$")
set(OpenCV_RUNTIME vc17)
else()
message(WARNING "OpenCV does not recognize MSVC_VERSION \"${MSVC_VERSION}\". Cannot set OpenCV_RUNTIME")
--
2.45.2.windows.1

View File

@@ -11,7 +11,7 @@ endif ()
orcaslicer_add_cmake_project(OpenCV
URL https://github.com/opencv/opencv/archive/refs/tags/4.6.0.tar.gz
URL_HASH SHA256=1ec1cba65f9f20fe5a41fda1586e01c70ea0c9a6d7b67c9e13edf0cfe2239277
PATCH_COMMAND git apply ${OpenCV_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-vs2022.patch ${CMAKE_CURRENT_LIST_DIR}/0002-clang19-macos.patch
PATCH_COMMAND git apply ${OpenCV_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-vs.patch ${CMAKE_CURRENT_LIST_DIR}/0002-clang19-macos.patch
CMAKE_ARGS
-DBUILD_SHARED_LIBS=0
-DBUILD_PERE_TESTS=OFF
@@ -53,6 +53,7 @@ orcaslicer_add_cmake_project(OpenCV
-DWITH_OPENJPEG=OFF
-DWITH_QUIRC=OFF
-DWITH_VTK=OFF
-DWITH_JPEG=OFF
-DWITH_WEBP=OFF
-DENABLE_PRECOMPILED_HEADERS=OFF
-DINSTALL_TESTS=OFF

View File

@@ -8,7 +8,7 @@ else()
if(WIN32)
set(_cross_arch "VC-WIN64A")
elseif(APPLE)
set(_cross_arch "darwin64-arm64-cc")
set(_cross_arch "darwin64-${CMAKE_OSX_ARCHITECTURES}-cc")
endif()
endif()
@@ -21,7 +21,7 @@ else()
if(APPLE)
set(_conf_cmd export MACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} && ./Configure -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET})
else()
set(_conf_cmd "./config")
set(_conf_cmd env "CC=${CMAKE_C_COMPILER}" "LDFLAGS=${CMAKE_EXE_LINKER_FLAGS}" "./config")
endif()
set(_cross_comp_prefix_line "")
set(_make_cmd make -j${NPROC})

View File

@@ -1,11 +1,11 @@
include(GNUInstallDirs)
orcaslicer_add_cmake_project(Qhull
URL "https://github.com/qhull/qhull/archive/v8.0.1.zip"
URL_HASH SHA256=5287f5edd6a0372588f5d6640799086a4033d89d19711023ef8229dd9301d69b
URL "https://github.com/qhull/qhull/archive/v8.0.2.zip"
URL_HASH SHA256=a378e9a39e718e289102c20d45632f873bfdc58a7a5f924246ea4b176e185f1e
CMAKE_ARGS
-DINCLUDE_INSTALL_DIR=${CMAKE_INSTALL_INCLUDEDIR}
)
if (MSVC)
add_debug_dep(dep_Qhull)
endif ()
endif ()

2
deps/TBB/TBB.cmake vendored
View File

@@ -1,4 +1,4 @@
if (FLATPAK)
if (FLATPAK AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
set(_patch_command ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/GNU.cmake ./cmake/compilers/GNU.cmake)
else()
set(_patch_command "")

View File

@@ -19,6 +19,10 @@ elseif (MSVC_VERSION LESS 1950)
# 1930-1949 = VS 17.0 (v143 toolset)
set(DEP_VS_VER "17")
set(DEP_BOOST_TOOLSET "msvc-14.3")
elseif (MSVC_VERSION LESS 1960)
# 1950-1959 = VS 18.0 (v145 toolset)
set(DEP_VS_VER "18")
set(DEP_BOOST_TOOLSET "msvc-14.5")
else ()
message(FATAL_ERROR "Unsupported MSVC version")
endif ()

View File

@@ -1,6 +1,6 @@
set(_wx_toolkit "")
set(_wx_private_font "-DwxUSE_PRIVATE_FONTS=1")
set(_wx_debug_postfix "")
set(_wx_shared -DwxBUILD_SHARED=OFF)
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(_gtk_ver 2)
@@ -9,6 +9,10 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
endif ()
set(_wx_toolkit "-DwxBUILD_TOOLKIT=gtk${_gtk_ver}")
if (FLATPAK)
set(_wx_debug_postfix "d")
set(_wx_shared -DwxBUILD_SHARED=ON -DBUILD_SHARED_LIBS:BOOL=ON)
endif ()
endif()
if (MSVC)
@@ -17,34 +21,29 @@ else ()
set(_wx_edge "-DwxUSE_WEBVIEW_EDGE=OFF")
endif ()
# Note: The flatpak build builds wxwidgets separately due to CI size constraints.
# ANY CHANGES MADE IN HERE MUST ALSO BE REFLECTED IN `scripts/flatpak/io.github.SoftFever.OrcaSlicer.yml`.
# ** THIS INCLUDES BUILD ARGS. **
# ...if you can find a way around this size limitation, be my guest.
orcaslicer_add_cmake_project(
wxWidgets
GIT_REPOSITORY "https://github.com/SoftFever/Orca-deps-wxWidgets"
GIT_TAG v3.3.2
GIT_SHALLOW ON
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} ${JPEG_PKG}
CMAKE_ARGS
-DwxBUILD_PRECOMP=ON
${_wx_toolkit}
"-DCMAKE_DEBUG_POSTFIX:STRING="
"-DCMAKE_DEBUG_POSTFIX:STRING=${_wx_debug_postfix}"
-DwxBUILD_DEBUG_LEVEL=0
-DwxBUILD_SAMPLES=OFF
-DwxBUILD_SHARED=OFF
${_wx_shared}
-DwxUSE_MEDIACTRL=ON
-DwxUSE_DETECT_SM=OFF
-DwxUSE_UNICODE=ON
${_wx_private_font}
-DwxUSE_PRIVATE_FONTS=ON
-DwxUSE_OPENGL=ON
-DwxUSE_GLCANVAS_EGL=OFF
-DwxUSE_WEBREQUEST=ON
-DwxUSE_WEBVIEW=ON
${_wx_edge}
-DwxUSE_WEBVIEW_IE=OFF
-DwxUSE_REGEX=builtin
-DwxUSE_LIBXPM=builtin
-DwxUSE_LIBSDL=OFF
-DwxUSE_XTEST=OFF
-DwxUSE_STC=OFF
@@ -53,8 +52,30 @@ orcaslicer_add_cmake_project(
-DwxUSE_ZLIB=sys
-DwxUSE_LIBJPEG=sys
-DwxUSE_LIBTIFF=OFF
-DwxUSE_NANOSVG=OFF
-DwxUSE_EXPAT=sys
-DwxUSE_NANOSVG=OFF
)
# wxWidgets 3.3 cmake install doesn't include private headers.
# OrcaSlicer uses some of the private headers (for accessibility support).
# Copy the private headers directory after install.
if(MSVC)
set(_wx_inc_dest ${DESTDIR}/include/wx)
else()
set(_wx_inc_dest ${DESTDIR}/include/wx-3.3/wx)
endif()
ExternalProject_Add_Step(dep_wxWidgets copy_private_headers
DEPENDEES install
COMMENT "Copying wxWidgets private headers"
COMMAND ${CMAKE_COMMAND} -E copy_directory
<SOURCE_DIR>/include/wx/private
${_wx_inc_dest}/private
COMMAND ${CMAKE_COMMAND} -E copy_directory
<SOURCE_DIR>/include/wx/generic/private
${_wx_inc_dest}/generic/private
COMMAND ${CMAKE_COMMAND} -E copy_directory
<SOURCE_DIR>/include/wx/gtk/private
${_wx_inc_dest}/gtk/private
)
if (MSVC)

View File

@@ -6,16 +6,17 @@ project(deps_src)
# Header-only libraries (INTERFACE)
add_subdirectory(agg)
add_subdirectory(ankerl)
add_subdirectory(earcut)
add_subdirectory(fast_float)
add_subdirectory(nanosvg)
add_subdirectory(nlohmann)
add_subdirectory(spline) # Header-only spline library
add_subdirectory(stb_dxt) # Header-only STB DXT compression library
# Static libraries
add_subdirectory(Shiny)
add_subdirectory(admesh)
add_subdirectory(clipper)
add_subdirectory(clipper2)
add_subdirectory(expat)
add_subdirectory(glu-libtess)
add_subdirectory(hidapi)
@@ -25,6 +26,7 @@ add_subdirectory(imguizmo)
add_subdirectory(libigl)
add_subdirectory(libnest2d)
add_subdirectory(mcut)
add_subdirectory(md4c)
add_subdirectory(miniz)
add_subdirectory(minilzo)
add_subdirectory(qhull)

View File

@@ -24,18 +24,7 @@ target_link_libraries(your_target PRIVATE semver::semver)
target_link_libraries(your_target PRIVATE hints)
```
### 3. **spline** (Interface Library)
- **Type**: Interface library (header-only)
- **Target**: `spline` or `spline::spline`
- **Headers**: `spline.h`
- **Usage**:
```cmake
target_link_libraries(your_target PRIVATE spline)
# or
target_link_libraries(your_target PRIVATE spline::spline)
```
### 4. **stb_dxt** (Interface Library)
### 3. **stb_dxt** (Interface Library)
- **Type**: Interface library (header-only)
- **Target**: `stb_dxt` or `stb_dxt::stb_dxt`
- **Headers**: `stb_dxt.h`
@@ -53,10 +42,9 @@ target_link_libraries(your_target PRIVATE stb_dxt::stb_dxt)
1. **In your CMakeLists.txt**, simply link the library:
```cmake
add_executable(my_app main.cpp)
target_link_libraries(my_app
PRIVATE
target_link_libraries(my_app
PRIVATE
semver::semver # For version parsing
spline::spline # For spline interpolation
stb_dxt::stb_dxt # For DXT texture compression
hints # For hints functionality
)
@@ -67,9 +55,6 @@ target_link_libraries(my_app
// For semver
#include <semver.h>
// For spline
#include <spline.h>
// For stb_dxt
#include <stb_dxt.h>
@@ -100,7 +85,6 @@ target_link_libraries(mycomponent
PUBLIC
semver::semver # Version handling is part of public API
PRIVATE
spline::spline # Used internally for interpolation
stb_dxt::stb_dxt # Used internally for texture compression
)

View File

@@ -0,0 +1,54 @@
cmake_minimum_required(VERSION 3.10)
project(Clipper2 VERSION 1.5.2 LANGUAGES C CXX)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set_property(GLOBAL PROPERTY USE_FOLDERS OFF)
option(BUILD_SHARED_LIBS "Build shared libs" OFF)
include(GNUInstallDirs)
set(CLIPPER2_INC
Clipper2Lib/include/clipper2/clipper.h
Clipper2Lib/include/clipper2/clipper.core.h
Clipper2Lib/include/clipper2/clipper.engine.h
Clipper2Lib/include/clipper2/clipper.export.h
Clipper2Lib/include/clipper2/clipper.minkowski.h
Clipper2Lib/include/clipper2/clipper.offset.h
Clipper2Lib/include/clipper2/clipper.rectclip.h
Clipper2Lib/include/clipper2/clipper2_z.hpp
)
set(CLIPPER2_SRC
Clipper2Lib/src/clipper.engine.cpp
Clipper2Lib/src/clipper.offset.cpp
Clipper2Lib/src/clipper.rectclip.cpp
Clipper2Lib/src/clipper2_z.cpp
)
# 2d version of Clipper2
add_library(Clipper2 ${CLIPPER2_INC} ${CLIPPER2_SRC})
target_include_directories(Clipper2
PUBLIC Clipper2Lib/include
)
if (WIN32)
target_compile_options(Clipper2 PRIVATE /W4 /WX)
else()
target_compile_options(Clipper2 PRIVATE -Wall -Wextra -Wpedantic -Werror)
target_link_libraries(Clipper2 PUBLIC -lm)
if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 14.1)
target_compile_options(Clipper2 PRIVATE -Wno-error=template-id-cdtor)
endif()
endif()
set_target_properties(Clipper2 PROPERTIES FOLDER Libraries
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
PUBLIC_HEADER "${CLIPPER2_INC}"
)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,646 @@
/*******************************************************************************
* Author : Angus Johnson *
* Date : 17 September 2024 *
* Website : https://www.angusj.com *
* Copyright : Angus Johnson 2010-2024 *
* Purpose : This is the main polygon clipping module *
* License : https://www.boost.org/LICENSE_1_0.txt *
*******************************************************************************/
#ifndef CLIPPER_ENGINE_H
#define CLIPPER_ENGINE_H
#include "clipper2/clipper.core.h"
#include <queue>
#include <functional>
#include <memory>
#ifdef USINGZ
namespace Clipper2Lib_Z {
#else
namespace Clipper2Lib {
#endif
struct Scanline;
struct IntersectNode;
struct Active;
struct Vertex;
struct LocalMinima;
struct OutRec;
struct HorzSegment;
//Note: all clipping operations except for Difference are commutative.
enum class ClipType { NoClip, Intersection, Union, Difference, Xor };
enum class PathType { Subject, Clip };
enum class JoinWith { NoJoin, Left, Right };
enum class VertexFlags : uint32_t {
Empty = 0, OpenStart = 1, OpenEnd = 2, LocalMax = 4, LocalMin = 8
};
constexpr enum VertexFlags operator &(enum VertexFlags a, enum VertexFlags b)
{
return (enum VertexFlags)(uint32_t(a) & uint32_t(b));
}
constexpr enum VertexFlags operator |(enum VertexFlags a, enum VertexFlags b)
{
return (enum VertexFlags)(uint32_t(a) | uint32_t(b));
}
struct Vertex {
Point64 pt;
Vertex* next = nullptr;
Vertex* prev = nullptr;
VertexFlags flags = VertexFlags::Empty;
};
struct OutPt {
Point64 pt;
OutPt* next = nullptr;
OutPt* prev = nullptr;
OutRec* outrec;
HorzSegment* horz = nullptr;
OutPt(const Point64& pt_, OutRec* outrec_): pt(pt_), outrec(outrec_) {
next = this;
prev = this;
}
};
class PolyPath;
class PolyPath64;
class PolyPathD;
using PolyTree64 = PolyPath64;
using PolyTreeD = PolyPathD;
struct OutRec;
typedef std::vector<OutRec*> OutRecList;
//OutRec: contains a path in the clipping solution. Edges in the AEL will
//have OutRec pointers assigned when they form part of the clipping solution.
struct OutRec {
size_t idx = 0;
OutRec* owner = nullptr;
Active* front_edge = nullptr;
Active* back_edge = nullptr;
OutPt* pts = nullptr;
PolyPath* polypath = nullptr;
OutRecList* splits = nullptr;
OutRec* recursive_split = nullptr;
Rect64 bounds = {};
Path64 path;
bool is_open = false;
~OutRec() {
if (splits) delete splits;
// nb: don't delete the split pointers
// as these are owned by ClipperBase's outrec_list_
};
};
///////////////////////////////////////////////////////////////////
//Important: UP and DOWN here are premised on Y-axis positive down
//displays, which is the orientation used in Clipper's development.
///////////////////////////////////////////////////////////////////
struct Active {
Point64 bot;
Point64 top;
int64_t curr_x = 0; //current (updated at every new scanline)
double dx = 0.0;
int wind_dx = 1; //1 or -1 depending on winding direction
int wind_cnt = 0;
int wind_cnt2 = 0; //winding count of the opposite polytype
OutRec* outrec = nullptr;
//AEL: 'active edge list' (Vatti's AET - active edge table)
// a linked list of all edges (from left to right) that are present
// (or 'active') within the current scanbeam (a horizontal 'beam' that
// sweeps from bottom to top over the paths in the clipping operation).
Active* prev_in_ael = nullptr;
Active* next_in_ael = nullptr;
//SEL: 'sorted edge list' (Vatti's ST - sorted table)
// linked list used when sorting edges into their new positions at the
// top of scanbeams, but also (re)used to process horizontals.
Active* prev_in_sel = nullptr;
Active* next_in_sel = nullptr;
Active* jump = nullptr;
Vertex* vertex_top = nullptr;
LocalMinima* local_min = nullptr; // the bottom of an edge 'bound' (also Vatti)
bool is_left_bound = false;
JoinWith join_with = JoinWith::NoJoin;
};
struct LocalMinima {
Vertex* vertex;
PathType polytype;
bool is_open;
LocalMinima(Vertex* v, PathType pt, bool open) :
vertex(v), polytype(pt), is_open(open){}
};
struct IntersectNode {
Point64 pt;
Active* edge1;
Active* edge2;
IntersectNode() : pt(Point64(0,0)), edge1(NULL), edge2(NULL) {}
IntersectNode(Active* e1, Active* e2, Point64& pt_) :
pt(pt_), edge1(e1), edge2(e2) {}
};
struct HorzSegment {
OutPt* left_op;
OutPt* right_op = nullptr;
bool left_to_right = true;
HorzSegment() : left_op(nullptr) { }
explicit HorzSegment(OutPt* op) : left_op(op) { }
};
struct HorzJoin {
OutPt* op1 = nullptr;
OutPt* op2 = nullptr;
HorzJoin() {};
explicit HorzJoin(OutPt* ltr, OutPt* rtl) : op1(ltr), op2(rtl) { }
};
#ifdef USINGZ
typedef std::function<void(const Point64& e1bot, const Point64& e1top,
const Point64& e2bot, const Point64& e2top, Point64& pt)> ZCallback64;
typedef std::function<void(const PointD& e1bot, const PointD& e1top,
const PointD& e2bot, const PointD& e2top, PointD& pt)> ZCallbackD;
#endif
typedef std::vector<HorzSegment> HorzSegmentList;
typedef std::unique_ptr<LocalMinima> LocalMinima_ptr;
typedef std::vector<LocalMinima_ptr> LocalMinimaList;
typedef std::vector<IntersectNode> IntersectNodeList;
// ReuseableDataContainer64 ------------------------------------------------
class ReuseableDataContainer64 {
private:
friend class ClipperBase;
LocalMinimaList minima_list_;
std::vector<Vertex*> vertex_lists_;
void AddLocMin(Vertex& vert, PathType polytype, bool is_open);
public:
virtual ~ReuseableDataContainer64();
void Clear();
void AddPaths(const Paths64& paths, PathType polytype, bool is_open);
};
// ClipperBase -------------------------------------------------------------
class ClipperBase {
private:
ClipType cliptype_ = ClipType::NoClip;
FillRule fillrule_ = FillRule::EvenOdd;
FillRule fillpos = FillRule::Positive;
int64_t bot_y_ = 0;
bool minima_list_sorted_ = false;
bool using_polytree_ = false;
Active* actives_ = nullptr;
Active *sel_ = nullptr;
LocalMinimaList minima_list_; //pointers in case of memory reallocs
LocalMinimaList::iterator current_locmin_iter_;
std::vector<Vertex*> vertex_lists_;
std::priority_queue<int64_t> scanline_list_;
IntersectNodeList intersect_nodes_;
HorzSegmentList horz_seg_list_;
std::vector<HorzJoin> horz_join_list_;
void Reset();
inline void InsertScanline(int64_t y);
inline bool PopScanline(int64_t &y);
inline bool PopLocalMinima(int64_t y, LocalMinima*& local_minima);
void DisposeAllOutRecs();
void DisposeVerticesAndLocalMinima();
void DeleteEdges(Active*& e);
inline void AddLocMin(Vertex &vert, PathType polytype, bool is_open);
bool IsContributingClosed(const Active &e) const;
inline bool IsContributingOpen(const Active &e) const;
void SetWindCountForClosedPathEdge(Active &edge);
void SetWindCountForOpenPathEdge(Active &e);
void InsertLocalMinimaIntoAEL(int64_t bot_y);
void InsertLeftEdge(Active &e);
inline void PushHorz(Active &e);
inline bool PopHorz(Active *&e);
inline OutPt* StartOpenPath(Active &e, const Point64& pt);
inline void UpdateEdgeIntoAEL(Active *e);
void IntersectEdges(Active &e1, Active &e2, const Point64& pt);
inline void DeleteFromAEL(Active &e);
inline void AdjustCurrXAndCopyToSEL(const int64_t top_y);
void DoIntersections(const int64_t top_y);
void AddNewIntersectNode(Active &e1, Active &e2, const int64_t top_y);
bool BuildIntersectList(const int64_t top_y);
void ProcessIntersectList();
void SwapPositionsInAEL(Active& edge1, Active& edge2);
OutRec* NewOutRec();
OutPt* AddOutPt(const Active &e, const Point64& pt);
OutPt* AddLocalMinPoly(Active &e1, Active &e2,
const Point64& pt, bool is_new = false);
OutPt* AddLocalMaxPoly(Active &e1, Active &e2, const Point64& pt);
void DoHorizontal(Active &horz);
bool ResetHorzDirection(const Active &horz, const Vertex* max_vertex,
int64_t &horz_left, int64_t &horz_right);
void DoTopOfScanbeam(const int64_t top_y);
Active *DoMaxima(Active &e);
void JoinOutrecPaths(Active &e1, Active &e2);
void FixSelfIntersects(OutRec* outrec);
void DoSplitOp(OutRec* outRec, OutPt* splitOp);
inline void AddTrialHorzJoin(OutPt* op);
void ConvertHorzSegsToJoins();
void ProcessHorzJoins();
void Split(Active& e, const Point64& pt);
inline void CheckJoinLeft(Active& e,
const Point64& pt, bool check_curr_x = false);
inline void CheckJoinRight(Active& e,
const Point64& pt, bool check_curr_x = false);
protected:
bool preserve_collinear_ = true;
bool reverse_solution_ = false;
int error_code_ = 0;
bool has_open_paths_ = false;
bool succeeded_ = true;
OutRecList outrec_list_; //pointers in case list memory reallocated
bool ExecuteInternal(ClipType ct, FillRule ft, bool use_polytrees);
void CleanCollinear(OutRec* outrec);
bool CheckBounds(OutRec* outrec);
bool CheckSplitOwner(OutRec* outrec, OutRecList* splits);
void RecursiveCheckOwners(OutRec* outrec, PolyPath* polypath);
#ifdef USINGZ
ZCallback64 zCallback_ = nullptr;
void SetZ(const Active& e1, const Active& e2, Point64& pt);
#endif
void CleanUp(); // unlike Clear, CleanUp preserves added paths
void AddPath(const Path64& path, PathType polytype, bool is_open);
void AddPaths(const Paths64& paths, PathType polytype, bool is_open);
public:
virtual ~ClipperBase();
int ErrorCode() const { return error_code_; };
void PreserveCollinear(bool val) { preserve_collinear_ = val; };
bool PreserveCollinear() const { return preserve_collinear_;};
void ReverseSolution(bool val) { reverse_solution_ = val; };
bool ReverseSolution() const { return reverse_solution_; };
void Clear();
void AddReuseableData(const ReuseableDataContainer64& reuseable_data);
#ifdef USINGZ
int64_t DefaultZ = 0;
#endif
};
// PolyPath / PolyTree --------------------------------------------------------
//PolyTree: is intended as a READ-ONLY data structure for CLOSED paths returned
//by clipping operations. While this structure is more complex than the
//alternative Paths structure, it does preserve path 'ownership' - ie those
//paths that contain (or own) other paths. This will be useful to some users.
class PolyPath {
protected:
PolyPath* parent_;
public:
PolyPath(PolyPath* parent = nullptr): parent_(parent){}
virtual ~PolyPath() {};
//https://en.cppreference.com/w/cpp/language/rule_of_three
PolyPath(const PolyPath&) = delete;
PolyPath& operator=(const PolyPath&) = delete;
unsigned Level() const
{
unsigned result = 0;
const PolyPath* p = parent_;
while (p) { ++result; p = p->parent_; }
return result;
}
virtual PolyPath* AddChild(const Path64& path) = 0;
virtual void Clear() = 0;
virtual size_t Count() const { return 0; }
const PolyPath* Parent() const { return parent_; }
bool IsHole() const
{
unsigned lvl = Level();
//Even levels except level 0
return lvl && !(lvl & 1);
}
template<typename T>
static double Clipper2LibArea(const Path<T> &poly)
{
#ifdef USINGZ
return Clipper2Lib_Z::Area<T>(poly);
#else
return Clipper2Lib::Area<T>(poly);
#endif
}
};
typedef typename std::vector<std::unique_ptr<PolyPath64>> PolyPath64List;
typedef typename std::vector<std::unique_ptr<PolyPathD>> PolyPathDList;
class PolyPath64 : public PolyPath {
private:
PolyPath64List childs_;
Path64 polygon_;
public:
explicit PolyPath64(PolyPath64* parent = nullptr) : PolyPath(parent) {}
explicit PolyPath64(PolyPath64* parent, const Path64& path) : PolyPath(parent) { polygon_ = path; }
~PolyPath64() {
childs_.resize(0);
}
PolyPath64* operator [] (size_t index) const
{
return childs_[index].get(); //std::unique_ptr
}
PolyPath64* Child(size_t index) const
{
return childs_[index].get();
}
PolyPath64List::const_iterator begin() const { return childs_.cbegin(); }
PolyPath64List::const_iterator end() const { return childs_.cend(); }
PolyPath64* AddChild(const Path64& path) override
{
return childs_.emplace_back(std::make_unique<PolyPath64>(this, path)).get();
}
void Clear() override
{
childs_.resize(0);
}
size_t Count() const override
{
return childs_.size();
}
const Path64& Polygon() const { return polygon_; };
double Area() const
{
return std::accumulate(childs_.cbegin(), childs_.cend(), Clipper2LibArea<int64_t>(polygon_),
[](double a, const auto& child) {return a + child->Area(); });
}
};
class PolyPathD : public PolyPath {
private:
PolyPathDList childs_;
double scale_;
PathD polygon_;
public:
explicit PolyPathD(PolyPathD* parent = nullptr) : PolyPath(parent)
{
scale_ = parent ? parent->scale_ : 1.0;
}
explicit PolyPathD(PolyPathD* parent, const Path64& path) : PolyPath(parent)
{
scale_ = parent ? parent->scale_ : 1.0;
int error_code = 0;
polygon_ = ScalePath<double, int64_t>(path, scale_, error_code);
}
explicit PolyPathD(PolyPathD* parent, const PathD& path) : PolyPath(parent)
{
scale_ = parent ? parent->scale_ : 1.0;
polygon_ = path;
}
~PolyPathD() {
childs_.resize(0);
}
PolyPathD* operator [] (size_t index) const
{
return childs_[index].get();
}
PolyPathD* Child(size_t index) const
{
return childs_[index].get();
}
PolyPathDList::const_iterator begin() const { return childs_.cbegin(); }
PolyPathDList::const_iterator end() const { return childs_.cend(); }
void SetScale(double value) { scale_ = value; }
double Scale() const { return scale_; }
PolyPathD* AddChild(const Path64& path) override
{
return childs_.emplace_back(std::make_unique<PolyPathD>(this, path)).get();
}
PolyPathD* AddChild(const PathD& path)
{
return childs_.emplace_back(std::make_unique<PolyPathD>(this, path)).get();
}
void Clear() override
{
childs_.resize(0);
}
size_t Count() const override
{
return childs_.size();
}
const PathD& Polygon() const { return polygon_; };
double Area() const
{
return std::accumulate(childs_.begin(), childs_.end(), Clipper2LibArea<double>(polygon_),
[](double a, const auto& child) {return a + child->Area(); });
}
};
class Clipper64 : public ClipperBase
{
private:
void BuildPaths64(Paths64& solutionClosed, Paths64* solutionOpen);
void BuildTree64(PolyPath64& polytree, Paths64& open_paths);
public:
#ifdef USINGZ
void SetZCallback(ZCallback64 cb) { zCallback_ = cb; }
#endif
void AddSubject(const Paths64& subjects)
{
AddPaths(subjects, PathType::Subject, false);
}
void AddOpenSubject(const Paths64& open_subjects)
{
AddPaths(open_subjects, PathType::Subject, true);
}
void AddClip(const Paths64& clips)
{
AddPaths(clips, PathType::Clip, false);
}
bool Execute(ClipType clip_type,
FillRule fill_rule, Paths64& closed_paths)
{
Paths64 dummy;
return Execute(clip_type, fill_rule, closed_paths, dummy);
}
bool Execute(ClipType clip_type, FillRule fill_rule,
Paths64& closed_paths, Paths64& open_paths)
{
closed_paths.clear();
open_paths.clear();
if (ExecuteInternal(clip_type, fill_rule, false))
BuildPaths64(closed_paths, &open_paths);
CleanUp();
return succeeded_;
}
bool Execute(ClipType clip_type, FillRule fill_rule, PolyTree64& polytree)
{
Paths64 dummy;
return Execute(clip_type, fill_rule, polytree, dummy);
}
bool Execute(ClipType clip_type,
FillRule fill_rule, PolyTree64& polytree, Paths64& open_paths)
{
if (ExecuteInternal(clip_type, fill_rule, true))
{
open_paths.clear();
polytree.Clear();
BuildTree64(polytree, open_paths);
}
CleanUp();
return succeeded_;
}
};
class ClipperD : public ClipperBase {
private:
double scale_ = 1.0, invScale_ = 1.0;
#ifdef USINGZ
ZCallbackD zCallbackD_ = nullptr;
#endif
void BuildPathsD(PathsD& solutionClosed, PathsD* solutionOpen);
void BuildTreeD(PolyPathD& polytree, PathsD& open_paths);
public:
explicit ClipperD(int precision = 2) : ClipperBase()
{
CheckPrecisionRange(precision, error_code_);
// to optimize scaling / descaling precision
// set the scale to a power of double's radix (2) (#25)
scale_ = std::pow(std::numeric_limits<double>::radix,
std::ilogb(std::pow(10, precision)) + 1);
invScale_ = 1 / scale_;
}
#ifdef USINGZ
void SetZCallback(ZCallbackD cb) { zCallbackD_ = cb; };
void ZCB(const Point64& e1bot, const Point64& e1top,
const Point64& e2bot, const Point64& e2top, Point64& pt)
{
// de-scale (x & y)
// temporarily convert integers to their initial float values
// this will slow clipping marginally but will make it much easier
// to understand the coordinates passed to the callback function
PointD tmp = PointD(pt) * invScale_;
PointD e1b = PointD(e1bot) * invScale_;
PointD e1t = PointD(e1top) * invScale_;
PointD e2b = PointD(e2bot) * invScale_;
PointD e2t = PointD(e2top) * invScale_;
zCallbackD_(e1b,e1t, e2b, e2t, tmp);
pt.z = tmp.z; // only update 'z'
};
void CheckCallback()
{
if(zCallbackD_)
// if the user defined float point callback has been assigned
// then assign the proxy callback function
ClipperBase::zCallback_ =
std::bind(&ClipperD::ZCB, this, std::placeholders::_1,
std::placeholders::_2, std::placeholders::_3,
std::placeholders::_4, std::placeholders::_5);
else
ClipperBase::zCallback_ = nullptr;
}
#endif
void AddSubject(const PathsD& subjects)
{
AddPaths(ScalePaths<int64_t, double>(subjects, scale_, error_code_), PathType::Subject, false);
}
void AddOpenSubject(const PathsD& open_subjects)
{
AddPaths(ScalePaths<int64_t, double>(open_subjects, scale_, error_code_), PathType::Subject, true);
}
void AddClip(const PathsD& clips)
{
AddPaths(ScalePaths<int64_t, double>(clips, scale_, error_code_), PathType::Clip, false);
}
bool Execute(ClipType clip_type, FillRule fill_rule, PathsD& closed_paths)
{
PathsD dummy;
return Execute(clip_type, fill_rule, closed_paths, dummy);
}
bool Execute(ClipType clip_type,
FillRule fill_rule, PathsD& closed_paths, PathsD& open_paths)
{
#ifdef USINGZ
CheckCallback();
#endif
if (ExecuteInternal(clip_type, fill_rule, false))
{
BuildPathsD(closed_paths, &open_paths);
}
CleanUp();
return succeeded_;
}
bool Execute(ClipType clip_type, FillRule fill_rule, PolyTreeD& polytree)
{
PathsD dummy;
return Execute(clip_type, fill_rule, polytree, dummy);
}
bool Execute(ClipType clip_type,
FillRule fill_rule, PolyTreeD& polytree, PathsD& open_paths)
{
#ifdef USINGZ
CheckCallback();
#endif
if (ExecuteInternal(clip_type, fill_rule, true))
{
polytree.Clear();
polytree.SetScale(invScale_);
open_paths.clear();
BuildTreeD(polytree, open_paths);
}
CleanUp();
return succeeded_;
}
};
} // namespace
#endif // CLIPPER_ENGINE_H

View File

@@ -0,0 +1,836 @@
/*******************************************************************************
* Author : Angus Johnson *
* Date : 24 January 2025 *
* Website : https://www.angusj.com *
* Copyright : Angus Johnson 2010-2025 *
* Purpose : This module exports the Clipper2 Library (ie DLL/so) *
* License : https://www.boost.org/LICENSE_1_0.txt *
*******************************************************************************/
/*
Boolean clipping:
cliptype: NoClip=0, Intersection=1, Union=2, Difference=3, Xor=4
fillrule: EvenOdd=0, NonZero=1, Positive=2, Negative=3
Polygon offsetting (inflate/deflate):
jointype: Square=0, Bevel=1, Round=2, Miter=3
endtype: Polygon=0, Joined=1, Butt=2, Square=3, Round=4
The path structures used extensively in other parts of this library are all
based on std::vector classes. Since C++ classes can't be accessed by other
languages, these paths are exported here as very simple array structures
(either of int64_t or double) that can be parsed by just about any
programming language.
These 2D paths are defined by series of x and y coordinates together with an
optional user-defined 'z' value (see Z-values below). Hence, a vertex refers
to a single x and y coordinate (+/- a user-defined value). Data structures
have names with suffixes that indicate the array type (either int64_t or
double). For example, the data structure CPath64 contains an array of int64_t
values, whereas the data structure CPathD contains an array of double.
Where documentation omits the type suffix (eg CPath), it is referring to an
array whose data type could be either int64_t or double.
For conciseness, the following letters are used in the diagrams below:
N: Number of vertices in a given path
C: Count (ie number) of paths (or PolyPaths) in the structure
A: Number of elements in an array
CPath64 and CPathD:
These are arrays of either int64_t or double values. Apart from
the first two elements, these arrays are a series of vertices
that together define a path. The very first element contains the
number of vertices (N) in the path, while second element should
contain a 0 value.
_______________________________________________________________
| counters | vertex1 | vertex2 | ... | vertexN |
| N, 0 | x1, y1, (z1) | x2, y2, (z2) | ... | xN, yN, (zN) |
---------------------------------------------------------------
CPaths64 and CPathsD:
These are also arrays of either int64_t or double values that
contain any number of consecutive CPath structures. However,
preceding the first path is a pair of values. The first value
contains the length of the entire array structure (A), and the
second contains the number (ie count) of contained paths (C).
Memory allocation for CPaths64 = A * sizeof(int64_t)
Memory allocation for CPathsD = A * sizeof(double)
__________________________________________
| counters | path1 | path2 | ... | pathC |
| A, C | | | ... | |
------------------------------------------
CPolytree64 and CPolytreeD:
The entire polytree structure is an array of int64_t or double. The
first element in the array indicates the array's total length (A).
The second element indicates the number (C) of CPolyPath structures
that are the TOP LEVEL CPolyPath in the polytree, and these top
level CPolyPath immediately follow these first two array elements.
These top level CPolyPath structures may, in turn, contain nested
CPolyPath children, and these collectively make a tree structure.
_________________________________________________________
| counters | CPolyPath1 | CPolyPath2 | ... | CPolyPathC |
| A, C | | | ... | |
---------------------------------------------------------
CPolyPath64 and CPolyPathD:
These array structures consist of a pair of counter values followed by a
series of polygon vertices and a series of nested CPolyPath children.
The first counter values indicates the number of vertices in the
polygon (N), and the second counter indicates the CPolyPath child count (C).
_____________________________________________________________________________
|cntrs |vertex1 |vertex2 |...|vertexN |child1|child2|...|childC|
|N, C |x1, y1, (z1)| x2, y2, (z2)|...|xN, yN, (zN)| | |...| |
-----------------------------------------------------------------------------
DisposeArray64 & DisposeArrayD:
All array structures are allocated in heap memory which will eventually
need to be released. However, since applications linking to these DLL
functions may use different memory managers, the only safe way to release
this memory is to use the exported DisposeArray functions.
(Optional) Z-Values:
Structures will only contain user-defined z-values when the USINGZ
pre-processor identifier is used. The library does not assign z-values
because this field is intended for users to assign custom values to vertices.
Z-values in input paths (subject and clip) will be copied to solution paths.
New vertices at path intersections will generate a callback event that allows
users to assign z-values at these new vertices. The user's callback function
must conform with the DLLZCallback definition and be registered with the
DLL via SetZCallback. To assist the user in assigning z-values, the library
passes in the callback function the new intersection point together with
the four vertices that define the two segments that are intersecting.
*/
#ifndef CLIPPER2_EXPORT_H
#define CLIPPER2_EXPORT_H
#include "clipper2/clipper.core.h"
#include "clipper2/clipper.engine.h"
#include "clipper2/clipper.offset.h"
#include "clipper2/clipper.rectclip.h"
#include <cstdlib>
#ifdef USINGZ
namespace Clipper2Lib_Z {
#else
namespace Clipper2Lib {
#endif
typedef int64_t* CPath64;
typedef int64_t* CPaths64;
typedef double* CPathD;
typedef double* CPathsD;
typedef int64_t* CPolyPath64;
typedef int64_t* CPolyTree64;
typedef double* CPolyPathD;
typedef double* CPolyTreeD;
template <typename T>
struct CRect {
T left;
T top;
T right;
T bottom;
};
typedef CRect<int64_t> CRect64;
typedef CRect<double> CRectD;
template <typename T>
inline bool CRectIsEmpty(const CRect<T>& rect)
{
return (rect.right <= rect.left) || (rect.bottom <= rect.top);
}
template <typename T>
inline Rect<T> CRectToRect(const CRect<T>& rect)
{
Rect<T> result;
result.left = rect.left;
result.top = rect.top;
result.right = rect.right;
result.bottom = rect.bottom;
return result;
}
template <typename T1, typename T2>
inline T1 Reinterpret(T2 value) {
return *reinterpret_cast<T1*>(&value);
}
#ifdef _WIN32
#define EXTERN_DLL_EXPORT extern "C" __declspec(dllexport)
#else
#define EXTERN_DLL_EXPORT extern "C"
#endif
//////////////////////////////////////////////////////
// EXPORTED FUNCTION DECLARATIONS
//////////////////////////////////////////////////////
EXTERN_DLL_EXPORT const char* Version();
EXTERN_DLL_EXPORT void DisposeArray64(int64_t*& p)
{
delete[] p;
}
EXTERN_DLL_EXPORT void DisposeArrayD(double*& p)
{
delete[] p;
}
EXTERN_DLL_EXPORT int BooleanOp64(uint8_t cliptype,
uint8_t fillrule, const CPaths64 subjects,
const CPaths64 subjects_open, const CPaths64 clips,
CPaths64& solution, CPaths64& solution_open,
bool preserve_collinear = true, bool reverse_solution = false);
EXTERN_DLL_EXPORT int BooleanOp_PolyTree64(uint8_t cliptype,
uint8_t fillrule, const CPaths64 subjects,
const CPaths64 subjects_open, const CPaths64 clips,
CPolyTree64& sol_tree, CPaths64& solution_open,
bool preserve_collinear = true, bool reverse_solution = false);
EXTERN_DLL_EXPORT int BooleanOpD(uint8_t cliptype,
uint8_t fillrule, const CPathsD subjects,
const CPathsD subjects_open, const CPathsD clips,
CPathsD& solution, CPathsD& solution_open, int precision = 2,
bool preserve_collinear = true, bool reverse_solution = false);
EXTERN_DLL_EXPORT int BooleanOp_PolyTreeD(uint8_t cliptype,
uint8_t fillrule, const CPathsD subjects,
const CPathsD subjects_open, const CPathsD clips,
CPolyTreeD& solution, CPathsD& solution_open, int precision = 2,
bool preserve_collinear = true, bool reverse_solution = false);
EXTERN_DLL_EXPORT CPaths64 InflatePaths64(const CPaths64 paths,
double delta, uint8_t jointype, uint8_t endtype,
double miter_limit = 2.0, double arc_tolerance = 0.0,
bool reverse_solution = false);
EXTERN_DLL_EXPORT CPathsD InflatePathsD(const CPathsD paths,
double delta, uint8_t jointype, uint8_t endtype,
int precision = 2, double miter_limit = 2.0,
double arc_tolerance = 0.0, bool reverse_solution = false);
EXTERN_DLL_EXPORT CPaths64 InflatePath64(const CPath64 path,
double delta, uint8_t jointype, uint8_t endtype,
double miter_limit = 2.0, double arc_tolerance = 0.0,
bool reverse_solution = false);
EXTERN_DLL_EXPORT CPathsD InflatePathD(const CPathD path,
double delta, uint8_t jointype, uint8_t endtype,
int precision = 2, double miter_limit = 2.0,
double arc_tolerance = 0.0, bool reverse_solution = false);
// RectClip & RectClipLines:
EXTERN_DLL_EXPORT CPaths64 RectClip64(const CRect64& rect,
const CPaths64 paths);
EXTERN_DLL_EXPORT CPathsD RectClipD(const CRectD& rect,
const CPathsD paths, int precision = 2);
EXTERN_DLL_EXPORT CPaths64 RectClipLines64(const CRect64& rect,
const CPaths64 paths);
EXTERN_DLL_EXPORT CPathsD RectClipLinesD(const CRectD& rect,
const CPathsD paths, int precision = 2);
//////////////////////////////////////////////////////
// INTERNAL FUNCTIONS
//////////////////////////////////////////////////////
#ifdef USINGZ
ZCallback64 dllCallback64 = nullptr;
ZCallbackD dllCallbackD = nullptr;
constexpr int EXPORT_VERTEX_DIMENSIONALITY = 3;
#else
constexpr int EXPORT_VERTEX_DIMENSIONALITY = 2;
#endif
template <typename T>
static void GetPathCountAndCPathsArrayLen(const Paths<T>& paths,
size_t& cnt, size_t& array_len)
{
array_len = 2;
cnt = 0;
for (const Path<T>& path : paths)
if (path.size())
{
array_len += path.size() * EXPORT_VERTEX_DIMENSIONALITY + 2;
++cnt;
}
}
static size_t GetPolyPathArrayLen64(const PolyPath64& pp)
{
size_t result = 2; // poly_length + child_count
result += pp.Polygon().size() * EXPORT_VERTEX_DIMENSIONALITY;
//plus nested children :)
for (size_t i = 0; i < pp.Count(); ++i)
result += GetPolyPathArrayLen64(*pp[i]);
return result;
}
static size_t GetPolyPathArrayLenD(const PolyPathD& pp)
{
size_t result = 2; // poly_length + child_count
result += pp.Polygon().size() * EXPORT_VERTEX_DIMENSIONALITY;
//plus nested children :)
for (size_t i = 0; i < pp.Count(); ++i)
result += GetPolyPathArrayLenD(*pp[i]);
return result;
}
static void GetPolytreeCountAndCStorageSize64(const PolyTree64& tree,
size_t& cnt, size_t& array_len)
{
cnt = tree.Count(); // nb: top level count only
array_len = GetPolyPathArrayLen64(tree);
}
static void GetPolytreeCountAndCStorageSizeD(const PolyTreeD& tree,
size_t& cnt, size_t& array_len)
{
cnt = tree.Count(); // nb: top level count only
array_len = GetPolyPathArrayLenD(tree);
}
template <typename T>
static T* CreateCPathsFromPathsT(const Paths<T>& paths)
{
size_t cnt = 0, array_len = 0;
GetPathCountAndCPathsArrayLen(paths, cnt, array_len);
T* result = new T[array_len], * v = result;
*v++ = array_len;
*v++ = cnt;
for (const Path<T>& path : paths)
{
if (!path.size()) continue;
*v++ = path.size();
*v++ = 0;
for (const Point<T>& pt : path)
{
*v++ = pt.x;
*v++ = pt.y;
#ifdef USINGZ
*v++ = Reinterpret<T>(pt.z);
#endif
}
}
return result;
}
CPathsD CreateCPathsDFromPathsD(const PathsD& paths)
{
if (!paths.size()) return nullptr;
size_t cnt, array_len;
GetPathCountAndCPathsArrayLen(paths, cnt, array_len);
CPathsD result = new double[array_len], v = result;
*v++ = (double)array_len;
*v++ = (double)cnt;
for (const PathD& path : paths)
{
if (!path.size()) continue;
*v = (double)path.size();
++v; *v++ = 0;
for (const PointD& pt : path)
{
*v++ = pt.x;
*v++ = pt.y;
#ifdef USINGZ
* v++ = Reinterpret<double>(pt.z);
#endif
}
}
return result;
}
CPathsD CreateCPathsDFromPaths64(const Paths64& paths, double scale)
{
if (!paths.size()) return nullptr;
size_t cnt, array_len;
GetPathCountAndCPathsArrayLen(paths, cnt, array_len);
CPathsD result = new double[array_len], v = result;
*v++ = (double)array_len;
*v++ = (double)cnt;
for (const Path64& path : paths)
{
if (!path.size()) continue;
*v = (double)path.size();
++v; *v++ = 0;
for (const Point64& pt : path)
{
*v++ = pt.x * scale;
*v++ = pt.y * scale;
#ifdef USINGZ
*v++ = Reinterpret<double>(pt.z);
#endif
}
}
return result;
}
template <typename T>
static Path<T> ConvertCPathToPathT(T* path)
{
Path<T> result;
if (!path) return result;
T* v = path;
size_t cnt = static_cast<size_t>(*v);
v += 2; // skip 0 value
result.reserve(cnt);
for (size_t j = 0; j < cnt; ++j)
{
T x = *v++, y = *v++;
#ifdef USINGZ
z_type z = Reinterpret<z_type>(*v++);
result.emplace_back(x, y, z);
#else
result.emplace_back(x, y);
#endif
}
return result;
}
template <typename T>
static Paths<T> ConvertCPathsToPathsT(T* paths)
{
Paths<T> result;
if (!paths) return result;
T* v = paths; ++v;
size_t cnt = static_cast<size_t>(*v++);
result.reserve(cnt);
for (size_t i = 0; i < cnt; ++i)
{
size_t cnt2 = static_cast<size_t>(*v);
v += 2;
Path<T> path;
path.reserve(cnt2);
for (size_t j = 0; j < cnt2; ++j)
{
T x = *v++, y = *v++;
#ifdef USINGZ
z_type z = Reinterpret<z_type>(*v++);
path.emplace_back(x, y, z);
#else
path.emplace_back(x, y);
#endif
}
result.emplace_back(std::move(path));
}
return result;
}
static Path64 ConvertCPathDToPath64WithScale(const CPathD path, double scale)
{
Path64 result;
if (!path) return result;
double* v = path;
size_t cnt = static_cast<size_t>(*v);
v += 2; // skip 0 value
result.reserve(cnt);
for (size_t j = 0; j < cnt; ++j)
{
double x = *v++ * scale;
double y = *v++ * scale;
#ifdef USINGZ
z_type z = Reinterpret<z_type>(*v++);
result.emplace_back(x, y, z);
#else
result.emplace_back(x, y);
#endif
}
return result;
}
static Paths64 ConvertCPathsDToPaths64(const CPathsD paths, double scale)
{
Paths64 result;
if (!paths) return result;
double* v = paths;
++v; // skip the first value (0)
size_t cnt = static_cast<size_t>(*v++);
result.reserve(cnt);
for (size_t i = 0; i < cnt; ++i)
{
size_t cnt2 = static_cast<size_t>(*v);
v += 2;
Path64 path;
path.reserve(cnt2);
for (size_t j = 0; j < cnt2; ++j)
{
double x = *v++ * scale;
double y = *v++ * scale;
#ifdef USINGZ
z_type z = Reinterpret<z_type>(*v++);
path.emplace_back(x, y, z);
#else
path.emplace_back(x, y);
#endif
}
result.emplace_back(std::move(path));
}
return result;
}
static void CreateCPolyPath64(const PolyPath64* pp, int64_t*& v)
{
*v++ = static_cast<int64_t>(pp->Polygon().size());
*v++ = static_cast<int64_t>(pp->Count());
for (const Point64& pt : pp->Polygon())
{
*v++ = pt.x;
*v++ = pt.y;
#ifdef USINGZ
* v++ = Reinterpret<int64_t>(pt.z); // raw memory copy
#endif
}
for (size_t i = 0; i < pp->Count(); ++i)
CreateCPolyPath64(pp->Child(i), v);
}
static void CreateCPolyPathD(const PolyPathD* pp, double*& v)
{
*v++ = static_cast<double>(pp->Polygon().size());
*v++ = static_cast<double>(pp->Count());
for (const PointD& pt : pp->Polygon())
{
*v++ = pt.x;
*v++ = pt.y;
#ifdef USINGZ
* v++ = Reinterpret<double>(pt.z); // raw memory copy
#endif
}
for (size_t i = 0; i < pp->Count(); ++i)
CreateCPolyPathD(pp->Child(i), v);
}
static int64_t* CreateCPolyTree64(const PolyTree64& tree)
{
size_t cnt, array_len;
GetPolytreeCountAndCStorageSize64(tree, cnt, array_len);
if (!cnt) return nullptr;
// allocate storage
int64_t* result = new int64_t[array_len];
int64_t* v = result;
*v++ = static_cast<int64_t>(array_len);
*v++ = static_cast<int64_t>(tree.Count());
for (size_t i = 0; i < tree.Count(); ++i)
CreateCPolyPath64(tree.Child(i), v);
return result;
}
static double* CreateCPolyTreeD(const PolyTreeD& tree)
{
double scale = std::log10(tree.Scale());
size_t cnt, array_len;
GetPolytreeCountAndCStorageSizeD(tree, cnt, array_len);
if (!cnt) return nullptr;
// allocate storage
double* result = new double[array_len];
double* v = result;
*v++ = static_cast<double>(array_len);
*v++ = static_cast<double>(tree.Count());
for (size_t i = 0; i < tree.Count(); ++i)
CreateCPolyPathD(tree.Child(i), v);
return result;
}
//////////////////////////////////////////////////////
// EXPORTED FUNCTION DEFINITIONS
//////////////////////////////////////////////////////
EXTERN_DLL_EXPORT const char* Version()
{
return CLIPPER2_VERSION;
}
EXTERN_DLL_EXPORT int BooleanOp64(uint8_t cliptype,
uint8_t fillrule, const CPaths64 subjects,
const CPaths64 subjects_open, const CPaths64 clips,
CPaths64& solution, CPaths64& solution_open,
bool preserve_collinear, bool reverse_solution)
{
if (cliptype > static_cast<uint8_t>(ClipType::Xor)) return -4;
if (fillrule > static_cast<uint8_t>(FillRule::Negative)) return -3;
Paths64 sub, sub_open, clp, sol, sol_open;
sub = ConvertCPathsToPathsT(subjects);
sub_open = ConvertCPathsToPathsT(subjects_open);
clp = ConvertCPathsToPathsT(clips);
Clipper64 clipper;
clipper.PreserveCollinear(preserve_collinear);
clipper.ReverseSolution(reverse_solution);
#ifdef USINGZ
if (dllCallback64)
clipper.SetZCallback(dllCallback64);
#endif
if (sub.size() > 0) clipper.AddSubject(sub);
if (sub_open.size() > 0) clipper.AddOpenSubject(sub_open);
if (clp.size() > 0) clipper.AddClip(clp);
if (!clipper.Execute(ClipType(cliptype), FillRule(fillrule), sol, sol_open))
return -1; // clipping bug - should never happen :)
solution = CreateCPathsFromPathsT(sol);
solution_open = CreateCPathsFromPathsT(sol_open);
return 0; //success !!
}
EXTERN_DLL_EXPORT int BooleanOp_PolyTree64(uint8_t cliptype,
uint8_t fillrule, const CPaths64 subjects,
const CPaths64 subjects_open, const CPaths64 clips,
CPolyTree64& sol_tree, CPaths64& solution_open,
bool preserve_collinear, bool reverse_solution)
{
if (cliptype > static_cast<uint8_t>(ClipType::Xor)) return -4;
if (fillrule > static_cast<uint8_t>(FillRule::Negative)) return -3;
Paths64 sub, sub_open, clp, sol_open;
sub = ConvertCPathsToPathsT(subjects);
sub_open = ConvertCPathsToPathsT(subjects_open);
clp = ConvertCPathsToPathsT(clips);
PolyTree64 tree;
Clipper64 clipper;
clipper.PreserveCollinear(preserve_collinear);
clipper.ReverseSolution(reverse_solution);
#ifdef USINGZ
if (dllCallback64)
clipper.SetZCallback(dllCallback64);
#endif
if (sub.size() > 0) clipper.AddSubject(sub);
if (sub_open.size() > 0) clipper.AddOpenSubject(sub_open);
if (clp.size() > 0) clipper.AddClip(clp);
if (!clipper.Execute(ClipType(cliptype), FillRule(fillrule), tree, sol_open))
return -1; // clipping bug - should never happen :)
sol_tree = CreateCPolyTree64(tree);
solution_open = CreateCPathsFromPathsT(sol_open);
return 0; //success !!
}
EXTERN_DLL_EXPORT int BooleanOpD(uint8_t cliptype,
uint8_t fillrule, const CPathsD subjects,
const CPathsD subjects_open, const CPathsD clips,
CPathsD& solution, CPathsD& solution_open, int precision,
bool preserve_collinear, bool reverse_solution)
{
if (precision < -8 || precision > 8) return -5;
if (cliptype > static_cast<uint8_t>(ClipType::Xor)) return -4;
if (fillrule > static_cast<uint8_t>(FillRule::Negative)) return -3;
//const double scale = std::pow(10, precision);
PathsD sub, sub_open, clp, sol, sol_open;
sub = ConvertCPathsToPathsT(subjects);
sub_open = ConvertCPathsToPathsT(subjects_open);
clp = ConvertCPathsToPathsT(clips);
ClipperD clipper(precision);
clipper.PreserveCollinear(preserve_collinear);
clipper.ReverseSolution(reverse_solution);
#ifdef USINGZ
if (dllCallbackD)
clipper.SetZCallback(dllCallbackD);
#endif
if (sub.size() > 0) clipper.AddSubject(sub);
if (sub_open.size() > 0) clipper.AddOpenSubject(sub_open);
if (clp.size() > 0) clipper.AddClip(clp);
if (!clipper.Execute(ClipType(cliptype),
FillRule(fillrule), sol, sol_open)) return -1;
solution = CreateCPathsDFromPathsD(sol);
solution_open = CreateCPathsDFromPathsD(sol_open);
return 0;
}
EXTERN_DLL_EXPORT int BooleanOp_PolyTreeD(uint8_t cliptype,
uint8_t fillrule, const CPathsD subjects,
const CPathsD subjects_open, const CPathsD clips,
CPolyTreeD& solution, CPathsD& solution_open, int precision,
bool preserve_collinear, bool reverse_solution)
{
if (precision < -8 || precision > 8) return -5;
if (cliptype > static_cast<uint8_t>(ClipType::Xor)) return -4;
if (fillrule > static_cast<uint8_t>(FillRule::Negative)) return -3;
//double scale = std::pow(10, precision);
int err = 0;
PathsD sub, sub_open, clp, sol_open;
sub = ConvertCPathsToPathsT(subjects);
sub_open = ConvertCPathsToPathsT(subjects_open);
clp = ConvertCPathsToPathsT(clips);
PolyTreeD tree;
ClipperD clipper(precision);
clipper.PreserveCollinear(preserve_collinear);
clipper.ReverseSolution(reverse_solution);
#ifdef USINGZ
if (dllCallbackD)
clipper.SetZCallback(dllCallbackD);
#endif
if (sub.size() > 0) clipper.AddSubject(sub);
if (sub_open.size() > 0) clipper.AddOpenSubject(sub_open);
if (clp.size() > 0) clipper.AddClip(clp);
if (!clipper.Execute(ClipType(cliptype), FillRule(fillrule), tree, sol_open))
return -1; // clipping bug - should never happen :)
solution = CreateCPolyTreeD(tree);
solution_open = CreateCPathsDFromPathsD(sol_open);
return 0; //success !!
}
EXTERN_DLL_EXPORT CPaths64 InflatePaths64(const CPaths64 paths,
double delta, uint8_t jointype, uint8_t endtype, double miter_limit,
double arc_tolerance, bool reverse_solution)
{
Paths64 pp;
pp = ConvertCPathsToPathsT(paths);
ClipperOffset clip_offset( miter_limit,
arc_tolerance, reverse_solution);
clip_offset.AddPaths(pp, JoinType(jointype), EndType(endtype));
Paths64 result;
clip_offset.Execute(delta, result);
return CreateCPathsFromPathsT(result);
}
EXTERN_DLL_EXPORT CPathsD InflatePathsD(const CPathsD paths,
double delta, uint8_t jointype, uint8_t endtype,
int precision, double miter_limit,
double arc_tolerance, bool reverse_solution)
{
if (precision < -8 || precision > 8 || !paths) return nullptr;
const double scale = std::pow(10, precision);
ClipperOffset clip_offset(miter_limit, arc_tolerance, reverse_solution);
Paths64 pp = ConvertCPathsDToPaths64(paths, scale);
clip_offset.AddPaths(pp, JoinType(jointype), EndType(endtype));
Paths64 result;
clip_offset.Execute(delta * scale, result);
return CreateCPathsDFromPaths64(result, 1 / scale);
}
EXTERN_DLL_EXPORT CPaths64 InflatePath64(const CPath64 path,
double delta, uint8_t jointype, uint8_t endtype, double miter_limit,
double arc_tolerance, bool reverse_solution)
{
Path64 pp;
pp = ConvertCPathToPathT(path);
ClipperOffset clip_offset(miter_limit,
arc_tolerance, reverse_solution);
clip_offset.AddPath(pp, JoinType(jointype), EndType(endtype));
Paths64 result;
clip_offset.Execute(delta, result);
return CreateCPathsFromPathsT(result);
}
EXTERN_DLL_EXPORT CPathsD InflatePathD(const CPathD path,
double delta, uint8_t jointype, uint8_t endtype,
int precision, double miter_limit,
double arc_tolerance, bool reverse_solution)
{
if (precision < -8 || precision > 8 || !path) return nullptr;
const double scale = std::pow(10, precision);
ClipperOffset clip_offset(miter_limit, arc_tolerance, reverse_solution);
Path64 pp = ConvertCPathDToPath64WithScale(path, scale);
clip_offset.AddPath(pp, JoinType(jointype), EndType(endtype));
Paths64 result;
clip_offset.Execute(delta * scale, result);
return CreateCPathsDFromPaths64(result, 1 / scale);
}
EXTERN_DLL_EXPORT CPaths64 RectClip64(const CRect64& rect, const CPaths64 paths)
{
if (CRectIsEmpty(rect) || !paths) return nullptr;
Rect64 r64 = CRectToRect(rect);
class RectClip64 rc(r64);
Paths64 pp = ConvertCPathsToPathsT(paths);
Paths64 result = rc.Execute(pp);
return CreateCPathsFromPathsT(result);
}
EXTERN_DLL_EXPORT CPathsD RectClipD(const CRectD& rect, const CPathsD paths, int precision)
{
if (CRectIsEmpty(rect) || !paths) return nullptr;
if (precision < -8 || precision > 8) return nullptr;
const double scale = std::pow(10, precision);
RectD r = CRectToRect(rect);
Rect64 rec = ScaleRect<int64_t, double>(r, scale);
Paths64 pp = ConvertCPathsDToPaths64(paths, scale);
class RectClip64 rc(rec);
Paths64 result = rc.Execute(pp);
return CreateCPathsDFromPaths64(result, 1 / scale);
}
EXTERN_DLL_EXPORT CPaths64 RectClipLines64(const CRect64& rect,
const CPaths64 paths)
{
if (CRectIsEmpty(rect) || !paths) return nullptr;
Rect64 r = CRectToRect(rect);
class RectClipLines64 rcl (r);
Paths64 pp = ConvertCPathsToPathsT(paths);
Paths64 result = rcl.Execute(pp);
return CreateCPathsFromPathsT(result);
}
EXTERN_DLL_EXPORT CPathsD RectClipLinesD(const CRectD& rect,
const CPathsD paths, int precision)
{
if (CRectIsEmpty(rect) || !paths) return nullptr;
if (precision < -8 || precision > 8) return nullptr;
const double scale = std::pow(10, precision);
Rect64 r = ScaleRect<int64_t, double>(CRectToRect(rect), scale);
class RectClipLines64 rcl(r);
Paths64 pp = ConvertCPathsDToPaths64(paths, scale);
Paths64 result = rcl.Execute(pp);
return CreateCPathsDFromPaths64(result, 1 / scale);
}
EXTERN_DLL_EXPORT CPaths64 MinkowskiSum64(const CPath64& cpattern, const CPath64& cpath, bool is_closed)
{
Path64 path = ConvertCPathToPathT(cpath);
Path64 pattern = ConvertCPathToPathT(cpattern);
Paths64 solution = MinkowskiSum(pattern, path, is_closed);
return CreateCPathsFromPathsT(solution);
}
EXTERN_DLL_EXPORT CPaths64 MinkowskiDiff64(const CPath64& cpattern, const CPath64& cpath, bool is_closed)
{
Path64 path = ConvertCPathToPathT(cpath);
Path64 pattern = ConvertCPathToPathT(cpattern);
Paths64 solution = MinkowskiDiff(pattern, path, is_closed);
return CreateCPathsFromPathsT(solution);
}
#ifdef USINGZ
typedef void (*DLLZCallback64)(const Point64& e1bot, const Point64& e1top, const Point64& e2bot, const Point64& e2top, Point64& pt);
typedef void (*DLLZCallbackD)(const PointD& e1bot, const PointD& e1top, const PointD& e2bot, const PointD& e2top, PointD& pt);
EXTERN_DLL_EXPORT void SetZCallback64(DLLZCallback64 callback)
{
dllCallback64 = callback;
}
EXTERN_DLL_EXPORT void SetZCallbackD(DLLZCallbackD callback)
{
dllCallbackD = callback;
}
#endif
}
#endif // CLIPPER2_EXPORT_H

View File

@@ -0,0 +1,770 @@
/*******************************************************************************
* Author : Angus Johnson *
* Date : 27 April 2024 *
* Website : https://www.angusj.com *
* Copyright : Angus Johnson 2010-2024 *
* Purpose : This module provides a simple interface to the Clipper Library *
* License : https://www.boost.org/LICENSE_1_0.txt *
*******************************************************************************/
#ifndef CLIPPER_H
#define CLIPPER_H
#include "clipper2/clipper.core.h"
#include "clipper2/clipper.engine.h"
#include "clipper2/clipper.offset.h"
#include "clipper2/clipper.minkowski.h"
#include "clipper2/clipper.rectclip.h"
#include <type_traits>
#ifdef USINGZ
namespace Clipper2Lib_Z {
#else
namespace Clipper2Lib {
#endif
inline Paths64 BooleanOp(ClipType cliptype, FillRule fillrule,
const Paths64& subjects, const Paths64& clips)
{
Paths64 result;
Clipper64 clipper;
clipper.AddSubject(subjects);
clipper.AddClip(clips);
clipper.Execute(cliptype, fillrule, result);
return result;
}
inline void BooleanOp(ClipType cliptype, FillRule fillrule,
const Paths64& subjects, const Paths64& clips, PolyTree64& solution)
{
Paths64 sol_open;
Clipper64 clipper;
clipper.AddSubject(subjects);
clipper.AddClip(clips);
clipper.Execute(cliptype, fillrule, solution, sol_open);
}
inline PathsD BooleanOp(ClipType cliptype, FillRule fillrule,
const PathsD& subjects, const PathsD& clips, int precision = 2)
{
int error_code = 0;
CheckPrecisionRange(precision, error_code);
PathsD result;
if (error_code) return result;
ClipperD clipper(precision);
clipper.AddSubject(subjects);
clipper.AddClip(clips);
clipper.Execute(cliptype, fillrule, result);
return result;
}
inline void BooleanOp(ClipType cliptype, FillRule fillrule,
const PathsD& subjects, const PathsD& clips,
PolyTreeD& polytree, int precision = 2)
{
polytree.Clear();
int error_code = 0;
CheckPrecisionRange(precision, error_code);
if (error_code) return;
ClipperD clipper(precision);
clipper.AddSubject(subjects);
clipper.AddClip(clips);
clipper.Execute(cliptype, fillrule, polytree);
}
inline Paths64 Intersect(const Paths64& subjects, const Paths64& clips, FillRule fillrule)
{
return BooleanOp(ClipType::Intersection, fillrule, subjects, clips);
}
inline PathsD Intersect(const PathsD& subjects, const PathsD& clips, FillRule fillrule, int decimal_prec = 2)
{
return BooleanOp(ClipType::Intersection, fillrule, subjects, clips, decimal_prec);
}
inline Paths64 Union(const Paths64& subjects, const Paths64& clips, FillRule fillrule)
{
return BooleanOp(ClipType::Union, fillrule, subjects, clips);
}
inline PathsD Union(const PathsD& subjects, const PathsD& clips, FillRule fillrule, int decimal_prec = 2)
{
return BooleanOp(ClipType::Union, fillrule, subjects, clips, decimal_prec);
}
inline Paths64 Union(const Paths64& subjects, FillRule fillrule)
{
Paths64 result;
Clipper64 clipper;
clipper.AddSubject(subjects);
clipper.Execute(ClipType::Union, fillrule, result);
return result;
}
inline PathsD Union(const PathsD& subjects, FillRule fillrule, int precision = 2)
{
PathsD result;
int error_code = 0;
CheckPrecisionRange(precision, error_code);
if (error_code) return result;
ClipperD clipper(precision);
clipper.AddSubject(subjects);
clipper.Execute(ClipType::Union, fillrule, result);
return result;
}
inline Paths64 Difference(const Paths64& subjects, const Paths64& clips, FillRule fillrule)
{
return BooleanOp(ClipType::Difference, fillrule, subjects, clips);
}
inline PathsD Difference(const PathsD& subjects, const PathsD& clips, FillRule fillrule, int decimal_prec = 2)
{
return BooleanOp(ClipType::Difference, fillrule, subjects, clips, decimal_prec);
}
inline Paths64 Xor(const Paths64& subjects, const Paths64& clips, FillRule fillrule)
{
return BooleanOp(ClipType::Xor, fillrule, subjects, clips);
}
inline PathsD Xor(const PathsD& subjects, const PathsD& clips, FillRule fillrule, int decimal_prec = 2)
{
return BooleanOp(ClipType::Xor, fillrule, subjects, clips, decimal_prec);
}
inline Paths64 InflatePaths(const Paths64& paths, double delta,
JoinType jt, EndType et, double miter_limit = 2.0,
double arc_tolerance = 0.0)
{
if (!delta) return paths;
ClipperOffset clip_offset(miter_limit, arc_tolerance);
clip_offset.AddPaths(paths, jt, et);
Paths64 solution;
clip_offset.Execute(delta, solution);
return solution;
}
inline PathsD InflatePaths(const PathsD& paths, double delta,
JoinType jt, EndType et, double miter_limit = 2.0,
int precision = 2, double arc_tolerance = 0.0)
{
int error_code = 0;
CheckPrecisionRange(precision, error_code);
if (!delta) return paths;
if (error_code) return PathsD();
const double scale = std::pow(10, precision);
ClipperOffset clip_offset(miter_limit, arc_tolerance);
clip_offset.AddPaths(ScalePaths<int64_t,double>(paths, scale, error_code), jt, et);
if (error_code) return PathsD();
Paths64 solution;
clip_offset.Execute(delta * scale, solution);
return ScalePaths<double, int64_t>(solution, 1 / scale, error_code);
}
template <typename T>
inline Path<T> TranslatePath(const Path<T>& path, T dx, T dy)
{
Path<T> result;
result.reserve(path.size());
std::transform(path.begin(), path.end(), back_inserter(result),
[dx, dy](const auto& pt) { return Point<T>(pt.x + dx, pt.y +dy); });
return result;
}
inline Path64 TranslatePath(const Path64& path, int64_t dx, int64_t dy)
{
return TranslatePath<int64_t>(path, dx, dy);
}
inline PathD TranslatePath(const PathD& path, double dx, double dy)
{
return TranslatePath<double>(path, dx, dy);
}
template <typename T>
inline Paths<T> TranslatePaths(const Paths<T>& paths, T dx, T dy)
{
Paths<T> result;
result.reserve(paths.size());
std::transform(paths.begin(), paths.end(), back_inserter(result),
[dx, dy](const auto& path) { return TranslatePath(path, dx, dy); });
return result;
}
inline Paths64 TranslatePaths(const Paths64& paths, int64_t dx, int64_t dy)
{
return TranslatePaths<int64_t>(paths, dx, dy);
}
inline PathsD TranslatePaths(const PathsD& paths, double dx, double dy)
{
return TranslatePaths<double>(paths, dx, dy);
}
inline Paths64 RectClip(const Rect64& rect, const Paths64& paths)
{
if (rect.IsEmpty() || paths.empty()) return Paths64();
RectClip64 rc(rect);
return rc.Execute(paths);
}
inline Paths64 RectClip(const Rect64& rect, const Path64& path)
{
if (rect.IsEmpty() || path.empty()) return Paths64();
RectClip64 rc(rect);
return rc.Execute(Paths64{ path });
}
inline PathsD RectClip(const RectD& rect, const PathsD& paths, int precision = 2)
{
if (rect.IsEmpty() || paths.empty()) return PathsD();
int error_code = 0;
CheckPrecisionRange(precision, error_code);
if (error_code) return PathsD();
const double scale = std::pow(10, precision);
Rect64 r = ScaleRect<int64_t, double>(rect, scale);
RectClip64 rc(r);
Paths64 pp = ScalePaths<int64_t, double>(paths, scale, error_code);
if (error_code) return PathsD(); // ie: error_code result is lost
return ScalePaths<double, int64_t>(
rc.Execute(pp), 1 / scale, error_code);
}
inline PathsD RectClip(const RectD& rect, const PathD& path, int precision = 2)
{
return RectClip(rect, PathsD{ path }, precision);
}
inline Paths64 RectClipLines(const Rect64& rect, const Paths64& lines)
{
if (rect.IsEmpty() || lines.empty()) return Paths64();
RectClipLines64 rcl(rect);
return rcl.Execute(lines);
}
inline Paths64 RectClipLines(const Rect64& rect, const Path64& line)
{
return RectClipLines(rect, Paths64{ line });
}
inline PathsD RectClipLines(const RectD& rect, const PathsD& lines, int precision = 2)
{
if (rect.IsEmpty() || lines.empty()) return PathsD();
int error_code = 0;
CheckPrecisionRange(precision, error_code);
if (error_code) return PathsD();
const double scale = std::pow(10, precision);
Rect64 r = ScaleRect<int64_t, double>(rect, scale);
RectClipLines64 rcl(r);
Paths64 p = ScalePaths<int64_t, double>(lines, scale, error_code);
if (error_code) return PathsD();
p = rcl.Execute(p);
return ScalePaths<double, int64_t>(p, 1 / scale, error_code);
}
inline PathsD RectClipLines(const RectD& rect, const PathD& line, int precision = 2)
{
return RectClipLines(rect, PathsD{ line }, precision);
}
namespace details
{
inline void PolyPathToPaths64(const PolyPath64& polypath, Paths64& paths)
{
paths.emplace_back(polypath.Polygon());
for (const auto& child : polypath)
PolyPathToPaths64(*child, paths);
}
inline void PolyPathToPathsD(const PolyPathD& polypath, PathsD& paths)
{
paths.emplace_back(polypath.Polygon());
for (const auto& child : polypath)
PolyPathToPathsD(*child, paths);
}
inline bool PolyPath64ContainsChildren(const PolyPath64& pp)
{
for (const auto& child : pp)
{
// return false if this child isn't fully contained by its parent
// checking for a single vertex outside is a bit too crude since
// it doesn't account for rounding errors. It's better to check
// for consecutive vertices found outside the parent's polygon.
int outsideCnt = 0;
for (const Point64& pt : child->Polygon())
{
PointInPolygonResult result = PointInPolygon(pt, pp.Polygon());
if (result == PointInPolygonResult::IsInside) --outsideCnt;
else if (result == PointInPolygonResult::IsOutside) ++outsideCnt;
if (outsideCnt > 1) return false;
else if (outsideCnt < -1) break;
}
// now check any nested children too
if (child->Count() > 0 && !PolyPath64ContainsChildren(*child))
return false;
}
return true;
}
static void OutlinePolyPath(std::ostream& os,
size_t idx, bool isHole, size_t count, const std::string& preamble)
{
std::string plural = (count == 1) ? "." : "s.";
if (isHole)
os << preamble << "+- Hole (" << idx << ") contains " << count <<
" nested polygon" << plural << std::endl;
else
os << preamble << "+- Polygon (" << idx << ") contains " << count <<
" hole" << plural << std::endl;
}
static void OutlinePolyPath64(std::ostream& os, const PolyPath64& pp,
size_t idx, std::string preamble)
{
OutlinePolyPath(os, idx, pp.IsHole(), pp.Count(), preamble);
for (size_t i = 0; i < pp.Count(); ++i)
if (pp.Child(i)->Count())
details::OutlinePolyPath64(os, *pp.Child(i), i, preamble + " ");
}
static void OutlinePolyPathD(std::ostream& os, const PolyPathD& pp,
size_t idx, std::string preamble)
{
OutlinePolyPath(os, idx, pp.IsHole(), pp.Count(), preamble);
for (size_t i = 0; i < pp.Count(); ++i)
if (pp.Child(i)->Count())
details::OutlinePolyPathD(os, *pp.Child(i), i, preamble + " ");
}
template<typename T, typename U>
inline constexpr void MakePathGeneric(const T an_array,
size_t array_size, std::vector<U>& result)
{
result.reserve(array_size / 2);
for (size_t i = 0; i < array_size; i +=2)
#ifdef USINGZ
result.emplace_back( an_array[i], an_array[i + 1], 0 );
#else
result.emplace_back( an_array[i], an_array[i + 1] );
#endif
}
} // end details namespace
inline std::ostream& operator<< (std::ostream& os, const PolyTree64& pp)
{
std::string plural = (pp.Count() == 1) ? " polygon." : " polygons.";
os << std::endl << "Polytree with " << pp.Count() << plural << std::endl;
for (size_t i = 0; i < pp.Count(); ++i)
if (pp.Child(i)->Count())
details::OutlinePolyPath64(os, *pp.Child(i), i, " ");
os << std::endl << std::endl;
return os;
}
inline std::ostream& operator<< (std::ostream& os, const PolyTreeD& pp)
{
std::string plural = (pp.Count() == 1) ? " polygon." : " polygons.";
os << std::endl << "Polytree with " << pp.Count() << plural << std::endl;
for (size_t i = 0; i < pp.Count(); ++i)
if (pp.Child(i)->Count())
details::OutlinePolyPathD(os, *pp.Child(i), i, " ");
os << std::endl << std::endl;
if (!pp.Level()) os << std::endl;
return os;
}
inline Paths64 PolyTreeToPaths64(const PolyTree64& polytree)
{
Paths64 result;
for (const auto& child : polytree)
details::PolyPathToPaths64(*child, result);
return result;
}
inline PathsD PolyTreeToPathsD(const PolyTreeD& polytree)
{
PathsD result;
for (const auto& child : polytree)
details::PolyPathToPathsD(*child, result);
return result;
}
inline bool CheckPolytreeFullyContainsChildren(const PolyTree64& polytree)
{
for (const auto& child : polytree)
if (child->Count() > 0 &&
!details::PolyPath64ContainsChildren(*child))
return false;
return true;
}
template<typename T,
typename std::enable_if<
std::is_integral<T>::value &&
!std::is_same<char, T>::value, bool
>::type = true>
inline Path64 MakePath(const std::vector<T>& list)
{
const auto size = list.size() - list.size() % 2;
if (list.size() != size)
DoError(non_pair_error_i); // non-fatal without exception handling
Path64 result;
details::MakePathGeneric(list, size, result);
return result;
}
template<typename T, std::size_t N,
typename std::enable_if<
std::is_integral<T>::value &&
!std::is_same<char, T>::value, bool
>::type = true>
inline Path64 MakePath(const T(&list)[N])
{
// Make the compiler error on unpaired value (i.e. no runtime effects).
static_assert(N % 2 == 0, "MakePath requires an even number of arguments");
Path64 result;
details::MakePathGeneric(list, N, result);
return result;
}
template<typename T,
typename std::enable_if<
std::is_arithmetic<T>::value &&
!std::is_same<char, T>::value, bool
>::type = true>
inline PathD MakePathD(const std::vector<T>& list)
{
const auto size = list.size() - list.size() % 2;
if (list.size() != size)
DoError(non_pair_error_i); // non-fatal without exception handling
PathD result;
details::MakePathGeneric(list, size, result);
return result;
}
template<typename T, std::size_t N,
typename std::enable_if<
std::is_arithmetic<T>::value &&
!std::is_same<char, T>::value, bool
>::type = true>
inline PathD MakePathD(const T(&list)[N])
{
// Make the compiler error on unpaired value (i.e. no runtime effects).
static_assert(N % 2 == 0, "MakePath requires an even number of arguments");
PathD result;
details::MakePathGeneric(list, N, result);
return result;
}
#ifdef USINGZ
template<typename T2, std::size_t N>
inline Path64 MakePathZ(const T2(&list)[N])
{
static_assert(N % 3 == 0 && std::numeric_limits<T2>::is_integer,
"MakePathZ requires integer values in multiples of 3");
std::size_t size = N / 3;
Path64 result(size);
for (size_t i = 0; i < size; ++i)
result[i] = Point64(list[i * 3],
list[i * 3 + 1], list[i * 3 + 2]);
return result;
}
template<typename T2, std::size_t N>
inline PathD MakePathZD(const T2(&list)[N])
{
static_assert(N % 3 == 0,
"MakePathZD requires values in multiples of 3");
std::size_t size = N / 3;
PathD result(size);
if constexpr (std::numeric_limits<T2>::is_integer)
for (size_t i = 0; i < size; ++i)
result[i] = PointD(list[i * 3],
list[i * 3 + 1], list[i * 3 + 2]);
else
for (size_t i = 0; i < size; ++i)
result[i] = PointD(list[i * 3], list[i * 3 + 1],
static_cast<int64_t>(list[i * 3 + 2]));
return result;
}
#endif
inline Path64 TrimCollinear(const Path64& p, bool is_open_path = false)
{
size_t len = p.size();
if (len < 3)
{
if (!is_open_path || len < 2 || p[0] == p[1]) return Path64();
else return p;
}
Path64 dst;
dst.reserve(len);
Path64::const_iterator srcIt = p.cbegin(), prevIt, stop = p.cend() - 1;
if (!is_open_path)
{
while (srcIt != stop && IsCollinear(*stop, *srcIt, *(srcIt + 1)))
++srcIt;
while (srcIt != stop && IsCollinear(*(stop - 1), *stop, *srcIt))
--stop;
if (srcIt == stop) return Path64();
}
prevIt = srcIt++;
dst.emplace_back(*prevIt);
for (; srcIt != stop; ++srcIt)
{
if (!IsCollinear(*prevIt, *srcIt, *(srcIt + 1)))
{
prevIt = srcIt;
dst.emplace_back(*prevIt);
}
}
if (is_open_path)
dst.emplace_back(*srcIt);
else if (!IsCollinear(*prevIt, *stop, dst[0]))
dst.emplace_back(*stop);
else
{
while (dst.size() > 2 &&
IsCollinear(dst[dst.size() - 1], dst[dst.size() - 2], dst[0]))
dst.pop_back();
if (dst.size() < 3) return Path64();
}
return dst;
}
inline PathD TrimCollinear(const PathD& path, int precision, bool is_open_path = false)
{
int error_code = 0;
CheckPrecisionRange(precision, error_code);
if (error_code) return PathD();
const double scale = std::pow(10, precision);
Path64 p = ScalePath<int64_t, double>(path, scale, error_code);
if (error_code) return PathD();
p = TrimCollinear(p, is_open_path);
return ScalePath<double, int64_t>(p, 1/scale, error_code);
}
template <typename T>
inline double Distance(const Point<T> pt1, const Point<T> pt2)
{
return std::sqrt(DistanceSqr(pt1, pt2));
}
template <typename T>
inline double Length(const Path<T>& path, bool is_closed_path = false)
{
double result = 0.0;
if (path.size() < 2) return result;
auto it = path.cbegin(), stop = path.end() - 1;
for (; it != stop; ++it)
result += Distance(*it, *(it + 1));
if (is_closed_path)
result += Distance(*stop, *path.cbegin());
return result;
}
template <typename T>
inline bool NearCollinear(const Point<T>& pt1, const Point<T>& pt2, const Point<T>& pt3, double sin_sqrd_min_angle_rads)
{
double cp = std::abs(CrossProduct(pt1, pt2, pt3));
return (cp * cp) / (DistanceSqr(pt1, pt2) * DistanceSqr(pt2, pt3)) < sin_sqrd_min_angle_rads;
}
template <typename T>
inline Path<T> Ellipse(const Rect<T>& rect, size_t steps = 0)
{
return Ellipse(rect.MidPoint(),
static_cast<double>(rect.Width()) *0.5,
static_cast<double>(rect.Height()) * 0.5, steps);
}
template <typename T>
inline Path<T> Ellipse(const Point<T>& center,
double radiusX, double radiusY = 0, size_t steps = 0)
{
if (radiusX <= 0) return Path<T>();
if (radiusY <= 0) radiusY = radiusX;
if (steps <= 2)
steps = static_cast<size_t>(PI * sqrt((radiusX + radiusY) / 2));
double si = std::sin(2 * PI / steps);
double co = std::cos(2 * PI / steps);
double dx = co, dy = si;
Path<T> result;
result.reserve(steps);
result.emplace_back(center.x + radiusX, static_cast<double>(center.y));
for (size_t i = 1; i < steps; ++i)
{
result.emplace_back(center.x + radiusX * dx, center.y + radiusY * dy);
double x = dx * co - dy * si;
dy = dy * co + dx * si;
dx = x;
}
return result;
}
inline size_t GetNext(size_t current, size_t high,
const std::vector<bool>& flags)
{
++current;
while (current <= high && flags[current]) ++current;
if (current <= high) return current;
current = 0;
while (flags[current]) ++current;
return current;
}
inline size_t GetPrior(size_t current, size_t high,
const std::vector<bool>& flags)
{
if (current == 0) current = high;
else --current;
while (current > 0 && flags[current]) --current;
if (!flags[current]) return current;
current = high;
while (flags[current]) --current;
return current;
}
template <typename T>
inline Path<T> SimplifyPath(const Path<T> &path,
double epsilon, bool isClosedPath = true)
{
const size_t len = path.size(), high = len -1;
const double epsSqr = Sqr(epsilon);
if (len < 4) return Path<T>(path);
std::vector<bool> flags(len);
std::vector<double> distSqr(len);
size_t prior = high, curr = 0, start, next, prior2;
if (isClosedPath)
{
distSqr[0] = PerpendicDistFromLineSqrd(path[0], path[high], path[1]);
distSqr[high] = PerpendicDistFromLineSqrd(path[high], path[0], path[high - 1]);
}
else
{
distSqr[0] = MAX_DBL;
distSqr[high] = MAX_DBL;
}
for (size_t i = 1; i < high; ++i)
distSqr[i] = PerpendicDistFromLineSqrd(path[i], path[i - 1], path[i + 1]);
for (;;)
{
if (distSqr[curr] > epsSqr)
{
start = curr;
do
{
curr = GetNext(curr, high, flags);
} while (curr != start && distSqr[curr] > epsSqr);
if (curr == start) break;
}
prior = GetPrior(curr, high, flags);
next = GetNext(curr, high, flags);
if (next == prior) break;
// flag for removal the smaller of adjacent 'distances'
if (distSqr[next] < distSqr[curr])
{
prior2 = prior;
prior = curr;
curr = next;
next = GetNext(next, high, flags);
}
else
prior2 = GetPrior(prior, high, flags);
flags[curr] = true;
curr = next;
next = GetNext(next, high, flags);
if (isClosedPath || ((curr != high) && (curr != 0)))
distSqr[curr] = PerpendicDistFromLineSqrd(path[curr], path[prior], path[next]);
if (isClosedPath || ((prior != 0) && (prior != high)))
distSqr[prior] = PerpendicDistFromLineSqrd(path[prior], path[prior2], path[curr]);
}
Path<T> result;
result.reserve(len);
for (typename Path<T>::size_type i = 0; i < len; ++i)
if (!flags[i]) result.emplace_back(path[i]);
return result;
}
template <typename T>
inline Paths<T> SimplifyPaths(const Paths<T> &paths,
double epsilon, bool isClosedPath = true)
{
Paths<T> result;
result.reserve(paths.size());
for (const auto& path : paths)
result.emplace_back(std::move(SimplifyPath(path, epsilon, isClosedPath)));
return result;
}
template <typename T>
inline void RDP(const Path<T> path, std::size_t begin,
std::size_t end, double epsSqrd, std::vector<bool>& flags)
{
typename Path<T>::size_type idx = 0;
double max_d = 0;
while (end > begin && path[begin] == path[end]) flags[end--] = false;
for (typename Path<T>::size_type i = begin + 1; i < end; ++i)
{
// PerpendicDistFromLineSqrd - avoids expensive Sqrt()
double d = PerpendicDistFromLineSqrd(path[i], path[begin], path[end]);
if (d <= max_d) continue;
max_d = d;
idx = i;
}
if (max_d <= epsSqrd) return;
flags[idx] = true;
if (idx > begin + 1) RDP(path, begin, idx, epsSqrd, flags);
if (idx < end - 1) RDP(path, idx, end, epsSqrd, flags);
}
template <typename T>
inline Path<T> RamerDouglasPeucker(const Path<T>& path, double epsilon)
{
const typename Path<T>::size_type len = path.size();
if (len < 5) return Path<T>(path);
std::vector<bool> flags(len);
flags[0] = true;
flags[len - 1] = true;
RDP(path, 0, len - 1, Sqr(epsilon), flags);
Path<T> result;
result.reserve(len);
for (typename Path<T>::size_type i = 0; i < len; ++i)
if (flags[i])
result.emplace_back(path[i]);
return result;
}
template <typename T>
inline Paths<T> RamerDouglasPeucker(const Paths<T>& paths, double epsilon)
{
Paths<T> result;
result.reserve(paths.size());
std::transform(paths.begin(), paths.end(), back_inserter(result),
[epsilon](const auto& path)
{ return RamerDouglasPeucker<T>(path, epsilon); });
return result;
}
} // end Clipper2Lib namespace
#endif // CLIPPER_H

View File

@@ -0,0 +1,120 @@
/*******************************************************************************
* Author : Angus Johnson *
* Date : 1 November 2023 *
* Website : https://www.angusj.com *
* Copyright : Angus Johnson 2010-2023 *
* Purpose : Minkowski Sum and Difference *
* License : https://www.boost.org/LICENSE_1_0.txt *
*******************************************************************************/
#ifndef CLIPPER_MINKOWSKI_H
#define CLIPPER_MINKOWSKI_H
#include "clipper2/clipper.core.h"
#ifdef USINGZ
namespace Clipper2Lib_Z {
#else
namespace Clipper2Lib {
#endif
namespace detail
{
inline Paths64 Minkowski(const Path64& pattern, const Path64& path, bool isSum, bool isClosed)
{
size_t delta = isClosed ? 0 : 1;
size_t patLen = pattern.size(), pathLen = path.size();
if (patLen == 0 || pathLen == 0) return Paths64();
Paths64 tmp;
tmp.reserve(pathLen);
if (isSum)
{
for (const Point64& p : path)
{
Path64 path2(pattern.size());
std::transform(pattern.cbegin(), pattern.cend(),
path2.begin(), [p](const Point64& pt2) {return p + pt2; });
tmp.emplace_back(std::move(path2));
}
}
else
{
for (const Point64& p : path)
{
Path64 path2(pattern.size());
std::transform(pattern.cbegin(), pattern.cend(),
path2.begin(), [p](const Point64& pt2) {return p - pt2; });
tmp.emplace_back(std::move(path2));
}
}
Paths64 result;
result.reserve((pathLen - delta) * patLen);
size_t g = isClosed ? pathLen - 1 : 0;
for (size_t h = patLen - 1, i = delta; i < pathLen; ++i)
{
for (size_t j = 0; j < patLen; j++)
{
Path64 quad;
quad.reserve(4);
{
quad.emplace_back(tmp[g][h]);
quad.emplace_back(tmp[i][h]);
quad.emplace_back(tmp[i][j]);
quad.emplace_back(tmp[g][j]);
};
if (!IsPositive(quad))
std::reverse(quad.begin(), quad.end());
result.emplace_back(std::move(quad));
h = j;
}
g = i;
}
return result;
}
inline Paths64 Union(const Paths64& subjects, FillRule fillrule)
{
Paths64 result;
Clipper64 clipper;
clipper.AddSubject(subjects);
clipper.Execute(ClipType::Union, fillrule, result);
return result;
}
} // namespace internal
inline Paths64 MinkowskiSum(const Path64& pattern, const Path64& path, bool isClosed)
{
return detail::Union(detail::Minkowski(pattern, path, true, isClosed), FillRule::NonZero);
}
inline PathsD MinkowskiSum(const PathD& pattern, const PathD& path, bool isClosed, int decimalPlaces = 2)
{
int error_code = 0;
double scale = pow(10, decimalPlaces);
Path64 pat64 = ScalePath<int64_t, double>(pattern, scale, error_code);
Path64 path64 = ScalePath<int64_t, double>(path, scale, error_code);
Paths64 tmp = detail::Union(detail::Minkowski(pat64, path64, true, isClosed), FillRule::NonZero);
return ScalePaths<double, int64_t>(tmp, 1 / scale, error_code);
}
inline Paths64 MinkowskiDiff(const Path64& pattern, const Path64& path, bool isClosed)
{
return detail::Union(detail::Minkowski(pattern, path, false, isClosed), FillRule::NonZero);
}
inline PathsD MinkowskiDiff(const PathD& pattern, const PathD& path, bool isClosed, int decimalPlaces = 2)
{
int error_code = 0;
double scale = pow(10, decimalPlaces);
Path64 pat64 = ScalePath<int64_t, double>(pattern, scale, error_code);
Path64 path64 = ScalePath<int64_t, double>(path, scale, error_code);
Paths64 tmp = detail::Union(detail::Minkowski(pat64, path64, false, isClosed), FillRule::NonZero);
return ScalePaths<double, int64_t>(tmp, 1 / scale, error_code);
}
} // Clipper2Lib namespace
#endif // CLIPPER_MINKOWSKI_H

View File

@@ -0,0 +1,129 @@
/*******************************************************************************
* Author : Angus Johnson *
* Date : 22 January 2025 *
* Website : https://www.angusj.com *
* Copyright : Angus Johnson 2010-2025 *
* Purpose : Path Offset (Inflate/Shrink) *
* License : https://www.boost.org/LICENSE_1_0.txt *
*******************************************************************************/
#ifndef CLIPPER_OFFSET_H_
#define CLIPPER_OFFSET_H_
#include "clipper.core.h"
#include "clipper.engine.h"
#include <optional>
#ifdef USINGZ
namespace Clipper2Lib_Z {
#else
namespace Clipper2Lib {
#endif
enum class JoinType { Square, Bevel, Round, Miter };
//Square : Joins are 'squared' at exactly the offset distance (more complex code)
//Bevel : Similar to Square, but the offset distance varies with angle (simple code & faster)
enum class EndType {Polygon, Joined, Butt, Square, Round};
//Butt : offsets both sides of a path, with square blunt ends
//Square : offsets both sides of a path, with square extended ends
//Round : offsets both sides of a path, with round extended ends
//Joined : offsets both sides of a path, with joined ends
//Polygon: offsets only one side of a closed path
typedef std::function<double(const Path64& path, const PathD& path_normals, size_t curr_idx, size_t prev_idx)> DeltaCallback64;
class ClipperOffset {
private:
class Group {
public:
Paths64 paths_in;
std::optional<size_t> lowest_path_idx{};
bool is_reversed = false;
JoinType join_type;
EndType end_type;
Group(const Paths64& _paths, JoinType _join_type, EndType _end_type);
};
int error_code_ = 0;
double delta_ = 0.0;
double group_delta_ = 0.0;
double temp_lim_ = 0.0;
double steps_per_rad_ = 0.0;
double step_sin_ = 0.0;
double step_cos_ = 0.0;
PathD norms;
Path64 path_out;
Paths64* solution = nullptr;
PolyTree64* solution_tree = nullptr;
std::vector<Group> groups_;
JoinType join_type_ = JoinType::Bevel;
EndType end_type_ = EndType::Polygon;
double miter_limit_ = 0.0;
double arc_tolerance_ = 0.0;
bool preserve_collinear_ = false;
bool reverse_solution_ = false;
#ifdef USINGZ
ZCallback64 zCallback64_ = nullptr;
void ZCB(const Point64& bot1, const Point64& top1,
const Point64& bot2, const Point64& top2, Point64& ip);
#endif
DeltaCallback64 deltaCallback64_ = nullptr;
size_t CalcSolutionCapacity();
bool CheckReverseOrientation();
void DoBevel(const Path64& path, size_t j, size_t k);
void DoSquare(const Path64& path, size_t j, size_t k);
void DoMiter(const Path64& path, size_t j, size_t k, double cos_a);
void DoRound(const Path64& path, size_t j, size_t k, double angle);
void BuildNormals(const Path64& path);
void OffsetPolygon(Group& group, const Path64& path);
void OffsetOpenJoined(Group& group, const Path64& path);
void OffsetOpenPath(Group& group, const Path64& path);
void OffsetPoint(Group& group, const Path64& path, size_t j, size_t k);
void DoGroupOffset(Group &group);
void ExecuteInternal(double delta);
public:
explicit ClipperOffset(double miter_limit = 2.0,
double arc_tolerance = 0.0,
bool preserve_collinear = false,
bool reverse_solution = false) :
miter_limit_(miter_limit), arc_tolerance_(arc_tolerance),
preserve_collinear_(preserve_collinear),
reverse_solution_(reverse_solution) { };
~ClipperOffset() { Clear(); };
int ErrorCode() const { return error_code_; };
void AddPath(const Path64& path, JoinType jt_, EndType et_);
void AddPaths(const Paths64& paths, JoinType jt_, EndType et_);
void Clear() { groups_.clear(); norms.clear(); };
void Execute(double delta, Paths64& sols_64);
void Execute(double delta, PolyTree64& polytree);
void Execute(DeltaCallback64 delta_cb, Paths64& paths);
double MiterLimit() const { return miter_limit_; }
void MiterLimit(double miter_limit) { miter_limit_ = miter_limit; }
//ArcTolerance: needed for rounded offsets (See offset_triginometry2.svg)
double ArcTolerance() const { return arc_tolerance_; }
void ArcTolerance(double arc_tolerance) { arc_tolerance_ = arc_tolerance; }
bool PreserveCollinear() const { return preserve_collinear_; }
void PreserveCollinear(bool preserve_collinear){preserve_collinear_ = preserve_collinear;}
bool ReverseSolution() const { return reverse_solution_; }
void ReverseSolution(bool reverse_solution) {reverse_solution_ = reverse_solution;}
#ifdef USINGZ
void SetZCallback(ZCallback64 cb) { zCallback64_ = cb; }
#endif
void SetDeltaCallback(DeltaCallback64 cb) { deltaCallback64_ = cb; }
};
}
#endif /* CLIPPER_OFFSET_H_ */

View File

@@ -0,0 +1,83 @@
/*******************************************************************************
* Author : Angus Johnson *
* Date : 5 July 2024 *
* Website : https://www.angusj.com *
* Copyright : Angus Johnson 2010-2024 *
* Purpose : FAST rectangular clipping *
* License : https://www.boost.org/LICENSE_1_0.txt *
*******************************************************************************/
#ifndef CLIPPER_RECTCLIP_H
#define CLIPPER_RECTCLIP_H
#include "clipper2/clipper.core.h"
#include <queue>
#ifdef USINGZ
namespace Clipper2Lib_Z {
#else
namespace Clipper2Lib {
#endif
// Location: the order is important here, see StartLocsIsClockwise()
enum class Location { Left, Top, Right, Bottom, Inside };
class OutPt2;
typedef std::vector<OutPt2*> OutPt2List;
class OutPt2 {
public:
Point64 pt;
size_t owner_idx = 0;
OutPt2List* edge = nullptr;
OutPt2* next = nullptr;
OutPt2* prev = nullptr;
};
//------------------------------------------------------------------------------
// RectClip64
//------------------------------------------------------------------------------
class RectClip64 {
private:
void ExecuteInternal(const Path64& path);
Path64 GetPath(OutPt2*& op);
protected:
const Rect64 rect_;
const Path64 rect_as_path_;
const Point64 rect_mp_;
Rect64 path_bounds_;
std::deque<OutPt2> op_container_;
OutPt2List results_; // each path can be broken into multiples
OutPt2List edges_[8]; // clockwise and counter-clockwise
std::vector<Location> start_locs_;
void CheckEdges();
void TidyEdges(size_t idx, OutPt2List& cw, OutPt2List& ccw);
void GetNextLocation(const Path64& path,
Location& loc, size_t& i, size_t highI);
OutPt2* Add(Point64 pt, bool start_new = false);
void AddCorner(Location prev, Location curr);
void AddCorner(Location& loc, bool isClockwise);
public:
explicit RectClip64(const Rect64& rect) :
rect_(rect),
rect_as_path_(rect.AsPath()),
rect_mp_(rect.MidPoint()) {}
Paths64 Execute(const Paths64& paths);
};
//------------------------------------------------------------------------------
// RectClipLines64
//------------------------------------------------------------------------------
class RectClipLines64 : public RectClip64 {
private:
void ExecuteInternal(const Path64& path);
Path64 GetPath(OutPt2*& op);
public:
explicit RectClipLines64(const Rect64& rect) : RectClip64(rect) {};
Paths64 Execute(const Paths64& paths);
};
} // Clipper2Lib namespace
#endif // CLIPPER_RECTCLIP_H

View File

@@ -0,0 +1,6 @@
#ifndef CLIPPER_VERSION_H
#define CLIPPER_VERSION_H
constexpr auto CLIPPER2_VERSION = "1.5.2";
#endif // CLIPPER_VERSION_H

View File

@@ -0,0 +1,17 @@
// Hackish wrapper around the ClipperLib library to compile the Clipper2 library with the Z support.
#ifndef clipper2_z_hpp
#ifdef CLIPPER_H
#error "You should include clipper2_z.hpp before clipper.h"
#endif
#define clipper2_z_hpp
// Enable the Z coordinate support.
#define USINGZ
#include "clipper.h"
#undef CLIPPER_H
#undef USINGZ
#endif // clipper2_z_hpp

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,658 @@
/*******************************************************************************
* Author : Angus Johnson *
* Date : 22 January 2025 *
* Website : https://www.angusj.com *
* Copyright : Angus Johnson 2010-2025 *
* Purpose : Path Offset (Inflate/Shrink) *
* License : https://www.boost.org/LICENSE_1_0.txt *
*******************************************************************************/
#include "clipper2/clipper.h"
#include "clipper2/clipper.offset.h"
#ifdef USINGZ
namespace Clipper2Lib_Z {
#else
namespace Clipper2Lib {
#endif
const double floating_point_tolerance = 1e-12;
// Clipper2 approximates arcs by using series of relatively short straight
//line segments. And logically, shorter line segments will produce better arc
// approximations. But very short segments can degrade performance, usually
// with little or no discernable improvement in curve quality. Very short
// segments can even detract from curve quality, due to the effects of integer
// rounding. Since there isn't an optimal number of line segments for any given
// arc radius (that perfectly balances curve approximation with performance),
// arc tolerance is user defined. Nevertheless, when the user doesn't define
// an arc tolerance (ie leaves alone the 0 default value), the calculated
// default arc tolerance (offset_radius / 500) generally produces good (smooth)
// arc approximations without producing excessively small segment lengths.
// See also: https://www.angusj.com/clipper2/Docs/Trigonometry.htm
const double arc_const = 0.002; // <-- 1/500
//------------------------------------------------------------------------------
// Miscellaneous methods
//------------------------------------------------------------------------------
std::optional<size_t> GetLowestClosedPathIdx(const Paths64& paths)
{
std::optional<size_t> result;
Point64 botPt = Point64(INT64_MAX, INT64_MIN);
for (size_t i = 0; i < paths.size(); ++i)
{
for (const Point64& pt : paths[i])
{
if ((pt.y < botPt.y) ||
((pt.y == botPt.y) && (pt.x >= botPt.x))) continue;
result = i;
botPt.x = pt.x;
botPt.y = pt.y;
}
}
return result;
}
inline double Hypot(double x, double y)
{
// given that this is an internal function, and given the x and y parameters
// will always be coordinate values (or the difference between coordinate values),
// x and y should always be within INT64_MIN to INT64_MAX. Consequently,
// there should be no risk that the following computation will overflow
// see https://stackoverflow.com/a/32436148/359538
return std::sqrt(x * x + y * y);
}
static PointD GetUnitNormal(const Point64& pt1, const Point64& pt2)
{
if (pt1 == pt2) return PointD(0.0, 0.0);
double dx = static_cast<double>(pt2.x - pt1.x);
double dy = static_cast<double>(pt2.y - pt1.y);
double inverse_hypot = 1.0 / Hypot(dx, dy);
dx *= inverse_hypot;
dy *= inverse_hypot;
return PointD(dy, -dx);
}
inline bool AlmostZero(double value, double epsilon = 0.001)
{
return std::fabs(value) < epsilon;
}
inline PointD NormalizeVector(const PointD& vec)
{
double h = Hypot(vec.x, vec.y);
if (AlmostZero(h)) return PointD(0,0);
double inverseHypot = 1 / h;
return PointD(vec.x * inverseHypot, vec.y * inverseHypot);
}
inline PointD GetAvgUnitVector(const PointD& vec1, const PointD& vec2)
{
return NormalizeVector(PointD(vec1.x + vec2.x, vec1.y + vec2.y));
}
inline bool IsClosedPath(EndType et)
{
return et == EndType::Polygon || et == EndType::Joined;
}
static inline Point64 GetPerpendic(const Point64& pt, const PointD& norm, double delta)
{
#ifdef USINGZ
return Point64(pt.x + norm.x * delta, pt.y + norm.y * delta, pt.z);
#else
return Point64(pt.x + norm.x * delta, pt.y + norm.y * delta);
#endif
}
inline PointD GetPerpendicD(const Point64& pt, const PointD& norm, double delta)
{
#ifdef USINGZ
return PointD(pt.x + norm.x * delta, pt.y + norm.y * delta, pt.z);
#else
return PointD(pt.x + norm.x * delta, pt.y + norm.y * delta);
#endif
}
inline void NegatePath(PathD& path)
{
for (PointD& pt : path)
{
pt.x = -pt.x;
pt.y = -pt.y;
#ifdef USINGZ
pt.z = pt.z;
#endif
}
}
//------------------------------------------------------------------------------
// ClipperOffset::Group methods
//------------------------------------------------------------------------------
ClipperOffset::Group::Group(const Paths64& _paths, JoinType _join_type, EndType _end_type):
paths_in(_paths), join_type(_join_type), end_type(_end_type)
{
bool is_joined =
(end_type == EndType::Polygon) ||
(end_type == EndType::Joined);
for (Path64& p: paths_in)
StripDuplicates(p, is_joined);
if (end_type == EndType::Polygon)
{
lowest_path_idx = GetLowestClosedPathIdx(paths_in);
// the lowermost path must be an outer path, so if its orientation is negative,
// then flag the whole group is 'reversed' (will negate delta etc.)
// as this is much more efficient than reversing every path.
is_reversed = (lowest_path_idx.has_value()) && Area(paths_in[lowest_path_idx.value()]) < 0;
}
else
{
lowest_path_idx = std::nullopt;
is_reversed = false;
}
}
//------------------------------------------------------------------------------
// ClipperOffset methods
//------------------------------------------------------------------------------
void ClipperOffset::AddPath(const Path64& path, JoinType jt_, EndType et_)
{
groups_.emplace_back(Paths64(1, path), jt_, et_);
}
void ClipperOffset::AddPaths(const Paths64 &paths, JoinType jt_, EndType et_)
{
if (paths.size() == 0) return;
groups_.emplace_back(paths, jt_, et_);
}
void ClipperOffset::BuildNormals(const Path64& path)
{
norms.clear();
norms.reserve(path.size());
if (path.size() == 0) return;
Path64::const_iterator path_iter, path_stop_iter = --path.cend();
for (path_iter = path.cbegin(); path_iter != path_stop_iter; ++path_iter)
norms.emplace_back(GetUnitNormal(*path_iter,*(path_iter +1)));
norms.emplace_back(GetUnitNormal(*path_stop_iter, *(path.cbegin())));
}
void ClipperOffset::DoBevel(const Path64& path, size_t j, size_t k)
{
PointD pt1, pt2;
if (j == k)
{
double abs_delta = std::abs(group_delta_);
#ifdef USINGZ
pt1 = PointD(path[j].x - abs_delta * norms[j].x, path[j].y - abs_delta * norms[j].y, path[j].z);
pt2 = PointD(path[j].x + abs_delta * norms[j].x, path[j].y + abs_delta * norms[j].y, path[j].z);
#else
pt1 = PointD(path[j].x - abs_delta * norms[j].x, path[j].y - abs_delta * norms[j].y);
pt2 = PointD(path[j].x + abs_delta * norms[j].x, path[j].y + abs_delta * norms[j].y);
#endif
}
else
{
#ifdef USINGZ
pt1 = PointD(path[j].x + group_delta_ * norms[k].x, path[j].y + group_delta_ * norms[k].y, path[j].z);
pt2 = PointD(path[j].x + group_delta_ * norms[j].x, path[j].y + group_delta_ * norms[j].y, path[j].z);
#else
pt1 = PointD(path[j].x + group_delta_ * norms[k].x, path[j].y + group_delta_ * norms[k].y);
pt2 = PointD(path[j].x + group_delta_ * norms[j].x, path[j].y + group_delta_ * norms[j].y);
#endif
}
path_out.emplace_back(pt1);
path_out.emplace_back(pt2);
}
void ClipperOffset::DoSquare(const Path64& path, size_t j, size_t k)
{
PointD vec;
if (j == k)
vec = PointD(norms[j].y, -norms[j].x);
else
vec = GetAvgUnitVector(
PointD(-norms[k].y, norms[k].x),
PointD(norms[j].y, -norms[j].x));
double abs_delta = std::abs(group_delta_);
// now offset the original vertex delta units along unit vector
PointD ptQ = PointD(path[j]);
ptQ = TranslatePoint(ptQ, abs_delta * vec.x, abs_delta * vec.y);
// get perpendicular vertices
PointD pt1 = TranslatePoint(ptQ, group_delta_ * vec.y, group_delta_ * -vec.x);
PointD pt2 = TranslatePoint(ptQ, group_delta_ * -vec.y, group_delta_ * vec.x);
// get 2 vertices along one edge offset
PointD pt3 = GetPerpendicD(path[k], norms[k], group_delta_);
if (j == k)
{
PointD pt4 = PointD(pt3.x + vec.x * group_delta_, pt3.y + vec.y * group_delta_);
PointD pt = ptQ;
GetSegmentIntersectPt(pt1, pt2, pt3, pt4, pt);
//get the second intersect point through reflecion
path_out.emplace_back(ReflectPoint(pt, ptQ));
path_out.emplace_back(pt);
}
else
{
PointD pt4 = GetPerpendicD(path[j], norms[k], group_delta_);
PointD pt = ptQ;
GetSegmentIntersectPt(pt1, pt2, pt3, pt4, pt);
path_out.emplace_back(pt);
//get the second intersect point through reflecion
path_out.emplace_back(ReflectPoint(pt, ptQ));
}
}
void ClipperOffset::DoMiter(const Path64& path, size_t j, size_t k, double cos_a)
{
double q = group_delta_ / (cos_a + 1);
#ifdef USINGZ
path_out.emplace_back(
path[j].x + (norms[k].x + norms[j].x) * q,
path[j].y + (norms[k].y + norms[j].y) * q,
path[j].z);
#else
path_out.emplace_back(
path[j].x + (norms[k].x + norms[j].x) * q,
path[j].y + (norms[k].y + norms[j].y) * q);
#endif
}
void ClipperOffset::DoRound(const Path64& path, size_t j, size_t k, double angle)
{
if (deltaCallback64_) {
// when deltaCallback64_ is assigned, group_delta_ won't be constant,
// so we'll need to do the following calculations for *every* vertex.
double abs_delta = std::fabs(group_delta_);
double arcTol = (arc_tolerance_ > floating_point_tolerance ?
std::min(abs_delta, arc_tolerance_) : abs_delta * arc_const);
double steps_per_360 = std::min(PI / std::acos(1 - arcTol / abs_delta), abs_delta * PI);
step_sin_ = std::sin(2 * PI / steps_per_360);
step_cos_ = std::cos(2 * PI / steps_per_360);
if (group_delta_ < 0.0) step_sin_ = -step_sin_;
steps_per_rad_ = steps_per_360 / (2 * PI);
}
Point64 pt = path[j];
PointD offsetVec = PointD(norms[k].x * group_delta_, norms[k].y * group_delta_);
if (j == k) offsetVec.Negate();
#ifdef USINGZ
path_out.emplace_back(pt.x + offsetVec.x, pt.y + offsetVec.y, pt.z);
#else
path_out.emplace_back(pt.x + offsetVec.x, pt.y + offsetVec.y);
#endif
int steps = static_cast<int>(std::ceil(steps_per_rad_ * std::abs(angle))); // #448, #456
for (int i = 1; i < steps; ++i) // ie 1 less than steps
{
offsetVec = PointD(offsetVec.x * step_cos_ - step_sin_ * offsetVec.y,
offsetVec.x * step_sin_ + offsetVec.y * step_cos_);
#ifdef USINGZ
path_out.emplace_back(pt.x + offsetVec.x, pt.y + offsetVec.y, pt.z);
#else
path_out.emplace_back(pt.x + offsetVec.x, pt.y + offsetVec.y);
#endif
}
path_out.emplace_back(GetPerpendic(path[j], norms[j], group_delta_));
}
void ClipperOffset::OffsetPoint(Group& group, const Path64& path, size_t j, size_t k)
{
// Let A = change in angle where edges join
// A == 0: ie no change in angle (flat join)
// A == PI: edges 'spike'
// sin(A) < 0: right turning
// cos(A) < 0: change in angle is more than 90 degree
if (path[j] == path[k]) return;
double sin_a = CrossProduct(norms[j], norms[k]);
double cos_a = DotProduct(norms[j], norms[k]);
if (sin_a > 1.0) sin_a = 1.0;
else if (sin_a < -1.0) sin_a = -1.0;
if (deltaCallback64_) {
group_delta_ = deltaCallback64_(path, norms, j, k);
if (group.is_reversed) group_delta_ = -group_delta_;
}
if (std::fabs(group_delta_) <= floating_point_tolerance)
{
path_out.emplace_back(path[j]);
return;
}
if (cos_a > -0.999 && (sin_a * group_delta_ < 0)) // test for concavity first (#593)
{
// is concave
// by far the simplest way to construct concave joins, especially those joining very
// short segments, is to insert 3 points that produce negative regions. These regions
// will be removed later by the finishing union operation. This is also the best way
// to ensure that path reversals (ie over-shrunk paths) are removed.
#ifdef USINGZ
path_out.emplace_back(GetPerpendic(path[j], norms[k], group_delta_), path[j].z);
path_out.emplace_back(path[j]); // (#405, #873, #916)
path_out.emplace_back(GetPerpendic(path[j], norms[j], group_delta_), path[j].z);
#else
path_out.emplace_back(GetPerpendic(path[j], norms[k], group_delta_));
path_out.emplace_back(path[j]); // (#405, #873, #916)
path_out.emplace_back(GetPerpendic(path[j], norms[j], group_delta_));
#endif
}
else if (cos_a > 0.999 && join_type_ != JoinType::Round)
{
// almost straight - less than 2.5 degree (#424, #482, #526 & #724)
DoMiter(path, j, k, cos_a);
}
else if (join_type_ == JoinType::Miter)
{
// miter unless the angle is sufficiently acute to exceed ML
if (cos_a > temp_lim_ - 1) DoMiter(path, j, k, cos_a);
else DoSquare(path, j, k);
}
else if (join_type_ == JoinType::Round)
DoRound(path, j, k, std::atan2(sin_a, cos_a));
else if ( join_type_ == JoinType::Bevel)
DoBevel(path, j, k);
else
DoSquare(path, j, k);
}
void ClipperOffset::OffsetPolygon(Group& group, const Path64& path)
{
path_out.clear();
for (Path64::size_type j = 0, k = path.size() - 1; j < path.size(); k = j, ++j)
OffsetPoint(group, path, j, k);
solution->emplace_back(path_out);
}
void ClipperOffset::OffsetOpenJoined(Group& group, const Path64& path)
{
OffsetPolygon(group, path);
Path64 reverse_path(path);
std::reverse(reverse_path.begin(), reverse_path.end());
//rebuild normals
std::reverse(norms.begin(), norms.end());
norms.emplace_back(norms[0]);
norms.erase(norms.begin());
NegatePath(norms);
OffsetPolygon(group, reverse_path);
}
void ClipperOffset::OffsetOpenPath(Group& group, const Path64& path)
{
// do the line start cap
if (deltaCallback64_) group_delta_ = deltaCallback64_(path, norms, 0, 0);
if (std::fabs(group_delta_) <= floating_point_tolerance)
path_out.emplace_back(path[0]);
else
{
switch (end_type_)
{
case EndType::Butt:
DoBevel(path, 0, 0);
break;
case EndType::Round:
DoRound(path, 0, 0, PI);
break;
default:
DoSquare(path, 0, 0);
break;
}
}
size_t highI = path.size() - 1;
// offset the left side going forward
for (Path64::size_type j = 1, k = 0; j < highI; k = j, ++j)
OffsetPoint(group, path, j, k);
// reverse normals
for (size_t i = highI; i > 0; --i)
norms[i] = PointD(-norms[i - 1].x, -norms[i - 1].y);
norms[0] = norms[highI];
// do the line end cap
if (deltaCallback64_)
group_delta_ = deltaCallback64_(path, norms, highI, highI);
if (std::fabs(group_delta_) <= floating_point_tolerance)
path_out.emplace_back(path[highI]);
else
{
switch (end_type_)
{
case EndType::Butt:
DoBevel(path, highI, highI);
break;
case EndType::Round:
DoRound(path, highI, highI, PI);
break;
default:
DoSquare(path, highI, highI);
break;
}
}
for (size_t j = highI -1, k = highI; j > 0; k = j, --j)
OffsetPoint(group, path, j, k);
solution->emplace_back(path_out);
}
void ClipperOffset::DoGroupOffset(Group& group)
{
if (group.end_type == EndType::Polygon)
{
// a straight path (2 points) can now also be 'polygon' offset
// where the ends will be treated as (180 deg.) joins
if (!group.lowest_path_idx.has_value()) delta_ = std::abs(delta_);
group_delta_ = (group.is_reversed) ? -delta_ : delta_;
}
else
group_delta_ = std::abs(delta_);// *0.5;
double abs_delta = std::fabs(group_delta_);
join_type_ = group.join_type;
end_type_ = group.end_type;
if (group.join_type == JoinType::Round || group.end_type == EndType::Round)
{
// calculate the number of steps required to approximate a circle
// (see https://www.angusj.com/clipper2/Docs/Trigonometry.htm)
// arcTol - when arc_tolerance_ is undefined (0) then curve imprecision
// will be relative to the size of the offset (delta). Obviously very
//large offsets will almost always require much less precision.
double arcTol = (arc_tolerance_ > floating_point_tolerance) ?
std::min(abs_delta, arc_tolerance_) : abs_delta * arc_const;
double steps_per_360 = std::min(PI / std::acos(1 - arcTol / abs_delta), abs_delta * PI);
step_sin_ = std::sin(2 * PI / steps_per_360);
step_cos_ = std::cos(2 * PI / steps_per_360);
if (group_delta_ < 0.0) step_sin_ = -step_sin_;
steps_per_rad_ = steps_per_360 / (2 * PI);
}
//double min_area = PI * Sqr(group_delta_);
Paths64::const_iterator path_in_it = group.paths_in.cbegin();
for ( ; path_in_it != group.paths_in.cend(); ++path_in_it)
{
Path64::size_type pathLen = path_in_it->size();
path_out.clear();
if (pathLen == 1) // single point
{
if (deltaCallback64_)
{
group_delta_ = deltaCallback64_(*path_in_it, norms, 0, 0);
if (group.is_reversed) group_delta_ = -group_delta_;
abs_delta = std::fabs(group_delta_);
}
if (group_delta_ < 1) continue;
const Point64& pt = (*path_in_it)[0];
//single vertex so build a circle or square ...
if (group.join_type == JoinType::Round)
{
double radius = abs_delta;
size_t steps = steps_per_rad_ > 0 ? static_cast<size_t>(std::ceil(steps_per_rad_ * 2 * PI)) : 0; //#617
path_out = Ellipse(pt, radius, radius, steps);
#ifdef USINGZ
for (auto& p : path_out) p.z = pt.z;
#endif
}
else
{
int d = (int)std::ceil(abs_delta);
Rect64 r = Rect64(pt.x - d, pt.y - d, pt.x + d, pt.y + d);
path_out = r.AsPath();
#ifdef USINGZ
for (auto& p : path_out) p.z = pt.z;
#endif
}
solution->emplace_back(path_out);
continue;
} // end of offsetting a single point
if ((pathLen == 2) && (group.end_type == EndType::Joined))
end_type_ = (group.join_type == JoinType::Round) ?
EndType::Round :
EndType::Square;
BuildNormals(*path_in_it);
if (end_type_ == EndType::Polygon) OffsetPolygon(group, *path_in_it);
else if (end_type_ == EndType::Joined) OffsetOpenJoined(group, *path_in_it);
else OffsetOpenPath(group, *path_in_it);
}
}
#ifdef USINGZ
void ClipperOffset::ZCB(const Point64& bot1, const Point64& top1,
const Point64& bot2, const Point64& top2, Point64& ip)
{
if (bot1.z && ((bot1.z == bot2.z) || (bot1.z == top2.z))) ip.z = bot1.z;
else if (bot2.z && (bot2.z == top1.z)) ip.z = bot2.z;
else if (top1.z && (top1.z == top2.z)) ip.z = top1.z;
else if (zCallback64_) zCallback64_(bot1, top1, bot2, top2, ip);
}
#endif
size_t ClipperOffset::CalcSolutionCapacity()
{
size_t result = 0;
for (const Group& g : groups_)
result += (g.end_type == EndType::Joined) ? g.paths_in.size() * 2 : g.paths_in.size();
return result;
}
bool ClipperOffset::CheckReverseOrientation()
{
// nb: this assumes there's consistency in orientation between groups
bool is_reversed_orientation = false;
for (const Group& g : groups_)
if (g.end_type == EndType::Polygon)
{
is_reversed_orientation = g.is_reversed;
break;
}
return is_reversed_orientation;
}
void ClipperOffset::ExecuteInternal(double delta)
{
error_code_ = 0;
if (groups_.size() == 0) return;
solution->reserve(CalcSolutionCapacity());
if (std::abs(delta) < 0.5) // ie: offset is insignificant
{
Paths64::size_type sol_size = 0;
for (const Group& group : groups_) sol_size += group.paths_in.size();
solution->reserve(sol_size);
for (const Group& group : groups_)
copy(group.paths_in.begin(), group.paths_in.end(), back_inserter(*solution));
}
else
{
temp_lim_ = (miter_limit_ <= 1) ?
2.0 :
2.0 / (miter_limit_ * miter_limit_);
delta_ = delta;
std::vector<Group>::iterator git;
for (git = groups_.begin(); git != groups_.end(); ++git)
{
DoGroupOffset(*git);
if (!error_code_) continue; // all OK
solution->clear();
}
}
if (!solution->size()) return;
bool paths_reversed = CheckReverseOrientation();
//clean up self-intersections ...
Clipper64 c;
c.PreserveCollinear(false);
//the solution should retain the orientation of the input
c.ReverseSolution(reverse_solution_ != paths_reversed);
#ifdef USINGZ
auto fp = std::bind(&ClipperOffset::ZCB, this, std::placeholders::_1,
std::placeholders::_2, std::placeholders::_3,
std::placeholders::_4, std::placeholders::_5);
c.SetZCallback(fp);
#endif
c.AddSubject(*solution);
if (solution_tree)
{
if (paths_reversed)
c.Execute(ClipType::Union, FillRule::Negative, *solution_tree);
else
c.Execute(ClipType::Union, FillRule::Positive, *solution_tree);
}
else
{
if (paths_reversed)
c.Execute(ClipType::Union, FillRule::Negative, *solution);
else
c.Execute(ClipType::Union, FillRule::Positive, *solution);
}
}
void ClipperOffset::Execute(double delta, Paths64& paths64)
{
paths64.clear();
solution = &paths64;
solution_tree = nullptr;
ExecuteInternal(delta);
}
void ClipperOffset::Execute(double delta, PolyTree64& polytree)
{
polytree.Clear();
solution_tree = &polytree;
solution = new Paths64();
ExecuteInternal(delta);
delete solution;
solution = nullptr;
}
void ClipperOffset::Execute(DeltaCallback64 delta_cb, Paths64& paths)
{
deltaCallback64_ = delta_cb;
Execute(1.0, paths);
}
} // namespace

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
// Hackish wrapper around the ClipperLib library to compile the Clipper library with the Z support.
// Enable the Z coordinate support.
#define USINGZ
// and let it compile
#include "clipper.engine.cpp"
#include "clipper.offset.cpp"
#include "clipper.rectclip.cpp"

View File

@@ -0,0 +1,27 @@
## Earcut.hpp changelog
### master
- Fixed a bunch of rare edge cases that led to bad triangulation (parity with Earcut v2.2.2)
- Removed use of deprecated `std::allocator::construct`
- Fixed a minor z-order hashing bug
- Improved visualization app, better docs
### v0.12.4
- Fixed a crash in Crash in Earcut::findHoleBridge
- Added coverage checks
- Added macOS, MinGW builds
### v0.12.3
- Fixed -Wunused-lambda-capture
### v0.12.2
- Fixed potential division by zero
- Fixed -fsanitize=integer warning
### v0.12.1
- Fixed cast precision warning

View File

@@ -0,0 +1,13 @@
cmake_minimum_required(VERSION 3.13)
project(earcut)
add_library(earcut INTERFACE)
target_include_directories(earcut SYSTEM
INTERFACE
${CMAKE_CURRENT_SOURCE_DIR}
)
target_sources(earcut INTERFACE
${CMAKE_CURRENT_SOURCE_DIR}/earcut.hpp
)

15
deps_src/earcut/LICENSE Normal file
View File

@@ -0,0 +1,15 @@
ISC License
Copyright (c) 2015, Mapbox
Permission to use, copy, modify, and/or distribute this software for any purpose
with or without fee is hereby granted, provided that the above copyright notice
and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.

131
deps_src/earcut/README.md Normal file
View File

@@ -0,0 +1,131 @@
## Earcut
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.
[![Travis](https://img.shields.io/travis/com/mapbox/earcut.hpp.svg)](https://travis-ci.com/github/mapbox/earcut.hpp)
[![AppVeyor](https://ci.appveyor.com/api/projects/status/a1ysrqd69mqn7coo/branch/master?svg=true)](https://ci.appveyor.com/project/Mapbox/earcut-hpp-8wm4o/branch/master)
[![Coverage](https://img.shields.io/coveralls/github/mapbox/earcut.hpp.svg)](https://coveralls.io/github/mapbox/earcut.hpp)
[![Coverity Scan](https://img.shields.io/coverity/scan/14000.svg)](https://scan.coverity.com/projects/14000)
[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/mapbox/earcut.hpp.svg)](http://isitmaintained.com/project/mapbox/earcut.hpp "Average time to resolve an issue")
[![Percentage of issues still open](http://isitmaintained.com/badge/open/mapbox/earcut.hpp.svg)](http://isitmaintained.com/project/mapbox/earcut.hpp "Percentage of issues still open")
[![Mourner](https://img.shields.io/badge/simply-awesome-brightgreen.svg)](https://github.com/mourner/projects)
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
using Coord = 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.
using N = uint32_t;
// Create array
using Point = std::array<Coord, 2>;
std::vector<std::vector<Point>> polygon;
// Fill polygon structure with actual data. Any winding order works.
// The first polyline defines the main polygon.
polygon.push_back({{100, 0}, {100, 100}, {0, 100}, {0, 0}});
// Following polylines define holes.
polygon.push_back({{75, 25}, {75, 75}, {25, 75}, {25, 25}});
// Run tessellation
// 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;
// };
namespace mapbox {
namespace util {
template <>
struct nth<0, IntPoint> {
inline static auto get(const IntPoint &t) {
return t.X;
};
};
template <>
struct nth<1, IntPoint> {
inline static auto get(const IntPoint &t) {
return t.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[]`.
<p align="center">
<img src="https://camo.githubusercontent.com/01836f8ba21af844c93d8d3145f4e9976025a696/68747470733a2f2f692e696d6775722e636f6d2f67314e704c54712e706e67" alt="example triangulation"/>
</p>
## Additional build instructions
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:
* git ([Ubuntu](https://help.ubuntu.com/lts/serverguide/git.html)/[Windows/macOS](http://git-scm.com/downloads))
* cmake 3.2+ ([Ubuntu](https://launchpad.net/~george-edison55/+archive/ubuntu/cmake-3.x)/[Windows/macOS](https://cmake.org/download/))
* OpenGL SDK ([Ubuntu](http://packages.ubuntu.com/de/trusty/libgl1-mesa-dev)/[Windows](https://dev.windows.com/en-us/downloads/windows-10-sdk)/[macOS](https://developer.apple.com/opengl/))
* 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.
### Manual compilation
```bash
git clone --recursive https://github.com/mapbox/earcut.hpp.git
cd earcut.hpp
mkdir build
cd build
cmake ..
make
# ./tests
# ./bench
# ./viz
```
### [Visual Studio](https://www.visualstudio.com/), [Eclipse](https://eclipse.org/), [XCode](https://developer.apple.com/xcode/), ...
```batch
git clone --recursive https://github.com/mapbox/earcut.hpp.git
cd earcut.hpp
mkdir project
cd project
cmake .. -G "Visual Studio 14 2015"
::you can also generate projects for "Visual Studio 12 2013", "XCode", "Eclipse CDT4 - Unix Makefiles"
```
After completion, open the generated project with your IDE.
### [CLion](https://www.jetbrains.com/clion/), [Visual Studio 2017+](https://www.visualstudio.com/)
Import the project from https://github.com/mapbox/earcut.hpp.git and you should be good to go!
## Status
This is currently based on [earcut 2.2.4](https://github.com/mapbox/earcut#224-jul-5-2022).

814
deps_src/earcut/earcut.hpp Normal file
View File

@@ -0,0 +1,814 @@
#pragma once
#include <algorithm>
#include <cassert>
#include <cmath>
#include <cstddef>
#include <cstdint>
#include <limits>
#include <memory>
#include <utility>
#include <vector>
namespace mapbox {
namespace util {
template <std::size_t I, typename T> struct nth {
inline static typename std::tuple_element<I, T>::type
get(const T& t) { return std::get<I>(t); };
};
}
namespace detail {
template <typename N = uint32_t>
class Earcut {
public:
std::vector<N> indices;
std::size_t vertices = 0;
template <typename Polygon>
void operator()(const Polygon& points);
private:
struct Node {
Node(N index, double x_, double y_) : i(index), x(x_), y(y_) {}
Node(const Node&) = delete;
Node& operator=(const Node&) = delete;
Node(Node&&) = delete;
Node& operator=(Node&&) = delete;
const N i;
const double x;
const double y;
// previous and next vertice nodes in a polygon ring
Node* prev = nullptr;
Node* next = nullptr;
// z-order curve value
int32_t z = 0;
// previous and next nodes in z-order
Node* prevZ = nullptr;
Node* nextZ = nullptr;
// indicates whether this is a steiner point
bool steiner = false;
};
template <typename Ring> Node* linkedList(const Ring& points, const bool clockwise);
Node* filterPoints(Node* start, Node* end = nullptr);
void earcutLinked(Node* ear, int pass = 0);
bool isEar(Node* ear);
bool isEarHashed(Node* ear);
Node* cureLocalIntersections(Node* start);
void splitEarcut(Node* start);
template <typename Polygon> Node* eliminateHoles(const Polygon& points, Node* outerNode);
Node* eliminateHole(Node* hole, Node* outerNode);
Node* findHoleBridge(Node* hole, Node* outerNode);
bool sectorContainsSector(const Node* m, const Node* p);
void indexCurve(Node* start);
Node* sortLinked(Node* list);
int32_t zOrder(const double x_, const double y_);
Node* getLeftmost(Node* start);
bool pointInTriangle(double ax, double ay, double bx, double by, double cx, double cy, double px, double py) const;
bool isValidDiagonal(Node* a, Node* b);
double area(const Node* p, const Node* q, const Node* r) const;
bool equals(const Node* p1, const Node* p2);
bool intersects(const Node* p1, const Node* q1, const Node* p2, const Node* q2);
bool onSegment(const Node* p, const Node* q, const Node* r);
int sign(double val);
bool intersectsPolygon(const Node* a, const Node* b);
bool locallyInside(const Node* a, const Node* b);
bool middleInside(const Node* a, const Node* b);
Node* splitPolygon(Node* a, Node* b);
template <typename Point> Node* insertNode(std::size_t i, const Point& p, Node* last);
void removeNode(Node* p);
bool hashing;
double minX, maxX;
double minY, maxY;
double inv_size = 0;
template <typename T, typename Alloc = std::allocator<T>>
class ObjectPool {
public:
ObjectPool() { }
ObjectPool(std::size_t blockSize_) {
reset(blockSize_);
}
~ObjectPool() {
clear();
}
template <typename... Args>
T* construct(Args&&... args) {
if (currentIndex >= blockSize) {
currentBlock = alloc_traits::allocate(alloc, blockSize);
allocations.emplace_back(currentBlock);
currentIndex = 0;
}
T* object = &currentBlock[currentIndex++];
alloc_traits::construct(alloc, object, std::forward<Args>(args)...);
return object;
}
void reset(std::size_t newBlockSize) {
for (auto allocation : allocations) {
alloc_traits::deallocate(alloc, allocation, blockSize);
}
allocations.clear();
blockSize = std::max<std::size_t>(1, newBlockSize);
currentBlock = nullptr;
currentIndex = blockSize;
}
void clear() { reset(blockSize); }
private:
T* currentBlock = nullptr;
std::size_t currentIndex = 1;
std::size_t blockSize = 1;
std::vector<T*> allocations;
Alloc alloc;
typedef typename std::allocator_traits<Alloc> alloc_traits;
};
ObjectPool<Node> nodes;
};
template <typename N> template <typename Polygon>
void Earcut<N>::operator()(const Polygon& points) {
// reset
indices.clear();
vertices = 0;
if (points.empty()) return;
double x;
double y;
int threshold = 80;
std::size_t len = 0;
for (size_t i = 0; threshold >= 0 && i < points.size(); i++) {
threshold -= static_cast<int>(points[i].size());
len += points[i].size();
}
//estimate size of nodes and indices
nodes.reset(len * 3 / 2);
indices.reserve(len + points[0].size());
Node* outerNode = linkedList(points[0], true);
if (!outerNode || outerNode->prev == outerNode->next) return;
if (points.size() > 1) outerNode = eliminateHoles(points, outerNode);
// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox
hashing = threshold < 0;
if (hashing) {
Node* p = outerNode->next;
minX = maxX = outerNode->x;
minY = maxY = outerNode->y;
do {
x = p->x;
y = p->y;
minX = std::min<double>(minX, x);
minY = std::min<double>(minY, y);
maxX = std::max<double>(maxX, x);
maxY = std::max<double>(maxY, y);
p = p->next;
} while (p != outerNode);
// minX, minY and inv_size are later used to transform coords into integers for z-order calculation
inv_size = std::max<double>(maxX - minX, maxY - minY);
inv_size = inv_size != .0 ? (32767. / inv_size) : .0;
}
earcutLinked(outerNode);
nodes.clear();
}
// create a circular doubly linked list from polygon points in the specified winding order
template <typename N> template <typename Ring>
typename Earcut<N>::Node*
Earcut<N>::linkedList(const Ring& points, const bool clockwise) {
using Point = typename Ring::value_type;
double sum = 0;
const std::size_t len = points.size();
std::size_t i, j;
Node* last = nullptr;
// calculate original winding order of a polygon ring
for (i = 0, j = len > 0 ? len - 1 : 0; i < len; j = i++) {
const auto& p1 = points[i];
const auto& p2 = points[j];
const double p20 = util::nth<0, Point>::get(p2);
const double p10 = util::nth<0, Point>::get(p1);
const double p11 = util::nth<1, Point>::get(p1);
const double p21 = util::nth<1, Point>::get(p2);
sum += (p20 - p10) * (p11 + p21);
}
// link points into circular doubly-linked list in the specified winding order
if (clockwise == (sum > 0)) {
for (i = 0; i < len; i++) last = insertNode(vertices + i, points[i], last);
} else {
for (i = len; i-- > 0;) last = insertNode(vertices + i, points[i], last);
}
if (last && equals(last, last->next)) {
removeNode(last);
last = last->next;
}
vertices += len;
return last;
}
// eliminate colinear or duplicate points
template <typename N>
typename Earcut<N>::Node*
Earcut<N>::filterPoints(Node* start, Node* end) {
if (!end) end = start;
Node* p = start;
bool again;
do {
again = false;
if (!p->steiner && (equals(p, p->next) || area(p->prev, p, p->next) == 0)) {
removeNode(p);
p = end = p->prev;
if (p == p->next) break;
again = true;
} else {
p = p->next;
}
} while (again || p != end);
return end;
}
// main ear slicing loop which triangulates a polygon (given as a linked list)
template <typename N>
void Earcut<N>::earcutLinked(Node* ear, int pass) {
if (!ear) return;
// interlink polygon nodes in z-order
if (!pass && hashing) indexCurve(ear);
Node* stop = ear;
Node* prev;
Node* next;
// iterate through ears, slicing them one by one
while (ear->prev != ear->next) {
prev = ear->prev;
next = ear->next;
if (hashing ? isEarHashed(ear) : isEar(ear)) {
// cut off the triangle
indices.emplace_back(prev->i);
indices.emplace_back(ear->i);
indices.emplace_back(next->i);
removeNode(ear);
// skipping the next vertice leads to less sliver triangles
ear = next->next;
stop = next->next;
continue;
}
ear = next;
// if we looped through the whole remaining polygon and can't find any more ears
if (ear == stop) {
// try filtering points and slicing again
if (!pass) earcutLinked(filterPoints(ear), 1);
// if this didn't work, try curing all small self-intersections locally
else if (pass == 1) {
ear = cureLocalIntersections(filterPoints(ear));
earcutLinked(ear, 2);
// as a last resort, try splitting the remaining polygon into two
} else if (pass == 2) splitEarcut(ear);
break;
}
}
}
// check whether a polygon node forms a valid ear with adjacent nodes
template <typename N>
bool Earcut<N>::isEar(Node* ear) {
const Node* a = ear->prev;
const Node* b = ear;
const Node* c = ear->next;
if (area(a, b, c) >= 0) return false; // reflex, can't be an ear
// now make sure we don't have other points inside the potential ear
Node* p = ear->next->next;
while (p != ear->prev) {
if (pointInTriangle(a->x, a->y, b->x, b->y, c->x, c->y, p->x, p->y) &&
area(p->prev, p, p->next) >= 0) return false;
p = p->next;
}
return true;
}
template <typename N>
bool Earcut<N>::isEarHashed(Node* ear) {
const Node* a = ear->prev;
const Node* b = ear;
const Node* c = ear->next;
if (area(a, b, c) >= 0) return false; // reflex, can't be an ear
// triangle bbox; min & max are calculated like this for speed
const double minTX = std::min<double>(a->x, std::min<double>(b->x, c->x));
const double minTY = std::min<double>(a->y, std::min<double>(b->y, c->y));
const double maxTX = std::max<double>(a->x, std::max<double>(b->x, c->x));
const double maxTY = std::max<double>(a->y, std::max<double>(b->y, c->y));
// z-order range for the current triangle bbox;
const int32_t minZ = zOrder(minTX, minTY);
const int32_t maxZ = zOrder(maxTX, maxTY);
// first look for points inside the triangle in increasing z-order
Node* p = ear->nextZ;
while (p && p->z <= maxZ) {
if (p != ear->prev && p != ear->next &&
pointInTriangle(a->x, a->y, b->x, b->y, c->x, c->y, p->x, p->y) &&
area(p->prev, p, p->next) >= 0) return false;
p = p->nextZ;
}
// then look for points in decreasing z-order
p = ear->prevZ;
while (p && p->z >= minZ) {
if (p != ear->prev && p != ear->next &&
pointInTriangle(a->x, a->y, b->x, b->y, c->x, c->y, p->x, p->y) &&
area(p->prev, p, p->next) >= 0) return false;
p = p->prevZ;
}
return true;
}
// go through all polygon nodes and cure small local self-intersections
template <typename N>
typename Earcut<N>::Node*
Earcut<N>::cureLocalIntersections(Node* start) {
Node* p = start;
do {
Node* a = p->prev;
Node* b = p->next->next;
// a self-intersection where edge (v[i-1],v[i]) intersects (v[i+1],v[i+2])
if (!equals(a, b) && intersects(a, p, p->next, b) && locallyInside(a, b) && locallyInside(b, a)) {
indices.emplace_back(a->i);
indices.emplace_back(p->i);
indices.emplace_back(b->i);
// remove two nodes involved
removeNode(p);
removeNode(p->next);
p = start = b;
}
p = p->next;
} while (p != start);
return filterPoints(p);
}
// try splitting polygon into two and triangulate them independently
template <typename N>
void Earcut<N>::splitEarcut(Node* start) {
// look for a valid diagonal that divides the polygon into two
Node* a = start;
do {
Node* b = a->next->next;
while (b != a->prev) {
if (a->i != b->i && isValidDiagonal(a, b)) {
// split the polygon in two by the diagonal
Node* c = splitPolygon(a, b);
// filter colinear points around the cuts
a = filterPoints(a, a->next);
c = filterPoints(c, c->next);
// run earcut on each half
earcutLinked(a);
earcutLinked(c);
return;
}
b = b->next;
}
a = a->next;
} while (a != start);
}
// link every hole into the outer loop, producing a single-ring polygon without holes
template <typename N> template <typename Polygon>
typename Earcut<N>::Node*
Earcut<N>::eliminateHoles(const Polygon& points, Node* outerNode) {
const size_t len = points.size();
std::vector<Node*> queue;
for (size_t i = 1; i < len; i++) {
Node* list = linkedList(points[i], false);
if (list) {
if (list == list->next) list->steiner = true;
queue.push_back(getLeftmost(list));
}
}
std::sort(queue.begin(), queue.end(), [](const Node* a, const Node* b) {
return a->x < b->x;
});
// process holes from left to right
for (size_t i = 0; i < queue.size(); i++) {
outerNode = eliminateHole(queue[i], outerNode);
}
return outerNode;
}
// find a bridge between vertices that connects hole with an outer ring and and link it
template <typename N>
typename Earcut<N>::Node*
Earcut<N>::eliminateHole(Node* hole, Node* outerNode) {
Node* bridge = findHoleBridge(hole, outerNode);
if (!bridge) {
return outerNode;
}
Node* bridgeReverse = splitPolygon(bridge, hole);
// filter collinear points around the cuts
filterPoints(bridgeReverse, bridgeReverse->next);
// Check if input node was removed by the filtering
return filterPoints(bridge, bridge->next);
}
// David Eberly's algorithm for finding a bridge between hole and outer polygon
template <typename N>
typename Earcut<N>::Node*
Earcut<N>::findHoleBridge(Node* hole, Node* outerNode) {
Node* p = outerNode;
double hx = hole->x;
double hy = hole->y;
double qx = -std::numeric_limits<double>::infinity();
Node* m = nullptr;
// find a segment intersected by a ray from the hole's leftmost Vertex to the left;
// segment's endpoint with lesser x will be potential connection Vertex
do {
if (hy <= p->y && hy >= p->next->y && p->next->y != p->y) {
double x = p->x + (hy - p->y) * (p->next->x - p->x) / (p->next->y - p->y);
if (x <= hx && x > qx) {
qx = x;
m = p->x < p->next->x ? p : p->next;
if (x == hx) return m; // hole touches outer segment; pick leftmost endpoint
}
}
p = p->next;
} while (p != outerNode);
if (!m) return 0;
// look for points inside the triangle of hole Vertex, segment intersection and endpoint;
// if there are no points found, we have a valid connection;
// otherwise choose the Vertex of the minimum angle with the ray as connection Vertex
const Node* stop = m;
double tanMin = std::numeric_limits<double>::infinity();
double tanCur = 0;
p = m;
double mx = m->x;
double my = m->y;
do {
if (hx >= p->x && p->x >= mx && hx != p->x &&
pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p->x, p->y)) {
tanCur = std::abs(hy - p->y) / (hx - p->x); // tangential
if (locallyInside(p, hole) &&
(tanCur < tanMin || (tanCur == tanMin && (p->x > m->x || sectorContainsSector(m, p))))) {
m = p;
tanMin = tanCur;
}
}
p = p->next;
} while (p != stop);
return m;
}
// whether sector in vertex m contains sector in vertex p in the same coordinates
template <typename N>
bool Earcut<N>::sectorContainsSector(const Node* m, const Node* p) {
return area(m->prev, m, p->prev) < 0 && area(p->next, m, m->next) < 0;
}
// interlink polygon nodes in z-order
template <typename N>
void Earcut<N>::indexCurve(Node* start) {
assert(start);
Node* p = start;
do {
p->z = p->z ? p->z : zOrder(p->x, p->y);
p->prevZ = p->prev;
p->nextZ = p->next;
p = p->next;
} while (p != start);
p->prevZ->nextZ = nullptr;
p->prevZ = nullptr;
sortLinked(p);
}
// Simon Tatham's linked list merge sort algorithm
// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html
template <typename N>
typename Earcut<N>::Node*
Earcut<N>::sortLinked(Node* list) {
assert(list);
Node* p;
Node* q;
Node* e;
Node* tail;
int i, numMerges, pSize, qSize;
int inSize = 1;
for (;;) {
p = list;
list = nullptr;
tail = nullptr;
numMerges = 0;
while (p) {
numMerges++;
q = p;
pSize = 0;
for (i = 0; i < inSize; i++) {
pSize++;
q = q->nextZ;
if (!q) break;
}
qSize = inSize;
while (pSize > 0 || (qSize > 0 && q)) {
if (pSize == 0) {
e = q;
q = q->nextZ;
qSize--;
} else if (qSize == 0 || !q) {
e = p;
p = p->nextZ;
pSize--;
} else if (p->z <= q->z) {
e = p;
p = p->nextZ;
pSize--;
} else {
e = q;
q = q->nextZ;
qSize--;
}
if (tail) tail->nextZ = e;
else list = e;
e->prevZ = tail;
tail = e;
}
p = q;
}
tail->nextZ = nullptr;
if (numMerges <= 1) return list;
inSize *= 2;
}
}
// z-order of a Vertex given coords and size of the data bounding box
template <typename N>
int32_t Earcut<N>::zOrder(const double x_, const double y_) {
// coords are transformed into non-negative 15-bit integer range
int32_t x = static_cast<int32_t>((x_ - minX) * inv_size);
int32_t y = static_cast<int32_t>((y_ - minY) * inv_size);
x = (x | (x << 8)) & 0x00FF00FF;
x = (x | (x << 4)) & 0x0F0F0F0F;
x = (x | (x << 2)) & 0x33333333;
x = (x | (x << 1)) & 0x55555555;
y = (y | (y << 8)) & 0x00FF00FF;
y = (y | (y << 4)) & 0x0F0F0F0F;
y = (y | (y << 2)) & 0x33333333;
y = (y | (y << 1)) & 0x55555555;
return x | (y << 1);
}
// find the leftmost node of a polygon ring
template <typename N>
typename Earcut<N>::Node*
Earcut<N>::getLeftmost(Node* start) {
Node* p = start;
Node* leftmost = start;
do {
if (p->x < leftmost->x || (p->x == leftmost->x && p->y < leftmost->y))
leftmost = p;
p = p->next;
} while (p != start);
return leftmost;
}
// check if a point lies within a convex triangle
template <typename N>
bool Earcut<N>::pointInTriangle(double ax, double ay, double bx, double by, double cx, double cy, double px, double py) const {
return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&
(ax - px) * (by - py) >= (bx - px) * (ay - py) &&
(bx - px) * (cy - py) >= (cx - px) * (by - py);
}
// check if a diagonal between two polygon nodes is valid (lies in polygon interior)
template <typename N>
bool Earcut<N>::isValidDiagonal(Node* a, Node* b) {
return a->next->i != b->i && a->prev->i != b->i && !intersectsPolygon(a, b) && // dones't intersect other edges
((locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible
(area(a->prev, a, b->prev) != 0.0 || area(a, b->prev, b) != 0.0)) || // does not create opposite-facing sectors
(equals(a, b) && area(a->prev, a, a->next) > 0 && area(b->prev, b, b->next) > 0)); // special zero-length case
}
// signed area of a triangle
template <typename N>
double Earcut<N>::area(const Node* p, const Node* q, const Node* r) const {
return (q->y - p->y) * (r->x - q->x) - (q->x - p->x) * (r->y - q->y);
}
// check if two points are equal
template <typename N>
bool Earcut<N>::equals(const Node* p1, const Node* p2) {
return p1->x == p2->x && p1->y == p2->y;
}
// check if two segments intersect
template <typename N>
bool Earcut<N>::intersects(const Node* p1, const Node* q1, const Node* p2, const Node* q2) {
int o1 = sign(area(p1, q1, p2));
int o2 = sign(area(p1, q1, q2));
int o3 = sign(area(p2, q2, p1));
int o4 = sign(area(p2, q2, q1));
if (o1 != o2 && o3 != o4) return true; // general case
if (o1 == 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1
if (o2 == 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1
if (o3 == 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2
if (o4 == 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2
return false;
}
// for collinear points p, q, r, check if point q lies on segment pr
template <typename N>
bool Earcut<N>::onSegment(const Node* p, const Node* q, const Node* r) {
return q->x <= std::max<double>(p->x, r->x) &&
q->x >= std::min<double>(p->x, r->x) &&
q->y <= std::max<double>(p->y, r->y) &&
q->y >= std::min<double>(p->y, r->y);
}
template <typename N>
int Earcut<N>::sign(double val) {
return (0.0 < val) - (val < 0.0);
}
// check if a polygon diagonal intersects any polygon segments
template <typename N>
bool Earcut<N>::intersectsPolygon(const Node* a, const Node* b) {
const Node* p = a;
do {
if (p->i != a->i && p->next->i != a->i && p->i != b->i && p->next->i != b->i &&
intersects(p, p->next, a, b)) return true;
p = p->next;
} while (p != a);
return false;
}
// check if a polygon diagonal is locally inside the polygon
template <typename N>
bool Earcut<N>::locallyInside(const Node* a, const Node* b) {
return area(a->prev, a, a->next) < 0 ?
area(a, b, a->next) >= 0 && area(a, a->prev, b) >= 0 :
area(a, b, a->prev) < 0 || area(a, a->next, b) < 0;
}
// check if the middle Vertex of a polygon diagonal is inside the polygon
template <typename N>
bool Earcut<N>::middleInside(const Node* a, const Node* b) {
const Node* p = a;
bool inside = false;
double px = (a->x + b->x) / 2;
double py = (a->y + b->y) / 2;
do {
if (((p->y > py) != (p->next->y > py)) && p->next->y != p->y &&
(px < (p->next->x - p->x) * (py - p->y) / (p->next->y - p->y) + p->x))
inside = !inside;
p = p->next;
} while (p != a);
return inside;
}
// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits
// polygon into two; if one belongs to the outer ring and another to a hole, it merges it into a
// single ring
template <typename N>
typename Earcut<N>::Node*
Earcut<N>::splitPolygon(Node* a, Node* b) {
Node* a2 = nodes.construct(a->i, a->x, a->y);
Node* b2 = nodes.construct(b->i, b->x, b->y);
Node* an = a->next;
Node* bp = b->prev;
a->next = b;
b->prev = a;
a2->next = an;
an->prev = a2;
b2->next = a2;
a2->prev = b2;
bp->next = b2;
b2->prev = bp;
return b2;
}
// create a node and util::optionally link it with previous one (in a circular doubly linked list)
template <typename N> template <typename Point>
typename Earcut<N>::Node*
Earcut<N>::insertNode(std::size_t i, const Point& pt, Node* last) {
Node* p = nodes.construct(static_cast<N>(i), util::nth<0, Point>::get(pt), util::nth<1, Point>::get(pt));
if (!last) {
p->prev = p;
p->next = p;
} else {
assert(last);
p->next = last->next;
p->prev = last;
last->next->prev = p;
last->next = p;
}
return p;
}
template <typename N>
void Earcut<N>::removeNode(Node* p) {
p->next->prev = p->prev;
p->prev->next = p->next;
if (p->prevZ) p->prevZ->nextZ = p->nextZ;
if (p->nextZ) p->nextZ->prevZ = p->prevZ;
}
}
template <typename N = uint32_t, typename Polygon>
std::vector<N> earcut(const Polygon& poly) {
mapbox::detail::Earcut<N> earcut;
earcut(poly);
return std::move(earcut.indices);
}
}

View File

@@ -153,6 +153,8 @@ namespace ImGui
// const wchar_t CustomSupportsMarker = 0x1D;
// const wchar_t CustomSeamMarker = 0x1E;
// const wchar_t MmuSegmentationMarker = 0x1F;
//const wchar_t HorizontalHide = 0xB1; // ORCA use FoldButtonIcon / UnfoldButtonIcon
//const wchar_t HorizontalShow = 0xB2;
// Do not forget use following letters only in wstring
//BBS use 08xx to avoid unicode character which may be used
@@ -228,5 +230,7 @@ namespace ImGui
const wchar_t OpenHoverDarkButton = 0x085B;
// void MyFunction(const char* name, const MyMatrix44& v);
const wchar_t FilamentGreen = 0x0850;
}

View File

@@ -18,7 +18,7 @@ template <
typename DerivedF,
typename SType,
typename DerivedNF>
IGL_INLINE void igl::loop(
IGL_INLINE bool igl::loop(
const int n_verts,
const Eigen::PlainObjectBase<DerivedF> & F,
Eigen::SparseMatrix<SType>& S,
@@ -26,15 +26,15 @@ IGL_INLINE void igl::loop(
{
typedef Eigen::SparseMatrix<SType> SparseMat;
typedef Eigen::Triplet<SType> Triplet_t;
//Ref. https://graphics.stanford.edu/~mdfisher/subdivision.html
//Heavily borrowing from igl::upsample
DerivedF FF, FFi;
triangle_triangle_adjacency(F, FF, FFi);
std::vector<std::vector<typename DerivedF::Scalar>> adjacencyList;
adjacency_list(F, adjacencyList, true);
//Compute the number and positions of the vertices to insert (on edges)
Eigen::MatrixXi NI = Eigen::MatrixXi::Constant(FF.rows(), FF.cols(), -1);
Eigen::MatrixXi NIdoubles = Eigen::MatrixXi::Zero(FF.rows(), FF.cols());
@@ -48,12 +48,18 @@ IGL_INLINE void igl::loop(
{
NI(i,j) = counter;
NIdoubles(i,j) = 0;
if (FF(i,j) != -1)
if (FF(i,j) != -1)
{
//If it is not a boundary
NI(FF(i,j), FFi(i,j)) = counter;
NIdoubles(i,j) = 1;
} else
int adj_triangle = FF(i, j);
int adj_edge = FFi(i, j);
if (adj_triangle >= 0 && adj_triangle < NI.rows() && adj_edge >= 0 && adj_edge < NI.cols()) {
NI(adj_triangle, adj_edge) = counter;
NIdoubles(i, j) = 1;
} else {
return false;
}
} else
{
//Mark boundary vertices for later
vertIsOnBdry(F(i,j)) = 1;
@@ -63,24 +69,24 @@ IGL_INLINE void igl::loop(
}
}
}
const int& n_odd = n_verts;
const int& n_even = counter;
const int n_newverts = n_odd + n_even;
//Construct vertex positions
std::vector<Triplet_t> tripletList;
for(int i=0; i<n_odd; ++i)
for(int i=0; i<n_odd; ++i)
{
//Old vertices
const std::vector<int>& localAdjList = adjacencyList[i];
if(vertIsOnBdry(i)==1)
if(vertIsOnBdry(i)==1)
{
//Boundary vertex
tripletList.emplace_back(i, localAdjList.front(), 1./8.);
tripletList.emplace_back(i, localAdjList.back(), 1./8.);
tripletList.emplace_back(i, i, 3./4.);
} else
} else
{
const int n = localAdjList.size();
const SType dn = n;
@@ -99,19 +105,19 @@ IGL_INLINE void igl::loop(
tripletList.emplace_back(i, i, 1.-dn*beta);
}
}
for(int i=0; i<FF.rows(); ++i)
for(int i=0; i<FF.rows(); ++i)
{
//New vertices
for(int j=0; j<3; ++j)
for(int j=0; j<3; ++j)
{
if(NIdoubles(i,j)==0)
if(NIdoubles(i,j)==0)
{
if(FF(i,j)==-1)
if(FF(i,j)==-1)
{
//Boundary vertex
tripletList.emplace_back(NI(i,j) + n_odd, F(i,j), 1./2.);
tripletList.emplace_back(NI(i,j) + n_odd, F(i, (j+1)%3), 1./2.);
} else
} else
{
tripletList.emplace_back(NI(i,j) + n_odd, F(i,j), 3./8.);
tripletList.emplace_back(NI(i,j) + n_odd, F(i, (j+1)%3), 3./8.);
@@ -123,33 +129,34 @@ IGL_INLINE void igl::loop(
}
S.resize(n_newverts, n_verts);
S.setFromTriplets(tripletList.begin(), tripletList.end());
// Build the new topology (Every face is replaced by four)
NF.resize(F.rows()*4, 3);
for(int i=0; i<F.rows();++i)
{
Eigen::VectorXi VI(6);
VI << F(i,0), F(i,1), F(i,2), NI(i,0) + n_odd, NI(i,1) + n_odd, NI(i,2) + n_odd;
Eigen::VectorXi f0(3), f1(3), f2(3), f3(3);
f0 << VI(0), VI(3), VI(5);
f1 << VI(1), VI(4), VI(3);
f2 << VI(3), VI(4), VI(5);
f3 << VI(4), VI(2), VI(5);
NF.row((i*4)+0) = f0;
NF.row((i*4)+1) = f1;
NF.row((i*4)+2) = f2;
NF.row((i*4)+3) = f3;
}
return true;
}
template <
typename DerivedV,
typename DerivedV,
typename DerivedF,
typename DerivedNV,
typename DerivedNF>
IGL_INLINE void igl::loop(
IGL_INLINE bool igl::loop(
const Eigen::PlainObjectBase<DerivedV>& V,
const Eigen::PlainObjectBase<DerivedF>& F,
Eigen::PlainObjectBase<DerivedNV>& NV,
@@ -158,16 +165,19 @@ IGL_INLINE void igl::loop(
{
NV = V;
NF = F;
for(int i=0; i<number_of_subdivs; ++i)
for(int i=0; i<number_of_subdivs; ++i)
{
DerivedNF tempF = NF;
Eigen::SparseMatrix<typename DerivedV::Scalar> S;
loop(NV.rows(), tempF, S, NF);
if (!loop(NV.rows(), tempF, S, NF)) {
return false;
}
// This .eval is super important
NV = (S*NV).eval();
}
return true;
}
#ifdef IGL_STATIC_LIBRARY
template void igl::loop<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, int);
#endif
#endif

View File

@@ -29,7 +29,7 @@ namespace igl
typename DerivedF,
typename SType,
typename DerivedNF>
IGL_INLINE void loop(
IGL_INLINE bool loop(
const int n_verts,
const Eigen::PlainObjectBase<DerivedF> & F,
Eigen::SparseMatrix<SType>& S,
@@ -44,11 +44,11 @@ namespace igl
// NV a matrix containing the new vertices
// NF a matrix containing the new faces
template <
typename DerivedV,
typename DerivedV,
typename DerivedF,
typename DerivedNV,
typename DerivedNF>
IGL_INLINE void loop(
IGL_INLINE bool loop(
const Eigen::PlainObjectBase<DerivedV>& V,
const Eigen::PlainObjectBase<DerivedF>& F,
Eigen::PlainObjectBase<DerivedNV>& NV,

View File

@@ -0,0 +1,71 @@
cmake_minimum_required(VERSION 3.5)
project(MD4C C)
set(MD_VERSION_MAJOR 0)
set(MD_VERSION_MINOR 5)
set(MD_VERSION_RELEASE 2)
set(MD_VERSION "${MD_VERSION_MAJOR}.${MD_VERSION_MINOR}.${MD_VERSION_RELEASE}")
set(PROJECT_VERSION "${MD_VERSION}")
set(PROJECT_URL "https://github.com/mity/md4c")
#option(BUILD_MD2HTML_EXECUTABLE "Whether to compile the md2html executable" ON)
#if(WIN32)
# # On Windows, given there is no standard lib install dir etc., we rather
# # by default build static lib.
# option(BUILD_SHARED_LIBS "help string describing option" OFF)
#else()
# # On Linux, MD4C is slowly being adding into some distros which prefer
# # shared lib.
# option(BUILD_SHARED_LIBS "help string describing option" ON)
#endif()
add_definitions(
-DMD_VERSION_MAJOR=${MD_VERSION_MAJOR}
-DMD_VERSION_MINOR=${MD_VERSION_MINOR}
-DMD_VERSION_RELEASE=${MD_VERSION_RELEASE}
)
#set(CMAKE_CONFIGURATION_TYPES Debug Release RelWithDebInfo MinSizeRel)
#if("${CMAKE_BUILD_TYPE}" STREQUAL "")
# set(CMAKE_BUILD_TYPE $ENV{CMAKE_BUILD_TYPE})
#
# if("${CMAKE_BUILD_TYPE}" STREQUAL "")
# set(CMAKE_BUILD_TYPE "Release")
# endif()
#endif()
if(${CMAKE_C_COMPILER_ID} MATCHES GNU|Clang)
add_compile_options(-Wall -Wextra -Wshadow)
# We enforce -Wdeclaration-after-statement because Qt project needs to
# build MD4C with Integrity compiler which chokes whenever a declaration
# is not at the beginning of a block.
add_compile_options(-Wdeclaration-after-statement)
elseif(MSVC)
# Disable warnings about the so-called unsecured functions:
add_definitions(/D_CRT_SECURE_NO_WARNINGS)
add_compile_options(/W3)
# Specify proper C runtime library:
string(REGEX REPLACE "/M[DT]d?" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
string(REGEX REPLACE "/M[DT]d?" "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
string(REGEX REPLACE "/M[DT]d?" "" CMAKE_C_FLAGS_RELWITHDEBINFO "{$CMAKE_C_FLAGS_RELWITHDEBINFO}")
string(REGEX REPLACE "/M[DT]d?" "" CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELEASE} /MT")
set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_RELEASE} /MT")
endif()
include(GNUInstallDirs)
add_subdirectory(src)
#if (BUILD_MD2HTML_EXECUTABLE)
# add_subdirectory(md2html)
#endif ()

22
deps_src/md4c/LICENSE.md Normal file
View File

@@ -0,0 +1,22 @@
# The MIT License (MIT)
Copyright © 2016-2024 Martin Mitáš
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the “Software”),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.

297
deps_src/md4c/README.md Normal file
View File

@@ -0,0 +1,297 @@
# MD4C Readme
* Home: http://github.com/mity/md4c
* Wiki: http://github.com/mity/md4c/wiki
* Issue tracker: http://github.com/mity/md4c/issues
MD4C stands for "Markdown for C" and that's exactly what this project is about.
## What is Markdown
In short, Markdown is the markup language this `README.md` file is written in.
The following resources can explain more if you are unfamiliar with it:
* [Wikipedia article](http://en.wikipedia.org/wiki/Markdown)
* [CommonMark site](http://commonmark.org)
## What is MD4C
MD4C is Markdown parser implementation in C, with the following features:
* **Compliance:** Generally, MD4C aims to be compliant to the latest version of
[CommonMark specification](http://spec.commonmark.org/). Currently, we are
fully compliant to CommonMark 0.31.
* **Extensions:** MD4C supports some commonly requested and accepted extensions.
See below.
* **Performance:** MD4C is [very fast](https://talk.commonmark.org/t/2520).
* **Compactness:** MD4C parser is implemented in one source file and one header
file. There are no dependencies other than standard C library.
* **Embedding:** MD4C parser is easy to reuse in other projects, its API is
very straightforward: There is actually just one function, `md_parse()`.
* **Push model:** MD4C parses the complete document and calls few callback
functions provided by the application to inform it about a start/end of
every block, a start/end of every span, and with any textual contents.
* **Portability:** MD4C builds and works on Windows and POSIX-compliant OSes.
(It should be simple to make it run also on most other platforms, at least as
long as the platform provides C standard library, including a heap memory
management.)
* **Encoding:** MD4C by default expects UTF-8 encoding of the input document.
But it can be compiled to recognize ASCII-only control characters (i.e. to
disable all Unicode-specific code), or (on Windows) to expect UTF-16 (i.e.
what is on Windows commonly called just "Unicode"). See more details below.
* **Permissive license:** MD4C is available under the [MIT license](LICENSE.md).
## Using MD4C
### Parsing Markdown
If you need just to parse a Markdown document, you need to include `md4c.h`
and link against MD4C library (`-lmd4c`); or alternatively add `md4c.[hc]`
directly to your code base as the parser is only implemented in the single C
source file.
The main provided function is `md_parse()`. It takes a text in the Markdown
syntax and a pointer to a structure which provides pointers to several callback
functions.
As `md_parse()` processes the input, it calls the callbacks (when entering or
leaving any Markdown block or span; and when outputting any textual content of
the document), allowing application to convert it into another format or render
it onto the screen.
### Converting to HTML
If you need to convert Markdown to HTML, include `md4c-html.h` and link against
MD4C-HTML library (`-lmd4c-html`); or alternatively add the sources `md4c.[hc]`,
`md4c-html.[hc]` and `entity.[hc]` into your code base.
To convert a Markdown input, call `md_html()` function. It takes the Markdown
input and calls the provided callback function. The callback is fed with
chunks of the HTML output. Typical callback implementation just appends the
chunks into a buffer or writes them to a file.
## Markdown Extensions
The default behavior is to recognize only Markdown syntax defined by the
[CommonMark specification](http://spec.commonmark.org/).
However, with appropriate flags, the behavior can be tuned to enable some
extensions:
* With the flag `MD_FLAG_COLLAPSEWHITESPACE`, a non-trivial whitespace is
collapsed into a single space.
* With the flag `MD_FLAG_TABLES`, GitHub-style tables are supported.
* With the flag `MD_FLAG_TASKLISTS`, GitHub-style task lists are supported.
* With the flag `MD_FLAG_STRIKETHROUGH`, strike-through spans are enabled
(text enclosed in tilde marks, e.g. `~foo bar~`).
* With the flag `MD_FLAG_PERMISSIVEURLAUTOLINKS` permissive URL autolinks
(not enclosed in `<` and `>`) are supported.
* With the flag `MD_FLAG_PERMISSIVEEMAILAUTOLINKS`, permissive e-mail
autolinks (not enclosed in `<` and `>`) are supported.
* With the flag `MD_FLAG_PERMISSIVEWWWAUTOLINKS` permissive WWW autolinks
without any scheme specified (e.g. `www.example.com`) are supported. MD4C
then assumes `http:` scheme.
* With the flag `MD_FLAG_LATEXMATHSPANS` LaTeX math spans (`$...$`) and
LaTeX display math spans (`$$...$$`) are supported. (Note though that the
HTML renderer outputs them verbatim in a custom tag `<x-equation>`.)
* With the flag `MD_FLAG_WIKILINKS`, wiki-style links (`[[link label]]` and
`[[target article|link label]]`) are supported. (Note that the HTML renderer
outputs them in a custom tag `<x-wikilink>`.)
* With the flag `MD_FLAG_UNDERLINE`, underscore (`_`) denotes an underline
instead of an ordinary emphasis or strong emphasis.
Few features of CommonMark (those some people see as mis-features) may be
disabled with the following flags:
* With the flag `MD_FLAG_NOHTMLSPANS` or `MD_FLAG_NOHTMLBLOCKS`, raw inline
HTML or raw HTML blocks respectively are disabled.
* With the flag `MD_FLAG_NOINDENTEDCODEBLOCKS`, indented code blocks are
disabled.
## Input/Output Encoding
The CommonMark specification declares that any sequence of Unicode code points
is a valid CommonMark document.
But, under a closer inspection, Unicode plays any role in few very specific
situations when parsing Markdown documents:
1. For detection of word boundaries when processing emphasis and strong
emphasis, some classification of Unicode characters (whether it is
a whitespace or a punctuation) is needed.
2. For (case-insensitive) matching of a link reference label with the
corresponding link reference definition, Unicode case folding is used.
3. For translating HTML entities (e.g. `&amp;`) and numeric character
references (e.g. `&#35;` or `&#xcab;`) into their Unicode equivalents.
However note MD4C leaves this translation on the renderer/application; as
the renderer is supposed to really know output encoding and whether it
really needs to perform this kind of translation. (For example, when the
renderer outputs HTML, it may leave the entities untranslated and defer the
work to a web browser.)
MD4C relies on this property of the CommonMark and the implementation is, to
a large degree, encoding-agnostic. Most of MD4C code only assumes that the
encoding of your choice is compatible with ASCII. I.e. that the codepoints
below 128 have the same numeric values as ASCII.
Any input MD4C does not understand is simply seen as part of the document text
and sent to the renderer's callback functions unchanged.
The two situations (word boundary detection and link reference matching) where
MD4C has to understand Unicode are handled as specified by the following
preprocessor macros (as specified at the time MD4C is being built):
* If preprocessor macro `MD4C_USE_UTF8` is defined, MD4C assumes UTF-8 for the
word boundary detection and for the case-insensitive matching of link labels.
When none of these macros is explicitly used, this is the default behavior.
* On Windows, if preprocessor macro `MD4C_USE_UTF16` is defined, MD4C uses
`WCHAR` instead of `char` and assumes UTF-16 encoding in those situations.
(UTF-16 is what Windows developers usually call just "Unicode" and what
Win32API generally works with.)
Note that because this macro affects also the types in `md4c.h`, you have
to define the macro both when building MD4C as well as when including
`md4c.h`.
Also note this is only supported in the parser (`md4c.[hc]`). The HTML
renderer does not support this and you will have to write your own custom
renderer to use this feature.
* If preprocessor macro `MD4C_USE_ASCII` is defined, MD4C assumes nothing but
an ASCII input.
That effectively means that non-ASCII whitespace or punctuation characters
won't be recognized as such and that link reference matching will work in
a case-insensitive way only for ASCII letters (`[a-zA-Z]`).
## Documentation
The API of the parser is quite well documented in the comments in the `md4c.h`.
Similarly, the markdown-to-html API is described in its header `md4c-html.h`.
There is also [project wiki](http://github.com/mity/md4c/wiki) which provides
some more comprehensive documentation. However note it is incomplete and some
details may be somewhat outdated.
## FAQ
**Q: How does MD4C compare to other Markdown parsers?**
**A:** Some other implementations combine Markdown parser and HTML generator
into a single entangled code hidden behind an interface which just allows the
conversion from Markdown to HTML. They are often unusable if you want to
process the input in any other way.
Second, most parsers (if not all of them; at least within the scope of C/C++
language) are full DOM-like parsers: They construct abstract syntax tree (AST)
representation of the whole Markdown document. That takes time and it leads to
bigger memory footprint.
Building AST is completely fine as long as you need it. If you don't, there is
a very high chance that using MD4C will be substantially faster and less hungry
in terms of memory consumption.
Last but not least, some Markdown parsers are implemented in a naive way. When
fed with a [smartly crafted input pattern](test/pathological_tests.py), they
may exhibit quadratic (or even worse) parsing times. What MD4C can still parse
in a fraction of second may turn into long minutes or possibly hours with them.
Hence, when such a naive parser is used to process an input from an untrusted
source, the possibility of denial-of-service attacks becomes a real danger.
A lot of our effort went into providing linear parsing times no matter what
kind of crazy input MD4C parser is fed with. (If you encounter an input pattern
which leads to a sub-linear parsing times, please do not hesitate and report it
as a bug.)
**Q: Does MD4C perform any input validation?**
**A:** No. And we are proud of it. :-)
CommonMark specification states that any sequence of Unicode characters is
a valid Markdown document. (In practice, this more or less always means UTF-8
encoding.)
In other words, according to the specification, it does not matter whether some
Markdown syntax construction is in some way broken or not. If it's broken, it
won't be recognized and the parser should see it just as a verbatim text.
MD4C takes this a step further: It sees any sequence of bytes as a valid input,
following completely the GIGO philosophy (garbage in, garbage out). I.e. any
ill-formed UTF-8 byte sequence will propagate to the respective callback as
a part of the text.
If you need to validate that the input is, say, a well-formed UTF-8 document,
you have to do it on your own. The easiest way how to do this is to simply
validate the whole document before passing it to the MD4C parser.
## License
MD4C is covered with MIT license, see the file `LICENSE.md`.
## Links to Related Projects
Ports and bindings to other languages:
* [commonmark-d](https://github.com/AuburnSounds/commonmark-d):
Port of MD4C to D language.
* [markdown-wasm](https://github.com/rsms/markdown-wasm):
Port of MD4C to WebAssembly.
* [PyMD4C](https://github.com/dominickpastore/pymd4c):
Python bindings for MD4C
Software using MD4C:
* [imgui_md](https://github.com/mekhontsev/imgui_md):
Markdown renderer for [Dear ImGui](https://github.com/ocornut/imgui)
* [MarkDown Monolith Assembler](https://github.com/1Hyena/mdma):
A command line tool for building browser-based books.
* [QOwnNotes](https://www.qownnotes.org/):
A plain-text file notepad and todo-list manager with markdown support and
ownCloud / Nextcloud integration.
* [Qt](https://www.qt.io/):
Cross-platform C++ GUI framework.
* [Textosaurus](https://github.com/martinrotter/textosaurus):
Cross-platform text editor based on Qt and Scintilla.
* [8th](https://8th-dev.com/):
Cross-platform concatenative programming language.

View File

@@ -0,0 +1,53 @@
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS 1)
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG")
# Build rules for MD4C parser library
configure_file(md4c.pc.in md4c.pc @ONLY)
add_library(md4c md4c.c md4c.h)
set_target_properties(md4c PROPERTIES
COMPILE_FLAGS "-DMD4C_USE_UTF8"
VERSION ${MD_VERSION}
SOVERSION ${MD_VERSION_MAJOR}
PUBLIC_HEADER md4c.h
)
# Build rules for HTML renderer library
configure_file(md4c-html.pc.in md4c-html.pc @ONLY)
add_library(md4c-html md4c-html.c md4c-html.h entity.c entity.h)
set_target_properties(md4c-html PROPERTIES
VERSION ${MD_VERSION}
SOVERSION ${MD_VERSION_MAJOR}
PUBLIC_HEADER md4c-html.h
)
target_link_libraries(md4c-html md4c)
# Install rules
#install(
# TARGETS md4c
# EXPORT md4cConfig
# ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
# LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
# RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
# PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
# INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
#)
#install(FILES ${CMAKE_BINARY_DIR}/src/md4c.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
#
#install(
# TARGETS md4c-html
# EXPORT md4cConfig
# ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
# LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
# RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
# PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
#)
#install(FILES ${CMAKE_BINARY_DIR}/src/md4c-html.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
#
#install(EXPORT md4cConfig DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/md4c/ NAMESPACE md4c::)
#

2185
deps_src/md4c/src/entity.c Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,43 @@
/*
* MD4C: Markdown parser for C
* (http://github.com/mity/md4c)
*
* Copyright (c) 2016-2024 Martin Mitáš
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE.
*/
#ifndef MD4C_ENTITY_H
#define MD4C_ENTITY_H
#include <stdlib.h>
/* Most entities are formed by single Unicode codepoint, few by two codepoints.
* Single-codepoint entities have codepoints[1] set to zero. */
typedef struct ENTITY_tag ENTITY;
struct ENTITY_tag {
const char* name;
unsigned codepoints[2];
};
const ENTITY* entity_lookup(const char* name, size_t name_size);
#endif /* MD4C_ENTITY_H */

View File

@@ -0,0 +1,567 @@
/*
* MD4C: Markdown parser for C
* (http://github.com/mity/md4c)
*
* Copyright (c) 2016-2024 Martin Mitáš
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE.
*/
#include <stdio.h>
#include <string.h>
#include "md4c-html.h"
#include "entity.h"
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199409L
/* C89/90 or old compilers in general may not understand "inline". */
#if defined __GNUC__
#define inline __inline__
#elif defined _MSC_VER
#define inline __inline
#else
#define inline
#endif
#endif
#ifdef _WIN32
#define snprintf _snprintf
#endif
typedef struct MD_HTML_tag MD_HTML;
struct MD_HTML_tag {
void (*process_output)(const MD_CHAR*, MD_SIZE, void*);
void* userdata;
unsigned flags;
int image_nesting_level;
char escape_map[256];
};
#define NEED_HTML_ESC_FLAG 0x1
#define NEED_URL_ESC_FLAG 0x2
/*****************************************
*** HTML rendering helper functions ***
*****************************************/
#define ISDIGIT(ch) ('0' <= (ch) && (ch) <= '9')
#define ISLOWER(ch) ('a' <= (ch) && (ch) <= 'z')
#define ISUPPER(ch) ('A' <= (ch) && (ch) <= 'Z')
#define ISALNUM(ch) (ISLOWER(ch) || ISUPPER(ch) || ISDIGIT(ch))
static inline void
render_verbatim(MD_HTML* r, const MD_CHAR* text, MD_SIZE size)
{
r->process_output(text, size, r->userdata);
}
/* Keep this as a macro. Most compiler should then be smart enough to replace
* the strlen() call with a compile-time constant if the string is a C literal. */
#define RENDER_VERBATIM(r, verbatim) \
render_verbatim((r), (verbatim), (MD_SIZE) (strlen(verbatim)))
static void
render_html_escaped(MD_HTML* r, const MD_CHAR* data, MD_SIZE size)
{
MD_OFFSET beg = 0;
MD_OFFSET off = 0;
/* Some characters need to be escaped in normal HTML text. */
#define NEED_HTML_ESC(ch) (r->escape_map[(unsigned char)(ch)] & NEED_HTML_ESC_FLAG)
while(1) {
/* Optimization: Use some loop unrolling. */
while(off + 3 < size && !NEED_HTML_ESC(data[off+0]) && !NEED_HTML_ESC(data[off+1])
&& !NEED_HTML_ESC(data[off+2]) && !NEED_HTML_ESC(data[off+3]))
off += 4;
while(off < size && !NEED_HTML_ESC(data[off]))
off++;
if(off > beg)
render_verbatim(r, data + beg, off - beg);
if(off < size) {
switch(data[off]) {
case '&': RENDER_VERBATIM(r, "&amp;"); break;
case '<': RENDER_VERBATIM(r, "&lt;"); break;
case '>': RENDER_VERBATIM(r, "&gt;"); break;
case '"': RENDER_VERBATIM(r, "&quot;"); break;
}
off++;
} else {
break;
}
beg = off;
}
}
static void
render_url_escaped(MD_HTML* r, const MD_CHAR* data, MD_SIZE size)
{
static const MD_CHAR hex_chars[] = "0123456789ABCDEF";
MD_OFFSET beg = 0;
MD_OFFSET off = 0;
/* Some characters need to be escaped in URL attributes. */
#define NEED_URL_ESC(ch) (r->escape_map[(unsigned char)(ch)] & NEED_URL_ESC_FLAG)
while(1) {
while(off < size && !NEED_URL_ESC(data[off]))
off++;
if(off > beg)
render_verbatim(r, data + beg, off - beg);
if(off < size) {
char hex[3];
switch(data[off]) {
case '&': RENDER_VERBATIM(r, "&amp;"); break;
default:
hex[0] = '%';
hex[1] = hex_chars[((unsigned)data[off] >> 4) & 0xf];
hex[2] = hex_chars[((unsigned)data[off] >> 0) & 0xf];
render_verbatim(r, hex, 3);
break;
}
off++;
} else {
break;
}
beg = off;
}
}
static unsigned
hex_val(char ch)
{
if('0' <= ch && ch <= '9')
return ch - '0';
if('A' <= ch && ch <= 'Z')
return ch - 'A' + 10;
else
return ch - 'a' + 10;
}
static void
render_utf8_codepoint(MD_HTML* r, unsigned codepoint,
void (*fn_append)(MD_HTML*, const MD_CHAR*, MD_SIZE))
{
static const MD_CHAR utf8_replacement_char[] = { (char)0xef, (char)0xbf, (char)0xbd };
unsigned char utf8[4];
size_t n;
if(codepoint <= 0x7f) {
n = 1;
utf8[0] = codepoint;
} else if(codepoint <= 0x7ff) {
n = 2;
utf8[0] = 0xc0 | ((codepoint >> 6) & 0x1f);
utf8[1] = 0x80 + ((codepoint >> 0) & 0x3f);
} else if(codepoint <= 0xffff) {
n = 3;
utf8[0] = 0xe0 | ((codepoint >> 12) & 0xf);
utf8[1] = 0x80 + ((codepoint >> 6) & 0x3f);
utf8[2] = 0x80 + ((codepoint >> 0) & 0x3f);
} else {
n = 4;
utf8[0] = 0xf0 | ((codepoint >> 18) & 0x7);
utf8[1] = 0x80 + ((codepoint >> 12) & 0x3f);
utf8[2] = 0x80 + ((codepoint >> 6) & 0x3f);
utf8[3] = 0x80 + ((codepoint >> 0) & 0x3f);
}
if(0 < codepoint && codepoint <= 0x10ffff)
fn_append(r, (char*)utf8, (MD_SIZE)n);
else
fn_append(r, utf8_replacement_char, 3);
}
/* Translate entity to its UTF-8 equivalent, or output the verbatim one
* if such entity is unknown (or if the translation is disabled). */
static void
render_entity(MD_HTML* r, const MD_CHAR* text, MD_SIZE size,
void (*fn_append)(MD_HTML*, const MD_CHAR*, MD_SIZE))
{
if(r->flags & MD_HTML_FLAG_VERBATIM_ENTITIES) {
render_verbatim(r, text, size);
return;
}
/* We assume UTF-8 output is what is desired. */
if(size > 3 && text[1] == '#') {
unsigned codepoint = 0;
if(text[2] == 'x' || text[2] == 'X') {
/* Hexadecimal entity (e.g. "&#x1234abcd;")). */
MD_SIZE i;
for(i = 3; i < size-1; i++)
codepoint = 16 * codepoint + hex_val(text[i]);
} else {
/* Decimal entity (e.g. "&1234;") */
MD_SIZE i;
for(i = 2; i < size-1; i++)
codepoint = 10 * codepoint + (text[i] - '0');
}
render_utf8_codepoint(r, codepoint, fn_append);
return;
} else {
/* Named entity (e.g. "&nbsp;"). */
const ENTITY* ent;
ent = entity_lookup(text, size);
if(ent != NULL) {
render_utf8_codepoint(r, ent->codepoints[0], fn_append);
if(ent->codepoints[1])
render_utf8_codepoint(r, ent->codepoints[1], fn_append);
return;
}
}
fn_append(r, text, size);
}
static void
render_attribute(MD_HTML* r, const MD_ATTRIBUTE* attr,
void (*fn_append)(MD_HTML*, const MD_CHAR*, MD_SIZE))
{
int i;
for(i = 0; attr->substr_offsets[i] < attr->size; i++) {
MD_TEXTTYPE type = attr->substr_types[i];
MD_OFFSET off = attr->substr_offsets[i];
MD_SIZE size = attr->substr_offsets[i+1] - off;
const MD_CHAR* text = attr->text + off;
switch(type) {
case MD_TEXT_NULLCHAR: render_utf8_codepoint(r, 0x0000, render_verbatim); break;
case MD_TEXT_ENTITY: render_entity(r, text, size, fn_append); break;
default: fn_append(r, text, size); break;
}
}
}
static void
render_open_ol_block(MD_HTML* r, const MD_BLOCK_OL_DETAIL* det)
{
char buf[64];
if(det->start == 1) {
RENDER_VERBATIM(r, "<ol>\n");
return;
}
snprintf(buf, sizeof(buf), "<ol start=\"%u\">\n", det->start);
RENDER_VERBATIM(r, buf);
}
static void
render_open_li_block(MD_HTML* r, const MD_BLOCK_LI_DETAIL* det)
{
if(det->is_task) {
RENDER_VERBATIM(r, "<li class=\"task-list-item\">"
"<input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled");
if(det->task_mark == 'x' || det->task_mark == 'X')
RENDER_VERBATIM(r, " checked");
RENDER_VERBATIM(r, ">");
} else {
RENDER_VERBATIM(r, "<li>");
}
}
static void
render_open_code_block(MD_HTML* r, const MD_BLOCK_CODE_DETAIL* det)
{
RENDER_VERBATIM(r, "<pre><code");
/* If known, output the HTML 5 attribute class="language-LANGNAME". */
if(det->lang.text != NULL) {
RENDER_VERBATIM(r, " class=\"language-");
render_attribute(r, &det->lang, render_html_escaped);
RENDER_VERBATIM(r, "\"");
}
RENDER_VERBATIM(r, ">");
}
static void
render_open_td_block(MD_HTML* r, const MD_CHAR* cell_type, const MD_BLOCK_TD_DETAIL* det)
{
RENDER_VERBATIM(r, "<");
RENDER_VERBATIM(r, cell_type);
switch(det->align) {
case MD_ALIGN_LEFT: RENDER_VERBATIM(r, " align=\"left\">"); break;
case MD_ALIGN_CENTER: RENDER_VERBATIM(r, " align=\"center\">"); break;
case MD_ALIGN_RIGHT: RENDER_VERBATIM(r, " align=\"right\">"); break;
default: RENDER_VERBATIM(r, ">"); break;
}
}
static void
render_open_a_span(MD_HTML* r, const MD_SPAN_A_DETAIL* det)
{
RENDER_VERBATIM(r, "<a href=\"");
render_attribute(r, &det->href, render_url_escaped);
if(det->title.text != NULL) {
RENDER_VERBATIM(r, "\" title=\"");
render_attribute(r, &det->title, render_html_escaped);
}
RENDER_VERBATIM(r, "\">");
}
static void
render_open_img_span(MD_HTML* r, const MD_SPAN_IMG_DETAIL* det)
{
RENDER_VERBATIM(r, "<img src=\"");
render_attribute(r, &det->src, render_url_escaped);
RENDER_VERBATIM(r, "\" alt=\"");
}
static void
render_close_img_span(MD_HTML* r, const MD_SPAN_IMG_DETAIL* det)
{
if(det->title.text != NULL) {
RENDER_VERBATIM(r, "\" title=\"");
render_attribute(r, &det->title, render_html_escaped);
}
RENDER_VERBATIM(r, (r->flags & MD_HTML_FLAG_XHTML) ? "\" />" : "\">");
}
static void
render_open_wikilink_span(MD_HTML* r, const MD_SPAN_WIKILINK_DETAIL* det)
{
RENDER_VERBATIM(r, "<x-wikilink data-target=\"");
render_attribute(r, &det->target, render_html_escaped);
RENDER_VERBATIM(r, "\">");
}
/**************************************
*** HTML renderer implementation ***
**************************************/
static int
enter_block_callback(MD_BLOCKTYPE type, void* detail, void* userdata)
{
static const MD_CHAR* head[6] = { "<h1>", "<h2>", "<h3>", "<h4>", "<h5>", "<h6>" };
MD_HTML* r = (MD_HTML*) userdata;
switch(type) {
case MD_BLOCK_DOC: /* noop */ break;
case MD_BLOCK_QUOTE: RENDER_VERBATIM(r, "<blockquote>\n"); break;
case MD_BLOCK_UL: RENDER_VERBATIM(r, "<ul>\n"); break;
case MD_BLOCK_OL: render_open_ol_block(r, (const MD_BLOCK_OL_DETAIL*)detail); break;
case MD_BLOCK_LI: render_open_li_block(r, (const MD_BLOCK_LI_DETAIL*)detail); break;
case MD_BLOCK_HR: RENDER_VERBATIM(r, (r->flags & MD_HTML_FLAG_XHTML) ? "<hr />\n" : "<hr>\n"); break;
case MD_BLOCK_H: RENDER_VERBATIM(r, head[((MD_BLOCK_H_DETAIL*)detail)->level - 1]); break;
case MD_BLOCK_CODE: render_open_code_block(r, (const MD_BLOCK_CODE_DETAIL*) detail); break;
case MD_BLOCK_HTML: /* noop */ break;
case MD_BLOCK_P: RENDER_VERBATIM(r, "<p>"); break;
case MD_BLOCK_TABLE: RENDER_VERBATIM(r, "<table>\n"); break;
case MD_BLOCK_THEAD: RENDER_VERBATIM(r, "<thead>\n"); break;
case MD_BLOCK_TBODY: RENDER_VERBATIM(r, "<tbody>\n"); break;
case MD_BLOCK_TR: RENDER_VERBATIM(r, "<tr>\n"); break;
case MD_BLOCK_TH: render_open_td_block(r, "th", (MD_BLOCK_TD_DETAIL*)detail); break;
case MD_BLOCK_TD: render_open_td_block(r, "td", (MD_BLOCK_TD_DETAIL*)detail); break;
}
return 0;
}
static int
leave_block_callback(MD_BLOCKTYPE type, void* detail, void* userdata)
{
static const MD_CHAR* head[6] = { "</h1>\n", "</h2>\n", "</h3>\n", "</h4>\n", "</h5>\n", "</h6>\n" };
MD_HTML* r = (MD_HTML*) userdata;
switch(type) {
case MD_BLOCK_DOC: /*noop*/ break;
case MD_BLOCK_QUOTE: RENDER_VERBATIM(r, "</blockquote>\n"); break;
case MD_BLOCK_UL: RENDER_VERBATIM(r, "</ul>\n"); break;
case MD_BLOCK_OL: RENDER_VERBATIM(r, "</ol>\n"); break;
case MD_BLOCK_LI: RENDER_VERBATIM(r, "</li>\n"); break;
case MD_BLOCK_HR: /*noop*/ break;
case MD_BLOCK_H: RENDER_VERBATIM(r, head[((MD_BLOCK_H_DETAIL*)detail)->level - 1]); break;
case MD_BLOCK_CODE: RENDER_VERBATIM(r, "</code></pre>\n"); break;
case MD_BLOCK_HTML: /* noop */ break;
case MD_BLOCK_P: RENDER_VERBATIM(r, "</p>\n"); break;
case MD_BLOCK_TABLE: RENDER_VERBATIM(r, "</table>\n"); break;
case MD_BLOCK_THEAD: RENDER_VERBATIM(r, "</thead>\n"); break;
case MD_BLOCK_TBODY: RENDER_VERBATIM(r, "</tbody>\n"); break;
case MD_BLOCK_TR: RENDER_VERBATIM(r, "</tr>\n"); break;
case MD_BLOCK_TH: RENDER_VERBATIM(r, "</th>\n"); break;
case MD_BLOCK_TD: RENDER_VERBATIM(r, "</td>\n"); break;
}
return 0;
}
static int
enter_span_callback(MD_SPANTYPE type, void* detail, void* userdata)
{
MD_HTML* r = (MD_HTML*) userdata;
int inside_img = (r->image_nesting_level > 0);
/* We are inside a Markdown image label. Markdown allows to use any emphasis
* and other rich contents in that context similarly as in any link label.
*
* However, unlike in the case of links (where that contents becomescontents
* of the <a>...</a> tag), in the case of images the contents is supposed to
* fall into the attribute alt: <img alt="...">.
*
* In that context we naturally cannot output nested HTML tags. So lets
* suppress them and only output the plain text (i.e. what falls into text()
* callback).
*
* CommonMark specification declares this a recommended practice for HTML
* output.
*/
if(type == MD_SPAN_IMG)
r->image_nesting_level++;
if(inside_img)
return 0;
switch(type) {
case MD_SPAN_EM: RENDER_VERBATIM(r, "<em>"); break;
case MD_SPAN_STRONG: RENDER_VERBATIM(r, "<strong>"); break;
case MD_SPAN_U: RENDER_VERBATIM(r, "<u>"); break;
case MD_SPAN_A: render_open_a_span(r, (MD_SPAN_A_DETAIL*) detail); break;
case MD_SPAN_IMG: render_open_img_span(r, (MD_SPAN_IMG_DETAIL*) detail); break;
case MD_SPAN_CODE: RENDER_VERBATIM(r, "<code>"); break;
case MD_SPAN_DEL: RENDER_VERBATIM(r, "<del>"); break;
case MD_SPAN_LATEXMATH: RENDER_VERBATIM(r, "<x-equation>"); break;
case MD_SPAN_LATEXMATH_DISPLAY: RENDER_VERBATIM(r, "<x-equation type=\"display\">"); break;
case MD_SPAN_WIKILINK: render_open_wikilink_span(r, (MD_SPAN_WIKILINK_DETAIL*) detail); break;
}
return 0;
}
static int
leave_span_callback(MD_SPANTYPE type, void* detail, void* userdata)
{
MD_HTML* r = (MD_HTML*) userdata;
if(type == MD_SPAN_IMG)
r->image_nesting_level--;
if(r->image_nesting_level > 0)
return 0;
switch(type) {
case MD_SPAN_EM: RENDER_VERBATIM(r, "</em>"); break;
case MD_SPAN_STRONG: RENDER_VERBATIM(r, "</strong>"); break;
case MD_SPAN_U: RENDER_VERBATIM(r, "</u>"); break;
case MD_SPAN_A: RENDER_VERBATIM(r, "</a>"); break;
case MD_SPAN_IMG: render_close_img_span(r, (MD_SPAN_IMG_DETAIL*) detail); break;
case MD_SPAN_CODE: RENDER_VERBATIM(r, "</code>"); break;
case MD_SPAN_DEL: RENDER_VERBATIM(r, "</del>"); break;
case MD_SPAN_LATEXMATH: /*fall through*/
case MD_SPAN_LATEXMATH_DISPLAY: RENDER_VERBATIM(r, "</x-equation>"); break;
case MD_SPAN_WIKILINK: RENDER_VERBATIM(r, "</x-wikilink>"); break;
}
return 0;
}
static int
text_callback(MD_TEXTTYPE type, const MD_CHAR* text, MD_SIZE size, void* userdata)
{
MD_HTML* r = (MD_HTML*) userdata;
switch(type) {
case MD_TEXT_NULLCHAR: render_utf8_codepoint(r, 0x0000, render_verbatim); break;
case MD_TEXT_BR: RENDER_VERBATIM(r, (r->image_nesting_level == 0
? ((r->flags & MD_HTML_FLAG_XHTML) ? "<br />\n" : "<br>\n")
: " "));
break;
case MD_TEXT_SOFTBR: RENDER_VERBATIM(r, (r->image_nesting_level == 0 ? "\n" : " ")); break;
case MD_TEXT_HTML: render_verbatim(r, text, size); break;
case MD_TEXT_ENTITY: render_entity(r, text, size, render_html_escaped); break;
default: render_html_escaped(r, text, size); break;
}
return 0;
}
static void
debug_log_callback(const char* msg, void* userdata)
{
MD_HTML* r = (MD_HTML*) userdata;
if(r->flags & MD_HTML_FLAG_DEBUG)
fprintf(stderr, "MD4C: %s\n", msg);
}
int
md_html(const MD_CHAR* input, MD_SIZE input_size,
void (*process_output)(const MD_CHAR*, MD_SIZE, void*),
void* userdata, unsigned parser_flags, unsigned renderer_flags)
{
MD_HTML render = { process_output, userdata, renderer_flags, 0, { 0 } };
int i;
MD_PARSER parser = {
0,
parser_flags,
enter_block_callback,
leave_block_callback,
enter_span_callback,
leave_span_callback,
text_callback,
debug_log_callback,
NULL
};
/* Build map of characters which need escaping. */
for(i = 0; i < 256; i++) {
unsigned char ch = (unsigned char) i;
if(strchr("\"&<>", ch) != NULL)
render.escape_map[i] |= NEED_HTML_ESC_FLAG;
if(!ISALNUM(ch) && strchr("~-_.+!*(),%#@?=;:/,+$", ch) == NULL)
render.escape_map[i] |= NEED_URL_ESC_FLAG;
}
/* Consider skipping UTF-8 byte order mark (BOM). */
if(renderer_flags & MD_HTML_FLAG_SKIP_UTF8_BOM && sizeof(MD_CHAR) == 1) {
static const MD_CHAR bom[3] = { (char)0xef, (char)0xbb, (char)0xbf };
if(input_size >= sizeof(bom) && memcmp(input, bom, sizeof(bom)) == 0) {
input += sizeof(bom);
input_size -= sizeof(bom);
}
}
return md_parse(input, input_size, &parser, (void*) &render);
}

View File

@@ -0,0 +1,68 @@
/*
* MD4C: Markdown parser for C
* (http://github.com/mity/md4c)
*
* Copyright (c) 2016-2024 Martin Mitáš
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE.
*/
#ifndef MD4C_HTML_H
#define MD4C_HTML_H
#include "md4c.h"
#ifdef __cplusplus
extern "C" {
#endif
/* If set, debug output from md_parse() is sent to stderr. */
#define MD_HTML_FLAG_DEBUG 0x0001
#define MD_HTML_FLAG_VERBATIM_ENTITIES 0x0002
#define MD_HTML_FLAG_SKIP_UTF8_BOM 0x0004
#define MD_HTML_FLAG_XHTML 0x0008
/* Render Markdown into HTML.
*
* Note only contents of <body> tag is generated. Caller must generate
* HTML header/footer manually before/after calling md_html().
*
* Params input and input_size specify the Markdown input.
* Callback process_output() gets called with chunks of HTML output.
* (Typical implementation may just output the bytes to a file or append to
* some buffer).
* Param userdata is just propagated back to process_output() callback.
* Param parser_flags are flags from md4c.h propagated to md_parse().
* Param render_flags is bitmask of MD_HTML_FLAG_xxxx.
*
* Returns -1 on error (if md_parse() fails.)
* Returns 0 on success.
*/
int md_html(const MD_CHAR* input, MD_SIZE input_size,
void (*process_output)(const MD_CHAR*, MD_SIZE, void*),
void* userdata, unsigned parser_flags, unsigned renderer_flags);
#ifdef __cplusplus
} /* extern "C" { */
#endif
#endif /* MD4C_HTML_H */

View File

@@ -0,0 +1,13 @@
prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=@CMAKE_INSTALL_PREFIX@
libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
Name: @PROJECT_NAME@ HTML renderer
Description: Markdown to HTML converter library.
Version: @PROJECT_VERSION@
URL: @PROJECT_URL@
Requires: md4c = @PROJECT_VERSION@
Libs: -L${libdir} -lmd4c-html
Cflags: -I${includedir}

6492
deps_src/md4c/src/md4c.c Normal file

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