mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-21 21:58:03 -06:00
Object skirt
This commit is contained in:
parent
0b6a1d3636
commit
2a8b39acd4
14 changed files with 266 additions and 138 deletions
|
@ -449,17 +449,6 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con
|
|||
}
|
||||
}
|
||||
|
||||
if (config->opt_enum<PrintSequence>("print_sequence") == PrintSequence::ByObject && config->opt_int("skirt_height") > 1 && config->opt_int("skirt_loops") > 0) {
|
||||
const wxString msg_text = _(L("While printing by Object, the extruder may collide skirt.\nThus, reset the skirt layer to 1 to avoid that."));
|
||||
MessageDialog dialog(m_msg_dlg_parent, msg_text, "", wxICON_WARNING | wxOK);
|
||||
DynamicPrintConfig new_conf = *config;
|
||||
is_msg_dlg_already_exist = true;
|
||||
dialog.ShowModal();
|
||||
new_conf.set_key_value("skirt_height", new ConfigOptionInt(1));
|
||||
apply(config, &new_conf);
|
||||
is_msg_dlg_already_exist = false;
|
||||
}
|
||||
|
||||
if (config->opt_enum<SeamScarfType>("seam_slope_type") != SeamScarfType::None &&
|
||||
config->get_abs_value("seam_slope_start_height") >= layer_height) {
|
||||
const wxString msg_text = _(L("seam_slope_start_height need to be smaller than layer_height.\nReset to 0."));
|
||||
|
@ -569,7 +558,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co
|
|||
|
||||
bool have_skirt = config->opt_int("skirt_loops") > 0;
|
||||
toggle_field("skirt_height", have_skirt && config->opt_enum<DraftShield>("draft_shield") != dsEnabled);
|
||||
for (auto el : { "skirt_distance", "skirt_start_angle", "draft_shield"})
|
||||
for (auto el : {"skirt_type", "skirt_distance", "skirt_start_angle", "draft_shield"})
|
||||
toggle_field(el, have_skirt);
|
||||
|
||||
bool have_brim = (config->opt_enum<BrimType>("brim_type") != btNoBrim);
|
||||
|
|
|
@ -5228,7 +5228,7 @@ void GLCanvas3D::update_sequential_clearance()
|
|||
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 - 0.1));
|
||||
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());
|
||||
|
|
|
@ -766,18 +766,21 @@ arrangement::ArrangeParams init_arrange_params(Plater *p)
|
|||
auto &print = wxGetApp().plater()->get_partplate_list().get_current_fff_print();
|
||||
const PrintConfig &print_config = print.config();
|
||||
|
||||
auto [object_skirt_offset, object_skirt_witdh] = print.object_skirt_offset();
|
||||
|
||||
params.clearance_height_to_rod = print_config.extruder_clearance_height_to_rod.value;
|
||||
params.clearance_height_to_lid = print_config.extruder_clearance_height_to_lid.value;
|
||||
params.clearance_radius = print_config.extruder_clearance_radius.value;
|
||||
params.clearance_radius = print_config.extruder_clearance_radius.value + object_skirt_offset * 2;
|
||||
params.object_skirt_offset = object_skirt_offset;
|
||||
params.printable_height = print_config.printable_height.value;
|
||||
params.allow_rotations = settings.enable_rotation;
|
||||
params.nozzle_height = print.config().nozzle_height.value;
|
||||
params.nozzle_height = print_config.nozzle_height.value;
|
||||
params.all_objects_are_short = print.is_all_objects_are_short();
|
||||
params.align_center = print_config.best_object_pos.value;
|
||||
params.allow_multi_materials_on_same_plate = settings.allow_multi_materials_on_same_plate;
|
||||
params.avoid_extrusion_cali_region = settings.avoid_extrusion_cali_region;
|
||||
params.is_seq_print = settings.is_seq_print;
|
||||
params.min_obj_distance = scaled(settings.distance);
|
||||
params.min_obj_distance = settings.distance;
|
||||
params.align_to_y_axis = settings.align_to_y_axis;
|
||||
|
||||
int state = p->get_prepare_state();
|
||||
|
|
|
@ -2770,7 +2770,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame)
|
|||
, config(Slic3r::DynamicPrintConfig::new_from_defaults_keys({
|
||||
"printable_area", "bed_exclude_area", "bed_custom_texture", "bed_custom_model", "print_sequence",
|
||||
"extruder_clearance_radius", "extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod",
|
||||
"nozzle_height", "skirt_loops", "skirt_speed","min_skirt_length", "skirt_distance", "skirt_start_angle",
|
||||
"nozzle_height", "skirt_type", "skirt_loops", "skirt_speed","min_skirt_length", "skirt_distance", "skirt_start_angle",
|
||||
"brim_width", "brim_object_gap", "brim_type", "nozzle_diameter", "single_extruder_multi_material", "preferred_orientation",
|
||||
"enable_prime_tower", "wipe_tower_x", "wipe_tower_y", "prime_tower_width", "prime_tower_brim_width", "prime_volume",
|
||||
"extruder_colour", "filament_colour", "material_colour", "printable_height", "printer_model", "printer_technology",
|
||||
|
|
|
@ -2318,6 +2318,7 @@ void TabPrint::build()
|
|||
|
||||
page = add_options_page(L("Others"), "custom-gcode_other"); // ORCA: icon only visible on placeholders
|
||||
optgroup = page->new_optgroup(L("Skirt"), L"param_skirt");
|
||||
optgroup->append_single_option_line("skirt_type");
|
||||
optgroup->append_single_option_line("skirt_loops");
|
||||
optgroup->append_single_option_line("min_skirt_length");
|
||||
optgroup->append_single_option_line("skirt_distance");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue