1.The default diameter setting is 16 times the init layer line width
2.Fixed the slice button was not reset after data changed
3.Fixed normal is initialized to the wrong value
4.Fixed delete button crash
jira: nojira
Change-Id: I3b331d81e762aa02f92edf0fd5067b97857f2f8e
1. keep all polygon nodes in drop_nodes
2. prevent generating too small polygon nodes
jira: STUDIO-8107
Change-Id: I1311158ab15097eb10727a8d6884b0bcd8136ef1
jira:STUDIO-7406
most of code is from PrusaSlicer and OrcaSlicer,thanks for Filip Sykala - NTB T15p(PrusaSlicer) and Noisyfox(OrcaSlicer)
Port Emboss & SVG gizmo from PrusaSlicer (#2819)
* Rework UI jobs to make them more understandable and flexible.
Change-Id: I765c7658b0881869754bdb161d720e4cbb180c92
(cherry picked from commit 3cef4611793899fa0ac39cb4d3a3abed7270a8e9)
Jira: none
generate continuitious outer wall speed in z dir
generate continuitious layer time in z dir
Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I0ade543d2f9ee40f5cd65c533eb261d85e5eaa34
this function crashes if there are empty elements in entities.
jira: STUDIO-7975
Change-Id: I0dbeb6b1151dd089be7617ebc3271691f64ac61e
(cherry picked from commit df30728617a89891c68e36cce771fb6380355b82)
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;
Jira: none
add speed transition between discontinuity speed
detect bridge-wall and only use bride speed on bridge wall
fix the bug that not use overhang speed while support z
distance is 0 on arachne mode
Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I72a1504544fe1ed7bd184ca073bd1b52cd2dcd75
This option is duplicated with raft_first_layer_expansion. Now we
use raft_first_layer_expansion for all support types. Note: the name starts with raft, but it actually controls first layer expansion of both raft and support.
jira: none
Change-Id: I3d2bfc86d36c87d75f0bc1d077c6855f668b19b6
(cherry picked from commit 241a77bd6371330aff58b92b63d066054d4920ce)
Optimize the cross-hatch infill pattern to improve strength when low infill density is used.
(#5495)
Change-Id: I90a2d1e9861f55f97c948f897a2e8783625c1daf
This bug causes supports difficult to remove.
Rule to remmeber:
never decrease the top z distance, you can only increase it SLIGHTLY.
jira: STUDIO-7103, STUDIO-7001
Change-Id: I24f71cd67d182d4e2c0902f244a8ca8f4c3ee982
previously lots of logic are missed
JIRA: no jira
Change-Id: I3beadbb78127049594614212e8f9a60633e73b56
(cherry picked from commit 8fe9b854fa58c302c56b4f84bd0db9c5d1a4b571)
1. Fix external bridge anchor problem
This commit is cherry-picked from Prusa.Thanks prusa
Original commit: 81d9724,74a38ed,4d0bae1
jira:NEW
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: If8e3b5902341d1777a156b2da8c8f21713683d31
1. Top surfaces are detected as internal bridge. Can be seen in FDMTest
2. Fix bridge line overlap wall line
jira:NEW
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I73c47e8b3aba862f46c8438fc69e3fcc382d16cc
1. Compute score_all_plates correctly. Previously we only compute the
first j plates which was wrong.
2. Compute height score correctly. Use average height difference instead of sum.
3. Compute color change score in a different way. If adding the current item
increases extruder number, then adds up the score by 1.
jira: STUDIO-7013
Change-Id: I921c181bd4b32080627514d3834f4b74ccd00adb
(cherry picked from commit 4f6ae81be98109fe61d55203e306686e0d294ec4)
github: #3987#3805
1. In some languages that use commas as decimal points, setting multiplier below 1 will resolve to 0
2. Unable to save multiplier correctly
Change-Id: I62bc55e270929ebb5e910eb79c6f97106e842b93
1. improve sorting logic by packing higher objects first, so objects with similar heights can be packed together.
2. remove the logic of arranging around wipe tower.
This logic is no longer useful, and it makes auto arranging density low.
jira: none
Change-Id: I3458ad8702cece29c6853f990497dbcc45365537
(cherry picked from commit bbb72c833324a8cddaab1891693c5c9e1cdedc9b)
Organic support doesn't work with adaptive layer height.
jira: STUDIO-6971
Change-Id: I1fa6418bbc49914b3e5887e465861a0dacd42228
(cherry picked from commit dfe1cecb234d86bfbcba741ca3b46725fee43ea8)
I found a use after free bug in LinesBucketQueue::emplace_back_bucket. This was found by enabling address sanitizer.
The LinesBucketQueue class has two related members:
std::vector<LinesBucket> line_buckets;
std::priority_queue<LinesBucket *, std::vector<LinesBucket *>, LinesBucketPtrComp> line_bucket_ptr_queue;
line_bucket_ptr_queue holds pointers into line_buckets. However, since items are inserted into line_buckets one at a time, existing pointers that were stored inside line_bucket_ptr_queue become invalid. Specifically:
void LinesBucketQueue::emplace_back_bucket(ExtrusionLayers &&els, const void *objPtr, Point offset)
{
auto oldSize = line_buckets.capacity();
line_buckets.emplace_back(std::move(els), objPtr, offset); <--- Causes a reallocation, making previous pointers invalid
line_bucket_ptr_queue.push(&line_buckets.back()); <-- priority queue compares against old, now invalid pointers
...
The proposed fix is to calculate the required number of entries in ConflictChecker::find_inter_of_lines_in_diff_objs, and then calling line_buckets.reserve(count). This ensures that sufficient buffer is allocated up front and the pointers are stable as items are added.
bad function call when calling empty function throw_on_cancel.
jira: STUDIO-6927
Change-Id: Ib37530b5cf155973d4e21d088e07d3110c2d36e4
(cherry picked from commit 53f27f5968a481bab1666fe0053f9753d585f0da)
Upgrade ui, users can directly ok to proceed to the next step
jira: STUDIO-6805
Change-Id: Ia81019c2eacb503666680c0b8583d026baa0134c
(cherry picked from commit 38a2434753c8e3b422267283b16c75f6ad195b14)
jira: 6701
Change name from Flippingline to CrossHatch.
Reduce noise, improve speed by 6.5%. Improve transation layers by
gradually increasing rotation angle and overshoot the transation
layer while direction changed.
Change-Id: I17fcc45b409074d121bf5bb5702e15553d925b51
1. Only set the filament id in map when flush length is not 0
jira:NEW
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I6e0aeaf010f6e6dcbdc3bca5c0034aa60750bb67
1. Add total_filament_volumes, directly access it to get used filaments
github:#3865
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I4fae4f1947b4ebd16e394e0f3cf5fb0e9f979717
Add 45 degree angle offset when processing the bridge.
Need to raise infill_direction to invalidate posPrepareInfill
jira: 6774
Change-Id: I5e6bef3aa814b01c5f30398ac745937a67e3ef4c
(cherry picked from commit 7b12cab10b88f432a11414f8caa1c6427777a1ba)
also change default style to tree organic
jira: STUDIO-6801
Change-Id: Iab1d8c6117139c9a7a4c1fa71de0a13bcb356dd5
(cherry picked from commit d2c4efad58f16b23bef49bd47d3b70bf322d6f55)
jira:6701
New infill pattern that combine block lines infill and switching layers for smooth transition.
Change-Id: I2608a2d39b14efcdfe9d39a9437280da350b94c0
(cherry picked from commit 8d0a09c8b763dfc924cbba9913c241e6afadbc7f)
auto-arranging incorrect with rotation enabled and the objects already have been rotated.
jira: STUDIO-6022
Change-Id: I349d663efb1fc71367c8a77aa8ed5047a0bf2017
(cherry picked from commit 75fe40257a274ed83886e1ee20ce8dedd0de48f6)
1.Fix filament can not map if it's not used in model body
jira:NEW
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ibd2685ffd198b2e17dbf44289d0144b5b7c25788
Github: 2744
* Practically full re-write of spiral vase
- Adds transition out to prevent sharp edge at the top of spiral vase.
- Adds XY interpolation
- Adds option to turn XY interpolation on/off
* - Increasing E to 5 decimal digits (I observed uneven flow with less than that)
- Excluding all travel moves (I saw a bug where somehow we ended up with travel moves within the print so excluding all travel moves)
* - max_xy_smoothing is now configurable, default is 200% of nozzle_diameter
- fixed no-op travel moves in the middle of spiral that now show up as defects when Smooth Spiral is enabled!
* - Avoiding namespace pollution
- Fixing dist_XY == 0 bug
---------
Co-authored-by: Andrew Boktor <aboktor@microsoft.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
Change-Id: I4e982b6192f730037ff497389454313af3905e82
1. Fix crash when change infill pattern. Now change infill pattern will
influence prepare infill
2. Remove with loop param, no longer use now
jira:NEW
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ibee8808e462bd418d83b7e5781dd2bc5cc772eb1
1.In the new algorithm,we no longer use this param
jira:NEW
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ie7660c0f9744cb1f33bce4fa1ccbfef06b3df712
1. Only auto calculate flush when enabled
2. Add default params for long retraction
3. Disable filament override for unsupport machines
jira:NEW
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ib5d51505b58101839527e944f9a237483951f9fe
1.The new algorithm still generate unnessary infill some time.
So we readd the option
jira:NEW
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I65fdd58e19db85582d89facb5038adf8e87f299a
obj->bounding_box().size() is not the real object size if the object has been rotated.
jira: STUDIO-5999
Change-Id: I6553d4c990696efd674e3e57063802127d5d5282
(cherry picked from commit 479ea9fb02f55d24f27c94633f3d852bd5c62c83)
Code fallback:reload scene
in 3D view GLVolume::explosion_ratio = 1.0
hide "Edit to scale" icon
Jira:STUDIO-6727
Change-Id: Ib7079077f5b39930891869af618b93861f3aa178
Cherry-picks new 3D Honeycomb from Orca Slicer by David Eccles (gringer).
jira: 6697
Orignal commit message:
3D Honeycomb - switch direction at smallest bridge point, rather than every layer (#4425)
Co-authored-by: SoftFever <softfeverever@gmail.com>
Change-Id: Ida2e5b76a7b906be21045e053200519af1bd9489
(cherry picked from commit a9f521c37e04a0cf404184848aa738b8a6043f87)
1. associate button display logic
2. Add valid range tip
3. seperate the printer into three types
jira:NEW
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ie14c8746eb20456dacd5c129a5449c1e7c7db372
This patch is cherry pick from Prusa, thanks to Prusa
Rework multi-material segmentation to work directly on the Voronoi diagram without creating a copy of it.
Previous algorithms assume that they can get an invalid Voronoi diagram. Because of that, during the multi-material segmentation, a copy of the Voronoi diagram was created, and there were several attempts to fix missing vertices and edges. But as it shows, this wasn't a good enough approach and sometimes led to several issues like bleeding layers.
After generalization, our approach for detection and repairs of invalid Voronoi diagrams from Arachne, we could assume that multi-material segmentation gets non-invalid Voronoi diagrams.
With this assumption, we reimplement multi-materials segmentation to work directly on the Voronoi diagram. That should make multi-material segmentation more stable.
So, this should fix several issues like bleeding layers. Also, memory consumption should decrease by a lot. Also, there should be some speedup of multi-materials segmentation.
Jira: none
Change-Id: I72aa6e1f9634d9ee8759aa469a0b39a36ace62f5
1. initial port of new ensure vertical thickness algorithm from prusa
2. initial port of new internal bridge algorithm from prusa
3. readd interface shell
Based on prusa commit 11c0e567a68979e96085b3763a76464cb793ea12
and commit f8e7d1b01c114b4d45f9e221c6b5bb935065d650
Thanks prusa.
original author:
PavelMikus <pavel.mikus.mail@seznam.cz>
Vojtech Bubnik <bubnikv@gmail.com>
jira:NEW
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I0d36be065a29cf87315918d720f726975a43ef9f
Previous parallelization has a bug where two adjacent nodes may be deleted at the same time.
jira: none
Change-Id: I99a29dae9f72aa74ed2721eea4421b15eec10732
(cherry picked from commit 91efe67d723652d3f7e4484dd3cdf31638f769a4)
1. sharp tails are supported by a sparse set of contact points which are
easier to remove than previously dense surrounding support.
Organic tree support also has this feature, including all other smart
overhang detection techniques (small overhang and cantilever detection),
with the cost of slightly longer time to detect overhangs.
2. improve supporting overhang contours by adding contact points along
contours.
jira: STUDIO-3876
2. remove some redundant data structure.
Change-Id: If7f595348506a14aba2d0132d23f97d3539c1e1f
(cherry picked from commit e3cce09b9db12ced2841045ffd337b1f35494e6c)
jira:none
code is from PrusaSlicer,thanks for enricoturri1966 and PrusaSlicer
commit dcec7a8ad40eaad72789f6dba15cafc94664119f
Author: enricoturri1966 <enricoturri@seznam.cz>
Date: Tue Feb 28 08:08:56 2023 +0100
Fixed Rotate Gizmo orientation for mirrored objects + ensure that instances and volumes always rotate as rigid body
Change-Id: I359d15814a6411bbd6bcb753661388bb5e6fb513
1. Add wipe tower role cache in GCodeProcessor result
2. Add wiki link for prime tower
jira:NEW
Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ia766c7218df68fb1ffba567af193d6bfecacf588
1.reducing purge through retracting filament.Currently only
applicable to X&P series
github: PR#3100
Signed-off-by: XunZhangBambu <xun.zhang@bambulab.com>
Change-Id: Ie328039872e50e699dc5e5082fa99f68ac5f5fd1
and clip paths correctly while has 50% overhang on slope
Jira: 6640 6639
Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I8abe43177c3965130514017eaaa75bc79ab7b2db
only check slope overhang on conditional mode
add not apply speed slow down for gloss of print result
Jira: none
Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I22f7ea7785aeed5833f28103d51f36be84fc7c56
not working correctly with short objects
jira: STUDIO-6489
Change-Id: I33e1a165f448e1c3e272d4045934c63ad345db2f
(cherry picked from commit 9348eaa22a056db5384a38ea966cec9ba4a533a7)
Jira:none
BBL:Merged scarf seam and
add imorovemnt to improve seam on defalue setting
--as default setting wipe before rectract get good seam on end
--clip slope at start and end
--clip more on inner wall slope start than outer wall
--slowdown slope speed to get better sea
--todo-slope path had error double dE
reduce it could improve seam,but slope could not stick well.
--check slope path overhang and avoid it while on conditional scarf mode
Co-authored-by: qing.zhang <qing.zhang@BambuLab.com>
Change-Id: I583a1c25e534b2aa5c9d710dcf207aefbea64347
1. speedup detect_overhangs by skipping sharp tail and cantilever detection if there are too many overhangs.
jira: STUDIO-3584, STUDIO-2592
2. drop_nodes with precalculation of avoidance and tbb parallel_for_each for all nodes in each layer.
jira: STUDIO-1814, STUDIO-2381, STUDIO-2639, STUDIO-5020,
3. don't show too many progress messages
Change-Id: Ia4897089c69c235fb7cd8e5fdcf4690086048b31
(cherry picked from commit 9c08e28b5b5342dfdde2c939fc953f143a42a59b)