Merge remote-tracking branch 'origin/master' into new_main_page_ui

This commit is contained in:
YuSanka 2018-06-08 10:10:10 +02:00
commit 4215b2b373
22 changed files with 653 additions and 2527 deletions

View File

@ -105,15 +105,6 @@ sub OnInit {
$self->{preset_updater} = Slic3r::PresetUpdater->new($VERSION_ONLINE_EVENT); $self->{preset_updater} = Slic3r::PresetUpdater->new($VERSION_ONLINE_EVENT);
Slic3r::GUI::set_preset_updater($self->{preset_updater}); Slic3r::GUI::set_preset_updater($self->{preset_updater});
eval {
if (! $self->{preset_updater}->config_update()) {
exit 0;
}
};
if ($@) {
warn $@ . "\n";
fatal_error(undef, $@);
}
Slic3r::GUI::load_language(); Slic3r::GUI::load_language();
@ -137,6 +128,7 @@ sub OnInit {
); );
$self->SetTopWindow($frame); $self->SetTopWindow($frame);
# This makes CallAfter() work
EVT_IDLE($self->{mainframe}, sub { EVT_IDLE($self->{mainframe}, sub {
while (my $cb = shift @cb) { while (my $cb = shift @cb) {
$cb->(); $cb->();
@ -144,8 +136,21 @@ sub OnInit {
$self->{app_config}->save if $self->{app_config}->dirty; $self->{app_config}->save if $self->{app_config}->dirty;
}); });
# On OSX the UI was not initialized correctly if the wizard was called # On OS X the UI tends to freeze in weird ways if modal dialogs (config wizard, update notifications, ...)
# before the UI was up and running. # are shown before or in the same event callback with the main frame creation.
# Therefore we schedule them for later using CallAfter.
$self->CallAfter(sub {
eval {
if (! $self->{preset_updater}->config_update()) {
exit 0;
}
};
if ($@) {
warn $@ . "\n";
fatal_error(undef, $@);
}
});
$self->CallAfter(sub { $self->CallAfter(sub {
if (! Slic3r::GUI::config_wizard_startup($app_conf_exists)) { if (! Slic3r::GUI::config_wizard_startup($app_conf_exists)) {
# Only notify if there was not wizard so as not to bother too much ... # Only notify if there was not wizard so as not to bother too much ...

File diff suppressed because it is too large Load Diff

View File

@ -1,985 +0,0 @@
# Print profiles for the BarBaz Research printers.
[vendor]
# Vendor name will be shown by the Config Wizard.
name = Bar Baz
# Configuration version of this file. Config file will only be installed, if the config_version differs.
# This means, the server may force the Slic3r configuration to be downgraded.
config_version = 0.1.0
# Where to get the updates from?
config_update_url = https://example.com
# The printer models will be shown by the Configuration Wizard in this order,
# also the first model installed & the first nozzle installed will be activated after install.
#TODO: One day we may differentiate variants of the nozzles / hot ends,
#for example by the melt zone size, or whether the nozzle is hardened.
[printer_model:M1]
name = Bar Baz Model 1
variants = 0.4; 0.25; 0.6
[printer_model:M2]
name = Bar Baz Model 2
variants = 0.4; 0.25; 0.6
[printer_model:M3]
# Printer model name will be shown by the installation wizard.
name = Bar Baz Model 3
variants = 0.4; 0.6
# All presets starting with asterisk, for example *common*, are intermediate and they will
# not make it into the user interface.
# Common print preset, mostly derived from MK2 single material with a 0.4mm nozzle.
# All other print presets will derive from the *common* print preset.
[print:*common*]
avoid_crossing_perimeters = 0
bridge_acceleration = 1000
bridge_angle = 0
bridge_flow_ratio = 0.8
bridge_speed = 20
brim_width = 0
clip_multipart_objects = 1
compatible_printers =
complete_objects = 0
default_acceleration = 1000
dont_support_bridges = 1
elefant_foot_compensation = 0
ensure_vertical_shell_thickness = 1
external_fill_pattern = rectilinear
external_perimeters_first = 0
external_perimeter_extrusion_width = 0.45
extra_perimeters = 0
extruder_clearance_height = 20
extruder_clearance_radius = 20
extrusion_width = 0.45
fill_angle = 45
fill_density = 20%
fill_pattern = cubic
first_layer_acceleration = 1000
first_layer_extrusion_width = 0.42
first_layer_height = 0.2
first_layer_speed = 30
gap_fill_speed = 40
gcode_comments = 0
infill_every_layers = 1
infill_extruder = 1
infill_extrusion_width = 0.45
infill_first = 0
infill_only_where_needed = 0
infill_overlap = 25%
interface_shells = 0
max_print_speed = 100
max_volumetric_extrusion_rate_slope_negative = 0
max_volumetric_extrusion_rate_slope_positive = 0
max_volumetric_speed = 0
min_skirt_length = 4
notes =
overhangs = 0
only_retract_when_crossing_perimeters = 0
ooze_prevention = 0
output_filename_format = [input_filename_base].gcode
perimeters = 2
perimeter_extruder = 1
perimeter_extrusion_width = 0.45
post_process =
print_settings_id =
raft_layers = 0
resolution = 0
seam_position = nearest
skirts = 1
skirt_distance = 2
skirt_height = 3
small_perimeter_speed = 20
solid_infill_below_area = 0
solid_infill_every_layers = 0
solid_infill_extruder = 1
solid_infill_extrusion_width = 0.45
spiral_vase = 0
standby_temperature_delta = -5
support_material = 0
support_material_extruder = 0
support_material_extrusion_width = 0.35
support_material_interface_extruder = 0
support_material_angle = 0
support_material_buildplate_only = 0
support_material_enforce_layers = 0
support_material_contact_distance = 0.15
support_material_interface_contact_loops = 0
support_material_interface_layers = 2
support_material_interface_spacing = 0.2
support_material_interface_speed = 100%
support_material_pattern = rectilinear
support_material_spacing = 2
support_material_speed = 50
support_material_synchronize_layers = 0
support_material_threshold = 45
support_material_with_sheath = 0
support_material_xy_spacing = 60%
thin_walls = 0
top_infill_extrusion_width = 0.45
top_solid_infill_speed = 40
travel_speed = 180
wipe_tower = 0
wipe_tower_per_color_wipe = 20
wipe_tower_width = 60
wipe_tower_x = 180
wipe_tower_y = 140
xy_size_compensation = 0
# Print parameters common to a 0.25mm diameter nozzle.
[print:*0.25nozzle*]
external_perimeter_extrusion_width = 0.25
extrusion_width = 0.25
first_layer_extrusion_width = 0.25
infill_extrusion_width = 0.25
perimeter_extrusion_width = 0.25
solid_infill_extrusion_width = 0.25
top_infill_extrusion_width = 0.25
support_material_extrusion_width = 0.18
support_material_interface_layers = 0
support_material_interface_spacing = 0.15
support_material_spacing = 1
support_material_xy_spacing = 150%
# Print parameters common to a 0.6mm diameter nozzle.
[print:*0.6nozzle*]
external_perimeter_extrusion_width = 0.61
extrusion_width = 0.67
first_layer_extrusion_width = 0.65
infill_extrusion_width = 0.7
perimeter_extrusion_width = 0.65
solid_infill_extrusion_width = 0.65
top_infill_extrusion_width = 0.6
[print:*soluble_support*]
overhangs = 1
skirts = 0
support_material = 1
support_material_contact_distance = 0
support_material_extruder = 4
support_material_extrusion_width = 0.45
support_material_interface_extruder = 4
support_material_interface_spacing = 0.1
support_material_synchronize_layers = 1
support_material_threshold = 80
support_material_with_sheath = 1
wipe_tower = 1
[print:*0.05mm*]
inherits = *common*
bottom_solid_layers = 10
bridge_acceleration = 300
bridge_flow_ratio = 0.7
default_acceleration = 500
external_perimeter_speed = 20
fill_density = 20%
first_layer_acceleration = 500
gap_fill_speed = 20
infill_acceleration = 800
infill_speed = 30
max_print_speed = 80
small_perimeter_speed = 15
solid_infill_speed = 30
support_material_extrusion_width = 0.3
support_material_spacing = 1.5
layer_height = 0.05
perimeter_acceleration = 300
perimeter_speed = 30
perimeters = 3
support_material_speed = 30
top_solid_infill_speed = 20
top_solid_layers = 15
[print:0.05mm ULTRADETAIL]
inherits = *0.05mm*
infill_extrusion_width = 0.5
[print:0.05mm ULTRADETAIL MK3]
inherits = *0.05mm*
fill_pattern = grid
top_infill_extrusion_width = 0.4
[print:0.05mm ULTRADETAIL 0.25 nozzle]
inherits = *0.05mm*
external_perimeter_extrusion_width = 0
extrusion_width = 0.28
fill_density = 20%
first_layer_extrusion_width = 0.3
infill_extrusion_width = 0
infill_speed = 20
max_print_speed = 100
perimeter_extrusion_width = 0
perimeter_speed = 20
small_perimeter_speed = 10
solid_infill_extrusion_width = 0
solid_infill_speed = 20
support_material_speed = 20
top_infill_extrusion_width = 0
[print:0.05mm ULTRADETAIL 0.25 nozzle MK3]
inherits = *0.05mm*; *0.25nozzle*
fill_pattern = grid
top_infill_extrusion_width = 0.4
[print:*0.10mm*]
inherits = *common*
bottom_solid_layers = 7
bridge_flow_ratio = 0.7
layer_height = 0.1
perimeter_acceleration = 800
top_solid_layers = 9
[print:0.10mm DETAIL]
inherits = *0.10mm*
external_perimeter_speed = 40
infill_acceleration = 2000
infill_speed = 60
perimeter_speed = 50
solid_infill_speed = 50
[print:0.10mm DETAIL MK3]
inherits = *0.10mm*
bridge_speed = 30
external_perimeter_speed = 35
fill_pattern = grid
infill_acceleration = 1500
infill_speed = 170
max_print_speed = 200
perimeter_speed = 45
solid_infill_speed = 170
top_infill_extrusion_width = 0.4
top_solid_infill_speed = 50
[print:0.10mm DETAIL 0.25 nozzle]
inherits = *0.10mm*
bridge_acceleration = 600
external_perimeter_speed = 20
infill_acceleration = 1600
infill_speed = 40
perimeter_acceleration = 600
perimeter_speed = 25
small_perimeter_speed = 10
solid_infill_speed = 40
top_solid_infill_speed = 30
[print:0.10mm DETAIL 0.25 nozzle MK3]
inherits = *0.10mm*
bridge_speed = 30
external_perimeter_speed = 35
fill_pattern = grid
infill_acceleration = 1500
infill_speed = 170
max_print_speed = 200
perimeter_speed = 45
solid_infill_speed = 170
top_infill_extrusion_width = 0.4
top_solid_infill_speed = 50
[print:0.10mm DETAIL 0.6 nozzle MK3]
inherits = *0.10mm*
bridge_speed = 30
external_perimeter_speed = 35
fill_pattern = grid
infill_acceleration = 1500
infill_speed = 170
max_print_speed = 200
perimeter_speed = 45
solid_infill_speed = 170
top_infill_extrusion_width = 0.4
top_solid_infill_speed = 50
[print:*0.15mm*]
inherits = *common*
bottom_solid_layers = 5
external_perimeter_speed = 40
infill_acceleration = 2000
infill_speed = 60
layer_height = 0.15
perimeter_acceleration = 800
perimeter_speed = 50
solid_infill_speed = 50
top_infill_extrusion_width = 0.4
top_solid_layers = 7
[print:0.15mm 100mms Linear Advance]
inherits = *0.15mm*
bridge_flow_ratio = 0.95
external_perimeter_speed = 50
infill_speed = 100
max_print_speed = 150
perimeter_speed = 60
small_perimeter_speed = 30
solid_infill_speed = 100
support_material_speed = 60
top_solid_infill_speed = 70
[print:0.15mm OPTIMAL]
inherits = *0.15mm*
top_infill_extrusion_width = 0.45
[print:0.15mm OPTIMAL 0.25 nozzle]
inherits = *0.15mm*; *0.25nozzle*
bridge_acceleration = 600
bridge_flow_ratio = 0.7
external_perimeter_speed = 20
infill_acceleration = 1600
infill_speed = 40
perimeter_acceleration = 600
perimeter_speed = 25
small_perimeter_speed = 10
solid_infill_speed = 40
support_material_extrusion_width = 0.2
top_solid_infill_speed = 30
[print:0.15mm OPTIMAL 0.6 nozzle]
inherits = *0.15mm*; *0.6nozzle*
[print:0.15mm OPTIMAL MK3]
inherits = *0.15mm*
bridge_speed = 30
external_perimeter_speed = 35
fill_pattern = grid
infill_acceleration = 1500
infill_speed = 170
max_print_speed = 170
perimeter_speed = 45
solid_infill_speed = 170
top_solid_infill_speed = 50
[print:0.15mm OPTIMAL SOLUBLE FULL]
inherits = *0.15mm*; *soluble_support*
external_perimeter_speed = 25
notes = Set your solluble extruder in Multiple Extruders > Support material/raft/skirt extruder & Support material/raft interface extruder
perimeter_speed = 40
solid_infill_speed = 40
top_infill_extrusion_width = 0.45
top_solid_infill_speed = 30
wipe_tower = 1
[print:0.15mm OPTIMAL SOLUBLE INTERFACE]
inherits = 0.15mm OPTIMAL SOLUBLE FULL
notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
support_material_extruder = 0
support_material_interface_layers = 3
support_material_with_sheath = 0
support_material_xy_spacing = 80%
[print:0.15mm OPTIMAL 0.25 nozzle MK3]
inherits = *0.15mm*
bridge_speed = 30
external_perimeter_speed = 35
fill_pattern = grid
infill_acceleration = 1500
infill_speed = 170
max_print_speed = 170
perimeter_speed = 45
solid_infill_speed = 170
top_solid_infill_speed = 50
[print:*0.20mm*]
inherits = *common*
bottom_solid_layers = 4
bridge_flow_ratio = 0.95
external_perimeter_speed = 40
infill_acceleration = 2000
infill_speed = 60
layer_height = 0.2
perimeter_acceleration = 800
perimeter_speed = 50
solid_infill_speed = 50
top_infill_extrusion_width = 0.4
top_solid_layers = 5
[print:0.15mm OPTIMAL 0.6 nozzle MK3]
inherits = *0.15mm*
bridge_speed = 30
external_perimeter_speed = 35
fill_pattern = grid
infill_acceleration = 1500
infill_speed = 170
max_print_speed = 170
perimeter_speed = 45
solid_infill_speed = 170
top_solid_infill_speed = 50
[print:0.20mm 100mms Linear Advance]
inherits = *0.20mm*
external_perimeter_speed = 50
infill_speed = 100
max_print_speed = 150
perimeter_speed = 60
small_perimeter_speed = 30
solid_infill_speed = 100
support_material_speed = 60
top_solid_infill_speed = 70
[print:0.20mm FAST MK3]
inherits = *0.20mm*
bridge_speed = 30
external_perimeter_speed = 35
fill_pattern = grid
infill_acceleration = 1500
infill_speed = 170
max_print_speed = 170
perimeter_speed = 45
solid_infill_speed = 170
top_solid_infill_speed = 50
[print:0.20mm NORMAL]
inherits = *0.20mm*
[print:0.20mm NORMAL 0.6 nozzle]
inherits = *0.20mm*; *0.6nozzle*
[print:0.20mm NORMAL SOLUBLE FULL]
inherits = *0.20mm*; *soluble_support*
external_perimeter_speed = 30
notes = Set your solluble extruder in Multiple Extruders > Support material/raft/skirt extruder & Support material/raft interface extruder
perimeter_speed = 40
solid_infill_speed = 40
top_solid_infill_speed = 30
[print:0.20mm NORMAL SOLUBLE INTERFACE]
inherits = 0.20mm NORMAL SOLUBLE FULL
notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
support_material_extruder = 0
support_material_interface_layers = 3
support_material_with_sheath = 0
support_material_xy_spacing = 80%
[print:0.20mm FAST 0.6 nozzle MK3]
inherits = *0.20mm*
bridge_speed = 30
external_perimeter_speed = 35
fill_pattern = grid
infill_acceleration = 1500
infill_speed = 170
max_print_speed = 170
perimeter_speed = 45
solid_infill_speed = 170
top_solid_infill_speed = 50
[print:*0.35mm*]
inherits = *common*
bottom_solid_layers = 3
external_perimeter_extrusion_width = 0.6
external_perimeter_speed = 40
first_layer_extrusion_width = 0.75
infill_acceleration = 2000
infill_speed = 60
layer_height = 0.35
perimeter_acceleration = 800
perimeter_extrusion_width = 0.65
perimeter_speed = 50
solid_infill_extrusion_width = 0.65
solid_infill_speed = 60
top_solid_infill_speed = 50
top_solid_layers = 4
[print:0.35mm FAST]
inherits = *0.35mm*
bridge_flow_ratio = 0.95
first_layer_extrusion_width = 0.42
perimeter_extrusion_width = 0.43
solid_infill_extrusion_width = 0.7
top_infill_extrusion_width = 0.43
[print:0.35mm FAST 0.6 nozzle]
inherits = *0.35mm*; *0.6nozzle*
[print:0.35mm FAST sol full 0.6 nozzle]
inherits = *0.35mm*; *0.6nozzle*; *soluble_support*
external_perimeter_extrusion_width = 0.6
external_perimeter_speed = 30
notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
perimeter_speed = 40
support_material_extrusion_width = 0.55
support_material_interface_layers = 3
support_material_xy_spacing = 120%
top_infill_extrusion_width = 0.57
[print:0.35mm FAST sol int 0.6 nozzle]
inherits = 0.35mm FAST sol full 0.6 nozzle
support_material_extruder = 0
support_material_interface_layers = 2
support_material_with_sheath = 0
support_material_xy_spacing = 150%
[filament:*common*]
cooling = 1
compatible_printers =
end_filament_gcode = "; Filament-specific end gcode"
extrusion_multiplier = 1
filament_cost = 0
filament_density = 0
filament_diameter = 1.75
filament_notes = ""
filament_settings_id =
filament_soluble = 0
min_print_speed = 5
slowdown_below_layer_time = 20
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
[filament:*PLA*]
inherits = *common*
bed_temperature = 60
bridge_fan_speed = 100
disable_fan_first_layers = 1
fan_always_on = 1
fan_below_layer_time = 100
filament_colour = #FF3232
filament_max_volumetric_speed = 15
filament_type = PLA
first_layer_bed_temperature = 60
first_layer_temperature = 215
max_fan_speed = 100
min_fan_speed = 100
temperature = 210
[filament:*PET*]
inherits = *common*
bed_temperature = 90
bridge_fan_speed = 50
disable_fan_first_layers = 3
fan_always_on = 1
fan_below_layer_time = 20
filament_colour = #FF8000
filament_max_volumetric_speed = 8
filament_type = PET
first_layer_bed_temperature = 85
first_layer_temperature = 230
max_fan_speed = 50
min_fan_speed = 30
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
temperature = 240
[filament:*ABS*]
inherits = *common*
bed_temperature = 110
bridge_fan_speed = 30
cooling = 0
disable_fan_first_layers = 3
fan_always_on = 0
fan_below_layer_time = 20
filament_colour = #3A80CA
filament_max_volumetric_speed = 11
filament_type = ABS
first_layer_bed_temperature = 100
first_layer_temperature = 255
max_fan_speed = 30
min_fan_speed = 20
temperature = 255
[filament:*FLEX*]
inherits = *common*
bridge_fan_speed = 100
cooling = 0
disable_fan_first_layers = 1
extrusion_multiplier = 1.2
fan_always_on = 0
fan_below_layer_time = 100
filament_colour = #00CA0A
filament_max_volumetric_speed = 1.5
filament_type = FLEX
first_layer_bed_temperature = 50
first_layer_temperature = 240
max_fan_speed = 90
min_fan_speed = 70
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
temperature = 240
[filament:ColorFabb Brass Bronze]
inherits = *PLA*
extrusion_multiplier = 1.2
filament_colour = #804040
filament_max_volumetric_speed = 10
[filament:ColorFabb HT]
inherits = *PET*
bed_temperature = 110
bridge_fan_speed = 30
cooling = 1
disable_fan_first_layers = 3
fan_always_on = 0
fan_below_layer_time = 10
first_layer_bed_temperature = 105
first_layer_temperature = 270
max_fan_speed = 20
min_fan_speed = 10
min_print_speed = 5
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
temperature = 270
[filament:ColorFabb PLA-PHA]
inherits = *PLA*
[filament:ColorFabb Woodfil]
inherits = *PLA*
extrusion_multiplier = 1.2
filament_colour = #804040
filament_max_volumetric_speed = 10
first_layer_temperature = 200
min_print_speed = 5
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
temperature = 200
[filament:ColorFabb XT]
inherits = *PET*
filament_type = PLA
first_layer_bed_temperature = 90
first_layer_temperature = 260
temperature = 270
[filament:ColorFabb XT-CF20]
inherits = *PET*
extrusion_multiplier = 1.2
filament_colour = #804040
filament_max_volumetric_speed = 1
first_layer_bed_temperature = 90
first_layer_temperature = 260
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
temperature = 260
[filament:ColorFabb nGen]
inherits = *PET*
bridge_fan_speed = 40
fan_always_on = 0
fan_below_layer_time = 10
filament_type = NGEN
first_layer_temperature = 240
max_fan_speed = 35
min_fan_speed = 20
[filament:ColorFabb nGen flex]
inherits = *FLEX*
bed_temperature = 85
bridge_fan_speed = 40
cooling = 1
disable_fan_first_layers = 3
extrusion_multiplier = 1
fan_below_layer_time = 10
filament_max_volumetric_speed = 5
first_layer_bed_temperature = 85
first_layer_temperature = 260
max_fan_speed = 35
min_fan_speed = 20
temperature = 260
[filament:E3D Edge]
inherits = *PET*
filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty Mladeč PETG"
[filament:E3D PC-ABS]
inherits = *ABS*
first_layer_temperature = 270
temperature = 270
[filament:Fillamentum ABS]
inherits = *ABS*
first_layer_temperature = 240
temperature = 240
[filament:Fillamentum ASA]
inherits = *ABS*
fan_always_on = 1
first_layer_temperature = 265
temperature = 265
[filament:Fillamentum CPE HG100 HM100]
inherits = *PET*
filament_notes = "CPE HG100 , CPE HM100"
first_layer_bed_temperature = 90
first_layer_temperature = 275
max_fan_speed = 50
min_fan_speed = 50
temperature = 275
[filament:Fillamentum Timberfil]
inherits = *PLA*
extrusion_multiplier = 1.2
filament_colour = #804040
filament_max_volumetric_speed = 10
first_layer_temperature = 190
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
temperature = 190
[filament:Generic ABS]
inherits = *ABS*
filament_notes = "List of materials tested with standart ABS print settings for MK2:\n\nEsun ABS\nFil-A-Gehr ABS\nHatchboxABS\nPlasty Mladeč ABS"
[filament:Generic PET]
inherits = *PET*
filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty Mladeč PETG"
[filament:Generic PLA]
inherits = *PLA*
filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty Mladeč PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
[filament:Polymaker PC-Max]
inherits = *ABS*
bed_temperature = 115
filament_colour = #3A80CA
first_layer_bed_temperature = 100
first_layer_temperature = 270
temperature = 270
[filament:Primavalue PVA]
inherits = *PLA*
cooling = 0
fan_always_on = 0
filament_colour = #FFFFD7
filament_max_volumetric_speed = 10
filament_notes = "List of materials tested with standart PVA print settings for MK2:\n\nPrimaSelect PVA+\nICE FILAMENTS PVA 'NAUGHTY NATURAL'\nVerbatim BVOH"
filament_soluble = 1
filament_type = PVA
first_layer_temperature = 195
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
temperature = 195
[filament:BarBaz ABS]
inherits = *ABS*
filament_notes = "List of materials tested with standart ABS print settings for MK2:\n\nEsun ABS\nFil-A-Gehr ABS\nHatchboxABS\nPlasty Mladeč ABS"
[filament:BarBaz HIPS]
inherits = *ABS*
bridge_fan_speed = 50
cooling = 1
extrusion_multiplier = 0.9
fan_always_on = 1
fan_below_layer_time = 10
filament_colour = #FFFFD7
filament_soluble = 1
filament_type = HIPS
first_layer_temperature = 220
max_fan_speed = 20
min_fan_speed = 20
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
temperature = 220
[filament:BarBaz PET]
inherits = *PET*
filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty Mladeč PETG"
[filament:BarBaz PLA]
inherits = *PLA*
filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty Mladeč PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
[filament:SemiFlex or Flexfill 98A]
inherits = *FLEX*
[filament:Taulman Bridge]
inherits = *common*
bed_temperature = 90
bridge_fan_speed = 40
cooling = 0
disable_fan_first_layers = 3
fan_always_on = 0
fan_below_layer_time = 20
filament_colour = #DEE0E6
filament_max_volumetric_speed = 10
filament_soluble = 0
filament_type = PET
first_layer_bed_temperature = 60
first_layer_temperature = 240
max_fan_speed = 5
min_fan_speed = 0
min_print_speed = 5
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
temperature = 250
[filament:Taulman T-Glase]
inherits = *PET*
bridge_fan_speed = 40
cooling = 0
fan_always_on = 0
first_layer_bed_temperature = 90
first_layer_temperature = 240
max_fan_speed = 5
min_fan_speed = 0
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
[filament:Verbatim BVOH]
inherits = *common*
bed_temperature = 60
bridge_fan_speed = 100
cooling = 0
disable_fan_first_layers = 1
extrusion_multiplier = 1
fan_always_on = 0
fan_below_layer_time = 100
filament_colour = #FFFFD7
filament_max_volumetric_speed = 10
filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty Mladeč PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
filament_soluble = 1
filament_type = PLA
first_layer_bed_temperature = 60
first_layer_temperature = 215
max_fan_speed = 100
min_fan_speed = 100
min_print_speed = 15
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
temperature = 210
[filament:Verbatim PP]
inherits = *common*
bed_temperature = 100
bridge_fan_speed = 100
cooling = 1
disable_fan_first_layers = 2
extrusion_multiplier = 1
fan_always_on = 1
fan_below_layer_time = 100
filament_colour = #DEE0E6
filament_max_volumetric_speed = 5
filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nEsun PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty Mladeč PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nEUMAKERS PLA"
filament_type = PLA
first_layer_bed_temperature = 100
first_layer_temperature = 220
max_fan_speed = 100
min_fan_speed = 100
min_print_speed = 15
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
temperature = 220
[printer:*common*]
bed_shape = 0x0,250x0,250x210,0x210
before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n
between_objects_gcode =
deretract_speed = 0
end_gcode = G4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors
extruder_colour = #FFFF00
extruder_offset = 0x0
gcode_flavor = marlin
layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
max_layer_height = 0.25
min_layer_height = 0.07
nozzle_diameter = 0.4
octoprint_apikey =
octoprint_host =
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_BarBaz3D\nPRINTER_MODEL_MK2\n
printer_settings_id =
retract_before_travel = 1
retract_before_wipe = 0%
retract_layer_change = 1
retract_length = 0.8
retract_length_toolchange = 4
retract_lift = 0.6
retract_lift_above = 0
retract_lift_below = 199
retract_restart_extra = 0
retract_restart_extra_toolchange = 0
retract_speed = 35
serial_port =
serial_speed = 250000
single_extruder_multi_material = 0
start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0
toolchange_gcode =
use_firmware_retraction = 0
use_relative_e_distances = 1
use_volumetric_e = 0
variable_layer_height = 1
wipe = 1
z_offset = 0
printer_model = M2
printer_variant = 0.4
default_print_profile = 0.15mm OPTIMAL
default_filament_profile = BarBaz PLA
[printer:*multimaterial*]
inherits = *common*
deretract_speed = 50
retract_before_travel = 3
retract_before_wipe = 60%
retract_layer_change = 0
retract_length = 4
retract_lift = 0.6
retract_lift_above = 0
retract_lift_below = 199
retract_restart_extra = 0
retract_restart_extra_toolchange = 0
retract_speed = 80
single_extruder_multi_material = 1
printer_model = M3
[printer:*mm-single*]
inherits = *multimaterial*
end_gcode = G1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\nM107 ; fan off\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors\n\n
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_BarBaz3D\nPRINTER_MODEL_MK2\nPRINTER_HAS_BOWDEN
start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\n; Start G-Code sequence START\nT?\nM104 S[first_layer_temperature]\nM140 S[first_layer_bed_temperature]\nM109 S[first_layer_temperature]\nM190 S[first_layer_bed_temperature]\nG21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100\nM92 E140\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\nG1 E-4 F1000.0\nG92 E0.0
[printer:*mm-multi*]
inherits = *multimaterial*
end_gcode = {if not has_wipe_tower}\n; Pull the filament into the cooling tubes.\nG1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\n{endif}\nM107 ; fan off\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors
extruder_colour = #FFAA55;#5182DB;#4ECDD3;#FB7259
nozzle_diameter = 0.4,0.4,0.4,0.4
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_BarBaz3D\nPRINTER_MODEL_MK2\nPRINTER_HAS_BOWDEN
start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\n; Start G-Code sequence START\nT[initial_tool]\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100 ; set max feedrate\nM92 E140 ; E-steps per filament milimeter\n{if not has_wipe_tower}\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\nG1 E-4 F1000.0\n{endif}\nG92 E0.0
variable_layer_height = 0
[printer:BarBaz i3 MK2]
inherits = *common*
[printer:BarBaz i3 MK2 0.25 nozzle]
inherits = *common*
max_layer_height = 0.1
min_layer_height = 0.05
nozzle_diameter = 0.25
retract_length = 1
retract_speed = 50
variable_layer_height = 0
printer_variant = 0.25
default_print_profile = 0.10mm DETAIL 0.25 nozzle
[printer:BarBaz i3 MK2 0.6 nozzle]
inherits = *common*
max_layer_height = 0.35
min_layer_height = 0.1
nozzle_diameter = 0.6
printer_variant = 0.6
[printer:BarBaz i3 MK2 MM Single Mode]
inherits = *mm-single*
[printer:BarBaz i3 MK2 MM Single Mode 0.6 nozzle]
inherits = *mm-single*
nozzle_diameter = 0.6
printer_variant = 0.6
[printer:BarBaz i3 MK2 MultiMaterial]
inherits = *mm-multi*
nozzle_diameter = 0.4,0.4,0.4,0.4
[printer:BarBaz i3 MK2 MultiMaterial 0.6 nozzle]
inherits = *mm-multi*
nozzle_diameter = 0.6,0.6,0.6,0.6
printer_variant = 0.6
[printer:BarBaz i3 MK3]
inherits = *common*
end_gcode = G4 ; wait\nM221 S100\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_BarBaz3D\nPRINTER_MODEL_MK3\n
retract_lift_below = 209
start_gcode = M115 U3.1.1-RC5 ; tell printer latest fw version\nM201 X1000 Y1000 Z200 E5000 ; sets maximum accelerations, mm/sec^2\nM203 X200 Y200 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1250 T1250 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.4 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height==0.05}100{else}95{endif}
printer_model = M1
default_print_profile = 0.15mm OPTIMAL MK3
[printer:BarBaz i3 MK3 0.25 nozzle]
inherits = *common*
nozzle_diameter = 0.25
printer_variant = 0.25
end_gcode = G4 ; wait\nM221 S100\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_BarBaz3D\nPRINTER_MODEL_MK3\n
retract_lift_below = 209
start_gcode = M115 U3.1.1-RC5 ; tell printer latest fw version\nM201 X1000 Y1000 Z200 E5000 ; sets maximum accelerations, mm/sec^2\nM203 X200 Y200 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1250 T1250 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.4 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height==0.05}100{else}95{endif}
printer_model = M1
default_print_profile = 0.10mm DETAIL MK3
[printer:BarBaz i3 MK3 0.6 nozzle]
inherits = *common*
nozzle_diameter = 0.6
printer_variant = 0.6
end_gcode = G4 ; wait\nM221 S100\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_BarBaz3D\nPRINTER_MODEL_MK3\n
retract_lift_below = 209
start_gcode = M115 U3.1.1-RC5 ; tell printer latest fw version\nM201 X1000 Y1000 Z200 E5000 ; sets maximum accelerations, mm/sec^2\nM203 X200 Y200 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1250 T1250 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.4 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height==0.05}100{else}95{endif}
printer_model = M1
default_print_profile = 0.15mm OPTIMAL MK3

View File

@ -1,985 +0,0 @@
# Print profiles for the Foobar Research printers.
[vendor]
# Vendor name will be shown by the Config Wizard.
name = Foo Bar
# Configuration version of this file. Config file will only be installed, if the config_version differs.
# This means, the server may force the Slic3r configuration to be downgraded.
config_version = 0.1.0
# Where to get the updates from?
config_update_url = https://example.com
# The printer models will be shown by the Configuration Wizard in this order,
# also the first model installed & the first nozzle installed will be activated after install.
#TODO: One day we may differentiate variants of the nozzles / hot ends,
#for example by the melt zone size, or whether the nozzle is hardened.
[printer_model:M1]
name = Foo Bar Model 1
variants = 0.4; 0.25; 0.6
[printer_model:M2]
name = Foo Bar Model 2
variants = 0.4; 0.25; 0.6
[printer_model:M3]
# Printer model name will be shown by the installation wizard.
name = Foo Bar Model 3
variants = 0.4; 0.6
# All presets starting with asterisk, for example *common*, are intermediate and they will
# not make it into the user interface.
# Common print preset, mostly derived from MK2 single material with a 0.4mm nozzle.
# All other print presets will derive from the *common* print preset.
[print:*common*]
avoid_crossing_perimeters = 0
bridge_acceleration = 1000
bridge_angle = 0
bridge_flow_ratio = 0.8
bridge_speed = 20
brim_width = 0
clip_multipart_objects = 1
compatible_printers =
complete_objects = 0
default_acceleration = 1000
dont_support_bridges = 1
elefant_foot_compensation = 0
ensure_vertical_shell_thickness = 1
external_fill_pattern = rectilinear
external_perimeters_first = 0
external_perimeter_extrusion_width = 0.45
extra_perimeters = 0
extruder_clearance_height = 20
extruder_clearance_radius = 20
extrusion_width = 0.45
fill_angle = 45
fill_density = 20%
fill_pattern = cubic
first_layer_acceleration = 1000
first_layer_extrusion_width = 0.42
first_layer_height = 0.2
first_layer_speed = 30
gap_fill_speed = 40
gcode_comments = 0
infill_every_layers = 1
infill_extruder = 1
infill_extrusion_width = 0.45
infill_first = 0
infill_only_where_needed = 0
infill_overlap = 25%
interface_shells = 0
max_print_speed = 100
max_volumetric_extrusion_rate_slope_negative = 0
max_volumetric_extrusion_rate_slope_positive = 0
max_volumetric_speed = 0
min_skirt_length = 4
notes =
overhangs = 0
only_retract_when_crossing_perimeters = 0
ooze_prevention = 0
output_filename_format = [input_filename_base].gcode
perimeters = 2
perimeter_extruder = 1
perimeter_extrusion_width = 0.45
post_process =
print_settings_id =
raft_layers = 0
resolution = 0
seam_position = nearest
skirts = 1
skirt_distance = 2
skirt_height = 3
small_perimeter_speed = 20
solid_infill_below_area = 0
solid_infill_every_layers = 0
solid_infill_extruder = 1
solid_infill_extrusion_width = 0.45
spiral_vase = 0
standby_temperature_delta = -5
support_material = 0
support_material_extruder = 0
support_material_extrusion_width = 0.35
support_material_interface_extruder = 0
support_material_angle = 0
support_material_buildplate_only = 0
support_material_enforce_layers = 0
support_material_contact_distance = 0.15
support_material_interface_contact_loops = 0
support_material_interface_layers = 2
support_material_interface_spacing = 0.2
support_material_interface_speed = 100%
support_material_pattern = rectilinear
support_material_spacing = 2
support_material_speed = 50
support_material_synchronize_layers = 0
support_material_threshold = 45
support_material_with_sheath = 0
support_material_xy_spacing = 60%
thin_walls = 0
top_infill_extrusion_width = 0.45
top_solid_infill_speed = 40
travel_speed = 180
wipe_tower = 0
wipe_tower_per_color_wipe = 20
wipe_tower_width = 60
wipe_tower_x = 180
wipe_tower_y = 140
xy_size_compensation = 0
# Print parameters common to a 0.25mm diameter nozzle.
[print:*0.25nozzle*]
external_perimeter_extrusion_width = 0.25
extrusion_width = 0.25
first_layer_extrusion_width = 0.25
infill_extrusion_width = 0.25
perimeter_extrusion_width = 0.25
solid_infill_extrusion_width = 0.25
top_infill_extrusion_width = 0.25
support_material_extrusion_width = 0.18
support_material_interface_layers = 0
support_material_interface_spacing = 0.15
support_material_spacing = 1
support_material_xy_spacing = 150%
# Print parameters common to a 0.6mm diameter nozzle.
[print:*0.6nozzle*]
external_perimeter_extrusion_width = 0.61
extrusion_width = 0.67
first_layer_extrusion_width = 0.65
infill_extrusion_width = 0.7
perimeter_extrusion_width = 0.65
solid_infill_extrusion_width = 0.65
top_infill_extrusion_width = 0.6
[print:*soluble_support*]
overhangs = 1
skirts = 0
support_material = 1
support_material_contact_distance = 0
support_material_extruder = 4
support_material_extrusion_width = 0.45
support_material_interface_extruder = 4
support_material_interface_spacing = 0.1
support_material_synchronize_layers = 1
support_material_threshold = 80
support_material_with_sheath = 1
wipe_tower = 1
[print:*0.05mm*]
inherits = *common*
bottom_solid_layers = 10
bridge_acceleration = 300
bridge_flow_ratio = 0.7
default_acceleration = 500
external_perimeter_speed = 20
fill_density = 20%
first_layer_acceleration = 500
gap_fill_speed = 20
infill_acceleration = 800
infill_speed = 30
max_print_speed = 80
small_perimeter_speed = 15
solid_infill_speed = 30
support_material_extrusion_width = 0.3
support_material_spacing = 1.5
layer_height = 0.05
perimeter_acceleration = 300
perimeter_speed = 30
perimeters = 3
support_material_speed = 30
top_solid_infill_speed = 20
top_solid_layers = 15
[print:0.05mm ULTRADETAIL]
inherits = *0.05mm*
infill_extrusion_width = 0.5
[print:0.05mm ULTRADETAIL MK3]
inherits = *0.05mm*
fill_pattern = grid
top_infill_extrusion_width = 0.4
[print:0.05mm ULTRADETAIL 0.25 nozzle]
inherits = *0.05mm*
external_perimeter_extrusion_width = 0
extrusion_width = 0.28
fill_density = 20%
first_layer_extrusion_width = 0.3
infill_extrusion_width = 0
infill_speed = 20
max_print_speed = 100
perimeter_extrusion_width = 0
perimeter_speed = 20
small_perimeter_speed = 10
solid_infill_extrusion_width = 0
solid_infill_speed = 20
support_material_speed = 20
top_infill_extrusion_width = 0
[print:0.05mm ULTRADETAIL 0.25 nozzle MK3]
inherits = *0.05mm*; *0.25nozzle*
fill_pattern = grid
top_infill_extrusion_width = 0.4
[print:*0.10mm*]
inherits = *common*
bottom_solid_layers = 7
bridge_flow_ratio = 0.7
layer_height = 0.1
perimeter_acceleration = 800
top_solid_layers = 9
[print:0.10mm DETAIL]
inherits = *0.10mm*
external_perimeter_speed = 40
infill_acceleration = 2000
infill_speed = 60
perimeter_speed = 50
solid_infill_speed = 50
[print:0.10mm DETAIL MK3]
inherits = *0.10mm*
bridge_speed = 30
external_perimeter_speed = 35
fill_pattern = grid
infill_acceleration = 1500
infill_speed = 170
max_print_speed = 200
perimeter_speed = 45
solid_infill_speed = 170
top_infill_extrusion_width = 0.4
top_solid_infill_speed = 50
[print:0.10mm DETAIL 0.25 nozzle]
inherits = *0.10mm*
bridge_acceleration = 600
external_perimeter_speed = 20
infill_acceleration = 1600
infill_speed = 40
perimeter_acceleration = 600
perimeter_speed = 25
small_perimeter_speed = 10
solid_infill_speed = 40
top_solid_infill_speed = 30
[print:0.10mm DETAIL 0.25 nozzle MK3]
inherits = *0.10mm*
bridge_speed = 30
external_perimeter_speed = 35
fill_pattern = grid
infill_acceleration = 1500
infill_speed = 170
max_print_speed = 200
perimeter_speed = 45
solid_infill_speed = 170
top_infill_extrusion_width = 0.4
top_solid_infill_speed = 50
[print:0.10mm DETAIL 0.6 nozzle MK3]
inherits = *0.10mm*
bridge_speed = 30
external_perimeter_speed = 35
fill_pattern = grid
infill_acceleration = 1500
infill_speed = 170
max_print_speed = 200
perimeter_speed = 45
solid_infill_speed = 170
top_infill_extrusion_width = 0.4
top_solid_infill_speed = 50
[print:*0.15mm*]
inherits = *common*
bottom_solid_layers = 5
external_perimeter_speed = 40
infill_acceleration = 2000
infill_speed = 60
layer_height = 0.15
perimeter_acceleration = 800
perimeter_speed = 50
solid_infill_speed = 50
top_infill_extrusion_width = 0.4
top_solid_layers = 7
[print:0.15mm 100mms Linear Advance]
inherits = *0.15mm*
bridge_flow_ratio = 0.95
external_perimeter_speed = 50
infill_speed = 100
max_print_speed = 150
perimeter_speed = 60
small_perimeter_speed = 30
solid_infill_speed = 100
support_material_speed = 60
top_solid_infill_speed = 70
[print:0.15mm OPTIMAL]
inherits = *0.15mm*
top_infill_extrusion_width = 0.45
[print:0.15mm OPTIMAL 0.25 nozzle]
inherits = *0.15mm*; *0.25nozzle*
bridge_acceleration = 600
bridge_flow_ratio = 0.7
external_perimeter_speed = 20
infill_acceleration = 1600
infill_speed = 40
perimeter_acceleration = 600
perimeter_speed = 25
small_perimeter_speed = 10
solid_infill_speed = 40
support_material_extrusion_width = 0.2
top_solid_infill_speed = 30
[print:0.15mm OPTIMAL 0.6 nozzle]
inherits = *0.15mm*; *0.6nozzle*
[print:0.15mm OPTIMAL MK3]
inherits = *0.15mm*
bridge_speed = 30
external_perimeter_speed = 35
fill_pattern = grid
infill_acceleration = 1500
infill_speed = 170
max_print_speed = 170
perimeter_speed = 45
solid_infill_speed = 170
top_solid_infill_speed = 50
[print:0.15mm OPTIMAL SOLUBLE FULL]
inherits = *0.15mm*; *soluble_support*
external_perimeter_speed = 25
notes = Set your solluble extruder in Multiple Extruders > Support material/raft/skirt extruder & Support material/raft interface extruder
perimeter_speed = 40
solid_infill_speed = 40
top_infill_extrusion_width = 0.45
top_solid_infill_speed = 30
wipe_tower = 1
[print:0.15mm OPTIMAL SOLUBLE INTERFACE]
inherits = 0.15mm OPTIMAL SOLUBLE FULL
notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
support_material_extruder = 0
support_material_interface_layers = 3
support_material_with_sheath = 0
support_material_xy_spacing = 80%
[print:0.15mm OPTIMAL 0.25 nozzle MK3]
inherits = *0.15mm*
bridge_speed = 30
external_perimeter_speed = 35
fill_pattern = grid
infill_acceleration = 1500
infill_speed = 170
max_print_speed = 170
perimeter_speed = 45
solid_infill_speed = 170
top_solid_infill_speed = 50
[print:*0.20mm*]
inherits = *common*
bottom_solid_layers = 4
bridge_flow_ratio = 0.95
external_perimeter_speed = 40
infill_acceleration = 2000
infill_speed = 60
layer_height = 0.2
perimeter_acceleration = 800
perimeter_speed = 50
solid_infill_speed = 50
top_infill_extrusion_width = 0.4
top_solid_layers = 5
[print:0.15mm OPTIMAL 0.6 nozzle MK3]
inherits = *0.15mm*
bridge_speed = 30
external_perimeter_speed = 35
fill_pattern = grid
infill_acceleration = 1500
infill_speed = 170
max_print_speed = 170
perimeter_speed = 45
solid_infill_speed = 170
top_solid_infill_speed = 50
[print:0.20mm 100mms Linear Advance]
inherits = *0.20mm*
external_perimeter_speed = 50
infill_speed = 100
max_print_speed = 150
perimeter_speed = 60
small_perimeter_speed = 30
solid_infill_speed = 100
support_material_speed = 60
top_solid_infill_speed = 70
[print:0.20mm FAST MK3]
inherits = *0.20mm*
bridge_speed = 30
external_perimeter_speed = 35
fill_pattern = grid
infill_acceleration = 1500
infill_speed = 170
max_print_speed = 170
perimeter_speed = 45
solid_infill_speed = 170
top_solid_infill_speed = 50
[print:0.20mm NORMAL]
inherits = *0.20mm*
[print:0.20mm NORMAL 0.6 nozzle]
inherits = *0.20mm*; *0.6nozzle*
[print:0.20mm NORMAL SOLUBLE FULL]
inherits = *0.20mm*; *soluble_support*
external_perimeter_speed = 30
notes = Set your solluble extruder in Multiple Extruders > Support material/raft/skirt extruder & Support material/raft interface extruder
perimeter_speed = 40
solid_infill_speed = 40
top_solid_infill_speed = 30
[print:0.20mm NORMAL SOLUBLE INTERFACE]
inherits = 0.20mm NORMAL SOLUBLE FULL
notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
support_material_extruder = 0
support_material_interface_layers = 3
support_material_with_sheath = 0
support_material_xy_spacing = 80%
[print:0.20mm FAST 0.6 nozzle MK3]
inherits = *0.20mm*
bridge_speed = 30
external_perimeter_speed = 35
fill_pattern = grid
infill_acceleration = 1500
infill_speed = 170
max_print_speed = 170
perimeter_speed = 45
solid_infill_speed = 170
top_solid_infill_speed = 50
[print:*0.35mm*]
inherits = *common*
bottom_solid_layers = 3
external_perimeter_extrusion_width = 0.6
external_perimeter_speed = 40
first_layer_extrusion_width = 0.75
infill_acceleration = 2000
infill_speed = 60
layer_height = 0.35
perimeter_acceleration = 800
perimeter_extrusion_width = 0.65
perimeter_speed = 50
solid_infill_extrusion_width = 0.65
solid_infill_speed = 60
top_solid_infill_speed = 50
top_solid_layers = 4
[print:0.35mm FAST]
inherits = *0.35mm*
bridge_flow_ratio = 0.95
first_layer_extrusion_width = 0.42
perimeter_extrusion_width = 0.43
solid_infill_extrusion_width = 0.7
top_infill_extrusion_width = 0.43
[print:0.35mm FAST 0.6 nozzle]
inherits = *0.35mm*; *0.6nozzle*
[print:0.35mm FAST sol full 0.6 nozzle]
inherits = *0.35mm*; *0.6nozzle*; *soluble_support*
external_perimeter_extrusion_width = 0.6
external_perimeter_speed = 30
notes = Set your solluble extruder in Multiple Extruders > Support material/raft interface extruder
perimeter_speed = 40
support_material_extrusion_width = 0.55
support_material_interface_layers = 3
support_material_xy_spacing = 120%
top_infill_extrusion_width = 0.57
[print:0.35mm FAST sol int 0.6 nozzle]
inherits = 0.35mm FAST sol full 0.6 nozzle
support_material_extruder = 0
support_material_interface_layers = 2
support_material_with_sheath = 0
support_material_xy_spacing = 150%
[filament:*common*]
cooling = 1
compatible_printers =
end_filament_gcode = "; Filament-specific end gcode"
extrusion_multiplier = 1
filament_cost = 0
filament_density = 0
filament_diameter = 1.75
filament_notes = ""
filament_settings_id =
filament_soluble = 0
min_print_speed = 5
slowdown_below_layer_time = 20
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
[filament:*PLA*]
inherits = *common*
bed_temperature = 60
bridge_fan_speed = 100
disable_fan_first_layers = 1
fan_always_on = 1
fan_below_layer_time = 100
filament_colour = #FF3232
filament_max_volumetric_speed = 15
filament_type = PLA
first_layer_bed_temperature = 60
first_layer_temperature = 215
max_fan_speed = 100
min_fan_speed = 100
temperature = 210
[filament:*PET*]
inherits = *common*
bed_temperature = 90
bridge_fan_speed = 50
disable_fan_first_layers = 3
fan_always_on = 1
fan_below_layer_time = 20
filament_colour = #FF8000
filament_max_volumetric_speed = 8
filament_type = PET
first_layer_bed_temperature = 85
first_layer_temperature = 230
max_fan_speed = 50
min_fan_speed = 30
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
temperature = 240
[filament:*ABS*]
inherits = *common*
bed_temperature = 110
bridge_fan_speed = 30
cooling = 0
disable_fan_first_layers = 3
fan_always_on = 0
fan_below_layer_time = 20
filament_colour = #3A80CA
filament_max_volumetric_speed = 11
filament_type = ABS
first_layer_bed_temperature = 100
first_layer_temperature = 255
max_fan_speed = 30
min_fan_speed = 20
temperature = 255
[filament:*FLEX*]
inherits = *common*
bridge_fan_speed = 100
cooling = 0
disable_fan_first_layers = 1
extrusion_multiplier = 1.2
fan_always_on = 0
fan_below_layer_time = 100
filament_colour = #00CA0A
filament_max_volumetric_speed = 1.5
filament_type = FLEX
first_layer_bed_temperature = 50
first_layer_temperature = 240
max_fan_speed = 90
min_fan_speed = 70
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
temperature = 240
[filament:ColorFabb Brass Bronze]
inherits = *PLA*
extrusion_multiplier = 1.2
filament_colour = #804040
filament_max_volumetric_speed = 10
[filament:ColorFabb HT]
inherits = *PET*
bed_temperature = 110
bridge_fan_speed = 30
cooling = 1
disable_fan_first_layers = 3
fan_always_on = 0
fan_below_layer_time = 10
first_layer_bed_temperature = 105
first_layer_temperature = 270
max_fan_speed = 20
min_fan_speed = 10
min_print_speed = 5
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}45{endif}; Filament gcode"
temperature = 270
[filament:ColorFabb PLA-PHA]
inherits = *PLA*
[filament:ColorFabb Woodfil]
inherits = *PLA*
extrusion_multiplier = 1.2
filament_colour = #804040
filament_max_volumetric_speed = 10
first_layer_temperature = 200
min_print_speed = 5
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
temperature = 200
[filament:ColorFabb XT]
inherits = *PET*
filament_type = PLA
first_layer_bed_temperature = 90
first_layer_temperature = 260
temperature = 270
[filament:ColorFabb XT-CF20]
inherits = *PET*
extrusion_multiplier = 1.2
filament_colour = #804040
filament_max_volumetric_speed = 1
first_layer_bed_temperature = 90
first_layer_temperature = 260
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
temperature = 260
[filament:ColorFabb nGen]
inherits = *PET*
bridge_fan_speed = 40
fan_always_on = 0
fan_below_layer_time = 10
filament_type = NGEN
first_layer_temperature = 240
max_fan_speed = 35
min_fan_speed = 20
[filament:ColorFabb nGen flex]
inherits = *FLEX*
bed_temperature = 85
bridge_fan_speed = 40
cooling = 1
disable_fan_first_layers = 3
extrusion_multiplier = 1
fan_below_layer_time = 10
filament_max_volumetric_speed = 5
first_layer_bed_temperature = 85
first_layer_temperature = 260
max_fan_speed = 35
min_fan_speed = 20
temperature = 260
[filament:E3D Edge]
inherits = *PET*
filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty Mladeč PETG"
[filament:E3D PC-ABS]
inherits = *ABS*
first_layer_temperature = 270
temperature = 270
[filament:Fillamentum ABS]
inherits = *ABS*
first_layer_temperature = 240
temperature = 240
[filament:Fillamentum ASA]
inherits = *ABS*
fan_always_on = 1
first_layer_temperature = 265
temperature = 265
[filament:Fillamentum CPE HG100 HM100]
inherits = *PET*
filament_notes = "CPE HG100 , CPE HM100"
first_layer_bed_temperature = 90
first_layer_temperature = 275
max_fan_speed = 50
min_fan_speed = 50
temperature = 275
[filament:Fillamentum Timberfil]
inherits = *PLA*
extrusion_multiplier = 1.2
filament_colour = #804040
filament_max_volumetric_speed = 10
first_layer_temperature = 190
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
temperature = 190
[filament:Generic ABS]
inherits = *ABS*
filament_notes = "List of materials tested with standart ABS print settings for MK2:\n\nEsun ABS\nFil-A-Gehr ABS\nHatchboxABS\nPlasty Mladeč ABS"
[filament:Generic PET]
inherits = *PET*
filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty Mladeč PETG"
[filament:Generic PLA]
inherits = *PLA*
filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty Mladeč PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
[filament:Polymaker PC-Max]
inherits = *ABS*
bed_temperature = 115
filament_colour = #3A80CA
first_layer_bed_temperature = 100
first_layer_temperature = 270
temperature = 270
[filament:Primavalue PVA]
inherits = *PLA*
cooling = 0
fan_always_on = 0
filament_colour = #FFFFD7
filament_max_volumetric_speed = 10
filament_notes = "List of materials tested with standart PVA print settings for MK2:\n\nPrimaSelect PVA+\nICE FILAMENTS PVA 'NAUGHTY NATURAL'\nVerbatim BVOH"
filament_soluble = 1
filament_type = PVA
first_layer_temperature = 195
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
temperature = 195
[filament:Foobar ABS]
inherits = *ABS*
filament_notes = "List of materials tested with standart ABS print settings for MK2:\n\nEsun ABS\nFil-A-Gehr ABS\nHatchboxABS\nPlasty Mladeč ABS"
[filament:Foobar HIPS]
inherits = *ABS*
bridge_fan_speed = 50
cooling = 1
extrusion_multiplier = 0.9
fan_always_on = 1
fan_below_layer_time = 10
filament_colour = #FFFFD7
filament_soluble = 1
filament_type = HIPS
first_layer_temperature = 220
max_fan_speed = 20
min_fan_speed = 20
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
temperature = 220
[filament:Foobar PET]
inherits = *PET*
filament_notes = "List of manufacturers tested with standart PET print settings for MK2:\n\nE3D Edge\nFillamentum CPE GH100\nPlasty Mladeč PETG"
[filament:Foobar PLA]
inherits = *PLA*
filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty Mladeč PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
[filament:SemiFlex or Flexfill 98A]
inherits = *FLEX*
[filament:Taulman Bridge]
inherits = *common*
bed_temperature = 90
bridge_fan_speed = 40
cooling = 0
disable_fan_first_layers = 3
fan_always_on = 0
fan_below_layer_time = 20
filament_colour = #DEE0E6
filament_max_volumetric_speed = 10
filament_soluble = 0
filament_type = PET
first_layer_bed_temperature = 60
first_layer_temperature = 240
max_fan_speed = 5
min_fan_speed = 0
min_print_speed = 5
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
temperature = 250
[filament:Taulman T-Glase]
inherits = *PET*
bridge_fan_speed = 40
cooling = 0
fan_always_on = 0
first_layer_bed_temperature = 90
first_layer_temperature = 240
max_fan_speed = 5
min_fan_speed = 0
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}30{endif}; Filament gcode"
[filament:Verbatim BVOH]
inherits = *common*
bed_temperature = 60
bridge_fan_speed = 100
cooling = 0
disable_fan_first_layers = 1
extrusion_multiplier = 1
fan_always_on = 0
fan_below_layer_time = 100
filament_colour = #FFFFD7
filament_max_volumetric_speed = 10
filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nDas Filament\nEsun PLA\nEUMAKERS PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty Mladeč PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nVerbatim PLA\nVerbatim BVOH"
filament_soluble = 1
filament_type = PLA
first_layer_bed_temperature = 60
first_layer_temperature = 215
max_fan_speed = 100
min_fan_speed = 100
min_print_speed = 15
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
temperature = 210
[filament:Verbatim PP]
inherits = *common*
bed_temperature = 100
bridge_fan_speed = 100
cooling = 1
disable_fan_first_layers = 2
extrusion_multiplier = 1
fan_always_on = 1
fan_below_layer_time = 100
filament_colour = #DEE0E6
filament_max_volumetric_speed = 5
filament_notes = "List of materials tested with standart PLA print settings for MK2:\n\nEsun PLA\nFiberlogy HD-PLA\nFillamentum PLA\nFloreon3D\nHatchbox PLA\nPlasty Mladeč PLA\nPrimavalue PLA\nProto pasta Matte Fiber\nEUMAKERS PLA"
filament_type = PLA
first_layer_bed_temperature = 100
first_layer_temperature = 220
max_fan_speed = 100
min_fan_speed = 100
min_print_speed = 15
start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{else}10{endif}; Filament gcode"
temperature = 220
[printer:*common*]
bed_shape = 0x0,250x0,250x210,0x210
before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n
between_objects_gcode =
deretract_speed = 0
end_gcode = G4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors
extruder_colour = #FFFF00
extruder_offset = 0x0
gcode_flavor = marlin
layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
max_layer_height = 0.25
min_layer_height = 0.07
nozzle_diameter = 0.4
octoprint_apikey =
octoprint_host =
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_Foobar3D\nPRINTER_MODEL_MK2\n
printer_settings_id =
retract_before_travel = 1
retract_before_wipe = 0%
retract_layer_change = 1
retract_length = 0.8
retract_length_toolchange = 4
retract_lift = 0.6
retract_lift_above = 0
retract_lift_below = 199
retract_restart_extra = 0
retract_restart_extra_toolchange = 0
retract_speed = 35
serial_port =
serial_speed = 250000
single_extruder_multi_material = 0
start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0
toolchange_gcode =
use_firmware_retraction = 0
use_relative_e_distances = 1
use_volumetric_e = 0
variable_layer_height = 1
wipe = 1
z_offset = 0
printer_model = M2
printer_variant = 0.4
default_print_profile = 0.15mm OPTIMAL
default_filament_profile = Foobar PLA
[printer:*multimaterial*]
inherits = *common*
deretract_speed = 50
retract_before_travel = 3
retract_before_wipe = 60%
retract_layer_change = 0
retract_length = 4
retract_lift = 0.6
retract_lift_above = 0
retract_lift_below = 199
retract_restart_extra = 0
retract_restart_extra_toolchange = 0
retract_speed = 80
single_extruder_multi_material = 1
printer_model = M3
[printer:*mm-single*]
inherits = *multimaterial*
end_gcode = G1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\nM107 ; fan off\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors\n\n
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_Foobar3D\nPRINTER_MODEL_MK2\nPRINTER_HAS_BOWDEN
start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\n; Start G-Code sequence START\nT?\nM104 S[first_layer_temperature]\nM140 S[first_layer_bed_temperature]\nM109 S[first_layer_temperature]\nM190 S[first_layer_bed_temperature]\nG21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100\nM92 E140\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\nG1 E-4 F1000.0\nG92 E0.0
[printer:*mm-multi*]
inherits = *multimaterial*
end_gcode = {if not has_wipe_tower}\n; Pull the filament into the cooling tubes.\nG1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\n{endif}\nM107 ; fan off\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors
extruder_colour = #FFAA55;#5182DB;#4ECDD3;#FB7259
nozzle_diameter = 0.4,0.4,0.4,0.4
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_Foobar3D\nPRINTER_MODEL_MK2\nPRINTER_HAS_BOWDEN
start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\n; Start G-Code sequence START\nT[initial_tool]\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100 ; set max feedrate\nM92 E140 ; E-steps per filament milimeter\n{if not has_wipe_tower}\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\nG1 E-4 F1000.0\n{endif}\nG92 E0.0
variable_layer_height = 0
[printer:Foobar i3 MK2]
inherits = *common*
[printer:Foobar i3 MK2 0.25 nozzle]
inherits = *common*
max_layer_height = 0.1
min_layer_height = 0.05
nozzle_diameter = 0.25
retract_length = 1
retract_speed = 50
variable_layer_height = 0
printer_variant = 0.25
default_print_profile = 0.10mm DETAIL 0.25 nozzle
[printer:Foobar i3 MK2 0.6 nozzle]
inherits = *common*
max_layer_height = 0.35
min_layer_height = 0.1
nozzle_diameter = 0.6
printer_variant = 0.6
[printer:Foobar i3 MK2 MM Single Mode]
inherits = *mm-single*
[printer:Foobar i3 MK2 MM Single Mode 0.6 nozzle]
inherits = *mm-single*
nozzle_diameter = 0.6
printer_variant = 0.6
[printer:Foobar i3 MK2 MultiMaterial]
inherits = *mm-multi*
nozzle_diameter = 0.4,0.4,0.4,0.4
[printer:Foobar i3 MK2 MultiMaterial 0.6 nozzle]
inherits = *mm-multi*
nozzle_diameter = 0.6,0.6,0.6,0.6
printer_variant = 0.6
[printer:Foobar i3 MK3]
inherits = *common*
end_gcode = G4 ; wait\nM221 S100\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_Foobar3D\nPRINTER_MODEL_MK3\n
retract_lift_below = 209
start_gcode = M115 U3.1.1-RC5 ; tell printer latest fw version\nM201 X1000 Y1000 Z200 E5000 ; sets maximum accelerations, mm/sec^2\nM203 X200 Y200 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1250 T1250 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.4 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height==0.05}100{else}95{endif}
printer_model = M1
default_print_profile = 0.15mm OPTIMAL MK3
[printer:Foobar i3 MK3 0.25 nozzle]
inherits = *common*
nozzle_diameter = 0.25
printer_variant = 0.25
end_gcode = G4 ; wait\nM221 S100\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_Foobar3D\nPRINTER_MODEL_MK3\n
retract_lift_below = 209
start_gcode = M115 U3.1.1-RC5 ; tell printer latest fw version\nM201 X1000 Y1000 Z200 E5000 ; sets maximum accelerations, mm/sec^2\nM203 X200 Y200 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1250 T1250 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.4 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height==0.05}100{else}95{endif}
printer_model = M1
default_print_profile = 0.10mm DETAIL MK3
[printer:Foobar i3 MK3 0.6 nozzle]
inherits = *common*
nozzle_diameter = 0.6
printer_variant = 0.6
end_gcode = G4 ; wait\nM221 S100\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_Foobar3D\nPRINTER_MODEL_MK3\n
retract_lift_below = 209
start_gcode = M115 U3.1.1-RC5 ; tell printer latest fw version\nM201 X1000 Y1000 Z200 E5000 ; sets maximum accelerations, mm/sec^2\nM203 X200 Y200 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1250 T1250 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.4 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height==0.05}100{else}95{endif}
printer_model = M1
default_print_profile = 0.15mm OPTIMAL MK3

View File

@ -1,3 +1,5 @@
0.1.5 fixed printer_variant fields for the i3 MK3 0.25 and 0.6mm nozzles
0.1.4 edited fw version, added z-raise after print
0.1.3 Fixed an incorrect position of the max_print_height parameter 0.1.3 Fixed an incorrect position of the max_print_height parameter
0.1.2 Wipe tower changes 0.1.2 Wipe tower changes
0.1.1 Minor print speed adjustments 0.1.1 Minor print speed adjustments

View File

@ -5,7 +5,7 @@
name = Prusa Research name = Prusa Research
# Configuration version of this file. Config file will only be installed, if the config_version differs. # Configuration version of this file. Config file will only be installed, if the config_version differs.
# This means, the server may force the Slic3r configuration to be downgraded. # This means, the server may force the Slic3r configuration to be downgraded.
config_version = 0.1.3 config_version = 0.1.5
# Where to get the updates from? # Where to get the updates from?
config_update_url = https://raw.githubusercontent.com/prusa3d/Slic3r-settings/master/live/PrusaResearch/ config_update_url = https://raw.githubusercontent.com/prusa3d/Slic3r-settings/master/live/PrusaResearch/
@ -19,7 +19,7 @@ name = Original Prusa i3 MK3
variants = 0.4; 0.25; 0.6 variants = 0.4; 0.25; 0.6
[printer_model:MK2S] [printer_model:MK2S]
name = Original Prusa i3 MK2S name = Original Prusa i3 MK2S, MK2.5
variants = 0.4; 0.25; 0.6 variants = 0.4; 0.25; 0.6
[printer_model:MK2SMM] [printer_model:MK2SMM]
@ -251,10 +251,10 @@ compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and
external_perimeter_speed = 35 external_perimeter_speed = 35
fill_pattern = grid fill_pattern = grid
infill_acceleration = 1500 infill_acceleration = 1500
infill_speed = 170 infill_speed = 200
max_print_speed = 200 max_print_speed = 200
perimeter_speed = 45 perimeter_speed = 45
solid_infill_speed = 170 solid_infill_speed = 200
top_infill_extrusion_width = 0.4 top_infill_extrusion_width = 0.4
top_solid_infill_speed = 50 top_solid_infill_speed = 50
@ -278,10 +278,10 @@ compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and
external_perimeter_speed = 35 external_perimeter_speed = 35
fill_pattern = grid fill_pattern = grid
infill_acceleration = 1500 infill_acceleration = 1500
infill_speed = 170 infill_speed = 200
max_print_speed = 200 max_print_speed = 200
perimeter_speed = 45 perimeter_speed = 45
solid_infill_speed = 170 solid_infill_speed = 200
top_infill_extrusion_width = 0.4 top_infill_extrusion_width = 0.4
top_solid_infill_speed = 50 top_solid_infill_speed = 50
@ -292,10 +292,10 @@ compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and
external_perimeter_speed = 35 external_perimeter_speed = 35
fill_pattern = grid fill_pattern = grid
infill_acceleration = 1500 infill_acceleration = 1500
infill_speed = 170 infill_speed = 200
max_print_speed = 200 max_print_speed = 200
perimeter_speed = 45 perimeter_speed = 45
solid_infill_speed = 170 solid_infill_speed = 200
top_infill_extrusion_width = 0.4 top_infill_extrusion_width = 0.4
top_solid_infill_speed = 50 top_solid_infill_speed = 50
@ -356,10 +356,10 @@ compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and
external_perimeter_speed = 35 external_perimeter_speed = 35
fill_pattern = grid fill_pattern = grid
infill_acceleration = 1500 infill_acceleration = 1500
infill_speed = 170 infill_speed = 200
max_print_speed = 170 max_print_speed = 200
perimeter_speed = 45 perimeter_speed = 45
solid_infill_speed = 170 solid_infill_speed = 200
top_solid_infill_speed = 50 top_solid_infill_speed = 50
[print:0.15mm OPTIMAL SOLUBLE FULL] [print:0.15mm OPTIMAL SOLUBLE FULL]
@ -388,10 +388,10 @@ compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and
external_perimeter_speed = 35 external_perimeter_speed = 35
fill_pattern = grid fill_pattern = grid
infill_acceleration = 1500 infill_acceleration = 1500
infill_speed = 170 infill_speed = 200
max_print_speed = 170 max_print_speed = 200
perimeter_speed = 45 perimeter_speed = 45
solid_infill_speed = 170 solid_infill_speed = 200
top_solid_infill_speed = 50 top_solid_infill_speed = 50
[print:*0.20mm*] [print:*0.20mm*]
inherits = *common* inherits = *common*
@ -414,10 +414,10 @@ compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and
external_perimeter_speed = 35 external_perimeter_speed = 35
fill_pattern = grid fill_pattern = grid
infill_acceleration = 1500 infill_acceleration = 1500
infill_speed = 170 infill_speed = 200
max_print_speed = 170 max_print_speed = 200
perimeter_speed = 45 perimeter_speed = 45
solid_infill_speed = 170 solid_infill_speed = 200
top_solid_infill_speed = 50 top_solid_infill_speed = 50
[print:0.20mm 100mms Linear Advance] [print:0.20mm 100mms Linear Advance]
@ -439,10 +439,10 @@ compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and
external_perimeter_speed = 35 external_perimeter_speed = 35
fill_pattern = grid fill_pattern = grid
infill_acceleration = 1500 infill_acceleration = 1500
infill_speed = 170 infill_speed = 200
max_print_speed = 170 max_print_speed = 200
perimeter_speed = 45 perimeter_speed = 45
solid_infill_speed = 170 solid_infill_speed = 200
top_solid_infill_speed = 50 top_solid_infill_speed = 50
[print:0.20mm NORMAL] [print:0.20mm NORMAL]
@ -477,10 +477,10 @@ compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and
external_perimeter_speed = 35 external_perimeter_speed = 35
fill_pattern = grid fill_pattern = grid
infill_acceleration = 1500 infill_acceleration = 1500
infill_speed = 170 infill_speed = 200
max_print_speed = 170 max_print_speed = 200
perimeter_speed = 45 perimeter_speed = 45
solid_infill_speed = 170 solid_infill_speed = 200
top_solid_infill_speed = 50 top_solid_infill_speed = 50
[print:*0.35mm*] [print:*0.35mm*]
@ -877,10 +877,10 @@ temperature = 220
[printer:*common*] [printer:*common*]
bed_shape = 0x0,250x0,250x210,0x210 bed_shape = 0x0,250x0,250x210,0x210
before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\n\n before_layer_gcode = ;BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\n\n
between_objects_gcode = between_objects_gcode =
deretract_speed = 0 deretract_speed = 0
end_gcode = G4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors end_gcode = G4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200; home X axis\nM84 ; disable motors
extruder_colour = #FFFF00 extruder_colour = #FFFF00
extruder_offset = 0x0 extruder_offset = 0x0
gcode_flavor = marlin gcode_flavor = marlin
@ -941,7 +941,7 @@ printer_model = MK2SMM
[printer:*mm-single*] [printer:*mm-single*]
inherits = *multimaterial* inherits = *multimaterial*
end_gcode = G1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\nM107 ; fan off\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors\n\n end_gcode = G1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors\n\n
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\nPRINTER_HAS_BOWDEN printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\nPRINTER_HAS_BOWDEN
start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\n; Start G-Code sequence START\nT?\nM104 S[first_layer_temperature]\nM140 S[first_layer_bed_temperature]\nM109 S[first_layer_temperature]\nM190 S[first_layer_bed_temperature]\nG21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100\nM92 E140\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\nG1 E-4 F1000.0\nG92 E0.0 start_gcode = M115 U3.1.0 ; tell printer latest fw version\nM201 X9000 Y9000 Z500 E10000 ; sets maximum accelerations, mm/sec^2\nM203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1500 T1500 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.2 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\n; Start G-Code sequence START\nT?\nM104 S[first_layer_temperature]\nM140 S[first_layer_bed_temperature]\nM109 S[first_layer_temperature]\nM190 S[first_layer_bed_temperature]\nG21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\nG28 W\nG80\nG92 E0.0\nM203 E100\nM92 E140\nG1 Z0.250 F7200.000\nG1 X50.0 E80.0 F1000.0\nG1 X160.0 E20.0 F1000.0\nG1 Z0.200 F7200.000\nG1 X220.0 E13 F1000.0\nG1 X240.0 E0 F1000.0\nG1 E-4 F1000.0\nG92 E0.0
default_print_profile = 0.15mm OPTIMAL default_print_profile = 0.15mm OPTIMAL
@ -949,7 +949,7 @@ default_filament_profile = Prusa PLA
[printer:*mm-multi*] [printer:*mm-multi*]
inherits = *multimaterial* inherits = *multimaterial*
end_gcode = {if not has_wipe_tower}\n; Pull the filament into the cooling tubes.\nG1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\n{endif}\nM107 ; fan off\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors end_gcode = {if not has_wipe_tower}\n; Pull the filament into the cooling tubes.\nG1 E-4 F2100.00000\nG91\nG1 Z1 F7200.000\nG90\nG1 X245 Y1\nG1 X240 E4\nG1 F4000\nG1 X190 E2.7 \nG1 F4600\nG1 X110 E2.8\nG1 F5200\nG1 X40 E3 \nG1 E-15.0000 F5000\nG1 E-50.0000 F5400\nG1 E-15.0000 F3000\nG1 E-12.0000 F2000\nG1 F1600\nG1 X0 Y1 E3.0000\nG1 X50 Y1 E-5.0000\nG1 F2000\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-5.0000\nG1 F2400\nG1 X0 Y1 E5.0000\nG1 X50 Y1 E-3.0000\nG4 S0\n{endif}\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nG28 X0 ; home X axis\nM84 ; disable motors
extruder_colour = #FFAA55;#5182DB;#4ECDD3;#FB7259 extruder_colour = #FFAA55;#5182DB;#4ECDD3;#FB7259
nozzle_diameter = 0.4,0.4,0.4,0.4 nozzle_diameter = 0.4,0.4,0.4,0.4
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\nPRINTER_HAS_BOWDEN printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK2\nPRINTER_HAS_BOWDEN
@ -1001,34 +1001,36 @@ default_print_profile = 0.20mm NORMAL 0.6 nozzle
[printer:Original Prusa i3 MK3] [printer:Original Prusa i3 MK3]
inherits = *common* inherits = *common*
end_gcode = G4 ; wait\nM221 S100\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors end_gcode = G4 ; wait\nM221 S100\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200; home X axis\nM84 ; disable motors
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK3\n printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK3\n
retract_lift_below = 209 retract_lift_below = 209
max_print_height = 210 max_print_height = 210
start_gcode = M115 U3.1.1-RC5 ; tell printer latest fw version\nM201 X1000 Y1000 Z200 E5000 ; sets maximum accelerations, mm/sec^2\nM203 X200 Y200 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1250 T1250 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.4 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height==0.05}100{else}95{endif} start_gcode = M115 U3.2.1 ; tell printer latest fw version\nM201 X1000 Y1000 Z200 E5000 ; sets maximum accelerations, mm/sec^2\nM203 X200 Y200 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1250 T1250 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.4 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height==0.05}100{else}95{endif}
printer_model = MK3 printer_model = MK3
default_print_profile = 0.15mm OPTIMAL MK3 default_print_profile = 0.15mm OPTIMAL MK3
[printer:Original Prusa i3 MK3 0.25 nozzle] [printer:Original Prusa i3 MK3 0.25 nozzle]
inherits = *common* inherits = *common*
nozzle_diameter = 0.25 nozzle_diameter = 0.25
end_gcode = G4 ; wait\nM221 S100\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors end_gcode = G4 ; wait\nM221 S100\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200; home X axis\nM84 ; disable motors
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK3\n printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK3\n
retract_lift_below = 209 retract_lift_below = 209
max_print_height = 210 max_print_height = 210
start_gcode = M115 U3.1.1-RC5 ; tell printer latest fw version\nM201 X1000 Y1000 Z200 E5000 ; sets maximum accelerations, mm/sec^2\nM203 X200 Y200 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1250 T1250 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.4 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height==0.05}100{else}95{endif} start_gcode = M115 U3.2.1 ; tell printer latest fw version\nM201 X1000 Y1000 Z200 E5000 ; sets maximum accelerations, mm/sec^2\nM203 X200 Y200 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1250 T1250 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.4 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height==0.05}100{else}95{endif}
printer_model = MK3 printer_model = MK3
printer_variant = 0.25
default_print_profile = 0.10mm DETAIL 0.25 nozzle MK3 default_print_profile = 0.10mm DETAIL 0.25 nozzle MK3
[printer:Original Prusa i3 MK3 0.6 nozzle] [printer:Original Prusa i3 MK3 0.6 nozzle]
inherits = *common* inherits = *common*
nozzle_diameter = 0.6 nozzle_diameter = 0.6
end_gcode = G4 ; wait\nM221 S100\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y200; home X axis\nM84 ; disable motors end_gcode = G4 ; wait\nM221 S100\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200; home X axis\nM84 ; disable motors
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK3\n printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK3\n
retract_lift_below = 209 retract_lift_below = 209
max_print_height = 210 max_print_height = 210
start_gcode = M115 U3.1.1-RC5 ; tell printer latest fw version\nM201 X1000 Y1000 Z200 E5000 ; sets maximum accelerations, mm/sec^2\nM203 X200 Y200 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1250 T1250 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.4 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height==0.05}100{else}95{endif} start_gcode = M115 U3.2.1 ; tell printer latest fw version\nM201 X1000 Y1000 Z200 E5000 ; sets maximum accelerations, mm/sec^2\nM203 X200 Y200 Z12 E120 ; sets maximum feedrates, mm/sec\nM204 S1250 T1250 ; sets acceleration (S) and retract acceleration (T)\nM205 X10 Y10 Z0.4 E2.5 ; sets the jerk limits, mm/sec\nM205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height==0.05}100{else}95{endif}
printer_model = MK3 printer_model = MK3
printer_variant = 0.6
default_print_profile = 0.15mm OPTIMAL 0.6 nozzle MK3 default_print_profile = 0.15mm OPTIMAL 0.6 nozzle MK3
# The obsolete presets will be removed when upgrading from the legacy configuration structure (up to Slic3r 1.39.2) to 1.40.0 and newer. # The obsolete presets will be removed when upgrading from the legacy configuration structure (up to Slic3r 1.39.2) to 1.40.0 and newer.

View File

@ -29,7 +29,7 @@ if(WIN32)
# -D_ITERATOR_DEBUG_LEVEL) # -D_ITERATOR_DEBUG_LEVEL)
endif() endif()
add_definitions(-DwxUSE_UNICODE -D_UNICODE -DUNICODE) add_definitions(-DwxUSE_UNICODE -D_UNICODE -DUNICODE -DWXINTL_NO_GETTEXT_MACRO)
add_library(libslic3r STATIC add_library(libslic3r STATIC
${LIBDIR}/libslic3r/BoundingBox.cpp ${LIBDIR}/libslic3r/BoundingBox.cpp

View File

@ -252,7 +252,7 @@ static void usage(void)
// setvbuf(stderr, (char*)NULL, _IOLBF, 0); // setvbuf(stderr, (char*)NULL, _IOLBF, 0);
// } // }
static bool update_progress_no_tty (int percent, double etime, char *hdr) static void update_progress_no_tty (int percent, double etime, char *hdr)
{ {
static int done = 0; static int done = 0;
static int last = 0; static int last = 0;

View File

@ -42,14 +42,32 @@ namespace PrusaMultiMaterial {
class Writer class Writer
{ {
public: public:
Writer() : Writer(float layer_height, float line_width) :
m_current_pos(std::numeric_limits<float>::max(), std::numeric_limits<float>::max()), m_current_pos(std::numeric_limits<float>::max(), std::numeric_limits<float>::max()),
m_current_z(0.f), m_current_z(0.f),
m_current_feedrate(0.f), m_current_feedrate(0.f),
m_layer_height(0.f), m_layer_height(layer_height),
m_extrusion_flow(0.f), m_extrusion_flow(0.f),
m_preview_suppressed(false), m_preview_suppressed(false),
m_elapsed_time(0.f) {} m_elapsed_time(0.f),
m_default_analyzer_line_width(line_width)
{
// adds tag for analyzer:
char buf[64];
sprintf(buf, ";%s%f\n", GCodeAnalyzer::Height_Tag.c_str(), m_layer_height); // don't rely on GCodeAnalyzer knowing the layer height - it knows nothing at priming
m_gcode += buf;
sprintf(buf, ";%s%d\n", GCodeAnalyzer::Extrusion_Role_Tag.c_str(), erWipeTower);
m_gcode += buf;
change_analyzer_line_width(line_width);
}
Writer& change_analyzer_line_width(float line_width) {
// adds tag for analyzer:
char buf[64];
sprintf(buf, ";%s%f\n", GCodeAnalyzer::Width_Tag.c_str(), line_width);
m_gcode += buf;
return *this;
}
Writer& set_initial_position(const WipeTower::xy &pos) { Writer& set_initial_position(const WipeTower::xy &pos) {
m_start_pos = WipeTower::xy(pos,0.f,m_y_shift).rotate(m_wipe_tower_pos, m_wipe_tower_width, m_wipe_tower_depth, m_angle_deg); m_start_pos = WipeTower::xy(pos,0.f,m_y_shift).rotate(m_wipe_tower_pos, m_wipe_tower_width, m_wipe_tower_depth, m_angle_deg);
@ -62,9 +80,6 @@ public:
Writer& set_z(float z) Writer& set_z(float z)
{ m_current_z = z; return *this; } { m_current_z = z; return *this; }
Writer& set_layer_height(float layer_height)
{ m_layer_height = layer_height; return *this; }
Writer& set_extrusion_flow(float flow) Writer& set_extrusion_flow(float flow)
{ m_extrusion_flow = flow; return *this; } { m_extrusion_flow = flow; return *this; }
@ -80,8 +95,8 @@ public:
// Suppress / resume G-code preview in Slic3r. Slic3r will have difficulty to differentiate the various // Suppress / resume G-code preview in Slic3r. Slic3r will have difficulty to differentiate the various
// filament loading and cooling moves from normal extrusion moves. Therefore the writer // filament loading and cooling moves from normal extrusion moves. Therefore the writer
// is asked to suppres output of some lines, which look like extrusions. // is asked to suppres output of some lines, which look like extrusions.
Writer& suppress_preview() { m_preview_suppressed = true; return *this; } Writer& suppress_preview() { change_analyzer_line_width(0.f); m_preview_suppressed = true; return *this; }
Writer& resume_preview() { m_preview_suppressed = false; return *this; } Writer& resume_preview() { change_analyzer_line_width(m_default_analyzer_line_width); m_preview_suppressed = false; return *this; }
Writer& feedrate(float f) Writer& feedrate(float f)
{ {
@ -126,11 +141,6 @@ public:
m_extrusions.emplace_back(WipeTower::Extrusion(WipeTower::xy(rot.x, rot.y), width, m_current_tool)); m_extrusions.emplace_back(WipeTower::Extrusion(WipeTower::xy(rot.x, rot.y), width, m_current_tool));
} }
// adds tag for analyzer
char buf[64];
sprintf(buf, ";%s%d\n", GCodeAnalyzer::Extrusion_Role_Tag.c_str(), erWipeTower);
m_gcode += buf;
m_gcode += "G1"; m_gcode += "G1";
if (rot.x != rotated_current_pos.x) { if (rot.x != rotated_current_pos.x) {
m_gcode += set_format_X(rot.x); // Transform current position back to wipe tower coordinates (was updated by set_format_X) m_gcode += set_format_X(rot.x); // Transform current position back to wipe tower coordinates (was updated by set_format_X)
@ -197,7 +207,7 @@ public:
do { do {
++i; ++i;
if (i==4) i=0; if (i==4) i=0;
extrude(corners[i]); extrude(corners[i], f);
} while (i != index_of_closest); } while (i != index_of_closest);
return (*this); return (*this);
} }
@ -390,6 +400,7 @@ private:
float m_wipe_tower_depth = 0.f; float m_wipe_tower_depth = 0.f;
float m_last_fan_speed = 0.f; float m_last_fan_speed = 0.f;
int current_temp = -1; int current_temp = -1;
const float m_default_analyzer_line_width;
std::string std::string
set_format_X(float x) set_format_X(float x)
@ -479,10 +490,9 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::prime(
const float prime_section_width = std::min(240.f / tools.size(), 60.f); const float prime_section_width = std::min(240.f / tools.size(), 60.f);
box_coordinates cleaning_box(xy(5.f, 0.f), prime_section_width, 100.f); box_coordinates cleaning_box(xy(5.f, 0.f), prime_section_width, 100.f);
PrusaMultiMaterial::Writer writer; PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width);
writer.set_extrusion_flow(m_extrusion_flow) writer.set_extrusion_flow(m_extrusion_flow)
.set_z(m_z_pos) .set_z(m_z_pos)
.set_layer_height(m_layer_height)
.set_initial_tool(m_current_tool) .set_initial_tool(m_current_tool)
.append(";--------------------\n" .append(";--------------------\n"
"; CP PRIMING START\n") "; CP PRIMING START\n")
@ -568,10 +578,9 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::tool_change(unsigned int tool, boo
(tool != (unsigned int)(-1) ? /*m_layer_info->depth*/wipe_area+m_depth_traversed-0.5*m_perimeter_width (tool != (unsigned int)(-1) ? /*m_layer_info->depth*/wipe_area+m_depth_traversed-0.5*m_perimeter_width
: m_wipe_tower_depth-m_perimeter_width)); : m_wipe_tower_depth-m_perimeter_width));
PrusaMultiMaterial::Writer writer; PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width);
writer.set_extrusion_flow(m_extrusion_flow) writer.set_extrusion_flow(m_extrusion_flow)
.set_z(m_z_pos) .set_z(m_z_pos)
.set_layer_height(m_layer_height)
.set_initial_tool(m_current_tool) .set_initial_tool(m_current_tool)
.set_rotation(m_wipe_tower_pos, m_wipe_tower_width, m_wipe_tower_depth, m_wipe_tower_rotation_angle) .set_rotation(m_wipe_tower_pos, m_wipe_tower_width, m_wipe_tower_depth, m_wipe_tower_rotation_angle)
.set_y_shift(m_y_shift + (tool!=(unsigned int)(-1) && (m_current_shape == SHAPE_REVERSED && !m_peters_wipe_tower) ? m_layer_info->depth - m_layer_info->toolchanges_depth(): 0.f)) .set_y_shift(m_y_shift + (tool!=(unsigned int)(-1) && (m_current_shape == SHAPE_REVERSED && !m_peters_wipe_tower) ? m_layer_info->depth - m_layer_info->toolchanges_depth(): 0.f))
@ -640,10 +649,9 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::toolchange_Brim(bool sideOnly, flo
m_wipe_tower_width, m_wipe_tower_width,
m_wipe_tower_depth); m_wipe_tower_depth);
PrusaMultiMaterial::Writer writer; PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width);
writer.set_extrusion_flow(m_extrusion_flow * 1.1f) writer.set_extrusion_flow(m_extrusion_flow * 1.1f)
.set_z(m_z_pos) // Let the writer know the current Z position as a base for Z-hop. .set_z(m_z_pos) // Let the writer know the current Z position as a base for Z-hop.
.set_layer_height(m_layer_height)
.set_initial_tool(m_current_tool) .set_initial_tool(m_current_tool)
.set_rotation(m_wipe_tower_pos, m_wipe_tower_width, m_wipe_tower_depth, m_wipe_tower_rotation_angle) .set_rotation(m_wipe_tower_pos, m_wipe_tower_width, m_wipe_tower_depth, m_wipe_tower_rotation_angle)
.append(";-------------------------------------\n" .append(";-------------------------------------\n"
@ -697,11 +705,12 @@ void WipeTowerPrusaMM::toolchange_Unload(
float xl = cleaning_box.ld.x + 1.f * m_perimeter_width; float xl = cleaning_box.ld.x + 1.f * m_perimeter_width;
float xr = cleaning_box.rd.x - 1.f * m_perimeter_width; float xr = cleaning_box.rd.x - 1.f * m_perimeter_width;
writer.append("; CP TOOLCHANGE UNLOAD\n");
const float line_width = m_perimeter_width * m_filpar[m_current_tool].ramming_line_width_multiplicator; // desired ramming line thickness const float line_width = m_perimeter_width * m_filpar[m_current_tool].ramming_line_width_multiplicator; // desired ramming line thickness
const float y_step = line_width * m_filpar[m_current_tool].ramming_step_multiplicator * m_extra_spacing; // spacing between lines in mm const float y_step = line_width * m_filpar[m_current_tool].ramming_step_multiplicator * m_extra_spacing; // spacing between lines in mm
writer.append("; CP TOOLCHANGE UNLOAD\n")
.change_analyzer_line_width(line_width);
unsigned i = 0; // iterates through ramming_speed unsigned i = 0; // iterates through ramming_speed
m_left_to_right = true; // current direction of ramming m_left_to_right = true; // current direction of ramming
float remaining = xr - xl ; // keeps track of distance to the next turnaround float remaining = xr - xl ; // keeps track of distance to the next turnaround
@ -775,12 +784,14 @@ void WipeTowerPrusaMM::toolchange_Unload(
} }
} }
WipeTower::xy end_of_ramming(writer.x(),writer.y()); WipeTower::xy end_of_ramming(writer.x(),writer.y());
writer.change_analyzer_line_width(m_perimeter_width); // so the next lines are not affected by ramming_line_width_multiplier
// Pull the filament end to the BEGINNING of the cooling tube while still moving the print head // Pull the filament end to the BEGINNING of the cooling tube while still moving the print head
float oldx = writer.x(); float oldx = writer.x();
float turning_point = (!m_left_to_right ? std::max(xl,oldx-15.f) : std::min(xr,oldx+15.f) ); // so it's not too far float turning_point = (!m_left_to_right ? std::max(xl,oldx-15.f) : std::min(xr,oldx+15.f) ); // so it's not too far
float xdist = std::abs(oldx-turning_point); float xdist = std::abs(oldx-turning_point);
float edist = -(m_cooling_tube_retraction+m_cooling_tube_length/2.f-42); float edist = -(m_cooling_tube_retraction+m_cooling_tube_length/2.f-42);
writer.suppress_preview() writer.suppress_preview()
.load_move_x(turning_point,-15 , 60.f * std::hypot(xdist,15)/15 * 83 ) // fixed speed after ramming .load_move_x(turning_point,-15 , 60.f * std::hypot(xdist,15)/15 * 83 ) // fixed speed after ramming
.load_move_x(oldx ,edist , 60.f * std::hypot(xdist,edist)/std::abs(edist) * m_filpar[m_current_tool].unloading_speed ) .load_move_x(oldx ,edist , 60.f * std::hypot(xdist,edist)/std::abs(edist) * m_filpar[m_current_tool].unloading_speed )
@ -959,10 +970,9 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::finish_layer()
// Otherwise the caller would likely travel to the wipe tower in vain. // Otherwise the caller would likely travel to the wipe tower in vain.
assert(! this->layer_finished()); assert(! this->layer_finished());
PrusaMultiMaterial::Writer writer; PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width);
writer.set_extrusion_flow(m_extrusion_flow) writer.set_extrusion_flow(m_extrusion_flow)
.set_z(m_z_pos) .set_z(m_z_pos)
.set_layer_height(m_layer_height)
.set_initial_tool(m_current_tool) .set_initial_tool(m_current_tool)
.set_rotation(m_wipe_tower_pos, m_wipe_tower_width, m_wipe_tower_depth, m_wipe_tower_rotation_angle) .set_rotation(m_wipe_tower_pos, m_wipe_tower_width, m_wipe_tower_depth, m_wipe_tower_rotation_angle)
.set_y_shift(m_y_shift - (m_current_shape == SHAPE_REVERSED && !m_peters_wipe_tower ? m_layer_info->toolchanges_depth() : 0.f)) .set_y_shift(m_y_shift - (m_current_shape == SHAPE_REVERSED && !m_peters_wipe_tower ? m_layer_info->toolchanges_depth() : 0.f))
@ -1137,7 +1147,8 @@ void WipeTowerPrusaMM::save_on_last_wipe()
// Resulting ToolChangeResults are appended into vector "result" // Resulting ToolChangeResults are appended into vector "result"
void WipeTowerPrusaMM::generate(std::vector<std::vector<WipeTower::ToolChangeResult>> &result) void WipeTowerPrusaMM::generate(std::vector<std::vector<WipeTower::ToolChangeResult>> &result)
{ {
if (m_plan.empty()) return; if (m_plan.empty())
return;
m_extra_spacing = 1.f; m_extra_spacing = 1.f;
@ -1151,6 +1162,7 @@ void WipeTowerPrusaMM::generate(std::vector<std::vector<WipeTower::ToolChangeRes
make_wipe_tower_square(); make_wipe_tower_square();
m_layer_info = m_plan.begin(); m_layer_info = m_plan.begin();
m_current_tool = (unsigned int)(-2); // we don't know which extruder to start with - we'll set it according to the first toolchange
std::vector<WipeTower::ToolChangeResult> layer_result; std::vector<WipeTower::ToolChangeResult> layer_result;
for (auto layer : m_plan) for (auto layer : m_plan)
@ -1166,8 +1178,11 @@ void WipeTowerPrusaMM::generate(std::vector<std::vector<WipeTower::ToolChangeRes
if (!m_peters_wipe_tower && m_layer_info->depth < m_wipe_tower_depth - m_perimeter_width) if (!m_peters_wipe_tower && m_layer_info->depth < m_wipe_tower_depth - m_perimeter_width)
m_y_shift = (m_wipe_tower_depth-m_layer_info->depth-m_perimeter_width)/2.f; m_y_shift = (m_wipe_tower_depth-m_layer_info->depth-m_perimeter_width)/2.f;
for (const auto &toolchange : layer.tool_changes) for (const auto &toolchange : layer.tool_changes) {
if (m_current_tool == (unsigned int)(-2))
m_current_tool = toolchange.old_tool;
layer_result.emplace_back(tool_change(toolchange.new_tool, false)); layer_result.emplace_back(tool_change(toolchange.new_tool, false));
}
if (! layer_finished()) { if (! layer_finished()) {
auto finish_layer_toolchange = finish_layer(); auto finish_layer_toolchange = finish_layer();

View File

@ -229,7 +229,7 @@ private:
bool m_print_brim = true; bool m_print_brim = true;
// A fill-in direction (positive Y, negative Y) alternates with each layer. // A fill-in direction (positive Y, negative Y) alternates with each layer.
wipe_shape m_current_shape = SHAPE_NORMAL; wipe_shape m_current_shape = SHAPE_NORMAL;
unsigned int m_current_tool = 0; unsigned int m_current_tool;
std::vector<std::vector<float>> wipe_volumes; std::vector<std::vector<float>> wipe_volumes;
float m_depth_traversed = 0.f; // Current y position at the wipe tower. float m_depth_traversed = 0.f; // Current y position at the wipe tower.

View File

@ -41,6 +41,7 @@ struct termios2 {
//#define DEBUG_SERIAL //#define DEBUG_SERIAL
#ifdef DEBUG_SERIAL #ifdef DEBUG_SERIAL
#include <cstdlib>
#include <fstream> #include <fstream>
std::fstream fs; std::fstream fs;
#endif #endif
@ -52,7 +53,11 @@ namespace Slic3r {
GCodeSender::GCodeSender() GCodeSender::GCodeSender()
: io(), serial(io), can_send(false), sent(0), open(false), error(false), : io(), serial(io), can_send(false), sent(0), open(false), error(false),
connected(false), queue_paused(false) connected(false), queue_paused(false)
{} {
#ifdef DEBUG_SERIAL
std::srand(std::time(nullptr));
#endif
}
GCodeSender::~GCodeSender() GCodeSender::~GCodeSender()
{ {
@ -358,15 +363,23 @@ GCodeSender::on_read(const boost::system::error_code& error,
// extract the first number from line // extract the first number from line
boost::algorithm::trim_left_if(line, !boost::algorithm::is_digit()); boost::algorithm::trim_left_if(line, !boost::algorithm::is_digit());
size_t toresend = boost::lexical_cast<size_t>(line.substr(0, line.find_first_not_of("0123456789"))); size_t toresend = boost::lexical_cast<size_t>(line.substr(0, line.find_first_not_of("0123456789")));
++ toresend; // N is 0-based
if (toresend >= this->sent - this->last_sent.size() && toresend < this->last_sent.size()) { #ifdef DEBUG_SERIAL
fs << "!! line num out of sync: toresend = " << toresend << ", sent = " << sent << ", last_sent.size = " << last_sent.size() << std::endl;
#endif
if (toresend > this->sent - this->last_sent.size() && toresend <= this->sent) {
{ {
boost::lock_guard<boost::mutex> l(this->queue_mutex); boost::lock_guard<boost::mutex> l(this->queue_mutex);
const auto lines_to_resend = this->sent - toresend + 1;
#ifdef DEBUG_SERIAL
fs << "!! resending " << lines_to_resend << " lines" << std::endl;
#endif
// move the unsent lines to priqueue // move the unsent lines to priqueue
this->priqueue.insert( this->priqueue.insert(
this->priqueue.begin(), // insert at the beginning this->priqueue.begin(), // insert at the beginning
this->last_sent.begin() + toresend - (this->sent - this->last_sent.size()) - 1, this->last_sent.begin() + this->last_sent.size() - lines_to_resend,
this->last_sent.end() this->last_sent.end()
); );
@ -477,8 +490,14 @@ GCodeSender::do_send()
if (line.empty()) return; if (line.empty()) return;
// compute full line // compute full line
std::string full_line = "N" + boost::lexical_cast<std::string>(this->sent) + " " + line;
++ this->sent; ++ this->sent;
#ifndef DEBUG_SERIAL
const auto line_num = this->sent;
#else
// In DEBUG_SERIAL mode, test line re-synchronization by sending bad line number 1/4 of the time
const auto line_num = std::rand() < RAND_MAX/4 ? 0 : this->sent;
#endif
std::string full_line = "N" + boost::lexical_cast<std::string>(line_num) + " " + line;
// calculate checksum // calculate checksum
int cs = 0; int cs = 0;
@ -497,8 +516,9 @@ GCodeSender::do_send()
this->last_sent.push_back(line); this->last_sent.push_back(line);
this->can_send = false; this->can_send = false;
if (this->last_sent.size() > KEEP_SENT) while (this->last_sent.size() > KEEP_SENT) {
this->last_sent.erase(this->last_sent.begin(), this->last_sent.end() - KEEP_SENT); this->last_sent.pop_front();
}
// we can't supply boost::asio::buffer(full_line) to async_write() because full_line is on the // we can't supply boost::asio::buffer(full_line) to async_write() because full_line is on the
// stack and the buffer would lose its underlying storage causing memory corruption // stack and the buffer would lose its underlying storage causing memory corruption

View File

@ -51,7 +51,7 @@ class GCodeSender : private boost::noncopyable {
bool can_send; bool can_send;
bool queue_paused; bool queue_paused;
size_t sent; size_t sent;
std::vector<std::string> last_sent; std::deque<std::string> last_sent;
// this mutex guards log, T, B // this mutex guards log, T, B
mutable boost::mutex log_mutex; mutable boost::mutex log_mutex;

View File

@ -948,7 +948,7 @@ PrintConfigDef::PrintConfigDef()
def->default_value = new ConfigOptionFloats { 10. }; def->default_value = new ConfigOptionFloats { 10. };
def = this->add("min_skirt_length", coFloat); def = this->add("min_skirt_length", coFloat);
def->label = L("Minimum extrusion length"); def->label = L("Minimal filament extrusion length");
def->tooltip = L("Generate no less than the number of skirt loops required to consume " def->tooltip = L("Generate no less than the number of skirt loops required to consume "
"the specified amount of filament on the bottom layer. For multi-extruder machines, " "the specified amount of filament on the bottom layer. For multi-extruder machines, "
"this minimum applies to each extruder."); "this minimum applies to each extruder.");

View File

@ -3,7 +3,7 @@
#include <algorithm> #include <algorithm>
#include <utility> #include <utility>
#include <unordered_map> #include <unordered_map>
#include <boost/format.hpp>
#include <boost/log/trivial.hpp> #include <boost/log/trivial.hpp>
#include <wx/settings.h> #include <wx/settings.h>
@ -615,9 +615,15 @@ void ConfigWizard::priv::load_vendors()
// Load vendors from the "vendors" directory in datadir // Load vendors from the "vendors" directory in datadir
for (fs::directory_iterator it(vendor_dir); it != fs::directory_iterator(); ++it) { for (fs::directory_iterator it(vendor_dir); it != fs::directory_iterator(); ++it) {
if (it->path().extension() == ".ini") { if (it->path().extension() == ".ini") {
try {
auto vp = VendorProfile::from_ini(it->path()); auto vp = VendorProfile::from_ini(it->path());
vendors[vp.id] = std::move(vp); vendors[vp.id] = std::move(vp);
} }
catch (const std::exception& e) {
BOOST_LOG_TRIVIAL(error) << boost::format("Error loading vendor bundle %1%: %2%") % it->path() % e.what();
}
}
} }
// Additionally load up vendors from the application resources directory, but only those not seen in the datadir // Additionally load up vendors from the application resources directory, but only those not seen in the datadir
@ -625,10 +631,15 @@ void ConfigWizard::priv::load_vendors()
if (it->path().extension() == ".ini") { if (it->path().extension() == ".ini") {
const auto id = it->path().stem().string(); const auto id = it->path().stem().string();
if (vendors.find(id) == vendors.end()) { if (vendors.find(id) == vendors.end()) {
try {
auto vp = VendorProfile::from_ini(it->path()); auto vp = VendorProfile::from_ini(it->path());
vendors_rsrc[vp.id] = it->path().filename().string(); vendors_rsrc[vp.id] = it->path().filename().string();
vendors[vp.id] = std::move(vp); vendors[vp.id] = std::move(vp);
} }
catch (const std::exception& e) {
BOOST_LOG_TRIVIAL(error) << boost::format("Error loading vendor bundle %1%: %2%") % it->path() % e.what();
}
}
} }
} }

View File

@ -388,6 +388,8 @@ ConfigMenuIDs get_view_mode()
return mode == "expert" ? ConfigMenuModeExpert : ConfigMenuModeSimple; return mode == "expert" ? ConfigMenuModeExpert : ConfigMenuModeSimple;
} }
static wxString dots("", wxConvUTF8);
void add_config_menu(wxMenuBar *menu, int event_preferences_changed, int event_language_change) void add_config_menu(wxMenuBar *menu, int event_preferences_changed, int event_language_change)
{ {
auto local_menu = new wxMenu(); auto local_menu = new wxMenu();
@ -395,12 +397,12 @@ void add_config_menu(wxMenuBar *menu, int event_preferences_changed, int event_l
const auto config_wizard_tooltip = wxString::Format(_(L("Run %s")), ConfigWizard::name()); const auto config_wizard_tooltip = wxString::Format(_(L("Run %s")), ConfigWizard::name());
// Cmd+, is standard on OS X - what about other operating systems? // Cmd+, is standard on OS X - what about other operating systems?
local_menu->Append(config_id_base + ConfigMenuWizard, ConfigWizard::name() + "\u2026", config_wizard_tooltip); local_menu->Append(config_id_base + ConfigMenuWizard, ConfigWizard::name() + dots, config_wizard_tooltip);
local_menu->Append(config_id_base + ConfigMenuSnapshots, _(L("Configuration Snapshots"))+"\u2026", _(L("Inspect / activate configuration snapshots"))); local_menu->Append(config_id_base + ConfigMenuSnapshots, _(L("Configuration Snapshots"))+dots, _(L("Inspect / activate configuration snapshots")));
local_menu->Append(config_id_base + ConfigMenuTakeSnapshot, _(L("Take Configuration Snapshot")), _(L("Capture a configuration snapshot"))); local_menu->Append(config_id_base + ConfigMenuTakeSnapshot, _(L("Take Configuration Snapshot")), _(L("Capture a configuration snapshot")));
// local_menu->Append(config_id_base + ConfigMenuUpdate, _(L("Check for updates")), _(L("Check for configuration updates"))); // local_menu->Append(config_id_base + ConfigMenuUpdate, _(L("Check for updates")), _(L("Check for configuration updates")));
local_menu->AppendSeparator(); local_menu->AppendSeparator();
local_menu->Append(config_id_base + ConfigMenuPreferences, _(L("Preferences"))+"\u2026\tCtrl+,", _(L("Application preferences"))); local_menu->Append(config_id_base + ConfigMenuPreferences, _(L("Preferences"))+dots+"\tCtrl+,", _(L("Application preferences")));
local_menu->AppendSeparator(); local_menu->AppendSeparator();
auto mode_menu = new wxMenu(); auto mode_menu = new wxMenu();
mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeSimple, _(L("&Simple")), _(L("Simple View Mode"))); mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeSimple, _(L("&Simple")), _(L("Simple View Mode")));
@ -443,8 +445,7 @@ void add_config_menu(wxMenuBar *menu, int event_preferences_changed, int event_l
Config::SnapshotDB::singleton().restore_snapshot(dlg.snapshot_to_activate(), *g_AppConfig).id); Config::SnapshotDB::singleton().restore_snapshot(dlg.snapshot_to_activate(), *g_AppConfig).id);
g_PresetBundle->load_presets(*g_AppConfig); g_PresetBundle->load_presets(*g_AppConfig);
// Load the currently selected preset into the GUI, update the preset selection box. // Load the currently selected preset into the GUI, update the preset selection box.
for (Tab *tab : g_tabs_list) load_current_presets();
tab->load_current_preset();
} }
} }
break; break;
@ -537,12 +538,16 @@ void config_wizard(int reason)
if (! check_unsaved_changes()) if (! check_unsaved_changes())
return; return;
try {
ConfigWizard wizard(nullptr, static_cast<ConfigWizard::RunReason>(reason)); ConfigWizard wizard(nullptr, static_cast<ConfigWizard::RunReason>(reason));
wizard.run(g_PresetBundle, g_PresetUpdater); wizard.run(g_PresetBundle, g_PresetUpdater);
}
catch (const std::exception &e) {
show_error(nullptr, e.what());
}
// Load the currently selected preset into the GUI, update the preset selection box. // Load the currently selected preset into the GUI, update the preset selection box.
for (Tab *tab : g_tabs_list) load_current_presets();
tab->load_current_preset();
} }
void open_preferences_dialog(int event_preferences) void open_preferences_dialog(int event_preferences)
@ -694,6 +699,13 @@ void add_created_tab(Tab* panel)
g_wxTabPanel->AddPage(panel, panel->title()); g_wxTabPanel->AddPage(panel, panel->title());
} }
void load_current_presets()
{
for (Tab *tab : g_tabs_list) {
tab->load_current_preset();
}
}
void show_error(wxWindow* parent, const wxString& message) { void show_error(wxWindow* parent, const wxString& message) {
ErrorDialog msg(parent, message); ErrorDialog msg(parent, message);
msg.ShowModal(); msg.ShowModal();
@ -950,9 +962,9 @@ wxBoxSizer* content_edit_object_buttons(wxWindow* win)
{ {
auto sizer = new wxBoxSizer(wxVERTICAL); auto sizer = new wxBoxSizer(wxVERTICAL);
auto btn_load_part = new wxButton(win, wxID_ANY, /*Load */"part…", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER/*wxBU_LEFT*/); auto btn_load_part = new wxButton(win, wxID_ANY, /*Load */"part…", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER/*wxBU_LEFT*/);
auto btn_load_modifier = new wxButton(win, wxID_ANY, /*Load */"modifier…", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER/*wxBU_LEFT*/); auto btn_load_modifier = new wxButton(win, wxID_ANY, /*Load */"modifier…", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER/*wxBU_LEFT*/);
auto btn_load_lambda_modifier = new wxButton(win, wxID_ANY, /*Load */"generic…", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER/*wxBU_LEFT*/); auto btn_load_lambda_modifier = new wxButton(win, wxID_ANY, /*Load */"generic…", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER/*wxBU_LEFT*/);
auto btn_delete = new wxButton(win, wxID_ANY, "Delete"/*" part"*/, wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER/*wxBU_LEFT*/); auto btn_delete = new wxButton(win, wxID_ANY, "Delete"/*" part"*/, wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER/*wxBU_LEFT*/);
auto btn_split = new wxButton(win, wxID_ANY, "Split"/*" part"*/, wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER/*wxBU_LEFT*/); auto btn_split = new wxButton(win, wxID_ANY, "Split"/*" part"*/, wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER/*wxBU_LEFT*/);
auto btn_move_up = new wxButton(win, wxID_ANY, "", wxDefaultPosition, wxDefaultSize/*wxSize(30, -1)*/, wxBU_LEFT); auto btn_move_up = new wxButton(win, wxID_ANY, "", wxDefaultPosition, wxDefaultSize/*wxSize(30, -1)*/, wxBU_LEFT);
@ -1289,7 +1301,7 @@ void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFl
Line line = { "", "" }; Line line = { "", "" };
line.widget = [config](wxWindow* parent){ line.widget = [config](wxWindow* parent){
g_wiping_dialog_button = new wxButton(parent, wxID_ANY, _(L("Purging volumes")) + "\u2026", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT); g_wiping_dialog_button = new wxButton(parent, wxID_ANY, _(L("Purging volumes")) + dots, wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT);
auto sizer = new wxBoxSizer(wxHORIZONTAL); auto sizer = new wxBoxSizer(wxHORIZONTAL);
sizer->Add(g_wiping_dialog_button); sizer->Add(g_wiping_dialog_button);
g_wiping_dialog_button->Bind(wxEVT_BUTTON, ([parent](wxCommandEvent& e) g_wiping_dialog_button->Bind(wxEVT_BUTTON, ([parent](wxCommandEvent& e)
@ -1331,7 +1343,7 @@ void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFl
optgroup->sidetext_width = 25; optgroup->sidetext_width = 25;
optgroup->append_line(add_og_to_object_settings(L("Position"), L("mm"))); optgroup->append_line(add_og_to_object_settings(L("Position"), L("mm")));
optgroup->append_line(add_og_to_object_settings(L("Rotation"), "°", 1)); optgroup->append_line(add_og_to_object_settings(L("Rotation"), "°", 1));
optgroup->append_line(add_og_to_object_settings(L("Scale"), "%", 2)); optgroup->append_line(add_og_to_object_settings(L("Scale"), "%", 2));
optgroup->set_flag(ogDEFAULT); optgroup->set_flag(ogDEFAULT);
@ -1479,32 +1491,49 @@ void about()
void desktop_open_datadir_folder() void desktop_open_datadir_folder()
{ {
// Execute command to open a file explorer, platform dependent. // Execute command to open a file explorer, platform dependent.
std::string cmd = // FIXME: The const_casts aren't needed in wxWidgets 3.1, remove them when we upgrade.
const auto path = data_dir();
#ifdef _WIN32 #ifdef _WIN32
"explorer " const auto widepath = wxString::FromUTF8(path.data());
const wchar_t *argv[] = { L"explorer", widepath.GetData(), nullptr };
::wxExecute(const_cast<wchar_t**>(argv), wxEXEC_ASYNC, nullptr);
#elif __APPLE__ #elif __APPLE__
"open " const char *argv[] = { "open", path.data(), nullptr };
::wxExecute(const_cast<char**>(argv), wxEXEC_ASYNC, nullptr);
#else #else
"xdg-open " const char *argv[] = { "xdg-open", path.data(), nullptr };
// Check if we're running in an AppImage container, if so, we need to remove AppImage's env vars,
// because they may mess up the environment expected by the file manager.
// Mostly this is about LD_LIBRARY_PATH, but we remove a few more too for good measure.
if (wxGetEnv("APPIMAGE", nullptr)) {
// We're running from AppImage
wxEnvVariableHashMap env_vars;
wxGetEnvMap(&env_vars);
env_vars.erase("APPIMAGE");
env_vars.erase("APPDIR");
env_vars.erase("LD_LIBRARY_PATH");
env_vars.erase("LD_PRELOAD");
env_vars.erase("UNION_PRELOAD");
wxExecuteEnv exec_env;
exec_env.env = std::move(env_vars);
wxString owd;
if (wxGetEnv("OWD", &owd)) {
// This is the original work directory from which the AppImage image was run,
// set it as CWD for the child process:
exec_env.cwd = std::move(owd);
}
::wxExecute(const_cast<char**>(argv), wxEXEC_ASYNC, nullptr, &exec_env);
} else {
// Looks like we're NOT running from AppImage, we'll make no changes to the environment.
::wxExecute(const_cast<char**>(argv), wxEXEC_ASYNC, nullptr, nullptr);
}
#endif #endif
;
// Escape the path, platform dependent.
std::string path = data_dir();
#ifdef _WIN32
// Enclose the path into double quotes on Windows. A quote character is forbidden in file names,
// therefore it does not need to be escaped.
cmd += '"';
cmd += path;
cmd += '"';
#else
// Enclose the path into single quotes on Unix / OSX. All single quote characters need to be escaped
// inside a file name.
cmd += '\'';
boost::replace_all(path, "'", "\\'");
cmd += path;
cmd += '\'';
#endif
::wxExecute(wxString::FromUTF8(cmd.c_str()), wxEXEC_ASYNC, nullptr);
} }
} } } }

View File

@ -5,6 +5,9 @@
#include <vector> #include <vector>
#include "Config.hpp" #include "Config.hpp"
#include <wx/intl.h>
#include <wx/string.h>
class wxApp; class wxApp;
class wxWindow; class wxWindow;
class wxFrame; class wxFrame;
@ -32,6 +35,12 @@ class PresetUpdater;
class DynamicPrintConfig; class DynamicPrintConfig;
class TabIface; class TabIface;
#define _(s) Slic3r::translate((s))
inline wxString translate(const char *s) { return wxGetTranslation(wxString(s, wxConvUTF8)); }
inline wxString translate(const wchar_t *s) { return wxGetTranslation(s); }
inline wxString translate(const std::string &s) { return wxGetTranslation(wxString(s.c_str(), wxConvUTF8)); }
inline wxString translate(const std::wstring &s) { return wxGetTranslation(s.c_str()); }
// !!! If you needed to translate some wxString, // !!! If you needed to translate some wxString,
// !!! please use _(L(string)) // !!! please use _(L(string))
// !!! _() - is a standard wxWidgets macro to translate // !!! _() - is a standard wxWidgets macro to translate
@ -140,6 +149,9 @@ void add_created_tab(Tab* panel);
// Change option value in config // Change option value in config
void change_opt_value(DynamicPrintConfig& config, const t_config_option_key& opt_key, const boost::any& value, int opt_index = 0); void change_opt_value(DynamicPrintConfig& config, const t_config_option_key& opt_key, const boost::any& value, int opt_index = 0);
// Update UI / Tabs to reflect changes in the currently loaded presets
void load_current_presets();
void show_error(wxWindow* parent, const wxString& message); void show_error(wxWindow* parent, const wxString& message);
void show_error_id(int id, const std::string& message); // For Perl void show_error_id(int id, const std::string& message); // For Perl
void show_info(wxWindow* parent, const wxString& message, const wxString& title); void show_info(wxWindow* parent, const wxString& message, const wxString& title);

View File

@ -101,6 +101,7 @@ PresetBundle::~PresetBundle()
void PresetBundle::reset(bool delete_files) void PresetBundle::reset(bool delete_files)
{ {
// Clear the existing presets, delete their respective files. // Clear the existing presets, delete their respective files.
this->vendors.clear();
this->prints .reset(delete_files); this->prints .reset(delete_files);
this->filaments.reset(delete_files); this->filaments.reset(delete_files);
this->printers .reset(delete_files); this->printers .reset(delete_files);
@ -840,17 +841,13 @@ size_t PresetBundle::load_configbundle(const std::string &path, unsigned int fla
// Load the print, filament or printer preset. // Load the print, filament or printer preset.
const DynamicPrintConfig &default_config = presets->default_preset().config; const DynamicPrintConfig &default_config = presets->default_preset().config;
DynamicPrintConfig config(default_config); DynamicPrintConfig config(default_config);
std::vector<std::string> config_keys = config.keys();
// The following two keys are valid, but they are not mandatory.
config_keys.emplace_back("compatible_printers");
config_keys.emplace_back("compatible_printers_condition");
for (auto &kvp : section.second) for (auto &kvp : section.second)
config.set_deserialize(kvp.first, kvp.second.data()); config.set_deserialize(kvp.first, kvp.second.data());
Preset::normalize(config); Preset::normalize(config);
// Report configuration fields, which are misplaced into a wrong group. // Report configuration fields, which are misplaced into a wrong group.
std::string incorrect_keys; std::string incorrect_keys;
size_t n_incorrect_keys = 0; size_t n_incorrect_keys = 0;
for (const std::string &key : config_keys) for (const std::string &key : config.keys())
if (! default_config.has(key)) { if (! default_config.has(key)) {
if (incorrect_keys.empty()) if (incorrect_keys.empty())
incorrect_keys = key; incorrect_keys = key;

View File

@ -2,12 +2,7 @@
#include <wx/dcbuffer.h> #include <wx/dcbuffer.h>
#include "RammingChart.hpp" #include "RammingChart.hpp"
#include "GUI.hpp"
//! macro used to mark string used at localization,
//! return same string
#define L(s) s
wxDEFINE_EVENT(EVT_WIPE_TOWER_CHART_CHANGED, wxCommandEvent); wxDEFINE_EVENT(EVT_WIPE_TOWER_CHART_CHANGED, wxCommandEvent);
@ -83,7 +78,7 @@ void Chart::draw() {
int text_height = 0; int text_height = 0;
dc.GetTextExtent(label,&text_width,&text_height); dc.GetTextExtent(label,&text_width,&text_height);
dc.DrawText(label,wxPoint(0.5*(m_rect.GetRight()+m_rect.GetLeft())-text_width/2.f, m_rect.GetBottom()+25)); dc.DrawText(label,wxPoint(0.5*(m_rect.GetRight()+m_rect.GetLeft())-text_width/2.f, m_rect.GetBottom()+25));
label = _(L("Volumetric speed")) + " (" + _(L("mm")) + "\u00B3/" + _(L("s")) + ")"; label = _(L("Volumetric speed")) + " (" + _(L("mm")) + wxString("³/", wxConvUTF8) + _(L("s")) + ")";
dc.GetTextExtent(label,&text_width,&text_height); dc.GetTextExtent(label,&text_width,&text_height);
dc.DrawRotatedText(label,wxPoint(0,0.5*(m_rect.GetBottom()+m_rect.GetTop())+text_width/2.f),90); dc.DrawRotatedText(label,wxPoint(0,0.5*(m_rect.GetBottom()+m_rect.GetTop())+text_width/2.f),90);
} }

View File

@ -32,6 +32,8 @@
namespace Slic3r { namespace Slic3r {
namespace GUI { namespace GUI {
static wxString dots("", wxConvUTF8);
// sub new // sub new
void Tab::create_preset_tab(PresetBundle *preset_bundle) void Tab::create_preset_tab(PresetBundle *preset_bundle)
{ {
@ -1259,7 +1261,7 @@ void TabFilament::build()
optgroup->append_single_option_line("filament_density"); optgroup->append_single_option_line("filament_density");
optgroup->append_single_option_line("filament_cost"); optgroup->append_single_option_line("filament_cost");
optgroup = page->new_optgroup(_(L("Temperature ")) +" (\u00B0C)"); // degree sign optgroup = page->new_optgroup(_(L("Temperature ")) + wxString("°C", wxConvUTF8));
Line line = { _(L("Extruder")), "" }; Line line = { _(L("Extruder")), "" };
line.append_option(optgroup->get_option("first_layer_temperature")); line.append_option(optgroup->get_option("first_layer_temperature"));
line.append_option(optgroup->get_option("temperature")); line.append_option(optgroup->get_option("temperature"));
@ -1317,7 +1319,7 @@ void TabFilament::build()
optgroup->append_single_option_line("filament_toolchange_delay"); optgroup->append_single_option_line("filament_toolchange_delay");
line = { _(L("Ramming")), "" }; line = { _(L("Ramming")), "" };
line.widget = [this](wxWindow* parent){ line.widget = [this](wxWindow* parent){
auto ramming_dialog_btn = new wxButton(parent, wxID_ANY, _(L("Ramming settings"))+"\u2026", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT); auto ramming_dialog_btn = new wxButton(parent, wxID_ANY, _(L("Ramming settings"))+dots, wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT);
auto sizer = new wxBoxSizer(wxHORIZONTAL); auto sizer = new wxBoxSizer(wxHORIZONTAL);
sizer->Add(ramming_dialog_btn); sizer->Add(ramming_dialog_btn);
@ -1439,7 +1441,7 @@ void TabPrinter::build()
Line line{ _(L("Bed shape")), "" }; Line line{ _(L("Bed shape")), "" };
line.widget = [this](wxWindow* parent){ line.widget = [this](wxWindow* parent){
auto btn = new wxButton(parent, wxID_ANY, _(L(" Set "))+"\u2026", wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT); auto btn = new wxButton(parent, wxID_ANY, _(L(" Set "))+dots, wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
btn->SetFont(Slic3r::GUI::small_font()); btn->SetFont(Slic3r::GUI::small_font());
btn->SetBitmap(wxBitmap(from_u8(Slic3r::var("printer_empty.png")), wxBITMAP_TYPE_PNG)); btn->SetBitmap(wxBitmap(from_u8(Slic3r::var("printer_empty.png")), wxBITMAP_TYPE_PNG));
@ -1538,7 +1540,7 @@ void TabPrinter::build()
optgroup = page->new_optgroup(_(L("OctoPrint upload"))); optgroup = page->new_optgroup(_(L("OctoPrint upload")));
auto octoprint_host_browse = [this, optgroup] (wxWindow* parent) { auto octoprint_host_browse = [this, optgroup] (wxWindow* parent) {
auto btn = new wxButton(parent, wxID_ANY, _(L(" Browse "))+"\u2026", wxDefaultPosition, wxDefaultSize, wxBU_LEFT); auto btn = new wxButton(parent, wxID_ANY, _(L(" Browse "))+dots, wxDefaultPosition, wxDefaultSize, wxBU_LEFT);
btn->SetBitmap(wxBitmap(from_u8(Slic3r::var("zoom.png")), wxBITMAP_TYPE_PNG)); btn->SetBitmap(wxBitmap(from_u8(Slic3r::var("zoom.png")), wxBITMAP_TYPE_PNG));
auto sizer = new wxBoxSizer(wxHORIZONTAL); auto sizer = new wxBoxSizer(wxHORIZONTAL);
sizer->Add(btn); sizer->Add(btn);
@ -1587,7 +1589,7 @@ void TabPrinter::build()
Line cafile_line = optgroup->create_single_option_line("octoprint_cafile"); Line cafile_line = optgroup->create_single_option_line("octoprint_cafile");
auto octoprint_cafile_browse = [this, optgroup] (wxWindow* parent) { auto octoprint_cafile_browse = [this, optgroup] (wxWindow* parent) {
auto btn = new wxButton(parent, wxID_ANY, _(L(" Browse "))+"\u2026", wxDefaultPosition, wxDefaultSize, wxBU_LEFT); auto btn = new wxButton(parent, wxID_ANY, _(L(" Browse "))+dots, wxDefaultPosition, wxDefaultSize, wxBU_LEFT);
btn->SetBitmap(wxBitmap(from_u8(Slic3r::var("zoom.png")), wxBITMAP_TYPE_PNG)); btn->SetBitmap(wxBitmap(from_u8(Slic3r::var("zoom.png")), wxBITMAP_TYPE_PNG));
auto sizer = new wxBoxSizer(wxHORIZONTAL); auto sizer = new wxBoxSizer(wxHORIZONTAL);
sizer->Add(btn); sizer->Add(btn);
@ -2209,7 +2211,7 @@ void Tab::update_ui_from_settings()
wxSizer* Tab::compatible_printers_widget(wxWindow* parent, wxCheckBox** checkbox, wxButton** btn) wxSizer* Tab::compatible_printers_widget(wxWindow* parent, wxCheckBox** checkbox, wxButton** btn)
{ {
*checkbox = new wxCheckBox(parent, wxID_ANY, _(L("All"))); *checkbox = new wxCheckBox(parent, wxID_ANY, _(L("All")));
*btn = new wxButton(parent, wxID_ANY, _(L(" Set "))+"\u2026", wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT); *btn = new wxButton(parent, wxID_ANY, _(L(" Set "))+dots, wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
(*btn)->SetBitmap(wxBitmap(from_u8(Slic3r::var("printer_empty.png")), wxBITMAP_TYPE_PNG)); (*btn)->SetBitmap(wxBitmap(from_u8(Slic3r::var("printer_empty.png")), wxBITMAP_TYPE_PNG));

View File

@ -1,15 +1,10 @@
#include <algorithm> #include <algorithm>
#include <sstream> #include <sstream>
#include "WipeTowerDialog.hpp" #include "WipeTowerDialog.hpp"
#include "GUI.hpp"
#include <wx/sizer.h> #include <wx/sizer.h>
//! macro used to mark string used at localization,
//! return same string
#define L(s) s
RammingDialog::RammingDialog(wxWindow* parent,const std::string& parameters) RammingDialog::RammingDialog(wxWindow* parent,const std::string& parameters)
: wxDialog(parent, wxID_ANY, _(L("Ramming customization")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE/* | wxRESIZE_BORDER*/) : wxDialog(parent, wxID_ANY, _(L("Ramming customization")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE/* | wxRESIZE_BORDER*/)
{ {
@ -81,7 +76,7 @@ RammingPanel::RammingPanel(wxWindow* parent, const std::string& parameters)
auto gsizer_param = new wxFlexGridSizer(2, 5, 15); auto gsizer_param = new wxFlexGridSizer(2, 5, 15);
gsizer_param->Add(new wxStaticText(this, wxID_ANY, wxString(_(L("Total ramming time")) + " (" + _(L("s")) + "):")), 0, wxALIGN_CENTER_VERTICAL); gsizer_param->Add(new wxStaticText(this, wxID_ANY, wxString(_(L("Total ramming time")) + " (" + _(L("s")) + "):")), 0, wxALIGN_CENTER_VERTICAL);
gsizer_param->Add(m_widget_time); gsizer_param->Add(m_widget_time);
gsizer_param->Add(new wxStaticText(this, wxID_ANY, wxString(_(L("Total rammed volume")) + " (" + _(L("mm")) + "\u00B3):")), 0, wxALIGN_CENTER_VERTICAL); gsizer_param->Add(new wxStaticText(this, wxID_ANY, wxString(_(L("Total rammed volume")) + " (" + _(L("mm")) + wxString("³):", wxConvUTF8))), 0, wxALIGN_CENTER_VERTICAL);
gsizer_param->Add(m_widget_volume); gsizer_param->Add(m_widget_volume);
gsizer_param->AddSpacer(20); gsizer_param->AddSpacer(20);
gsizer_param->AddSpacer(20); gsizer_param->AddSpacer(20);
@ -220,7 +215,7 @@ WipingPanel::WipingPanel(wxWindow* parent, const std::vector<float>& matrix, con
// collect and format sizer // collect and format sizer
format_sizer(m_sizer_advanced, m_page_advanced, m_gridsizer_advanced, format_sizer(m_sizer_advanced, m_page_advanced, m_gridsizer_advanced,
wxString::Format(_(L("Here you can adjust required purging volume (mm%s) for any given pair of tools.")), "\u00B3"), _(L("Here you can adjust required purging volume (mm³) for any given pair of tools.")),
_(L("Extruder changed to"))); _(L("Extruder changed to")));
// Hide preview page before new page creating // Hide preview page before new page creating
@ -243,7 +238,7 @@ WipingPanel::WipingPanel(wxWindow* parent, const std::vector<float>& matrix, con
// collect and format sizer // collect and format sizer
format_sizer(m_sizer_simple, m_page_simple, gridsizer_simple, format_sizer(m_sizer_simple, m_page_simple, gridsizer_simple,
_(L("Total purging volume is calculated by summing two values below, depending on which tools are loaded/unloaded.")), _(L("Total purging volume is calculated by summing two values below, depending on which tools are loaded/unloaded.")),
wxString::Format(_(L("Volume to purge (mm%s) when the filament is being")), "\u00B3"), 50); _(L("Volume to purge (mm³) when the filament is being")), 50);
m_sizer = new wxBoxSizer(wxVERTICAL); m_sizer = new wxBoxSizer(wxVERTICAL);
m_sizer->Add(m_page_simple, 0, wxEXPAND | wxALL, 25); m_sizer->Add(m_page_simple, 0, wxEXPAND | wxALL, 25);

View File

@ -162,7 +162,7 @@ bool PresetUpdater::priv::get_file(const std::string &url, const fs::path &targe
% http_status % http_status
% error; % error;
}) })
.on_complete([&](std::string body, unsigned http_status) { .on_complete([&](std::string body, unsigned /* http_status */) {
fs::fstream file(tmp_path, std::ios::out | std::ios::binary | std::ios::trunc); fs::fstream file(tmp_path, std::ios::out | std::ios::binary | std::ios::trunc);
file.write(body.c_str(), body.size()); file.write(body.c_str(), body.size());
file.close(); file.close();
@ -204,7 +204,7 @@ void PresetUpdater::priv::sync_version() const
% http_status % http_status
% error; % error;
}) })
.on_complete([&](std::string body, unsigned http_status) { .on_complete([&](std::string body, unsigned /* http_status */) {
boost::trim(body); boost::trim(body);
BOOST_LOG_TRIVIAL(info) << boost::format("Got Slic3rPE online version: `%1%`. Sending to GUI thread...") % body; BOOST_LOG_TRIVIAL(info) << boost::format("Got Slic3rPE online version: `%1%`. Sending to GUI thread...") % body;
wxCommandEvent* evt = new wxCommandEvent(version_online_event); wxCommandEvent* evt = new wxCommandEvent(version_online_event);
@ -553,6 +553,12 @@ bool PresetUpdater::config_update() const
if (res == wxID_OK) { if (res == wxID_OK) {
BOOST_LOG_TRIVIAL(debug) << "User agreed to perform the update"; BOOST_LOG_TRIVIAL(debug) << "User agreed to perform the update";
p->perform_updates(std::move(updates)); p->perform_updates(std::move(updates));
// Reload global configuration
auto *app_config = GUI::get_app_config();
app_config->reset_selections();
GUI::get_preset_bundle()->load_presets(*app_config);
GUI::load_current_presets();
} else { } else {
BOOST_LOG_TRIVIAL(info) << "User refused the update"; BOOST_LOG_TRIVIAL(info) << "User refused the update";
} }

View File

@ -66,11 +66,7 @@ bool check_unsaved_changes()
bool config_wizard_startup(int app_config_exists) bool config_wizard_startup(int app_config_exists)
%code%{ %code%{
try {
RETVAL=Slic3r::GUI::config_wizard_startup(app_config_exists != 0); RETVAL=Slic3r::GUI::config_wizard_startup(app_config_exists != 0);
} catch (std::exception& e) {
croak("%s\n", e.what());
}
%}; %};
void open_preferences_dialog(int preferences_event) void open_preferences_dialog(int preferences_event)