mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-07 15:07:31 -06:00
ENH: improve auto-arrange in several ways
1. reduce expansion of exclusion regions 2. expand extrusion calib regions to let them touch bed boundary, to greately simplify auto-arranging with avoidance option on 3. improve dist_for_BOTTOM_LEFT to allow objects be put left to exclusion regions temporarily 4. improve on_preload for better handling objects around exclusion regions. 5. improve debug tools 6. fix a bug with wipe tower estimation (don't estimate if wipe tower is explicitly disabled) 7. use larger y-overlap threshold to estimate rod height confliction better in per-object print ordering (now we use half the clearance radius) Change-Id: Iab29d47a072d8515f28a09855432f92fcffa8c5f (cherry picked from commit 3a4f242a3a6fd2f82dcc8306cde4d1cb107a5099)
This commit is contained in:
parent
17bc464bac
commit
5fa771c6cb
8 changed files with 59 additions and 35 deletions
|
@ -241,6 +241,10 @@ void ArrangeJob::prepare_wipe_tower()
|
|||
{
|
||||
bool need_wipe_tower = false;
|
||||
|
||||
// if wipe tower is explicitly disabled, no need to estimate
|
||||
auto &print = wxGetApp().plater()->get_partplate_list().get_current_fff_print();
|
||||
if (!print.config().enable_prime_tower) return;
|
||||
|
||||
// estimate if we need wipe tower for all plates:
|
||||
// if multile extruders have same bed temp, we need wipe tower
|
||||
if (!params.is_seq_print) {
|
||||
|
@ -531,10 +535,13 @@ void ArrangeJob::process()
|
|||
std::for_each(m_selected.begin(), m_selected.end(), [&](auto& ap) {ap.inflation = params.min_obj_distance / 2; });
|
||||
// For occulusion regions, inflation should be larger to prevent genrating brim on them.
|
||||
// However, extrusion cali regions are exceptional, since we can allow brim overlaps them.
|
||||
// 屏蔽区域只需要膨胀brim宽度,防止brim长过去;挤出标定区域不需要膨胀,brim可以长过去。
|
||||
// 以前我们认为还需要膨胀clearance_radius/2,这其实是不需要的,因为这些区域并不会真的摆放物体,
|
||||
// 其他物体的膨胀轮廓是可以跟它们重叠的。
|
||||
std::for_each(m_unselected.begin(), m_unselected.end(), [&](auto &ap) {
|
||||
ap.inflation = !ap.is_virt_object ?
|
||||
params.min_obj_distance / 2 :
|
||||
(ap.is_extrusion_cali_object ? scaled(params.cleareance_radius / 2) : scaled(params.brim_skirt_distance + params.cleareance_radius / 2));
|
||||
(ap.is_extrusion_cali_object ? 0 : scaled(params.brim_skirt_distance));
|
||||
});
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue