Seam: use scarf joint to minimize seam visiblity (#3839)
* Remember z of previous layer * Support travel to middle of the layer z * Support sloped extrusion * Implement sloped seam * Reduce extra movements * Don't clip loop if sloped seam is enabled * Fix wipe * Ensure `slope_max_segment_length` * Add options * Limit slope length to perimeter length * Fix slope segmentation * Rename the option to scarf joint seam * Don't modify the slope option when turning on spiral vase * Add a few suggestions when turnning on scarf joint * Add option to add scarf joint to inner walls * Apply seam gap at the end of the slope * Add option to explicitly use the entire loop as scarf length * Fix layer number * Increase default scarf length to 20mm * Better way of storing the global scarf state * Better vase mode layer height recognition * Move id should exclude seams * Fix slope height with independent support layer height * Fix linux build * Allow controlling the scarf with modifier * Scarf start height default to 0 * Allow enable scarf seam on contour only * Fix type error * Move the creation of sloped loop into ExtrusionEntity.cpp * Fix error "vector too long" * Detect seams properly * The correct way of calculating the rate limit * The correct way of calculating the rate limit (cherry picked from commit 05961f7c98803a42871b8df855bfff6a102936c4) * Add pressure equalizer in print by object mode * Remove the settings recommendation as it varies a lot depends on printer & filament * Add a beta suffix --------- Co-authored-by: SoftFever <softfeverever@gmail.com>
This commit is contained in:
@@ -1041,6 +1041,24 @@ Print::ApplyStatus Print::apply(const Model &model, DynamicPrintConfig new_full_
|
||||
else
|
||||
m_support_used = false;
|
||||
|
||||
{
|
||||
const auto& o = model.objects;
|
||||
const auto opt_has_scarf_joint_seam = [](const DynamicConfig& c) {
|
||||
return c.has("seam_slope_type") && c.opt_enum<SeamScarfType>("seam_slope_type") != SeamScarfType::None;
|
||||
};
|
||||
const bool has_scarf_joint_seam = std::any_of(o.begin(), o.end(), [&new_full_config, &opt_has_scarf_joint_seam](ModelObject* obj) {
|
||||
return obj->get_config_value<ConfigOptionEnum<SeamScarfType>>(new_full_config, "seam_slope_type")->value != SeamScarfType::None ||
|
||||
std::any_of(obj->volumes.begin(), obj->volumes.end(), [&opt_has_scarf_joint_seam](const ModelVolume* v) { return opt_has_scarf_joint_seam(v->config.get());}) ||
|
||||
std::any_of(obj->layer_config_ranges.begin(), obj->layer_config_ranges.end(), [&opt_has_scarf_joint_seam](const auto& r) { return opt_has_scarf_joint_seam(r.second.get());});
|
||||
});
|
||||
|
||||
if (has_scarf_joint_seam) {
|
||||
new_full_config.set("has_scarf_joint_seam", true);
|
||||
}
|
||||
|
||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ", has_scarf_joint_seam:" << has_scarf_joint_seam;
|
||||
}
|
||||
|
||||
// Find modified keys of the various configs. Resolve overrides extruder retract values by filament profiles.
|
||||
DynamicPrintConfig filament_overrides;
|
||||
//BBS: add plate index
|
||||
|
||||
Reference in New Issue
Block a user