ENH:add auto contour and hole params for filaments

Jira: none

Signed-off-by: qing.zhang <qing.zhang@bambulab.com>
Change-Id: I4389d64e82773081cbab5601eb0d5aec5473096e
This commit is contained in:
qing.zhang 2025-01-06 16:43:05 +08:00 committed by lane.wei
parent 1cde0b844a
commit b2fa093993
19 changed files with 298 additions and 123 deletions

View File

@ -94,6 +94,36 @@
"Bambu Lab H2D 0.6 nozzle",
"Bambu Lab H2D 0.8 nozzle"
],
"counter_coef_1": [
"0"
],
"counter_coef_2": [
"3860"
],
"counter_coef_3": [
"-32000"
],
"hole_coef_1": [
"0"
],
"hole_coef_2": [
"-8000"
],
"hole_coef_3": [
"135000"
],
"counter_limit_min": [
"-35000"
],
"counter_limit_max": [
"33000"
],
"hole_limit_min": [
"88000"
],
"hole_limit_max": [
"220000"
],
"filament_start_gcode": [
"; filament start gcode\nM145 P1 ; set airduct mode to heating mode\n"
],

View File

@ -103,6 +103,36 @@
"compatible_printers": [
"Bambu Lab H2D 0.4 nozzle"
],
"counter_coef_1": [
"0"
],
"counter_coef_2": [
"6500"
],
"counter_coef_3": [
"-32000"
],
"hole_coef_1": [
"0"
],
"hole_coef_2": [
"-8000"
],
"hole_coef_3": [
"135000"
],
"counter_limit_min": [
"-35000"
],
"counter_limit_max": [
"33000"
],
"hole_limit_min": [
"88000"
],
"hole_limit_max": [
"220000"
],
"filament_start_gcode": [
"; filament start gcode\nM145 P0 ; set airduct mode to cooling mode\nM142 P1 R35 S40 U0.3 V0.5 ; set chamber autocooling"
],

View File

@ -100,6 +100,36 @@
"compatible_printers": [
"Bambu Lab H2D 0.4 nozzle"
],
"counter_coef_1": [
"0"
],
"counter_coef_2": [
"5650"
],
"counter_coef_3": [
"-20200"
],
"hole_coef_1": [
"0"
],
"hole_coef_2": [
"-12100"
],
"hole_coef_3": [
"145000"
],
"counter_limit_min": [
"-35000"
],
"counter_limit_max": [
"30000"
],
"hole_limit_min": [
"88000"
],
"hole_limit_max": [
"220000"
],
"filament_start_gcode": [
"; filament start gcode\nM145 P0 ; set airduct mode to cooling mode\nM142 P1 R35 S40 U0.3 V0.5 ; set chamber autocooling"
],

View File

@ -98,6 +98,36 @@
"Bambu Lab H2D 0.4 nozzle",
"Bambu Lab H2D 0.6 nozzle"
],
"counter_coef_1": [
"0"
],
"counter_coef_2": [
"8000"
],
"counter_coef_3": [
"-51000"
],
"hole_coef_1": [
"0"
],
"hole_coef_2": [
"-8000"
],
"hole_coef_3": [
"201150"
],
"counter_limit_min": [
"-35000"
],
"counter_limit_max": [
"33000"
],
"hole_limit_min": [
"88000"
],
"hole_limit_max": [
"220000"
],
"filament_start_gcode": [
"; filament start gcode\nM145 P0 ; set airduct mode to cooling mode\nM142 P1 R35 S40 U0.3 V0.5 ; set chamber autocooling"
],

View File

@ -88,6 +88,36 @@
"compatible_printers": [
"Bambu Lab H2D 0.4 nozzle"
],
"counter_coef_1": [
"0"
],
"counter_coef_2": [
"7500"
],
"counter_coef_3": [
"-52000"
],
"hole_coef_1": [
"0"
],
"hole_coef_2": [
"-10250"
],
"hole_coef_3": [
"197450"
],
"counter_limit_min": [
"-35000"
],
"counter_limit_max": [
"33000"
],
"hole_limit_min": [
"88000"
],
"hole_limit_max": [
"220000"
],
"filament_start_gcode": [
"; filament start gcode\nM145 P0 ; set airduct mode to cooling mode\nM142 P1 R35 S40 U0.3 V0.5 ; set chamber autocooling"
],

View File

@ -192,6 +192,42 @@
"textured_plate_temp_initial_layer": [
"60"
],
"counter_coef_1": [
"0"
],
"counter_coef_2": [
"25000"
],
"counter_coef_3": [
"-110000"
],
"hole_coef_1": [
"0"
],
"hole_coef_2": [
"-25000"
],
"hole_coef_3": [
"280000"
],
"counter_limit_min": [
"-40000"
],
"counter_limit_max": [
"50000"
],
"hole_limit_min": [
"80000"
],
"hole_limit_max": [
"250000"
],
"circle_compensation_speed": [
"200"
],
"diameter_limit": [
"50"
],
"compatible_printers": [],
"impact_strength_z":["10"],
"filament_start_gcode": [

View File

@ -133,5 +133,6 @@
"wipe_tower_no_sparse_layers": "0",
"xy_contour_compensation": "0",
"xy_hole_compensation": "0",
"z_direction_outwall_speed_continuous": "0"
"z_direction_outwall_speed_continuous": "0",
"enable_circle_compensation": "0"
}

View File

@ -5298,7 +5298,7 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description,
speed = m_config.inner_wall_speed.get_at(cur_extruder_index());
//reset speed by auto compensation speed
if(set_holes_and_compensation_speed) {
speed = m_config.circle_compensation_speed;
speed = m_config.circle_compensation_speed.get_at(cur_extruder_index());
}else if (m_config.detect_overhang_wall && m_config.smooth_speed_discontinuity_area && path.smooth_speed != 0)
speed = path.smooth_speed;
else if (m_config.enable_overhang_speed.get_at(cur_extruder_index())) {
@ -5310,7 +5310,7 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description,
speed = m_config.outer_wall_speed.get_at(cur_extruder_index());
// reset speed by auto compensation speed
if (set_holes_and_compensation_speed) {
speed = m_config.circle_compensation_speed;
speed = m_config.circle_compensation_speed.get_at(cur_extruder_index());
} else if (m_config.detect_overhang_wall && m_config.smooth_speed_discontinuity_area && path.smooth_speed != 0)
speed = path.smooth_speed;
else if (m_config.enable_overhang_speed.get_at(cur_extruder_index())) {

View File

@ -141,13 +141,12 @@ ExPolygons Layer::merged(float offset_scaled) const
// Here the perimeters are created cummulatively for all layer regions sharing the same parameters influencing the perimeters.
// The perimeter paths and the thin fills (ExtrusionEntityCollection) are assigned to the first compatible layer region.
// The resulting fill surface is split back among the originating regions.
void Layer::make_perimeters()
void Layer::make_perimeters(const AutoContourHolesCompensationParams &auto_contour_holes_compensation_params)
{
BOOST_LOG_TRIVIAL(trace) << "Generating perimeters for layer " << this->id();
// keep track of regions whose perimeters we have already generated
std::vector<unsigned char> done(m_regions.size(), false);
for (LayerRegionPtrs::iterator layerm = m_regions.begin(); layerm != m_regions.end(); ++ layerm)
if ((*layerm)->slices.empty()) {
(*layerm)->perimeters.clear();
@ -199,7 +198,7 @@ void Layer::make_perimeters()
(*layerm)->fill_surfaces.surfaces.clear();
if (this->object()->config().enable_circle_compensation) {
SurfaceCollection copy_slices = (*layerm)->slices;
(*layerm)->auto_circle_compensation(copy_slices);
(*layerm)->auto_circle_compensation(copy_slices, auto_contour_holes_compensation_params);
(*layerm)->make_perimeters(copy_slices, &(*layerm)->fill_surfaces, &(*layerm)->fill_no_overlap_expolygons, this->loop_nodes);
} else
(*layerm)->make_perimeters((*layerm)->slices, &(*layerm)->fill_surfaces, &(*layerm)->fill_no_overlap_expolygons, this->loop_nodes);
@ -228,7 +227,7 @@ void Layer::make_perimeters()
//BBS
ExPolygons fill_no_overlap;
if (this->object()->config().enable_circle_compensation)
layerm_config->auto_circle_compensation(new_slices);
layerm_config->auto_circle_compensation(new_slices, auto_contour_holes_compensation_params);
layerm_config->make_perimeters(new_slices, &fill_surfaces, &fill_no_overlap, this->loop_nodes);
// assign fill_surfaces to each layer

View File

@ -7,7 +7,7 @@
#include "SurfaceCollection.hpp"
#include "ExtrusionEntityCollection.hpp"
#include "RegionExpansion.hpp"
#include <libslic3r/Print.hpp>
namespace Slic3r {
@ -80,7 +80,7 @@ public:
void slices_to_fill_surfaces_clipped();
void prepare_fill_surfaces();
//BBS
void auto_circle_compensation(SurfaceCollection &slices);
void auto_circle_compensation(SurfaceCollection &slices, const AutoContourHolesCompensationParams &auto_contour_holes_compensation_params);
void make_perimeters(const SurfaceCollection &slices, SurfaceCollection* fill_surfaces, ExPolygons* fill_no_overlap, std::vector<LoopNode> &loop_nodes);
void process_external_surfaces(const Layer *lower_layer, const Polygons *lower_layer_covered);
double infill_area_threshold() const;
@ -182,7 +182,7 @@ public:
for (const LayerRegion *layerm : m_regions) if (layerm->slices.any_bottom_contains(item)) return true;
return false;
}
void make_perimeters();
void make_perimeters(const AutoContourHolesCompensationParams &auto_contour_holes_compensation_params);
//BBS
void calculate_perimeter_continuity(std::vector<LoopNode> &prev_nodes);

View File

@ -13,6 +13,8 @@
#include <map>
#include <boost/log/trivial.hpp>
static const double max_deviation = 0.5 * 1e6;
static const double max_variance = 500 * 1e6;
namespace Slic3r {
@ -64,27 +66,25 @@ void LayerRegion::slices_to_fill_surfaces_clipped()
}
}
void LayerRegion::auto_circle_compensation(SurfaceCollection& slices)
void LayerRegion::auto_circle_compensation(SurfaceCollection& slices, const AutoContourHolesCompensationParams &auto_contour_holes_compensation_params)
{
const PrintObjectConfig &object_config = this->layer()->object()->config();
double max_deviation = object_config.max_deviation * 1e6;
double max_variance = object_config.max_variance * 1e6;
double limited_speed = object_config.circle_compensation_speed;
int filament_idx = this->region().config().wall_filament;
double counter_speed_coef = object_config.counter_coef_1 / 1e6;
double counter_diameter_coef = object_config.counter_coef_2 / 1e6;
double counter_compensate_coef = object_config.counter_coef_3;
double limited_speed = auto_contour_holes_compensation_params.circle_compensation_speed[filament_idx];
double counter_speed_coef = auto_contour_holes_compensation_params.counter_speed_coef[filament_idx] / 1e6;
double counter_diameter_coef = auto_contour_holes_compensation_params.counter_diameter_coef[filament_idx] / 1e6;
double counter_compensate_coef = auto_contour_holes_compensation_params.counter_compensate_coef[filament_idx];
double hole_speed_coef = object_config.hole_coef_1 / 1e6;
double hole_diameter_coef = object_config.hole_coef_2 / 1e6;
double hole_compensate_coef = object_config.hole_coef_3;
double hole_speed_coef = auto_contour_holes_compensation_params.hole_speed_coef[filament_idx] / 1e6;
double hole_diameter_coef = auto_contour_holes_compensation_params.hole_diameter_coef[filament_idx] / 1e6;
double hole_compensate_coef = auto_contour_holes_compensation_params.hole_compensate_coef[filament_idx];
double counter_limit_min_value = object_config.counter_limit_min;
double counter_limit_max_value = object_config.counter_limit_max;
double hole_limit_min_value = object_config.hole_limit_min;
double hole_limit_max_value = object_config.hole_limit_max;
double counter_limit_min_value = auto_contour_holes_compensation_params.counter_limit_min_value[filament_idx];
double counter_limit_max_value = auto_contour_holes_compensation_params.counter_limit_max_value[filament_idx];
double hole_limit_min_value = auto_contour_holes_compensation_params.hole_limit_min_value[filament_idx];
double hole_limit_max_value = auto_contour_holes_compensation_params.hole_limit_max_value[filament_idx];
double diameter_limit_value = object_config.diameter_limit;
double diameter_limit_value = auto_contour_holes_compensation_params.diameter_limit[filament_idx];
for (Surface &surface : slices.surfaces) {
Point center;

View File

@ -880,7 +880,7 @@ static std::vector<std::string> s_Preset_print_options {
"top_surface_line_width", "support_line_width", "infill_wall_overlap", "bridge_flow",
"elefant_foot_compensation", "xy_contour_compensation", "xy_hole_compensation", "resolution", "enable_prime_tower",
"prime_tower_width", "prime_tower_brim_width", "prime_tower_outer_first", "prime_tower_skip_points", "prime_volume",
"enable_circle_compensation", "circle_compensation_speed", "max_deviation", "max_variance",
"enable_circle_compensation", "circle_compensation_speed",
"counter_coef_1", "counter_coef_2", "counter_coef_3", "hole_coef_1", "hole_coef_2", "hole_coef_3",
"counter_limit_min", "counter_limit_max", "hole_limit_min", "hole_limit_max", "diameter_limit",
"wipe_tower_no_sparse_layers", "compatible_printers", "compatible_printers_condition", "inherits",

View File

@ -1699,7 +1699,7 @@ void Print::process(std::unordered_map<std::string, long long>* slice_time, bool
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": total object counts %1% in current print, need to slice %2%")%m_objects.size()%need_slicing_objects.size();
BOOST_LOG_TRIVIAL(info) << "Starting the slicing process." << log_memory_info();
const AutoContourHolesCompensationParams &auto_contour_holes_compensation_params = AutoContourHolesCompensationParams(m_config);
if (!use_cache) {
if (slice_time) {
@ -1709,7 +1709,7 @@ void Print::process(std::unordered_map<std::string, long long>* slice_time, bool
for (PrintObject* obj : m_objects) {
if (need_slicing_objects.count(obj) != 0) {
obj->make_perimeters();
obj->make_perimeters(auto_contour_holes_compensation_params);
}
else {
if (obj->set_started(posSlice))
@ -1805,7 +1805,7 @@ void Print::process(std::unordered_map<std::string, long long>* slice_time, bool
obj->set_done(posDetectOverhangsForLift);
}
else {
obj->make_perimeters();
obj->make_perimeters(auto_contour_holes_compensation_params);
obj->infill();
obj->ironing();
obj->generate_support_material();

View File

@ -297,6 +297,41 @@ private:
size_t m_ref_cnt{ 0 };
};
struct AutoContourHolesCompensationParams
{
AutoContourHolesCompensationParams(const PrintConfig &config)
{
counter_speed_coef = config.counter_coef_1.values;
counter_diameter_coef = config.counter_coef_2.values;
counter_compensate_coef = config.counter_coef_3.values;
hole_speed_coef = config.hole_coef_1.values;
hole_diameter_coef = config.hole_coef_2.values;
hole_compensate_coef = config.hole_coef_3.values;
counter_limit_min_value = config.counter_limit_min.values;
counter_limit_max_value = config.counter_limit_max.values;
hole_limit_min_value = config.hole_limit_min.values;
hole_limit_max_value = config.hole_limit_max.values;
circle_compensation_speed = config.circle_compensation_speed.values;
diameter_limit = config.diameter_limit.values;
}
// BBS: params for auto contour and holes compensation
std::vector<double> counter_speed_coef;
std::vector<double> counter_diameter_coef;
std::vector<double> counter_compensate_coef;
std::vector<double> hole_speed_coef;
std::vector<double> hole_diameter_coef;
std::vector<double> hole_compensate_coef;
std::vector<double> counter_limit_min_value;
std::vector<double> counter_limit_max_value;
std::vector<double> hole_limit_min_value;
std::vector<double> hole_limit_max_value;
std::vector<double> circle_compensation_speed;
std::vector<double> diameter_limit;
};
class PrintObject : public PrintObjectBaseWithState<Print, PrintObjectStep, posCount>
{
private: // Prevents erroneous use by other classes.
@ -478,7 +513,7 @@ private:
static PrintObjectConfig object_config_from_model_object(const PrintObjectConfig &default_object_config, const ModelObject &object, size_t num_extruders, std::vector<int>& variant_index);
private:
void make_perimeters();
void make_perimeters(const AutoContourHolesCompensationParams &auto_contour_holes_compensation_params);
void prepare_infill();
void infill();
void ironing();

View File

@ -4182,91 +4182,78 @@ void PrintConfigDef::init_fff_params()
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool(false));
def = this->add("circle_compensation_speed", coFloat);
def = this->add("circle_compensation_speed", coFloats);
def->label = L("Circle Compensation Speed");
def->tooltip = L("circle_compensation_speed");
def->sidetext = L("mm/s");
def->min = 0;
def->set_default_value(new ConfigOptionFloat(200));
def->set_default_value(new ConfigOptionFloats{200});
def = this->add("max_deviation", coFloat);
def->label = L("Deviation");
def->tooltip = L("max_deviation");
def->sidetext = L("mm");
def->min = 0;
def->set_default_value(new ConfigOptionFloat(0.5));
def = this->add("max_variance", coFloat);
def->label = L("Variance");
def->tooltip = L("max_variance");
def->min = 0;
def->set_default_value(new ConfigOptionFloat(500));
def = this->add("counter_coef_1", coFloat);
def = this->add("counter_coef_1", coFloats);
def->label = L("Counter Coef 1");
def->tooltip = L("counter_coef_1");
def->sidetext = L("/1e6");
def->set_default_value(new ConfigOptionFloat(0));
def->set_default_value(new ConfigOptionFloats{0});
def = this->add("counter_coef_2", coFloat);
def->label = L("Counter Coef 2");
def = this->add("counter_coef_2", coFloats);
def->label = L("Contour Coef 2");
def->tooltip = L("counter_coef_2");
def->sidetext = L("/1e6");
def->set_default_value(new ConfigOptionFloat(25000));
def->set_default_value(new ConfigOptionFloats{25000});
def = this->add("counter_coef_3", coFloat);
def->label = L("Counter Coef 3");
def = this->add("counter_coef_3", coFloats);
def->label = L("Contour Coef 3");
def->tooltip = L("counter_coef_3");
def->sidetext = L("/1e6");
def->set_default_value(new ConfigOptionFloat(-110000));
def->set_default_value(new ConfigOptionFloats{-110000});
def = this->add("hole_coef_1", coFloat);
def = this->add("hole_coef_1", coFloats);
def->label = L("Hole Coef 1");
def->tooltip = L("hole_coef_1");
def->sidetext = L("/1e6");
def->set_default_value(new ConfigOptionFloat(0));
def->set_default_value(new ConfigOptionFloats{0});
def = this->add("hole_coef_2", coFloat);
def = this->add("hole_coef_2", coFloats);
def->label = L("Hole Coef 2");
def->tooltip = L("hole_coef_2");
def->sidetext = L("/1e6");
def->set_default_value(new ConfigOptionFloat(-25000));
def->set_default_value(new ConfigOptionFloats{-25000});
def = this->add("hole_coef_3", coFloat);
def = this->add("hole_coef_3", coFloats);
def->label = L("Hole Coef 3");
def->tooltip = L("hole_coef_3");
def->sidetext = L("/1e6");
def->set_default_value(new ConfigOptionFloat(280000));
def->set_default_value(new ConfigOptionFloats{280000});
def = this->add("counter_limit_min", coFloat);
def->label = L("Counter limit min");
def = this->add("counter_limit_min", coFloats);
def->label = L("Contour limit min");
def->tooltip = L("counter_limit_min");
def->sidetext = L("/1e6");
def->set_default_value(new ConfigOptionFloat(-40000));
def->set_default_value(new ConfigOptionFloats{-40000});
def = this->add("counter_limit_max", coFloat);
def->label = L("Counter limit max");
def = this->add("counter_limit_max", coFloats);
def->label = L("Contour limit max");
def->tooltip = L("counter_limit_max");
def->sidetext = L("/1e6");
def->set_default_value(new ConfigOptionFloat(50000));
def->set_default_value(new ConfigOptionFloats{50000});
def = this->add("hole_limit_min", coFloat);
def = this->add("hole_limit_min", coFloats);
def->label = L("Hole limit min");
def->tooltip = L("hole_limit_min");
def->sidetext = L("/1e6");
def->set_default_value(new ConfigOptionFloat(80000));
def->set_default_value(new ConfigOptionFloats{80000});
def = this->add("hole_limit_max", coFloat);
def = this->add("hole_limit_max", coFloats);
def->label = L("Hole limit max");
def->tooltip = L("hole_limit_max");
def->sidetext = L("/1e6");
def->set_default_value(new ConfigOptionFloat(250000));
def->set_default_value(new ConfigOptionFloats{250000});
def = this->add("diameter_limit", coFloat);
def = this->add("diameter_limit", coFloats);
def->label = L("Diameter limit");
def->tooltip = L("diameter_limit");
def->sidetext = L("mm");
def->set_default_value(new ConfigOptionFloat(50));
def->set_default_value(new ConfigOptionFloats{50});
def = this->add("flush_volumes_vector", coFloats);
// BBS: remove _L()w

View File

@ -828,20 +828,6 @@ PRINT_CONFIG_CLASS_DEFINE(
((ConfigOptionFloat, xy_contour_compensation))
//BBS auto hole contour compensation
((ConfigOptionBool, enable_circle_compensation))
((ConfigOptionFloat, circle_compensation_speed))
((ConfigOptionFloat, max_deviation))
((ConfigOptionFloat, max_variance))
((ConfigOptionFloat, counter_coef_1))
((ConfigOptionFloat, counter_coef_2))
((ConfigOptionFloat, counter_coef_3))
((ConfigOptionFloat, hole_coef_1))
((ConfigOptionFloat, hole_coef_2))
((ConfigOptionFloat, hole_coef_3))
((ConfigOptionFloat, counter_limit_min))
((ConfigOptionFloat, counter_limit_max))
((ConfigOptionFloat, hole_limit_min))
((ConfigOptionFloat, hole_limit_max))
((ConfigOptionFloat, diameter_limit))
((ConfigOptionBool, flush_into_objects))
// BBS
((ConfigOptionBool, flush_into_infill))
@ -1239,8 +1225,19 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE(
((ConfigOptionBool, exclude_object))
((ConfigOptionPercents, filament_shrink))
((ConfigOptionFloats, grab_length))
)
//BBS
((ConfigOptionFloats, circle_compensation_speed))
((ConfigOptionFloats, diameter_limit))
((ConfigOptionFloats, counter_coef_1))
((ConfigOptionFloats, counter_coef_2))
((ConfigOptionFloats, counter_coef_3))
((ConfigOptionFloats, hole_coef_1))
((ConfigOptionFloats, hole_coef_2))
((ConfigOptionFloats, hole_coef_3))
((ConfigOptionFloats, counter_limit_min))
((ConfigOptionFloats, counter_limit_max))
((ConfigOptionFloats, hole_limit_min))
((ConfigOptionFloats, hole_limit_max)))
// This object is mapped to Perl as Slic3r::Config::Full.
PRINT_CONFIG_CLASS_DERIVED_DEFINE0(
FullPrintConfig,

View File

@ -316,7 +316,7 @@ std::vector<std::set<int>> PrintObject::detect_extruder_geometric_unprintables()
// 1) Merges typed region slices into stInternal type.
// 2) Increases an "extra perimeters" counter at region slices where needed.
// 3) Generates perimeters, gap fills and fill regions (fill regions of type stInternal).
void PrintObject::make_perimeters()
void PrintObject::make_perimeters(const AutoContourHolesCompensationParams &auto_contour_holes_compensation_params)
{
// prerequisites
this->slice();
@ -410,10 +410,10 @@ void PrintObject::make_perimeters()
BOOST_LOG_TRIVIAL(debug) << "Generating perimeters in parallel - start";
tbb::parallel_for(
tbb::blocked_range<size_t>(0, m_layers.size()),
[this](const tbb::blocked_range<size_t>& range) {
[this, auto_contour_holes_compensation_params](const tbb::blocked_range<size_t>& range) {
for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++ layer_idx) {
m_print->throw_if_canceled();
m_layers[layer_idx]->make_perimeters();
m_layers[layer_idx]->make_perimeters(auto_contour_holes_compensation_params);
}
}
);
@ -922,21 +922,7 @@ bool PrintObject::invalidate_state_by_config_options(
|| opt_key == "initial_layer_line_width"
|| opt_key == "inner_wall_line_width"
|| opt_key == "infill_wall_overlap"
|| opt_key == "enable_circle_compensation"
|| opt_key == "circle_compensation_speed"
|| opt_key == "max_deviation"
|| opt_key == "max_variance"
|| opt_key == "counter_coef_1"
|| opt_key == "counter_coef_2"
|| opt_key == "counter_coef_3"
|| opt_key == "hole_coef_1"
|| opt_key == "hole_coef_2"
|| opt_key == "hole_coef_3"
|| opt_key == "counter_limit_min"
|| opt_key == "counter_limit_max"
|| opt_key == "hole_limit_min"
|| opt_key == "hole_limit_max"
|| opt_key == "diameter_limit") {
|| opt_key == "enable_circle_compensation") {
steps.emplace_back(posPerimeters);
} else if (opt_key == "gap_infill_speed" || opt_key == "filter_out_gap_fill") {
// Return true if gap-fill speed has changed from zero value to non-zero or from non-zero value to zero.

View File

@ -730,8 +730,6 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, in
toggle_line("interlocking_boundary_avoidance", use_beam_interlocking);
bool enable_auto_hole_and_contour_compensation = config->opt_bool("enable_circle_compensation");
for (auto el : {"max_deviation", "max_variance", "circle_compensation_speed", "counter_coef_1", "counter_coef_2", "counter_coef_3", "hole_coef_1", "hole_coef_2", "hole_coef_3", "counter_limit_min", "counter_limit_max", "hole_limit_min", "hole_limit_max", "diameter_limit"})
toggle_line(el, enable_auto_hole_and_contour_compensation);
toggle_field("xy_hole_compensation", !enable_auto_hole_and_contour_compensation);
toggle_field("xy_contour_compensation", !enable_auto_hole_and_contour_compensation);
}

View File

@ -2037,20 +2037,6 @@ void TabPrint::build()
optgroup->append_single_option_line("xy_contour_compensation", "xy-hole-contour-compensation");
optgroup->append_single_option_line("elefant_foot_compensation", "parameter/elephant-foot");
optgroup->append_single_option_line("enable_circle_compensation");
optgroup->append_single_option_line("circle_compensation_speed");
optgroup->append_single_option_line("max_deviation");
optgroup->append_single_option_line("max_variance");
optgroup->append_single_option_line("counter_coef_1");
optgroup->append_single_option_line("counter_coef_2");
optgroup->append_single_option_line("counter_coef_3");
optgroup->append_single_option_line("hole_coef_1");
optgroup->append_single_option_line("hole_coef_2");
optgroup->append_single_option_line("hole_coef_3");
optgroup->append_single_option_line("counter_limit_min");
optgroup->append_single_option_line("counter_limit_max");
optgroup->append_single_option_line("hole_limit_min");
optgroup->append_single_option_line("hole_limit_max");
optgroup->append_single_option_line("diameter_limit");
optgroup->append_single_option_line("precise_z_height");
optgroup = page->new_optgroup(L("Ironing"), L"param_ironing");