Add filament shrink

This commit is contained in:
QIDI TECH
2024-02-22 16:53:56 +08:00
parent 9856ad7031
commit ca4f336d62
6 changed files with 60 additions and 7 deletions

View File

@@ -64,6 +64,7 @@ compatible_printers =
compatible_printers_condition =
complete_objects = 0
default_acceleration = 10000
detect_narrow_internal_solid_infill = 1
dont_support_bridges = 0
draft_shield = disabled
elefant_foot_compensation = 0
@@ -121,6 +122,7 @@ max_volumetric_speed = 0
min_bead_width = 85%
min_feature_size = 25%
min_skirt_length = 5
mmu_segmented_region_interlocking_depth = 0
mmu_segmented_region_max_width = 0
notes =
only_retract_when_crossing_perimeters = 0
@@ -145,7 +147,7 @@ raft_first_layer_density = 90%
raft_first_layer_expansion = 3
raft_layers = 0
resolution = 0
seam_gap = 15
seam_gap = 15%
seam_position = aligned
single_extruder_multi_material_priming = 1
skirt_distance = 6
@@ -198,7 +200,7 @@ support_tree_tip_diameter = 0.8
support_tree_top_rate = 15%
thick_bridges = 0
thin_walls = 0
top_area_threshold = 100
top_area_threshold = 100%
top_fill_pattern = monotoniclines
top_infill_extrusion_width = 0.42
top_one_wall_type = all_top
@@ -224,8 +226,10 @@ wipe_tower_rotation_angle = 0
wipe_tower_width = 40
wipe_tower_x = 180
wipe_tower_y = 140
xy_size_compensation = 0
xy_contour_compensation = 0
xy_hole_compensation = 0
# Machine Print preset
[print:*X-MAX 3*]
inherits = *common*
@@ -589,6 +593,9 @@ filament_loading_speed = 28
filament_loading_speed_start = 3
filament_max_volumetric_speed = 20
filament_minimal_purge_on_wipe_tower = 15
filament_multitool_ramming = 0
filament_multitool_ramming_flow = 10
filament_multitool_ramming_volume = 10
filament_notes = ""
filament_ramming_parameters = "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6"
filament_retract_before_travel = nil
@@ -601,15 +608,20 @@ filament_retract_lift_below = nil
filament_retract_restart_extra = nil
filament_retract_speed = nil
filament_settings_id =
filament_shrink = 100
filament_soluble = 0
filament_spool_weight = 0
filament_toolchange_delay = 0
filament_travel_max_lift = nil
filament_travel_ramping_lift = nil
filament_travel_slope = nil
filament_type = PLA
filament_unload_time = 0
filament_unloading_speed = 90
filament_unloading_speed_start = 100
filament_vendor = QIDI
filament_wipe = nil
filament_wipe_distance = nil
first_layer_bed_temperature = 60
first_layer_temperature = 210
full_fan_speed_layer = 0
@@ -760,6 +772,7 @@ fan_below_layer_time = 10
filament_colour = #696969
filament_density = 1.09
filament_max_volumetric_speed = 10
filament_travel_ramping_lift = 0
filament_type = PA12-CF
first_layer_bed_temperature = 80
first_layer_temperature = 290
@@ -783,6 +796,7 @@ fan_below_layer_time = 10
filament_colour = #4F4F4F
filament_density = 1.20
filament_max_volumetric_speed = 14
filament_travel_ramping_lift = 0
filament_type = PAHT-CF
first_layer_bed_temperature = 80
first_layer_temperature = 310
@@ -828,6 +842,7 @@ fan_below_layer_time = 10
filament_colour = #323232
filament_density = 1.30
filament_max_volumetric_speed = 12
filament_travel_ramping_lift = 0
filament_type = PET-CF
first_layer_bed_temperature = 80
first_layer_temperature = 320
@@ -1884,7 +1899,7 @@ bed_custom_texture =
bed_exclude_area_0 =
bed_exclude_area_1 =
bed_shape = 0x0,325x0,325x325,0x325
before_layer_gcode = G92 E0
before_layer_gcode =
between_objects_gcode =
binary_gcode = 0
chamber_fan = 1
@@ -1903,7 +1918,7 @@ gcode_flavor = klipper
high_current_on_filament_swap = 0
host_type = moonraker
inherits =
layer_gcode =
layer_gcode = G92 E0
machine_limits_usage = time_estimate_only
machine_max_acceleration_e = 5000
machine_max_acceleration_extruding = 20000
@@ -1951,7 +1966,7 @@ retract_restart_extra_toolchange = 0
retract_speed = 30
silent_mode = 0
single_extruder_multi_material = 0
start_gcode = PRINT_START\nG28\nM141 S0\nG0 Z50 F600\nM190 S[first_layer_bed_temperature]\nG28 Z\nG29; mesh bed leveling ,comment this code to close it\nG0 X0 Y0 Z50 F6000\nM109 S[first_layer_temperature]\nM106 P3 S255\nM83\nG4 P3000\nG0 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85),0)} Y{max((min(print_bed_max[1], first_layer_print_min[1] + 80) - 85),0)} Z5 F6000\nG0 Z[first_layer_height] F600\nG1 E3 F1800\nG1 X{(min(print_bed_max[0], first_layer_print_min[0] + 80))} E{85 * 0.5 * first_layer_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1], first_layer_print_min[1] + 80) - 85),0) + 2} E{2 * 0.5 * first_layer_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85),0)} E{85 * 0.5 * first_layer_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1], first_layer_print_min[1] + 80) - 85),0) + 85} E{83 * 0.5 * first_layer_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85),0) + 2} E{2 * 0.5 * first_layer_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1], first_layer_print_min[1] + 80) - 85),0) + 3} E{82 * 0.5 * first_layer_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85),0) + 12} E{-10 * 0.5 * first_layer_height * nozzle_diameter[0]} F3000\nG1 E{10 * 0.5 * first_layer_height * nozzle_diameter[0]} F3000
start_gcode = PRINT_START\nG28\nM141 S0\nG0 Z50 F600\nM190 S[first_layer_bed_temperature]\nG28 Z\nG29; mesh bed leveling ,comment this code to close it\nG0 X0 Y0 Z50 F6000\nM109 S[first_layer_temperature]\nM106 P3 S255\nM83\nG4 P3000\nG0 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85),0)} Y{max((min(print_bed_max[1], first_layer_print_min[1] + 80) - 85),0)} Z5 F6000\nG0 Z[first_layer_height] F600\nG1 E3 F1800\nG1 X{(min(print_bed_max[0], first_layer_print_min[0] + 80))} E{85 * 0.5 * first_layer_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1], first_layer_print_min[1] + 80) - 85),0) + 2} E{2 * 0.5 * first_layer_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85),0)} E{85 * 0.5 * first_layer_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1], first_layer_print_min[1] + 80) - 85),0) + 85} E{83 * 0.5 * first_layer_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85),0) + 2} E{2 * 0.5 * first_layer_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1], first_layer_print_min[1] + 80) - 85),0) + 3} E{82 * 0.5 * first_layer_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85),0) + 12} E{-10 * 0.5 * first_layer_height * nozzle_diameter[0]} F3000\nG1 E{10 * 0.5 * first_layer_height * nozzle_diameter[0]} F3000\n
template_custom_gcode =
thumbnails =
thumbnails_format = PNG
@@ -1976,6 +1991,7 @@ auxiliary_fan = 1
bed_shape = 0x0,325x0,325x325,0x325
chamber_temperature = 1
max_print_height = 315
retract_lift_below = 314
thumbnails = 380x380/QIDI, 210x210/QIDI, 110x110/PNG
[printer:X-MAX 3 0.2 nozzle]
@@ -2022,6 +2038,7 @@ auxiliary_fan = 1
bed_shape = 0x0,280x0,280x280,0x280
chamber_temperature = 1
max_print_height = 270
retract_lift_below = 269
thumbnails = 380x380/QIDI, 210x210/QIDI, 110x110/PNG
[printer:X-Plus 3 0.2 nozzle]
@@ -2066,6 +2083,7 @@ inherits = *common*
printer_model = X-smart 3
bed_shape = 0x0,175x0,175x180,0x180
max_print_height = 170
retract_lift_below = 169
thumbnails = 205x205/QIDI, 140x140/QIDI, 110x110/PNG
[printer:X-smart 3 0.2 nozzle]

View File

@@ -190,6 +190,8 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n
} else if (
opt_key == "first_layer_height"
|| opt_key == "nozzle_diameter"
//Y23
|| opt_key == "filament_shrink"
|| opt_key == "resolution"
// Spiral Vase forces different kind of slicing than the normal model:
// In Spiral Vase mode, holes are closed and only the largest area contour is kept at each layer.

View File

@@ -1205,6 +1205,19 @@ void PrintConfigDef::init_fff_params()
def->min = 0;
def->set_default_value(new ConfigOptionFloats { 1.75 });
//Y23
def = this->add("filament_shrink", coPercents);
def->label = L("Shrinkage");
def->tooltip = L("Enter the shrinkage percentage that the filament will get after cooling (94% if you measure 94mm instead of 100mm)."
" The part will be scaled in xy to compensate."
" Only the filament used for the perimeter is taken into account."
"\nBe sure to allow enough space between objects, as this compensation is done after the checks.");
def->sidetext = L("%");
def->ratio_over = "";
def->min = 10;
def->mode = comExpert;
def->set_default_value(new ConfigOptionPercents{ 100 });
def = this->add("filament_density", coFloats);
def->label = L("Density");
def->tooltip = L("Enter your filament density here. This is only for statistical information. "

View File

@@ -839,6 +839,8 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE(
((ConfigOptionInts, fan_below_layer_time))
((ConfigOptionStrings, filament_colour))
((ConfigOptionStrings, filament_notes))
//Y23
((ConfigOptionPercents, filament_shrink))
((ConfigOptionFloat, first_layer_acceleration))
((ConfigOptionInts, first_layer_bed_temperature))
((ConfigOptionFloatOrPercent, first_layer_extrusion_width))

View File

@@ -234,6 +234,7 @@ static std::vector<PrintObjectRegions::LayerRangeRegions>::const_iterator layer_
}
static std::vector<std::vector<ExPolygons>> slices_to_regions(
const PrintConfig &print_config,
ModelVolumePtrs model_volumes,
const PrintObjectRegions &print_object_regions,
const std::vector<float> &zs,
@@ -396,6 +397,21 @@ static std::vector<std::vector<ExPolygons>> slices_to_regions(
});
}
//Y23
for (const std::unique_ptr<PrintRegion>& pr : print_object_regions.all_regions) {
if (pr.get()) {
std::vector<ExPolygons>& region_polys = slices_by_region[pr->print_object_region_id()];
const size_t extruder_id = pr->extruder(FlowRole::frPerimeter) - 1;
double scale = print_config.filament_shrink.values[extruder_id] * 0.01;
if (scale != 1) {
scale = 1 / scale;
for (ExPolygons& polys : region_polys)
for (ExPolygon& poly : polys)
poly.scale(scale);
}
}
}
return slices_by_region;
}
@@ -698,7 +714,7 @@ void PrintObject::slice_volumes()
}
std::vector<float> slice_zs = zs_from_layers(m_layers);
std::vector<std::vector<ExPolygons>> region_slices = slices_to_regions(this->model_object()->volumes, *m_shared_regions, slice_zs,
std::vector<std::vector<ExPolygons>> region_slices = slices_to_regions(print->config(), this->model_object()->volumes, *m_shared_regions, slice_zs,
slice_volumes_inner(
print->config(), this->config(), this->trafo_centered(),
this->model_object()->volumes, m_shared_regions->layer_ranges, slice_zs, throw_on_cancel_callback),

View File

@@ -2165,6 +2165,8 @@ void TabFilament::build()
optgroup->append_single_option_line("filament_diameter");
optgroup->append_single_option_line("extrusion_multiplier");
optgroup->append_single_option_line("filament_density");
//Y23
optgroup->append_single_option_line("filament_shrink");
optgroup->append_single_option_line("filament_cost");
optgroup->append_single_option_line("filament_spool_weight");
//B