Previously painting support enforces on vertical faces doesn't work, as projecting the facets downwards will give empty polygons.
Now we use a different mechanism to enable vertical paint-on enforces, by directly adding contact nodes.
Note: this feature only works with tree support as only tree support has contact nodes.
jira: none
Change-Id: Id171b1665566d142a6427285baccb40c0aa00949
(cherry picked from commit 9c882f61eb37350a4486df58de48f0ae489f2d15)
1. do not add interface for small overhangs so supports are easier to
remove
2. calculate avoidance more accurately using real layer height
jira: STUDIO-6285
3. hybrid nodes won't collide with lower layers
4. calculate max move more accurately
5. do not increase radius if next layer has collision
jira: STUDIO-2296, STUDIO-7883
6. rewrite plan_layer_heights to prevent support layers overlap.
Now the tree support layers are completely independent to object layers.
6. increase collision areas for interface. The top layers may be too
close to interface with adaptive layer heights and very small overhang angle
Change-Id: I052c3f66e68afb7663e2d70c846dd09ed7086071
(cherry picked from commit aca511caebfdeec270d4fc0ec6bbbadde77cddc9)
1. add rectilinear interface pattern for organic support
jira: STUDIO-7181
2. add tree support optgroup
Change-Id: I94882bc34a61c6adc06b8ecbc9f2323f9b039aac
(cherry picked from commit a8142ab3f37e0bd140a31a7e635b8475f471d7e3)
1.Caused by missing break of switch case
jira:NONE
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ie667eda4069f3e2487ed87081580e2540ae4da7b
This helps stabilize "auto rotate" and "align to Y axis" functions.
jira: STUDIO-7775, STUDIO-7036
Change-Id: I3c35fa1d6c5e033915584213cdf79f3aac4dc099
while on the one top wall mode, extra overhang wall loop may produced
on bridge. this commit fix that.
Jira: none
Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I469ffae57016db523a1b42442adf156dfbd82d45
Jira: none
fix missing wipe while avoid acrossing wall on
set wipe speeed base on previou path
first implement by orca
add slope gap params
Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I45655f087f5a165b52b1007ef5afe0b20d0b13a4
upgrade Transformation class
jira:none
about 75% code is from PrusaSlicer,thanks for PrusaSlicer and enricoturri1966
commit b32e9366606dce7d4f8de8db84fd902113bdbe28
Author: enricoturri1966 <enricoturri@seznam.cz>
Date: Tue Mar 7 14:32:18 2023 +0100
Rework of constrained scaling
Change-Id: I1248ea586e6b8f2fb6cdf3aa901ed7f525c3f111
(cherry picked from commit e10381aad1412b0c47afa340b634faa3af9d1a1f)
The top z gap should be split if it's too large.
Also we use same logic for both synced and independent support layer.
jira: STUDIO-7232
github: #4191
Change-Id: Idca792e8fa51a83c2a09441ecac64d40b91d6390
1.Caused by removing the hole stored in polygon
jira:NEW
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I36c776dd6466b09ae8627eea59a93656f14d297d
jira 6984
Fix the layer shift cauculating error while reducing wrapping after importing the improvement from orca.
Change-Id: I1af1b29a6578836e5715685a4478a5b1d29f4ecf
1.Caused by round(), if purge volume is small, flush count may be 0 due
to round()
Github:#4738
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I382ab3021761c2fcc84d3537a18bd619637985b8
The existing implementation did only read the new Z position from the injected timelapse_gcode and flagged the position as unsafe because of this.
This change reads X, Y and Z pos from the timelapgse_gcode and will keep the position state correct to enable safety checks required for using spiral Z hop.
Because of this, spiral Z hop can be used everyhwere now. The same pattern is also applied for layer_change/toolhead gcode injection.
The set_current_position_clear method is unused but will be kept in implementation for future scenarios.
/run/build/BambuStudio/src/libslic3r/Flow.cpp: In static member function ‘static float Slic3r::Flow::rounded_rectangle_extrusion_spacing(float, float)’:
/run/build/BambuStudio/src/libslic3r/Flow.cpp:194:27: error: ‘error’ was not declared in this scope; did you mean ‘nlohmann::detail::cbor_tag_handler_t::error’?
194 | BOOST_LOG_TRIVIAL(error)<< __FUNCTION__ << boost::format("negative extrusion : width %1% height %2%") % width % height;
| ^~~~~
| nlohmann::detail::cbor_tag_handler_t::error
/run/build/BambuStudio/src/libslic3r/PerimeterGenerator.cpp: In function ‘double Slic3r::random_value()’:
/run/build/BambuStudio/src/libslic3r/PerimeterGenerator.cpp:31:76: error: ‘thread’ is not a member of ‘std’
31 | thread_local std::mt19937 gen(rd.entropy() > 0 ? rd() : std::hash<std:🧵:id>()(std::this_thread::get_id()));
| ^~~~~~
/run/build/BambuStudio/src/libslic3r/PerimeterGenerator.cpp:15:1: note: ‘std::thread’ is defined in header ‘<thread>’; did you forget to ‘#include <thread>’?
14 | #include "libslic3r/AABBTreeLines.hpp"
+++ |+#include <thread>
15 | static const int overhang_sampling_number = 6;