mirror of
https://git.mirrors.martin98.com/https://github.com/bambulab/BambuStudio.git
synced 2025-08-06 08:16:02 +08:00
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:
parent
1cde0b844a
commit
b2fa093993
@ -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"
|
||||
],
|
||||
|
@ -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"
|
||||
],
|
||||
|
@ -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"
|
||||
],
|
||||
|
@ -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"
|
||||
],
|
||||
|
@ -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"
|
||||
],
|
||||
|
@ -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": [
|
||||
|
@ -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"
|
||||
}
|
@ -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())) {
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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",
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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.
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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");
|
||||
|
Loading…
x
Reference in New Issue
Block a user