Commit Graph

160 Commits

Author SHA1 Message Date
SoftFever
1e1d9cbaf8 Fix crash on printer switch from stale filament/extruder indices (#14103)
Switching to a printer with fewer filaments (e.g. H2D -> X2D) threw
std::out_of_range in check_filament_printable. Clear stale per-volume
extruder config on count shrink and bound-check filament indices at the
read sites.
2026-06-08 18:57:52 +08:00
Ioannis Giannakas
d5638273c6 Fix row spacing in objects list (#14053)
* Fix row spacing in objects list on MacOS
* Update for windows and linux
* Update row height for a more compact look while maintaining some spacing
2026-06-06 01:23:34 +03:00
Robert J Audas
9ede565f62 feat: double-click object list row to frame object in 3D view (#13804)
* feat: double-click object list row to frame object in 3D view

Resolves #13800.

Extends the existing wxEVT_DATAVIEW_ITEM_ACTIVATED handler in
ObjectList::create_objects_ctrl() so that double-clicking an
object / part / instance row calls GLCanvas3D::zoom_to_selection().
This mirrors the existing "Fit camera to scene or selected object"
canvas button, exposed via a natural mouse trigger from the list.
The current view angle is preserved (Blender-style "Frame Selected").

Scope kept intentionally small:
- Object / Part / Instance rows -> zoom_to_selection().
- Filament-color column -> unchanged (still opens color editor).
- Plate rows -> unchanged (no-op).
- Inert in slice-preview mode via get_current_canvas3D(true).

Authored with assistance from Claude (Anthropic).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix: no-op object-list double-click in slice-preview mode

Following up on #13800 / #13804. The original guard used
get_current_canvas3D(true)'s `exclude_preview` flag, expecting that to
return nullptr when the preview canvas is active. In fact the flag
falls through to the editor canvas as a default, so the handler was
still calling zoom_to_selection() on the editor canvas — and since the
camera is shared between the editor and preview canvases, the move
was visible in the preview view as the camera jumping to empty world
positions (sliced or excluded, sliced or not).

Replace the misnamed flag with an explicit is_preview_shown() guard
that returns early before any canvas lookup. Manually verified:
preview mode now ignores object-list double-clicks; prepare-mode
behavior unchanged.

Authored with assistance from Claude (Anthropic).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-06-04 18:23:01 +08:00
TheLegendTubaGuy
da5a13a032 Fix DataViewBitmapText assignment 2026-05-17 02:29:39 -05:00
Noisyfox
5b1766b1d5 Remap paint after smooth 2026-05-11 17:16:36 +08:00
Noisyfox
1299fcef4a Remap paint after repair model 2026-05-10 18:27:02 +08:00
Noisyfox
f8a18e7656 Remap paint after mesh boolean (from context menu) 2026-05-10 00:41:18 +08:00
Noisyfox
b3a513eab9 Remove redundent mmu facets assign because that's already done in new_object->add_volume(*volume) 2026-05-09 17:36:17 +08:00
Noisyfox
fb0cf966cf Remap paint after split to parts 2026-05-09 17:06:19 +08:00
Ian Bassi
a274b0e0ac CGAL Fix Model: New for Linux and Mac (#12155)
* CGAL Fix Model

Multi OS fix model with CGAL

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

* Clean unused variables

* Early exit

* Validation

* Orca comments

* Steps to fix

* Simplify fixer

* BY10 to BYCGAL Full refactor

* repair_polygon_soup

* Revert "repair_polygon_soup"

This reverts commit cb88841e7a72a42c148e144fbf0cab146a54c3c8.

* CGAL 6.1.1

Update CGAL.cmake

* Update MeshBoolean.cpp

* Revert "CGAL 6.1.1"

This reverts commit c581887adb5f84ec4af97b320067b152f8812f49.

* Funca with RF

New remake, it seems to be working fine...
por ahora

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

* Update src/libslic3r/MeshBoolean.cpp

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

* Include cleanup

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

* Update Part list

Revert "Update Part list"

This reverts commit 95cab337d7ea602682ee00be2986ef941d0b06c2.

Reapply "Update Part list"

This reverts commit e401bec579f64b97e3f6deeb4131a8e5a79a146d.

* Comments

* Update FixModelByCgal.cpp

* Remove no 3d parts

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

* Remove netfabb and w10 sdk

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

* Update src/slic3r/Utils/FixModelByCgal.cpp

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

* redundant check

* Apply suggestions from code review

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

* Revet: suggestion from @RF47

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

---------

Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-24 16:28:28 +08:00
Hanno Witzleb
8bff921ade Require less clicks to change filament in object list (#12603)
* reduces number of clicks to change filament in objectlist

* dont set minimum width in dropdown if use_content_width == true

---------

Co-authored-by: Hanno Witzleb <hannowitzleb@gmail.com>
Co-authored-by: yw4z <ywsyildiz@gmail.com>
2026-04-24 14:48:59 +08:00
Damir Galeev
ff3ad5ed98 Harden #5070 fix + disable dead change_part_type() via #if 0 (#13281)
* Restore SVG/text→Support crash guard (#5070), disable change_part_type()

The crash fix from #5070 prevented converting SVG/text modifiers to Support
Blocker / Support Enforcer by hiding those entries in the old SingleChoiceDialog
opened from ObjectList::change_part_type(). When the "Change type" UI was
reworked into a submenu that calls ObjectList::set_volume_type() directly, the
guard was left behind in the unused change_part_type() path -- the submenu path
had no protection, silently reintroducing the #5070 crash on the submenu route
(ModelVolume::set_type() does not clear text_configuration / emboss_shape, so
the stale emboss state stays attached to a support volume).

- Guard set_volume_type(): reject SUPPORT_BLOCKER / SUPPORT_ENFORCER when any
  selected volume is SVG or text, showing the same error as before.
- Wrap ObjectList::change_part_type() in #if 0 instead of deleting it: the
  function is unused since the submenu rework, but keeping it in commented-out
  form preserves traceability with upstream Bambu Studio (avoids merge
  conflicts on each BBL sync). Suggested by RF47, confirmed by ianalexis.

* Log instead of showing user error; action guard is defense-in-depth only

Per review feedback from RF47: with the UI-side guard in #13120, the
set_volume_type() action-time check is a pure safety net -- a healthy UI
should never let the user reach it. Showing a modal error dialog would
therefore either confuse a user who did nothing wrong (if the UI guard
is bypassed by a future refactor/plugin/shortcut) or be dead code at
runtime. Log the event for developers instead, keep the early return so
the crash is still prevented.
2026-04-23 10:12:18 -03:00
Hanno Witzleb
f7ef8a14bd Add Feature to disable snapping to buildplate (#11801)
* identified code for snapping to buidlplate

* rename internal name to ensure_on_bed to be consistent, saves option in 2mf, finish Move UI, use in both ensure_on_bed() functions

* makes auto_drop a per-object setting, removes global setting

* remove adUndef, add auto_drop to constructor/serialize

* fixes drop() button

* add "auto_drop" checkmark to "load as single object" dialog,
nothing changes if auto_drop == yes || "load as single object",
if auto_drop == false and "load as single object" == false the objects now retain their relative position to each other

* retains auto_drop (and printable) state when assembling or splitting objects,
adds ObjectList::printable_state_changed()  overload to be able to only provide ModelObject* vector

* adds dialog when splitting to ask if auto_drop should be disabled,
only shows when auto_drop enabled and atleast one volume  floating

* adds arrow indicator on bounding box if auto_drop == false

* removes unneeded code, keeps "auto_drop" naming consistent

* makes for loop simpler in set_printable, set_auto_drop and get_auto_drop,
makes get_auto_drop const,
fixes wording in Snapshot text

---------

Co-authored-by: Hanno Witzleb <hannowitzleb@gmail.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
2026-04-15 22:36:25 +08:00
SoftFever
3e4af2c723 WIP: Add native Wayland support for Linux (#13197)
* Add runtime display backend detection for Wayland support

Add LinuxDisplayBackend utility to detect X11 vs Wayland at runtime
using GDK_IS_X11_DISPLAY / GDK_IS_WAYLAND_DISPLAY macros. This is
the foundation for removing the forced GDK_BACKEND=x11 and enabling
native Wayland support.

- New files: LinuxDisplayBackend.hpp/.cpp with get_linux_display_backend(),
  is_running_on_wayland(), and is_running_on_x11()
- Propagate wxHAVE_GDK_X11 / wxHAVE_GDK_WAYLAND from FindGTK3.cmake
  as compile definitions to libslic3r_gui
- No-op on non-Linux platforms (returns Unknown / false)

* Fix Phase 1 code quality: pragma once, source ordering, static cache

* Make X11 initialization conditional for Wayland support

Remove the unconditional GDK_BACKEND=x11 force that blocked native
Wayland. Replace with conditional logic:

- EGL safety fallback: re-force X11 only when wxUSE_GLCANVAS_EGL is
  off and WAYLAND_DISPLAY is set, with a warning log
- XInitThreads() only called when DISPLAY is set (X11 in use)
- __GLX_VENDOR_LIBRARY_NAME only set when DISPLAY is present (GLX-specific)
- WEBKIT_DISABLE_COMPOSITING_MODE only set under XWayland (both
  DISPLAY and WAYLAND_DISPLAY present)
- Guard X11/Xlib.h include with __has_include for robustness
- Restore display validation to accept either DISPLAY or WAYLAND_DISPLAY

This is Phase 2 of the Wayland support plan.

* Fix Phase 2: safer EGL macro check, add clarifying comments

* Add GLAD2 library and replace GLEW linkage in build system

Set up GLAD2 as a static library to replace GLEW for OpenGL loading.
GLAD2 supports both GLX and EGL, which is required for Wayland support.

- Create src/glad/ with pre-generated GLAD2 sources (GL 4.6 compat)
- Add src/glad/CMakeLists.txt building glad as a static library
- Wire glad into src/CMakeLists.txt before libvgcode
- Modify libvgcode to use shared glad for GL path (keeps local copy
  only for GLES2/Emscripten) to avoid duplicate symbol conflicts
- Replace GLEW::GLEW with glad in libslic3r_gui link libraries

Note: GLEW is kept in deps for OpenCSG. Code migration from GL/glew.h
to glad/gl.h headers will follow in Phase 3B+3C.

* Fix Phase 3A+3D: libvgcode GLAD include, dead files, dlopen dep, OpenGL link var

* Migrate from GLEW to GLAD: replace headers and API calls across codebase

Replace all #include <GL/glew.h> with <glad/gl.h> across 49 source files.
Migrate GLEW API calls to GLAD equivalents:
- glewInit/glewExperimental -> gladLoaderLoadGL()
- GLEW_EXT_* / GLEW_ARB_* extension checks -> GLAD_GL_EXT_* / GLAD_GL_ARB_*
- Remove GLEW-specific EGL/GLX mismatch #error guards (not needed with GLAD)
- Replace unavailable EXT symbols with core GL equivalents in
  GLCanvas3D.cpp (GL_MAX_SAMPLES, glRenderbufferStorageMultisample,
  glBlitFramebuffer, GL_READ/DRAW_FRAMEBUFFER)
- Update log messages from glewInit to gladLoadGL

* Fix Phase 3B+3C: remove GLEW find, clean EXT symbols, update attribution

- Remove find_package(GLEW) block from root CMakeLists.txt since GLEW
  is no longer linked by any main application code
- Remove "glew" from SLIC3R_STATIC option description
- Replace all remaining EXT framebuffer symbols with core equivalents
  in render_thumbnail_framebuffer_ext and _rectangular_selection_picking_pass
- Update AboutDialog credits from GLEW to GLAD

* Enable EGL in wxWidgets and add runtime GLX/EGL selection for Wayland

- Set wxUSE_GLCANVAS_EGL=ON in wxWidgets build and Flatpak manifest
- Add PreferGLX() call on X11 sessions for driver compatibility
- Remove Phase 2 safety fallback (EGL is now always compiled in)
- Guard SwapBuffers against hidden canvases to prevent Wayland stalls

* Fix Phase 4: move PreferGLX to app startup, fix FPS counter guard

Move wxGLCanvas::PreferGLX() from OpenGLManager::create_wxglcanvas()
(static initializer) to GUI_App::on_init_inner() before any wxGLCanvas
is constructed. This prevents a race where SkipPartCanvas could trigger
wxGLBackend::Init() before the GLX preference is set. The new location
also adds explicit is_running_on_wayland() detection with a warning for
unknown backends.

Move increment_fps_counter() inside the IsShownOnScreen() guard so FPS
is only counted when a frame is actually swapped.

* Update GLFW from 3.3.7 to 3.4 for runtime Wayland/X11 backend selection

Replace the compile-time GLFW_USE_WAYLAND flag (which locked to a single
backend) with GLFW 3.4's GLFW_BUILD_WAYLAND + GLFW_BUILD_X11 flags that
build both backends and auto-select at runtime based on the available
display server. This enables the CLI thumbnail renderer to work on both
Wayland and X11 sessions without separate builds.

* wayland: Fix UI call sites that rely on global screen coordinates

On Wayland, wxGetMousePosition() returns (0,0) and SetPosition() is a
no-op for top-level windows. Fix the highest-impact call sites:

- GLCanvas3D: Use cached m_mouse.position from event handlers instead
  of wxGetMousePosition() + ScreenToClient() in get_local_mouse_position()
- Plater: Use event-relative coords via ClientToScreen(e.GetPosition())
  instead of wxGetMousePosition() in 3 leave-window handlers
- BBLTopbar: Use event.GetPosition() and FindToolByPosition() directly
  in mouse handlers instead of wxGetMousePosition()/FindToolByCurrentPosition()
- Search: Use focus-based dismiss logic on Wayland instead of
  wxGetMousePosition()-based rect checks in SearchDialog and
  SearchObjectDialog
- GUI_App: Skip SetPosition() in window_pos_restore() on Wayland where
  it is a no-op; still restore size and maximize state
- Button: Position tooltip relative to button widget via ClientToScreen
  instead of wxGetMousePosition()

* Fix SearchDialog Wayland dismiss: guard against search_line focus

* flatpak: Add Wayland socket permission for native Wayland support

* spec

* Fix crash on Wayland when wxWidgets lacks EGL support

Restore the safety fallback that forces GDK_BACKEND=x11 when wxWidgets
was not built with wxUSE_GLCANVAS_EGL=ON. Without this, the GLX backend
tries to access a non-existent X11 display on native Wayland, crashing
in wxGLCanvas::IsDisplaySupported() with SIGSEGV at offset 0xe4.

Also add a defense-in-depth guard in detect_multisample() that skips
the IsDisplaySupported call entirely on Wayland without EGL.

Root cause: deps/wxWidgets must be rebuilt after enabling EGL. The
compile-time check in OrcaSlicer.cpp detects the mismatch and falls
back safely.

* Fix EGL detection: use wxHAS_EGL instead of wxUSE_GLCANVAS_EGL

wxUSE_GLCANVAS_EGL is a CMake build option, NOT a C++ preprocessor
macro. The actual macro defined in wxWidgets setup.h is wxHAS_EGL.
All compile-time EGL checks were using the wrong macro, causing
the safety fallback to always trigger even with a properly built
EGL-enabled wxWidgets.

* Fix GL function pointers invalidated on Wayland/EGL

gladLoaderLoadGL() dlopen's libGL.so.1 to resolve GL function pointers
via dlsym, then immediately dlclose's the handle. On X11/GLX this is
fine because the GLX context keeps libGL.so mapped. On Wayland/EGL,
nothing else holds libGL.so open, so dlclose unmaps it and all function
pointers become dangling — causing SIGSEGV on the first GL call.

Fix: on Wayland, use gladLoadGL(eglGetProcAddress) which resolves
function pointers through the EGL loader without opening/closing
libGL.so.

* fix crash on start and various rendering issues

* fix crash on close

* small refactor

* move GPU selection to desktop file

* clean up a bit

* clean up more

* fix appimage error
2026-04-13 19:45:39 +08: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
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
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
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
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
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
4b1ddcdc55 Url update: SoftFever/OrcaSlicer -> OrcaSlicer/OrcaSlicer (#11371)
* SoftFever/OrcaSlicer -> OrcaSlicer/OrcaSlicer

* Revert for deps
2025-11-17 11:17:54 +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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
fe09c20725 ENH: support delete any filament id
Change-Id: I71bcd54985b3f9e19a19d04327d00b402ec22380
(cherry picked from commit f3d67a98ac770e6f045a76bed4531139763b33cf)
2025-08-24 23:18:01 +08:00
Noisyfox
50e64d5961 Add fuzzy skin painting (#9979)
* SPE-2486: Refactor function apply_mm_segmentation() to prepare support for fuzzy skin painting.

(cherry picked from commit 2c06c81159f7aadd6ac20c7a7583c8f4959a5601)

* SPE-2585: Fix empty layers when multi-material painting and modifiers are used.

(cherry picked from commit 4b3da02ec26d43bfad91897cb34779fb21419e3e)

* Update project structure to match Prusa

* SPE-2486: Add a new gizmo for fuzzy skin painting.

(cherry picked from commit 886faac74ebe6978b828f51be62d26176e2900e5)

* Fix render

* Remove duplicated painting gizmo `render_triangles` code

* SPE-2486: Extend multi-material segmentation to allow segmentation of any painted faces.

(cherry picked from commit 519f5eea8e3be0d7c2cd5d030323ff264727e3d0)

---------

Co-authored-by: Lukáš Hejl <hejl.lukas@gmail.com>

* SPE-2486: Implement segmentation of layers based on fuzzy skin painting.

(cherry picked from commit 800b742b950438c5ed8323693074b6171300131c)

* SPE-2486: Separate fuzzy skin implementation into the separate file.

(cherry picked from commit efd95c1c66dc09fca7695fb82405056c687c2291)

* Move more fuzzy code to separate file

* Don't hide fuzzy skin option, so it can be applied to paint on fuzzy

* Fix build

* Add option group for fuzzy skin

* Update icon color

* Fix reset painting

* Update UI style

* Store fuzzy painting in bbs_3mf

* Add missing fuzzy paint code

* SPE-2486: Limit the depth of the painted fuzzy skin regions to make regions cover just external perimeters.

This reduces the possibility of artifacts that could happen during regions merging.

(cherry picked from commit fa2663f02647f80b239da4f45d92ef66f5ce048a)

* Update icons

---------

Co-authored-by: yw4z <ywsyildiz@gmail.com>

* Make the region compatible check a separate function

* Only warn about multi-material if it's truly multi-perimeters

* Improve gizmo UI & tooltips

---------

Co-authored-by: Lukáš Hejl <hejl.lukas@gmail.com>
Co-authored-by: yw4z <ywsyildiz@gmail.com>
2025-07-18 16:01:25 +08:00
Rodrigo
bf52f5b4bf Handy Models geometry improvement. (#10092)
* helper disk by code

Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>

* Torus

Delete torus.stl

Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>

* traingle count tunning

Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>

* Update TriangleMesh.hpp

Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>

* adjusting disk diameter

---------

Co-authored-by: Ian Bassi <12130714+ianalexis@users.noreply.github.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2025-07-13 22:07:55 +08:00
Noisyfox
168dd08042 Fix load step as modifier (#9946)
Fix load step as modifier (SoftFever/OrcaSlicer#9940)
2025-06-23 22:28:55 +08:00
yw4z
4b893b40a1 wxDataViewCtrl fixes (#9818)
* init

* update
2025-06-07 17:15:41 +08:00
Alexandre Folle de Menezes
b8c5ddd0ee Fix the spelling/grammar on the original english strings (#9487)
* Fix the spelling/grammar on english strings

* Fix the spelling/grammar on english strings, part 2
2025-06-01 19:32:36 +08:00
Vovodroid
778deab033 Correct repair menu message (#9468) 2025-05-16 23:54:10 +08:00
Alexandre Folle de Menezes
57a6f61349 Fix the spacing on the original english strings (#9596)
* Remove extra spaces between words

* Remove extra spaces after punctuation

* Remove extra spaces before punctuation

* Always needs a space after punctuation

* Always needs a space before parens

* Remove trailing spaces before newline
2025-05-16 16:31:58 +08:00