diff --git a/resources/profiles/BBL/filament/fdm_filament_common.json b/resources/profiles/BBL/filament/fdm_filament_common.json index 666d55af9..327c741d1 100644 --- a/resources/profiles/BBL/filament/fdm_filament_common.json +++ b/resources/profiles/BBL/filament/fdm_filament_common.json @@ -108,6 +108,9 @@ "filament_wipe_distance": [ "nil" ], + "filament_prime_volume": [ + "45" + ], "filament_z_hop": [ "nil" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_dual_common.json b/resources/profiles/BBL/filament/fdm_filament_dual_common.json index 77afe788f..0d5e5afb0 100644 --- a/resources/profiles/BBL/filament/fdm_filament_dual_common.json +++ b/resources/profiles/BBL/filament/fdm_filament_dual_common.json @@ -43,6 +43,9 @@ "nil", "nil" ], + "filament_prime_volume": [ + "45" + ], "filament_z_hop": [ "nil", "nil" diff --git a/src/BambuStudio.cpp b/src/BambuStudio.cpp index 41843bf48..d32f3d181 100644 --- a/src/BambuStudio.cpp +++ b/src/BambuStudio.cpp @@ -3663,10 +3663,10 @@ int CLI::run(int argc, char **argv) float brim_width = brim_width_option->value; if (brim_width < 0) brim_width = WipeTower::get_auto_brim_by_height((float)plate_obj_size_info.obj_bbox.max.z()); - ConfigOptionFloat* volume_option = print_config.option("prime_volume", true); - float wipe_volume = volume_option->value; + ConfigOptionFloats* volume_option = print_config.option("filament_prime_volume", true); + std::vector wipe_volume = volume_option->values; - Vec3d wipe_tower_size = plate->estimate_wipe_tower_size(print_config, plate_obj_size_info.wipe_width, wipe_volume, filaments_cnt); + Vec3d wipe_tower_size = plate->estimate_wipe_tower_size(print_config, plate_obj_size_info.wipe_width, get_max_element(wipe_volume), filaments_cnt); plate_obj_size_info.wipe_depth = wipe_tower_size(1); Vec3d origin = plate->get_origin(); @@ -4447,9 +4447,10 @@ int CLI::run(int argc, char **argv) ConfigOptionFloats* wipe_y_option = m_print_config.option("wipe_tower_y", true); ConfigOptionFloat* width_option = m_print_config.option("prime_tower_width", true); ConfigOptionFloat* rotation_angle_option = m_print_config.option("wipe_tower_rotation_angle", true); - ConfigOptionFloat* volume_option = m_print_config.option("prime_volume", true); + ConfigOptionFloats *volume_option = m_print_config.option("filament_prime_volume", true); + std::vector wipe_volume = volume_option->values; - BOOST_LOG_TRIVIAL(info) << boost::format("prime_tower_width %1% wipe_tower_rotation_angle %2% prime_volume %3%") % width_option->value % rotation_angle_option->value % volume_option->value; + BOOST_LOG_TRIVIAL(info) << boost::format("prime_tower_width %1% wipe_tower_rotation_angle %2% prime_volume %3%") % width_option->value % rotation_angle_option->value % get_max_element(wipe_volume); wipe_x_option->set_at(&wt_x_opt, i, 0); wipe_y_option->set_at(&wt_y_opt, i, 0); @@ -4698,9 +4699,10 @@ int CLI::run(int argc, char **argv) ConfigOptionFloats* wipe_y_option = m_print_config.option("wipe_tower_y", true); ConfigOptionFloat* width_option = m_print_config.option("prime_tower_width", true); ConfigOptionFloat* rotation_angle_option = m_print_config.option("wipe_tower_rotation_angle", true); - ConfigOptionFloat* volume_option = m_print_config.option("prime_volume", true); + ConfigOptionFloats *volume_option = m_print_config.option("filament_prime_volume", true); + std::vector wipe_volume = volume_option->values; - BOOST_LOG_TRIVIAL(info) << boost::format("prime_tower_width %1% wipe_tower_rotation_angle %2% prime_volume %3%")%width_option->value %rotation_angle_option->value %volume_option->value ; + BOOST_LOG_TRIVIAL(info) << boost::format("prime_tower_width %1% wipe_tower_rotation_angle %2% prime_volume %3%")%width_option->value %rotation_angle_option->value %get_max_element(wipe_volume); for (int bedid = 0; bedid < MAX_PLATE_COUNT; bedid++) { @@ -4778,7 +4780,7 @@ int CLI::run(int argc, char **argv) } float w = dynamic_cast(m_print_config.option("prime_tower_width"))->value; float a = dynamic_cast(m_print_config.option("wipe_tower_rotation_angle"))->value; - float v = dynamic_cast(m_print_config.option("prime_volume"))->value; + std::vector v = dynamic_cast(m_print_config.option("filament_prime_volume"))->values; unsigned int filaments_cnt = plate_data_src[plate_to_slice-1]->slice_filaments_info.size(); if ((filaments_cnt == 0) || need_skip) { @@ -4801,7 +4803,7 @@ int CLI::run(int argc, char **argv) //float depth = v * (filaments_cnt - 1) / (layer_height * w); - Vec3d wipe_tower_size = cur_plate->estimate_wipe_tower_size(m_print_config, w, v, filaments_cnt); + Vec3d wipe_tower_size = cur_plate->estimate_wipe_tower_size(m_print_config, w, get_max_element(v), filaments_cnt); Vec3d plate_origin = cur_plate->get_origin(); int plate_width, plate_depth, plate_height; partplate_list.get_plate_size(plate_width, plate_depth, plate_height); @@ -4814,8 +4816,8 @@ int CLI::run(int argc, char **argv) BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("arrange wipe_tower: wp_brim_width %1%")%wp_brim_width; } - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("arrange wipe_tower: x=%1%, y=%2%, width=%3%, depth=%4%, angle=%5%, prime_volume=%6%, filaments_cnt=%7%, layer_height=%8%, plate_width=%9%, plate_depth=%10%") - %x %y %w %depth %a %v %filaments_cnt %layer_height %plate_width %plate_depth; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("arrange wipe_tower: x=%1%, y=%2%, width=%3%, depth=%4%, angle=%5%, prime_volume=%6%, filaments_cnt=%7%, layer_height=%8%, plate_width=%9%, plate_depth=%10%") % + x % y % w % depth % a % get_max_element(v) % filaments_cnt % layer_height % plate_width % plate_depth; if ((y + depth + margin + wp_brim_width) > (float)plate_depth) { y = (float)plate_depth - depth - margin - wp_brim_width; BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("arrange wipe_tower: exceeds the border, change y to %1%, plate_depth=%2%")%y %plate_depth; diff --git a/src/libslic3r/GCode/WipeTower.cpp b/src/libslic3r/GCode/WipeTower.cpp index b04a4773e..143ef2fc5 100644 --- a/src/libslic3r/GCode/WipeTower.cpp +++ b/src/libslic3r/GCode/WipeTower.cpp @@ -1311,7 +1311,7 @@ float WipeTower::get_auto_brim_by_height(float max_height) { return 8.f; } -WipeTower::WipeTower(const PrintConfig& config, int plate_idx, Vec3d plate_origin, const float prime_volume, size_t initial_tool, const float wipe_tower_height) : +WipeTower::WipeTower(const PrintConfig& config, int plate_idx, Vec3d plate_origin, size_t initial_tool, const float wipe_tower_height) : m_semm(config.single_extruder_multi_material.value), m_wipe_tower_pos(config.wipe_tower_x.get_at(plate_idx), config.wipe_tower_y.get_at(plate_idx)), m_wipe_tower_width(float(config.prime_tower_width)), @@ -1328,7 +1328,6 @@ WipeTower::WipeTower(const PrintConfig& config, int plate_idx, Vec3d plate_origi m_travel_speed(config.travel_speed.get_at(get_extruder_index(config, (unsigned int)initial_tool))), m_current_tool(initial_tool), //wipe_volumes(flush_matrix) - m_wipe_volume(prime_volume), m_enable_timelapse_print(config.timelapse_type.value == TimelapseType::tlSmooth), m_filaments_change_length(config.filament_change_length.values), m_is_multi_extruder(config.nozzle_diameter.size() > 1), diff --git a/src/libslic3r/GCode/WipeTower.hpp b/src/libslic3r/GCode/WipeTower.hpp index 25b305366..253ae4c7b 100644 --- a/src/libslic3r/GCode/WipeTower.hpp +++ b/src/libslic3r/GCode/WipeTower.hpp @@ -166,7 +166,7 @@ public: // width -- width of wipe tower in mm ( default 60 mm - leave as it is ) // wipe_area -- space available for one toolchange in mm // BBS: add partplate logic - WipeTower(const PrintConfig& config, int plate_idx, Vec3d plate_origin, const float wipe_volume, size_t initial_tool, const float wipe_tower_height); + WipeTower(const PrintConfig& config, int plate_idx, Vec3d plate_origin, size_t initial_tool, const float wipe_tower_height); // Set the extruder properties. @@ -448,7 +448,6 @@ private: size_t m_current_tool = 0; // BBS //const std::vector> wipe_volumes; - const float m_wipe_volume; float m_depth_traversed = 0.f; // Current y position at the wipe tower. bool m_current_layer_finished = false; diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 95e6dc934..21881995e 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -879,7 +879,7 @@ static std::vector s_Preset_print_options { "inner_wall_line_width", "outer_wall_line_width", "sparse_infill_line_width", "internal_solid_infill_line_width", "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_skip_points", "prime_volume", + "prime_tower_width", "prime_tower_brim_width", "prime_tower_skip_points", "prime_tower_rib_wall","prime_tower_extra_rib_length","prime_tower_rib_width","prime_tower_fillet_wall", "enable_circle_compensation", "circle_compensation_speed", "circle_compensation_manual_offset", "counter_coef_1", "counter_coef_2", "counter_coef_3", "hole_coef_1", "hole_coef_2", "hole_coef_3", @@ -935,7 +935,7 @@ static std::vector s_Preset_filament_options { "enable_pressure_advance", "pressure_advance", "chamber_temperatures","filament_notes", "filament_long_retractions_when_cut","filament_retraction_distances_when_cut","filament_shrink", //BBS filament change length while the extruder color - "filament_change_length" + "filament_change_length","filament_prime_volume" }; static std::vector s_Preset_machine_limits_options { diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 8eac7f72b..fd094356d 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -270,7 +270,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n //|| opt_key == "wipe_tower_bridging" || opt_key == "wipe_tower_no_sparse_layers" || opt_key == "flush_volumes_matrix" - || opt_key == "prime_volume" + || opt_key == "filament_prime_volume" || opt_key == "flush_into_infill" || opt_key == "flush_into_support" || opt_key == "initial_layer_infill_speed" @@ -2537,9 +2537,10 @@ const WipeTowerData& Print::wipe_tower_data(size_t filaments_cnt) const if (max_height < EPSILON) return m_wipe_tower_data; if (! is_step_done(psWipeTower) && filaments_cnt !=0) { + std::vector filament_wipe_volume = m_config.filament_prime_volume.values; + double wipe_volume = get_max_element(filament_wipe_volume); if (m_config.prime_tower_rib_wall.value) { double layer_height = 0.08f; // hard code layer height - double wipe_volume = m_config.prime_volume; layer_height = m_objects.front()->config().layer_height.value; int filament_depth_count = m_config.nozzle_diameter.values.size() == 2 ? filaments_cnt : filaments_cnt - 1; if (filaments_cnt == 1 && enable_timelapse_print()) @@ -2555,7 +2556,6 @@ const WipeTowerData& Print::wipe_tower_data(size_t filaments_cnt) const // BBS double width = m_config.prime_tower_width; double layer_height = 0.2; // hard code layer height - double wipe_volume = m_config.prime_volume; if (filaments_cnt == 1 && enable_timelapse_print()) { const_cast(this)->m_wipe_tower_data.depth = wipe_volume / (layer_height * width); } else { @@ -2628,7 +2628,7 @@ void Print::_make_wipe_tower() // Initialize the wipe tower. // BBS: in BBL machine, wipe tower is only use to prime extruder. So just use a global wipe volume. - WipeTower wipe_tower(m_config, m_plate_index, m_origin, m_config.prime_volume, m_wipe_tower_data.tool_ordering.first_extruder(), + WipeTower wipe_tower(m_config, m_plate_index, m_origin, m_wipe_tower_data.tool_ordering.first_extruder(), m_wipe_tower_data.tool_ordering.empty() ? 0.f : m_wipe_tower_data.tool_ordering.back().print_z); wipe_tower.set_has_tpu_filament(this->has_tpu_filament()); wipe_tower.set_filament_map(this->get_filament_maps()); @@ -2693,7 +2693,7 @@ void Print::_make_wipe_tower() volume_to_purge = std::max(0.f, volume_to_purge - grab_purge_volume); wipe_tower.plan_toolchange((float)layer_tools.print_z, (float)layer_tools.wipe_tower_layer_height, current_filament_id, filament_id, - m_config.prime_volume, volume_to_purge); + m_config.filament_prime_volume.values[filament_id], volume_to_purge); current_filament_id = filament_id; nozzle_cur_filament_ids[nozzle_id] = filament_id; } diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 3b1b729bd..66fd3b0b3 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1867,6 +1867,15 @@ void PrintConfigDef::init_fff_params() def->mode = comDevelop; def->set_default_value(new ConfigOptionBools{false}); + // BBS + def = this->add("filament_prime_volume", coFloats); + def->label = L("Filament prime volume"); + def->tooltip = L("The volume of material to prime extruder on tower."); + def->sidetext = L("mm³"); + def->min = 1.0; + def->mode = comSimple; + def->set_default_value(new ConfigOptionFloats{45.}); + // BBS def = this->add("temperature_vitrification", coInts); def->label = L("Softening temperature"); @@ -4290,14 +4299,14 @@ void PrintConfigDef::init_fff_params() def->sidetext = ""; def->set_default_value(new ConfigOptionFloats{1.0}); - // BBS - def = this->add("prime_volume", coFloat); - def->label = L("Prime volume"); - def->tooltip = L("The volume of material to prime extruder on tower."); - def->sidetext = L("mm³"); - def->min = 1.0; - def->mode = comSimple; - def->set_default_value(new ConfigOptionFloat(45.)); + // // BBS + // def = this->add("prime_volume", coFloat); + // def->label = L("Prime volume"); + // def->tooltip = L("The volume of material to prime extruder on tower."); + // def->sidetext = L("mm³"); + // def->min = 1.0; + // def->mode = comSimple; + // def->set_default_value(new ConfigOptionFloat(45.)); def = this->add("wipe_tower_x", coFloats); //def->label = L("Position X"); @@ -5263,7 +5272,7 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va } else if (opt_key == "bottom_solid_infill_flow_ratio") { opt_key = "initial_layer_flow_ratio"; } else if (opt_key == "wiping_volume") { - opt_key = "prime_volume"; + opt_key = "filament_prime_volume"; } else if (opt_key == "wipe_tower_brim_width") { opt_key = "prime_tower_brim_width"; } else if (opt_key == "tool_change_gcode") { @@ -5379,7 +5388,8 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va "can_switch_nozzle_type", "can_add_auxiliary_fan", "extra_flush_volume", "spaghetti_detector", "adaptive_layer_height", "z_hop_type","nozzle_hrc","chamber_temperature","only_one_wall_top","bed_temperature_difference","long_retraction_when_cut", "retraction_distance_when_cut", - "seam_slope_type","seam_slope_start_height","seam_slope_gap", "seam_slope_min_length" + "seam_slope_type","seam_slope_start_height","seam_slope_gap", "seam_slope_min_length", + "prime_volume" }; if (ignore.find(opt_key) != ignore.end()) { diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 0b3a27c07..7505089ba 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -1206,7 +1206,6 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionFloats, flush_volumes_matrix)) ((ConfigOptionFloats, flush_volumes_vector)) // BBS: wipe tower is only used for priming - ((ConfigOptionFloat, prime_volume)) ((ConfigOptionFloats, flush_multiplier)) //((ConfigOptionFloat, z_offset)) // BBS: project filaments @@ -1241,7 +1240,8 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionFloats, counter_limit_min)) ((ConfigOptionFloats, counter_limit_max)) ((ConfigOptionFloats, hole_limit_min)) - ((ConfigOptionFloats, hole_limit_max))) + ((ConfigOptionFloats, hole_limit_max)) + ((ConfigOptionFloats, filament_prime_volume))) // This object is mapped to Perl as Slic3r::Config::Full. PRINT_CONFIG_CLASS_DERIVED_DEFINE0( FullPrintConfig, diff --git a/src/libslic3r/Utils.hpp b/src/libslic3r/Utils.hpp index 5e64c843d..4dbd43c3d 100644 --- a/src/libslic3r/Utils.hpp +++ b/src/libslic3r/Utils.hpp @@ -132,6 +132,16 @@ inline DataType round_up_divide(DataType dividend, DataType divisor) //!< Return return (dividend + divisor - 1) / divisor; } +template +T get_max_element(const std::vector &vec) +{ + static_assert(std::is_arithmetic::value, "T must be of numeric type."); + if (vec.empty()) + return static_cast(0); + + return *std::max_element(vec.begin(), vec.end()); +} + // Set a path with GUI localization files. void set_local_dir(const std::string &path); diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 33a1ada60..19cb49553 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -678,7 +678,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, in toggle_field("standby_temperature_delta", have_ooze_prevention); bool have_prime_tower = config->opt_bool("enable_prime_tower"); - for (auto el : {"prime_tower_width", "prime_volume", "prime_tower_brim_width", "prime_tower_skip_points", "prime_tower_rib_wall"}) + for (auto el : {"prime_tower_width", "prime_tower_brim_width", "prime_tower_skip_points", "prime_tower_rib_wall"}) toggle_line(el, have_prime_tower); bool have_rib_wall = config->opt_bool("prime_tower_rib_wall")&&have_prime_tower; diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index d6dd66e3b..8e2f418d5 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2911,15 +2911,16 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re float w = dynamic_cast(m_config->option("prime_tower_width"))->value; float a = dynamic_cast(proj_cfg.option("wipe_tower_rotation_angle"))->value; // BBS - float v = dynamic_cast(m_config->option("prime_volume"))->value; + std::vector v = dynamic_cast(m_config->option("filament_prime_volume"))->values; Vec3d plate_origin = ppl.get_plate(plate_id)->get_origin(); const Print* print = m_process->fff_print(); float brim_width = print->wipe_tower_data(filaments_count).brim_width; const DynamicPrintConfig &print_cfg = wxGetApp().preset_bundle->prints.get_edited_preset().config; - Vec3d wipe_tower_size = ppl.get_plate(plate_id)->estimate_wipe_tower_size(print_cfg, w, v); + double wipe_vol = get_max_element(v); + Vec3d wipe_tower_size = ppl.get_plate(plate_id)->estimate_wipe_tower_size(print_cfg, w, wipe_vol); if (dynamic_cast(m_config->option("prime_tower_rib_wall"))->value) - wipe_tower_size = ppl.get_plate(plate_id)->calculate_wipe_tower_size(print_cfg, w, v); + wipe_tower_size = ppl.get_plate(plate_id)->calculate_wipe_tower_size(print_cfg, w, wipe_vol); { // update for wipe tower position part_plate->get_extruder_areas(); diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index ae9cfa29a..a73121ae1 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -1412,8 +1412,7 @@ Vec3d PartPlate::calculate_wipe_tower_size(const DynamicPrintConfig &config, con auto timelapse_type = config.option>("timelapse_type"); bool timelapse_enabled = timelapse_type ? (timelapse_type->value == TimelapseType::tlSmooth) : false; - - int nozzle_nums = wxGetApp().preset_bundle->get_printer_extruder_count(); + int nozzle_nums = wxGetApp().preset_bundle->get_printer_extruder_count(); double depth = std::sqrt(wipe_volume * (nozzle_nums == 2 ? plate_extruder_size : (plate_extruder_size - 1)) / layer_height); if (timelapse_enabled || plate_extruder_size > 1) { float min_wipe_tower_depth = WipeTower::get_limit_depth_by_height(max_height); @@ -1459,7 +1458,7 @@ Vec3d PartPlate::estimate_wipe_tower_size(const DynamicPrintConfig & config, con auto timelapse_type = config.option>("timelapse_type"); bool timelapse_enabled = timelapse_type ? (timelapse_type->value == TimelapseType::tlSmooth) : false; - double depth = wipe_volume * (plate_extruder_size - 1) / (layer_height * w); + double depth = wipe_volume * (plate_extruder_size - 1) / (layer_height * w); if (timelapse_enabled || depth > EPSILON) { float min_wipe_tower_depth = 0.f; auto iter = WipeTower::min_depth_per_height.begin(); @@ -1504,8 +1503,8 @@ arrangement::ArrangePolygon PartPlate::estimate_wipe_tower_polygon(const Dynamic float y = dynamic_cast(config.option("wipe_tower_y"))->get_at(plate_index); float w = dynamic_cast(config.option("prime_tower_width"))->value; //float a = dynamic_cast(config.option("wipe_tower_rotation_angle"))->value; - float v = dynamic_cast(config.option("prime_volume"))->value; - Vec3d wipe_tower_size = estimate_wipe_tower_size(config, w, v, plate_extruder_size, use_global_objects); + std::vector v = dynamic_cast(config.option("filament_prime_volume"))->values; + Vec3d wipe_tower_size = estimate_wipe_tower_size(config, w, get_max_element(v), plate_extruder_size, use_global_objects); int plate_width=m_width, plate_depth=m_depth; float depth = wipe_tower_size(1); float margin = WIPE_TOWER_MARGIN, wp_brim_width = 0.f; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index aef8ef8d1..9f49c8091 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -4045,8 +4045,8 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) "extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod", "nozzle_height", "skirt_loops", "skirt_distance", "brim_width", "brim_object_gap", "brim_type", "nozzle_diameter", "single_extruder_multi_material", - "enable_prime_tower", "wipe_tower_x", "wipe_tower_y", "prime_tower_width", "prime_tower_brim_width", "prime_tower_skip_points", "prime_volume", - "prime_tower_rib_wall","prime_tower_extra_rib_length", "prime_tower_rib_width","prime_tower_fillet_wall", + "enable_prime_tower", "wipe_tower_x", "wipe_tower_y", "prime_tower_width", "prime_tower_brim_width", "prime_tower_skip_points", + "prime_tower_rib_wall","prime_tower_extra_rib_length", "prime_tower_rib_width","prime_tower_fillet_wall", "filament_prime_volume", "extruder_colour", "filament_colour", "filament_type", "material_colour", "printable_height", "extruder_printable_height", "printer_model", "printer_technology", // These values are necessary to construct SlicingParameters by the Canvas3D variable layer height editor. "layer_height", "initial_layer_print_height", "min_layer_height", "max_layer_height", @@ -14759,9 +14759,7 @@ void Plater::on_config_change(const DynamicPrintConfig &config) boost::starts_with(opt_key, "prime_tower") || boost::starts_with(opt_key, "wipe_tower") || // opt_key == "filament_minimal_purge_on_wipe_tower" // ? #ys_FIXME - opt_key == "single_extruder_multi_material" || - // BBS - opt_key == "prime_volume") { + opt_key == "single_extruder_multi_material") { update_scheduled = true; } else if(opt_key == "extruder_colour") { diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 4d9670784..99cfd8c70 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2226,7 +2226,6 @@ void TabPrint::build() optgroup->append_single_option_line("enable_prime_tower","parameter/prime-tower"); optgroup->append_single_option_line("prime_tower_skip_points", "parameter/prime-tower"); optgroup->append_single_option_line("prime_tower_width","parameter/prime-tower"); - optgroup->append_single_option_line("prime_volume","parameter/prime-tower"); optgroup->append_single_option_line("prime_tower_brim_width","parameter/prime-tower"); optgroup->append_single_option_line("prime_tower_rib_wall", "parameter/prime-tower"); optgroup->append_single_option_line("prime_tower_extra_rib_length","parameter/prime-tower"); @@ -3188,6 +3187,7 @@ void TabFilament::build() optgroup->append_single_option_line("impact_strength_z"); optgroup->append_single_option_line("filament_change_length"); + optgroup->append_single_option_line("filament_prime_volume"); //optgroup->append_single_option_line("filament_colour"); optgroup->append_single_option_line("required_nozzle_HRC"); optgroup->append_single_option_line("default_filament_colour");