Commit graph

27820 commits

Author SHA1 Message Date
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)
Some checks are pending
Build all / Build All (push) Waiting to run
Build all / Flatpak (push) Waiting to run
* 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)
Some checks are pending
Build all / Build All (push) Waiting to run
Build all / Flatpak (push) Waiting to run
* 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)
Some checks failed
Build all / Build All (push) Has been cancelled
Build all / Flatpak (push) Has been cancelled
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)
Some checks are pending
Build all / Build All (push) Waiting to run
Build all / Flatpak (push) Waiting to run
* 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)
Some checks are pending
Build all / Build All (push) Waiting to run
Build all / Flatpak (push) Waiting to run
2025-10-14 08:56:18 +08:00
Rodrigo Faselli
ac75c69ddf
BUG-FIX avoid crossing perimeters ingonore holes <=2mm (#10942)
Some checks are pending
Build all / Build All (push) Waiting to run
Build all / Flatpak (push) Waiting to run
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)
Some checks are pending
Build all / Build All (push) Waiting to run
Build all / Flatpak (push) Waiting to run
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)
Some checks are pending
Build all / Build All (push) Waiting to run
Build all / Flatpak (push) Waiting to run
* 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