mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-14 02:07:54 -06:00
Enabling object skirt. (#6487)
Implements individual object skirts, as requested in **Individual skirts when printing by object. #3486** and **Skirt around each object when using "by object" sequence #2652** Now skirt type could be  This PR based on several refactorings, including **Configure skirt start point #6490** PR. To make review more easy each step was committed individually. Obviously them could be separated to different PRs or dropped. I removed `prime_extruder && first_layer && extruder_id == first_extruder_id` as explicit object skirt is available. Open question : do we need both common and object skirt together, probably with separate loop number? All four combinations are possible. Print by layer, common skirt:  Print by layer, object skirt:  Print by object , object skirt:  Print by object , common skirt (any meaning?): 
This commit is contained in:
commit
415bedef94
17 changed files with 342 additions and 381 deletions
|
@ -5227,13 +5227,12 @@ void GLCanvas3D::update_sequential_clearance()
|
|||
// the results are then cached for following displacements
|
||||
if (m_sequential_print_clearance_first_displacement) {
|
||||
m_sequential_print_clearance.m_hull_2d_cache.clear();
|
||||
bool all_objects_are_short = std::all_of(fff_print()->objects().begin(), fff_print()->objects().end(), \
|
||||
[&](PrintObject* obj) { return obj->height() < scale_(fff_print()->config().nozzle_height.value - MARGIN_HEIGHT); });
|
||||
auto [object_skirt_offset, _] = fff_print()->object_skirt_offset();
|
||||
float shrink_factor;
|
||||
if (all_objects_are_short)
|
||||
shrink_factor = scale_(0.5 * MAX_OUTER_NOZZLE_DIAMETER - 0.1);
|
||||
if (fff_print()->is_all_objects_are_short())
|
||||
shrink_factor = scale_(std::max(0.5f * MAX_OUTER_NOZZLE_DIAMETER, object_skirt_offset) - 0.1);
|
||||
else
|
||||
shrink_factor = static_cast<float>(scale_(0.5 * fff_print()->config().extruder_clearance_radius.value - EPSILON));
|
||||
shrink_factor = static_cast<float>(scale_(0.5 * fff_print()->config().extruder_clearance_radius.value + object_skirt_offset - 0.1));
|
||||
|
||||
double mitter_limit = scale_(0.1);
|
||||
m_sequential_print_clearance.m_hull_2d_cache.reserve(m_model->objects.size());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue