Merge branch 'master' into fs_svg_SPE-1517
2
resources/profiles/CocoaPress.idx
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
min_slic3r_version = 2.6.0-alpha2
|
||||||
|
1.0.0 Initial
|
604
resources/profiles/CocoaPress.ini
Normal file
@ -0,0 +1,604 @@
|
|||||||
|
# Print profiles for the Creality printers.
|
||||||
|
|
||||||
|
[vendor]
|
||||||
|
# Vendor name will be shown by the Config Wizard.
|
||||||
|
name = Cocoa Press
|
||||||
|
# Configuration version of this file. Config file will only be installed, if the config_version differs.
|
||||||
|
# This means, the server may force the PrusaSlicer configuration to be downgraded.
|
||||||
|
config_version = 1.0.0
|
||||||
|
# Where to get the updates from?
|
||||||
|
config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/CocoaPress/
|
||||||
|
# changelog_url = https://files.prusa3d.com/?latest=slicer-profiles&lng=%1%
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
# Printer model name will be shown by the installation wizard.
|
||||||
|
|
||||||
|
# All presets starting with asterisk, for example *common*, are intermediate and they will
|
||||||
|
# not make it into the user interface.
|
||||||
|
|
||||||
|
[printer_model:Cocoa_Press]
|
||||||
|
name = Cocoa Press
|
||||||
|
variants = 0.8; 1.6
|
||||||
|
technology = FFF
|
||||||
|
bed_model = minichef_bed.stl
|
||||||
|
bed_texture = minichef_texture.svg
|
||||||
|
default_materials = Cocoa Press Chocolates;
|
||||||
|
thumbnail = CocoaPress_MiniChef.png
|
||||||
|
|
||||||
|
[print:*common*]
|
||||||
|
gcode_label_objects = 1
|
||||||
|
gcode_resolution = 0.0125
|
||||||
|
gcode_substitutions = "(;PAUSE_PRINT)(\\n|\\r\\n|\\r)(.*?)(M117)";$1$2M0;r;"Pause command allows you to get a full screen message."
|
||||||
|
output_filename_format = {input_filename_base}_{nozzle_diameter[initial_tool]}n_{print_time}_{round(total_weight)}g.gcode
|
||||||
|
notes = PRINTER_VENDOR_COCOA_PRESS\nPRINTER_MODEL_MINICHEF\nPRINTER_MATERIAL_PASTE
|
||||||
|
|
||||||
|
[print:Cocoa Press (0.5mm layerheight)]
|
||||||
|
inherit = *common*
|
||||||
|
avoid_crossing_curled_overhangs = 0
|
||||||
|
avoid_crossing_perimeters = 0
|
||||||
|
avoid_crossing_perimeters_max_detour = 0
|
||||||
|
bottom_fill_pattern = rectilinear
|
||||||
|
bottom_solid_layers = 2
|
||||||
|
bottom_solid_min_thickness = 0
|
||||||
|
bridge_acceleration = 1500
|
||||||
|
bridge_angle = 0
|
||||||
|
bridge_flow_ratio = 1
|
||||||
|
bridge_speed = 20
|
||||||
|
brim_separation = 0
|
||||||
|
brim_type = outer_only
|
||||||
|
brim_width = 0
|
||||||
|
compatible_printers =
|
||||||
|
compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_COCOA_PRESS.*/ and printer_notes=~/.*PRINTER_MATERIAL_PASTE.*/ and nozzle_diameter[0]==0.8
|
||||||
|
complete_objects = 0
|
||||||
|
default_acceleration = 1500
|
||||||
|
dont_support_bridges = 1
|
||||||
|
draft_shield = disabled
|
||||||
|
elefant_foot_compensation = 0
|
||||||
|
enable_dynamic_overhang_speeds = 0
|
||||||
|
external_perimeter_acceleration = 0
|
||||||
|
external_perimeter_extrusion_width = 0
|
||||||
|
external_perimeter_speed = 25
|
||||||
|
external_perimeters_first = 0
|
||||||
|
extra_perimeters = 1
|
||||||
|
extra_perimeters_on_overhangs = 0
|
||||||
|
extruder_clearance_height = 60
|
||||||
|
extruder_clearance_radius = 65
|
||||||
|
extrusion_width = 0
|
||||||
|
fill_angle = 45
|
||||||
|
fill_density = 25%
|
||||||
|
fill_pattern = grid
|
||||||
|
first_layer_acceleration = 1500
|
||||||
|
first_layer_acceleration_over_raft = 0
|
||||||
|
first_layer_extrusion_width = 0
|
||||||
|
first_layer_height = 0.4
|
||||||
|
first_layer_speed = 15
|
||||||
|
first_layer_speed_over_raft = 30
|
||||||
|
fuzzy_skin = none
|
||||||
|
fuzzy_skin_point_dist = 0.8
|
||||||
|
fuzzy_skin_thickness = 0.3
|
||||||
|
gap_fill_enabled = 0
|
||||||
|
gap_fill_speed = 0
|
||||||
|
gcode_comments = 0
|
||||||
|
infill_acceleration = 1500
|
||||||
|
infill_anchor = 600%
|
||||||
|
infill_anchor_max = 50
|
||||||
|
infill_every_layers = 1
|
||||||
|
infill_extruder = 1
|
||||||
|
infill_extrusion_width = 0
|
||||||
|
infill_first = 0
|
||||||
|
infill_overlap = 50%
|
||||||
|
infill_speed = 40
|
||||||
|
inherits =
|
||||||
|
interface_shells = 0
|
||||||
|
ironing = 0
|
||||||
|
ironing_flowrate = 15%
|
||||||
|
ironing_spacing = 0.1
|
||||||
|
ironing_speed = 15
|
||||||
|
ironing_type = top
|
||||||
|
layer_height = 0.5
|
||||||
|
max_print_speed = 80
|
||||||
|
max_volumetric_extrusion_rate_slope_negative = 0
|
||||||
|
max_volumetric_extrusion_rate_slope_positive = 0
|
||||||
|
max_volumetric_speed = 0
|
||||||
|
min_bead_width = 85%
|
||||||
|
min_feature_size = 25%
|
||||||
|
min_skirt_length = 0
|
||||||
|
mmu_segmented_region_max_width = 0
|
||||||
|
only_retract_when_crossing_perimeters = 0
|
||||||
|
ooze_prevention = 0
|
||||||
|
overhang_speed_0 = 15
|
||||||
|
overhang_speed_1 = 15
|
||||||
|
overhang_speed_2 = 20
|
||||||
|
overhang_speed_3 = 25
|
||||||
|
overhangs = 1
|
||||||
|
perimeter_acceleration = 1500
|
||||||
|
perimeter_extruder = 1
|
||||||
|
perimeter_extrusion_width = 0
|
||||||
|
perimeter_generator = arachne
|
||||||
|
perimeter_speed = 35
|
||||||
|
perimeters = 2
|
||||||
|
post_process =
|
||||||
|
print_settings_id = 0.5mm Speed2
|
||||||
|
raft_contact_distance = 0.1
|
||||||
|
raft_expansion = 1.5
|
||||||
|
raft_first_layer_density = 90%
|
||||||
|
raft_first_layer_expansion = 3
|
||||||
|
raft_layers = 0
|
||||||
|
resolution = 0
|
||||||
|
seam_position = rear
|
||||||
|
single_extruder_multi_material_priming = 1
|
||||||
|
skirt_distance = 5
|
||||||
|
skirt_height = 1
|
||||||
|
skirts = 0
|
||||||
|
slice_closing_radius = 0.049
|
||||||
|
slicing_mode = regular
|
||||||
|
small_perimeter_speed = 20
|
||||||
|
solid_infill_acceleration = 0
|
||||||
|
solid_infill_below_area = 70
|
||||||
|
solid_infill_every_layers = 0
|
||||||
|
solid_infill_extruder = 1
|
||||||
|
solid_infill_extrusion_width = 0
|
||||||
|
solid_infill_speed = 40
|
||||||
|
spiral_vase = 0
|
||||||
|
staggered_inner_seams = 0
|
||||||
|
standby_temperature_delta = -5
|
||||||
|
support_material = 0
|
||||||
|
support_material_angle = 0
|
||||||
|
support_material_auto = 0
|
||||||
|
support_material_bottom_contact_distance = 0
|
||||||
|
support_material_bottom_interface_layers = -1
|
||||||
|
support_material_buildplate_only = 0
|
||||||
|
support_material_closing_radius = 2
|
||||||
|
support_material_contact_distance = 0.2
|
||||||
|
support_material_enforce_layers = 0
|
||||||
|
support_material_extruder = 0
|
||||||
|
support_material_extrusion_width = 0
|
||||||
|
support_material_interface_contact_loops = 0
|
||||||
|
support_material_interface_extruder = 1
|
||||||
|
support_material_interface_layers = 0
|
||||||
|
support_material_interface_pattern = rectilinear
|
||||||
|
support_material_interface_spacing = 0
|
||||||
|
support_material_interface_speed = 100%
|
||||||
|
support_material_pattern = honeycomb
|
||||||
|
support_material_spacing = 5
|
||||||
|
support_material_speed = 25
|
||||||
|
support_material_style = organic
|
||||||
|
support_material_synchronize_layers = 0
|
||||||
|
support_material_threshold = 0
|
||||||
|
support_material_with_sheath = 0
|
||||||
|
support_material_xy_spacing = 50%
|
||||||
|
support_tree_angle = 40
|
||||||
|
support_tree_angle_slow = 25
|
||||||
|
support_tree_branch_diameter = 2
|
||||||
|
support_tree_branch_diameter_angle = 5
|
||||||
|
support_tree_branch_diameter_double_wall = 3
|
||||||
|
support_tree_branch_distance = 1
|
||||||
|
support_tree_tip_diameter = 0.8
|
||||||
|
support_tree_top_rate = 15%
|
||||||
|
thick_bridges = 1
|
||||||
|
thin_walls = 0
|
||||||
|
threads = 12
|
||||||
|
top_fill_pattern = rectilinear
|
||||||
|
top_infill_extrusion_width = 0
|
||||||
|
top_solid_infill_acceleration = 0
|
||||||
|
top_solid_infill_speed = 25
|
||||||
|
top_solid_layers = 5
|
||||||
|
top_solid_min_thickness = 0
|
||||||
|
travel_acceleration = 0
|
||||||
|
travel_speed = 100
|
||||||
|
travel_speed_z = 0
|
||||||
|
wall_distribution_count = 1
|
||||||
|
wall_transition_angle = 10
|
||||||
|
wall_transition_filter_deviation = 25%
|
||||||
|
wall_transition_length = 100%
|
||||||
|
wipe_tower = 0
|
||||||
|
wipe_tower_bridging = 10
|
||||||
|
wipe_tower_brim_width = 2
|
||||||
|
wipe_tower_cone_angle = 0
|
||||||
|
wipe_tower_extra_spacing = 100%
|
||||||
|
wipe_tower_extruder = 0
|
||||||
|
wipe_tower_no_sparse_layers = 0
|
||||||
|
wipe_tower_rotation_angle = 0
|
||||||
|
wipe_tower_width = 60
|
||||||
|
wipe_tower_x = 180
|
||||||
|
wipe_tower_y = 140
|
||||||
|
xy_size_compensation = 0
|
||||||
|
|
||||||
|
[print:Cocoa Press (1.0mm layerheight)]
|
||||||
|
inherit = *common*
|
||||||
|
avoid_crossing_curled_overhangs = 0
|
||||||
|
avoid_crossing_perimeters = 0
|
||||||
|
avoid_crossing_perimeters_max_detour = 0
|
||||||
|
bottom_fill_pattern = rectilinear
|
||||||
|
bottom_solid_layers = 1
|
||||||
|
bottom_solid_min_thickness = 0
|
||||||
|
bridge_acceleration = 1500
|
||||||
|
bridge_angle = 0
|
||||||
|
bridge_flow_ratio = 1
|
||||||
|
bridge_speed = 20
|
||||||
|
brim_separation = 0
|
||||||
|
brim_type = outer_only
|
||||||
|
brim_width = 0
|
||||||
|
compatible_printers =
|
||||||
|
compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_COCOA_PRESS.*/ and printer_notes=~/.*PRINTER_MATERIAL_PASTE.*/ and nozzle_diameter[0]==1.6
|
||||||
|
complete_objects = 0
|
||||||
|
default_acceleration = 1500
|
||||||
|
dont_support_bridges = 1
|
||||||
|
draft_shield = disabled
|
||||||
|
elefant_foot_compensation = 0
|
||||||
|
enable_dynamic_overhang_speeds = 0
|
||||||
|
external_perimeter_acceleration = 0
|
||||||
|
external_perimeter_extrusion_width = 0
|
||||||
|
external_perimeter_speed = 25
|
||||||
|
external_perimeters_first = 0
|
||||||
|
extra_perimeters = 1
|
||||||
|
extra_perimeters_on_overhangs = 0
|
||||||
|
extruder_clearance_height = 60
|
||||||
|
extruder_clearance_radius = 65
|
||||||
|
extrusion_width = 0
|
||||||
|
fill_angle = 45
|
||||||
|
fill_density = 25%
|
||||||
|
fill_pattern = grid
|
||||||
|
first_layer_acceleration = 1500
|
||||||
|
first_layer_acceleration_over_raft = 0
|
||||||
|
first_layer_extrusion_width = 0
|
||||||
|
first_layer_height = 0.8
|
||||||
|
first_layer_speed = 15
|
||||||
|
first_layer_speed_over_raft = 30
|
||||||
|
fuzzy_skin = none
|
||||||
|
fuzzy_skin_point_dist = 0.8
|
||||||
|
fuzzy_skin_thickness = 0.3
|
||||||
|
gap_fill_enabled = 0
|
||||||
|
gap_fill_speed = 0
|
||||||
|
gcode_comments = 0
|
||||||
|
infill_acceleration = 1500
|
||||||
|
infill_anchor = 600%
|
||||||
|
infill_anchor_max = 50
|
||||||
|
infill_every_layers = 1
|
||||||
|
infill_extruder = 1
|
||||||
|
infill_extrusion_width = 0
|
||||||
|
infill_first = 0
|
||||||
|
infill_overlap = 70%
|
||||||
|
infill_speed = 40
|
||||||
|
inherits =
|
||||||
|
interface_shells = 0
|
||||||
|
ironing = 0
|
||||||
|
ironing_flowrate = 15%
|
||||||
|
ironing_spacing = 0.1
|
||||||
|
ironing_speed = 15
|
||||||
|
ironing_type = top
|
||||||
|
layer_height = 1
|
||||||
|
max_print_speed = 80
|
||||||
|
max_volumetric_extrusion_rate_slope_negative = 0
|
||||||
|
max_volumetric_extrusion_rate_slope_positive = 0
|
||||||
|
max_volumetric_speed = 0
|
||||||
|
min_bead_width = 85%
|
||||||
|
min_feature_size = 25%
|
||||||
|
min_skirt_length = 0
|
||||||
|
mmu_segmented_region_max_width = 0
|
||||||
|
only_retract_when_crossing_perimeters = 0
|
||||||
|
ooze_prevention = 0
|
||||||
|
overhang_speed_0 = 15
|
||||||
|
overhang_speed_1 = 15
|
||||||
|
overhang_speed_2 = 20
|
||||||
|
overhang_speed_3 = 25
|
||||||
|
overhangs = 1
|
||||||
|
perimeter_acceleration = 1500
|
||||||
|
perimeter_extruder = 1
|
||||||
|
perimeter_extrusion_width = 0
|
||||||
|
perimeter_generator = arachne
|
||||||
|
perimeter_speed = 35
|
||||||
|
perimeters = 1
|
||||||
|
post_process =
|
||||||
|
print_settings_id = 0.5mm Speed2
|
||||||
|
raft_contact_distance = 0.1
|
||||||
|
raft_expansion = 1.5
|
||||||
|
raft_first_layer_density = 90%
|
||||||
|
raft_first_layer_expansion = 3
|
||||||
|
raft_layers = 0
|
||||||
|
resolution = 0
|
||||||
|
seam_position = rear
|
||||||
|
single_extruder_multi_material_priming = 1
|
||||||
|
skirt_distance = 5
|
||||||
|
skirt_height = 1
|
||||||
|
skirts = 0
|
||||||
|
slice_closing_radius = 0.049
|
||||||
|
slicing_mode = regular
|
||||||
|
small_perimeter_speed = 20
|
||||||
|
solid_infill_acceleration = 0
|
||||||
|
solid_infill_below_area = 70
|
||||||
|
solid_infill_every_layers = 0
|
||||||
|
solid_infill_extruder = 1
|
||||||
|
solid_infill_extrusion_width = 0
|
||||||
|
solid_infill_speed = 40
|
||||||
|
spiral_vase = 0
|
||||||
|
staggered_inner_seams = 0
|
||||||
|
standby_temperature_delta = -5
|
||||||
|
support_material = 0
|
||||||
|
support_material_angle = 0
|
||||||
|
support_material_auto = 0
|
||||||
|
support_material_bottom_contact_distance = 0
|
||||||
|
support_material_bottom_interface_layers = -1
|
||||||
|
support_material_buildplate_only = 0
|
||||||
|
support_material_closing_radius = 2
|
||||||
|
support_material_contact_distance = 0.2
|
||||||
|
support_material_enforce_layers = 0
|
||||||
|
support_material_extruder = 0
|
||||||
|
support_material_extrusion_width = 0
|
||||||
|
support_material_interface_contact_loops = 0
|
||||||
|
support_material_interface_extruder = 1
|
||||||
|
support_material_interface_layers = 0
|
||||||
|
support_material_interface_pattern = rectilinear
|
||||||
|
support_material_interface_spacing = 0
|
||||||
|
support_material_interface_speed = 100%
|
||||||
|
support_material_pattern = honeycomb
|
||||||
|
support_material_spacing = 5
|
||||||
|
support_material_speed = 25
|
||||||
|
support_material_style = grid
|
||||||
|
support_material_synchronize_layers = 0
|
||||||
|
support_material_threshold = 0
|
||||||
|
support_material_with_sheath = 0
|
||||||
|
support_material_xy_spacing = 50%
|
||||||
|
support_tree_angle = 40
|
||||||
|
support_tree_angle_slow = 25
|
||||||
|
support_tree_branch_diameter = 2
|
||||||
|
support_tree_branch_diameter_angle = 5
|
||||||
|
support_tree_branch_diameter_double_wall = 3
|
||||||
|
support_tree_branch_distance = 1
|
||||||
|
support_tree_tip_diameter = 0.8
|
||||||
|
support_tree_top_rate = 15%
|
||||||
|
thick_bridges = 1
|
||||||
|
thin_walls = 0
|
||||||
|
threads = 12
|
||||||
|
top_fill_pattern = rectilinear
|
||||||
|
top_infill_extrusion_width = 0
|
||||||
|
top_solid_infill_acceleration = 0
|
||||||
|
top_solid_infill_speed = 25
|
||||||
|
top_solid_layers = 3
|
||||||
|
top_solid_min_thickness = 0
|
||||||
|
travel_acceleration = 0
|
||||||
|
travel_speed = 100
|
||||||
|
travel_speed_z = 0
|
||||||
|
wall_distribution_count = 1
|
||||||
|
wall_transition_angle = 10
|
||||||
|
wall_transition_filter_deviation = 25%
|
||||||
|
wall_transition_length = 100%
|
||||||
|
wipe_tower = 0
|
||||||
|
wipe_tower_bridging = 10
|
||||||
|
wipe_tower_brim_width = 2
|
||||||
|
wipe_tower_cone_angle = 0
|
||||||
|
wipe_tower_extra_spacing = 100%
|
||||||
|
wipe_tower_extruder = 0
|
||||||
|
wipe_tower_no_sparse_layers = 0
|
||||||
|
wipe_tower_rotation_angle = 0
|
||||||
|
wipe_tower_width = 60
|
||||||
|
wipe_tower_x = 180
|
||||||
|
wipe_tower_y = 140
|
||||||
|
xy_size_compensation = 0
|
||||||
|
|
||||||
|
[filament:*common*]
|
||||||
|
bed_temperature = 0
|
||||||
|
bridge_fan_speed = 0
|
||||||
|
cooling = 0
|
||||||
|
disable_fan_first_layers = 3
|
||||||
|
enable_dynamic_fan_speeds = 0
|
||||||
|
end_filament_gcode = "; Filament-specific end gcode \n;END gcode for filament\n"
|
||||||
|
extrusion_multiplier = 1
|
||||||
|
fan_always_on = 0
|
||||||
|
fan_below_layer_time = 60
|
||||||
|
filament_colour = #7B3E00
|
||||||
|
filament_cooling_final_speed = 3.4
|
||||||
|
filament_cooling_initial_speed = 2.2
|
||||||
|
filament_cooling_moves = 4
|
||||||
|
filament_cost = 70
|
||||||
|
filament_density = 1.2912
|
||||||
|
filament_deretract_speed = nil
|
||||||
|
filament_diameter = 22.66
|
||||||
|
filament_load_time = 0
|
||||||
|
filament_loading_speed = 28
|
||||||
|
filament_loading_speed_start = 3
|
||||||
|
filament_max_volumetric_speed = 0
|
||||||
|
filament_minimal_purge_on_wipe_tower = 15
|
||||||
|
filament_notes = ""
|
||||||
|
filament_ramming_parameters = "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6"
|
||||||
|
filament_retract_before_travel = nil
|
||||||
|
filament_retract_before_wipe = nil
|
||||||
|
filament_retract_layer_change = nil
|
||||||
|
filament_retract_length = nil
|
||||||
|
filament_retract_lift = nil
|
||||||
|
filament_retract_lift_above = nil
|
||||||
|
filament_retract_lift_below = nil
|
||||||
|
filament_retract_restart_extra = nil
|
||||||
|
filament_retract_speed = nil
|
||||||
|
filament_soluble = 0
|
||||||
|
filament_spool_weight = 0
|
||||||
|
filament_toolchange_delay = 0
|
||||||
|
filament_unload_time = 0
|
||||||
|
filament_unloading_speed = 90
|
||||||
|
filament_unloading_speed_start = 100
|
||||||
|
filament_vendor = Cocoa Press
|
||||||
|
filament_wipe = 1
|
||||||
|
first_layer_bed_temperature = 0
|
||||||
|
first_layer_temperature = 0
|
||||||
|
full_fan_speed_layer = 0
|
||||||
|
idle_temperature = nil
|
||||||
|
max_fan_speed = 100
|
||||||
|
min_fan_speed = 35
|
||||||
|
min_print_speed = 10
|
||||||
|
overhang_fan_speed_0 = 0
|
||||||
|
overhang_fan_speed_1 = 0
|
||||||
|
overhang_fan_speed_2 = 0
|
||||||
|
overhang_fan_speed_3 = 0
|
||||||
|
slowdown_below_layer_time = 5
|
||||||
|
start_filament_gcode = "; Filament gcode\n"
|
||||||
|
|
||||||
|
[filament:Cocoa Press Chocolates]
|
||||||
|
inherits = *common*
|
||||||
|
temperature = 0
|
||||||
|
filament_vendor = Cocoa Press
|
||||||
|
filament_settings_id = "Cocoa Press Chocolate"
|
||||||
|
filament_type = CHOCOLATE
|
||||||
|
compatible_printers =
|
||||||
|
compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_COCOA_PRESS.*/
|
||||||
|
|
||||||
|
[printer:*0.8mm*]
|
||||||
|
printer_variant = 0.8
|
||||||
|
default_print_profile = 0.5
|
||||||
|
autoemit_temperature_commands = 0
|
||||||
|
bed_shape = 0x0,140x0,140x150,0x150
|
||||||
|
before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n\n
|
||||||
|
between_objects_gcode =
|
||||||
|
color_change_gcode = ;G1 E-.05 F900\n;G1 X2.5 Y2.5 F4500 ;Move to the side\nM25 load new chocolate ;pause for user\n;G1 E.06 F900\n;G1 X2.6 Y2.6 F4500
|
||||||
|
cooling_tube_length = 5
|
||||||
|
cooling_tube_retraction = 91.5
|
||||||
|
deretract_speed = 15
|
||||||
|
end_gcode = print_end ;end script from macro\nG91 ; set to relative\nG0 Z15; ; move 15mm down\nG90 ; absolute positioning again\nG0 X70 Y145\nM84
|
||||||
|
extra_loading_move = -2
|
||||||
|
extruder_colour = #FFE3CA
|
||||||
|
extruder_offset = 0x0
|
||||||
|
high_current_on_filament_swap = 0
|
||||||
|
host_type = octoprint
|
||||||
|
layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
|
||||||
|
machine_limits_usage = time_estimate_only
|
||||||
|
machine_max_acceleration_e = 1500
|
||||||
|
machine_max_acceleration_extruding = 1500
|
||||||
|
machine_max_acceleration_retracting = 1500
|
||||||
|
machine_max_acceleration_travel = 1500,1250
|
||||||
|
machine_max_acceleration_x = 1500
|
||||||
|
machine_max_acceleration_y = 1500
|
||||||
|
machine_max_acceleration_z = 500
|
||||||
|
machine_max_feedrate_e = 120
|
||||||
|
machine_max_feedrate_x = 500
|
||||||
|
machine_max_feedrate_y = 500
|
||||||
|
machine_max_feedrate_z = 12
|
||||||
|
machine_max_jerk_e = 2.5
|
||||||
|
machine_max_jerk_x = 10
|
||||||
|
machine_max_jerk_y = 10
|
||||||
|
machine_max_jerk_z = 0.2
|
||||||
|
machine_min_extruding_rate = 0
|
||||||
|
machine_min_travel_rate = 0
|
||||||
|
max_layer_height = 0.8
|
||||||
|
max_print_height = 150
|
||||||
|
min_layer_height = 0.2
|
||||||
|
nozzle_diameter = 0.8
|
||||||
|
parking_pos_retraction = 92
|
||||||
|
pause_print_gcode = ; end pause print
|
||||||
|
print_host =
|
||||||
|
printer_settings_id = cocoa_press_minichef_settings_0_8
|
||||||
|
printer_technology = FFF
|
||||||
|
printer_vendor =
|
||||||
|
printhost_apikey =
|
||||||
|
printhost_cafile =
|
||||||
|
remaining_times = 0
|
||||||
|
retract_before_travel = 3
|
||||||
|
retract_before_wipe = 0%
|
||||||
|
retract_layer_change = 0
|
||||||
|
retract_length = 1
|
||||||
|
retract_length_toolchange = 10
|
||||||
|
retract_lift = 1
|
||||||
|
retract_lift_above = 0
|
||||||
|
retract_lift_below = 0
|
||||||
|
retract_restart_extra = 0
|
||||||
|
retract_restart_extra_toolchange = 0
|
||||||
|
retract_speed = 15
|
||||||
|
silent_mode = 0
|
||||||
|
single_extruder_multi_material = 0
|
||||||
|
start_gcode = G21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\n\nG28 ; home all axes\nM420 S1; turn back on mesh leveling\nG92 E0 ; set extruder pos to zero\n\n; homing + loading mesh\nG29 O V4 ; try to probe mesh, but skip if already done.\n\nG1 Z1.5 F4500\n\n; Purge Line 1\n\nG1 X131.75 Y148\nG1 Z.5\nG1 E1.25 F450\nG1 X8.25 Y148 E.25 F900\n\n; Purge Line 2\n\nG1 X8.25 Y145 F900\nG1 X131.25 Y145 E.10538\nG1 X141.75 Y145
|
||||||
|
template_custom_gcode =
|
||||||
|
thumbnails = 64x64,400x300
|
||||||
|
thumbnails_format = PNG
|
||||||
|
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:*1.6mm*]
|
||||||
|
printer_variant = 1.6
|
||||||
|
autoemit_temperature_commands = 0
|
||||||
|
bed_shape = 0x0,140x0,140x150,0x150
|
||||||
|
before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n\n
|
||||||
|
between_objects_gcode =
|
||||||
|
color_change_gcode = ;G1 E-.05 F900\n;G1 X2.5 Y2.5 F4500 ;Move to the side\nM25 load new chocolate ;pause for user\n;G1 E.06 F900\n;G1 X2.6 Y2.6 F4500
|
||||||
|
cooling_tube_length = 5
|
||||||
|
cooling_tube_retraction = 91.5
|
||||||
|
default_print_profile = 1.0
|
||||||
|
deretract_speed = 15
|
||||||
|
end_gcode = print_end ;end script from macro\nG91 ; set to relative\nG0 Z15; ; move 15mm down\nG90 ; absolute positioning again\nG0 X70 Y145\nM84
|
||||||
|
extra_loading_move = -2
|
||||||
|
extruder_colour = #FFE3CA
|
||||||
|
extruder_offset = 0x0
|
||||||
|
high_current_on_filament_swap = 0
|
||||||
|
host_type = octoprint
|
||||||
|
layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
|
||||||
|
machine_limits_usage = time_estimate_only
|
||||||
|
machine_max_acceleration_e = 1500
|
||||||
|
machine_max_acceleration_extruding = 1500
|
||||||
|
machine_max_acceleration_retracting = 1500
|
||||||
|
machine_max_acceleration_travel = 1500,1250
|
||||||
|
machine_max_acceleration_x = 1500
|
||||||
|
machine_max_acceleration_y = 1500
|
||||||
|
machine_max_acceleration_z = 500
|
||||||
|
machine_max_feedrate_e = 120
|
||||||
|
machine_max_feedrate_x = 500
|
||||||
|
machine_max_feedrate_y = 500
|
||||||
|
machine_max_feedrate_z = 12
|
||||||
|
machine_max_jerk_e = 2.5
|
||||||
|
machine_max_jerk_x = 10
|
||||||
|
machine_max_jerk_y = 10
|
||||||
|
machine_max_jerk_z = 0.2
|
||||||
|
machine_min_extruding_rate = 0
|
||||||
|
machine_min_travel_rate = 0
|
||||||
|
max_layer_height = 1.6
|
||||||
|
max_print_height = 150
|
||||||
|
min_layer_height = 0.2
|
||||||
|
nozzle_diameter = 1.6
|
||||||
|
parking_pos_retraction = 92
|
||||||
|
pause_print_gcode = ; end pause gcode
|
||||||
|
print_host =
|
||||||
|
printer_settings_id = cocoa_press_minichef_settings_1_6
|
||||||
|
printer_technology = FFF
|
||||||
|
printer_vendor =
|
||||||
|
printhost_apikey =
|
||||||
|
printhost_cafile =
|
||||||
|
remaining_times = 0
|
||||||
|
retract_before_travel = 3
|
||||||
|
retract_before_wipe = 0%
|
||||||
|
retract_layer_change = 0
|
||||||
|
retract_length = 1
|
||||||
|
retract_length_toolchange = 10
|
||||||
|
retract_lift = 1
|
||||||
|
retract_lift_above = 0
|
||||||
|
retract_lift_below = 0
|
||||||
|
retract_restart_extra = 0
|
||||||
|
retract_restart_extra_toolchange = 0
|
||||||
|
retract_speed = 15
|
||||||
|
silent_mode = 0
|
||||||
|
single_extruder_multi_material = 0
|
||||||
|
start_gcode = G21 ; set units to millimeters\nG90 ; use absolute coordinates\nM83 ; use relative distances for extrusion\n\nG28 ; home all axes\nM420 S1; turn back on mesh leveling\nG92 E0 ; set extruder pos to zero\n\n; homing loading mesh\nG29 O V4; try to probe mesh, but skip if already done.\n\nG1 Z1.5 F4500\n\n; Purge Line\n\nG1 X5.8 Y 145\nG1 Z1 ; small z-hop to avoid potentially big purge getting caught.\nG1 E1.25 F450\nG1 X134.2 Y145 E.44109 F900
|
||||||
|
template_custom_gcode =
|
||||||
|
thumbnails = 64x64,400x300
|
||||||
|
thumbnails_format = PNG
|
||||||
|
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:Cocoa Press|0.8mm]
|
||||||
|
inherits = *common*; *0.8mm*
|
||||||
|
printer_model = Cocoa_Press
|
||||||
|
|
||||||
|
[printer:Cocoa Press|1.6mm]
|
||||||
|
inherits = *common*; *1.6mm*
|
||||||
|
printer_model = Cocoa_Press
|
||||||
|
|
||||||
|
[printer:*common*]
|
||||||
|
default_filament_profile = "Cocoa Press Chocolates"
|
||||||
|
printer_notes = PRINTER_VENDOR_COCOA_PRESS\nPRINTER_MODEL_MINICHEF\nPRINTER_MATERIAL_PASTE
|
||||||
|
gcode_flavor = marlin2
|
BIN
resources/profiles/CocoaPress/CocoaPress_MiniChef.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
resources/profiles/CocoaPress/minichef_bed.stl
Normal file
39
resources/profiles/CocoaPress/minichef_texture.svg
Normal file
After Width: | Height: | Size: 16 KiB |
@ -1,2 +1,3 @@
|
|||||||
min_slic3r_version = 2.6.0
|
min_slic3r_version = 2.6.0
|
||||||
|
0.0.2 Updated initial layer heights.
|
||||||
0.0.1 Initial version
|
0.0.1 Initial version
|
||||||
|
@ -10,7 +10,7 @@ name = LNL3D
|
|||||||
|
|
||||||
# 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 PrusaSlicer configuration to be downgraded.
|
# This means, the server may force the PrusaSlicer configuration to be downgraded.
|
||||||
config_version = 0.0.1
|
config_version = 0.0.2
|
||||||
|
|
||||||
# Where to get the updates from?
|
# Where to get the updates from?
|
||||||
config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/LNL3D/
|
config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/LNL3D/
|
||||||
@ -282,7 +282,7 @@ top_solid_layers = 4
|
|||||||
perimeters = 4
|
perimeters = 4
|
||||||
support_material_interface_spacing = 0.15
|
support_material_interface_spacing = 0.15
|
||||||
support_material_spacing = 1
|
support_material_spacing = 1
|
||||||
first_layer_height = 0.2
|
first_layer_height = 0.12
|
||||||
extrusion_width = 0.22
|
extrusion_width = 0.22
|
||||||
external_perimeter_extrusion_width = 0.2
|
external_perimeter_extrusion_width = 0.2
|
||||||
first_layer_extrusion_width = 0.2
|
first_layer_extrusion_width = 0.2
|
||||||
@ -296,7 +296,7 @@ support_material_extrusion_width = 0.18
|
|||||||
perimeters = 3
|
perimeters = 3
|
||||||
support_material_interface_spacing = 0.2
|
support_material_interface_spacing = 0.2
|
||||||
support_material_spacing = 1
|
support_material_spacing = 1
|
||||||
first_layer_height = 0.2
|
first_layer_height = 0.24
|
||||||
extrusion_width = 0.44
|
extrusion_width = 0.44
|
||||||
external_perimeter_extrusion_width = 0.42
|
external_perimeter_extrusion_width = 0.42
|
||||||
first_layer_extrusion_width = 0.42
|
first_layer_extrusion_width = 0.42
|
||||||
@ -310,7 +310,7 @@ support_material_extrusion_width = 0.36
|
|||||||
perimeters = 2
|
perimeters = 2
|
||||||
support_material_interface_spacing = 0.3
|
support_material_interface_spacing = 0.3
|
||||||
support_material_spacing = 1.2
|
support_material_spacing = 1.2
|
||||||
first_layer_height = 0.3
|
first_layer_height = 0.36
|
||||||
extrusion_width = 0.66
|
extrusion_width = 0.66
|
||||||
external_perimeter_extrusion_width = 0.63
|
external_perimeter_extrusion_width = 0.63
|
||||||
first_layer_extrusion_width = 0.63
|
first_layer_extrusion_width = 0.63
|
||||||
@ -324,7 +324,7 @@ support_material_extrusion_width = 0.54
|
|||||||
perimeters = 2
|
perimeters = 2
|
||||||
support_material_interface_spacing = 0.3
|
support_material_interface_spacing = 0.3
|
||||||
support_material_spacing = 1.2
|
support_material_spacing = 1.2
|
||||||
first_layer_height = 0.3
|
first_layer_height = 0.48
|
||||||
extrusion_width = 0.88
|
extrusion_width = 0.88
|
||||||
external_perimeter_extrusion_width = 0.85
|
external_perimeter_extrusion_width = 0.85
|
||||||
first_layer_extrusion_width = 0.85
|
first_layer_extrusion_width = 0.85
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
min_slic3r_version = 2.6.2-alpha0
|
min_slic3r_version = 2.6.2-alpha0
|
||||||
|
1.11.0-alpha2 Added MK3.9 and Prusa MINI Input Shaper (alpha). Enabled binary g-code, arc fitting and QOI/PNG for MINI and MINI IS.
|
||||||
1.11.0-alpha1 Updated ramming parameters. Updated start-gcode for XL Multi-Tool. Updated output filename format.
|
1.11.0-alpha1 Updated ramming parameters. Updated start-gcode for XL Multi-Tool. Updated output filename format.
|
||||||
1.11.0-alpha0 Binary g-code, arc fitting, QOI/PNG thumbnails, 90degree XL tower, XL specific filament variants.
|
1.11.0-alpha0 Binary g-code, arc fitting, QOI/PNG thumbnails, 90degree XL tower, XL specific filament variants.
|
||||||
min_slic3r_version = 2.6.0-beta2
|
min_slic3r_version = 2.6.0-beta2
|
||||||
|
1.9.9 Added Original Prusa MK3.9 and Original Prusa MINI/MINI+ Input Shaper (Alpha). FW version notification (5.0.0 final with input shaper). Updated output filename format. Added additional thumbnail resolution.
|
||||||
1.9.8 FW version notification (MK2.5/3 family). Minor update of MK4IS profiles. Updated MK4IS thumbnail.
|
1.9.8 FW version notification (MK2.5/3 family). Minor update of MK4IS profiles. Updated MK4IS thumbnail.
|
||||||
1.9.7 MK4 Input Shaper RC firmware notification.
|
1.9.7 MK4 Input Shaper RC firmware notification.
|
||||||
1.9.6 Added filament profile for Prusament PETG V0.
|
1.9.6 Added filament profile for Prusament PETG V0.
|
||||||
|
BIN
resources/profiles/PrusaResearch/MINIIS_ALPHA_thumbnail.png
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
resources/profiles/PrusaResearch/MK39IS_thumbnail.png
Normal file
After Width: | Height: | Size: 65 KiB |
BIN
resources/profiles/PrusaResearch/MK39_thumbnail.png
Normal file
After Width: | Height: | Size: 64 KiB |
400
resources/profiles/PrusaResearch/miniIS.svg
Normal file
@ -0,0 +1,400 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
id="Layer_1"
|
||||||
|
data-name="Layer 1"
|
||||||
|
width="180.5mm"
|
||||||
|
height="180.6mm"
|
||||||
|
viewBox="0 0 511.7 512"
|
||||||
|
version="1.1">
|
||||||
|
<metadata
|
||||||
|
id="metadata1085">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title>MINI_bed_texture</dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs1083" />
|
||||||
|
<title
|
||||||
|
id="title960">MINI_bed_texture</title>
|
||||||
|
<path
|
||||||
|
d="M510.6,510.9"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-width: 1.5px"
|
||||||
|
id="path962" />
|
||||||
|
<path
|
||||||
|
d="M.4,510.9"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-width: 1.5px"
|
||||||
|
id="path964" />
|
||||||
|
<line
|
||||||
|
x1="511"
|
||||||
|
y1="511.3"
|
||||||
|
x2="511"
|
||||||
|
y2="0.8"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-width: 1.5px"
|
||||||
|
id="line966" />
|
||||||
|
<path
|
||||||
|
d="M.4.4"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-width: 1.5px"
|
||||||
|
id="path968" />
|
||||||
|
<path
|
||||||
|
d="M510.6.4"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-width: 1.5px"
|
||||||
|
id="path970" />
|
||||||
|
<line
|
||||||
|
x1="0.8"
|
||||||
|
y1="0.8"
|
||||||
|
x2="0.8"
|
||||||
|
y2="511.3"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-width: 1.5px"
|
||||||
|
id="line972" />
|
||||||
|
<line
|
||||||
|
x1="0.8"
|
||||||
|
y1="511.3"
|
||||||
|
x2="0.8"
|
||||||
|
y2="0.8"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-width: 1.5px"
|
||||||
|
id="line974" />
|
||||||
|
<line
|
||||||
|
x1="511"
|
||||||
|
y1="0.8"
|
||||||
|
x2="511"
|
||||||
|
y2="511.3"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-width: 1.5px"
|
||||||
|
id="line976" />
|
||||||
|
<line
|
||||||
|
x1="0.8"
|
||||||
|
y1="511.3"
|
||||||
|
x2="511"
|
||||||
|
y2="511.3"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-width: 1.5px"
|
||||||
|
id="line978" />
|
||||||
|
<line
|
||||||
|
x1="0.8"
|
||||||
|
y1="0.8"
|
||||||
|
x2="511"
|
||||||
|
y2="0.8"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-width: 1.5px"
|
||||||
|
id="line980" />
|
||||||
|
<g
|
||||||
|
id="g1042">
|
||||||
|
<g
|
||||||
|
id="g990">
|
||||||
|
<line
|
||||||
|
x1="0.8"
|
||||||
|
y1="383.6"
|
||||||
|
x2="2.9"
|
||||||
|
y2="383.6"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round"
|
||||||
|
id="line982" />
|
||||||
|
<line
|
||||||
|
x1="5"
|
||||||
|
y1="383.6"
|
||||||
|
x2="6.6"
|
||||||
|
y2="383.6"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-dasharray: 0.5694814920425415,2.1355555057525635"
|
||||||
|
id="line984" />
|
||||||
|
<line
|
||||||
|
x1="7.7"
|
||||||
|
y1="383.6"
|
||||||
|
x2="507.8"
|
||||||
|
y2="383.6"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-dasharray: 4.271111011505127,2.1355555057525635,0.5694814920425415,2.1355555057525635"
|
||||||
|
id="line986" />
|
||||||
|
<line
|
||||||
|
x1="508.9"
|
||||||
|
y1="383.6"
|
||||||
|
x2="511"
|
||||||
|
y2="383.6"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round"
|
||||||
|
id="line988" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g1000">
|
||||||
|
<line
|
||||||
|
x1="0.8"
|
||||||
|
y1="256"
|
||||||
|
x2="2.9"
|
||||||
|
y2="256"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round"
|
||||||
|
id="line992" />
|
||||||
|
<line
|
||||||
|
x1="5"
|
||||||
|
y1="256"
|
||||||
|
x2="6.6"
|
||||||
|
y2="256"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-dasharray: 0.5694814920425415,2.1355555057525635"
|
||||||
|
id="line994" />
|
||||||
|
<line
|
||||||
|
x1="7.7"
|
||||||
|
y1="256"
|
||||||
|
x2="507.8"
|
||||||
|
y2="256"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-dasharray: 4.271111011505127,2.1355555057525635,0.5694814920425415,2.1355555057525635"
|
||||||
|
id="line996" />
|
||||||
|
<line
|
||||||
|
x1="508.9"
|
||||||
|
y1="256"
|
||||||
|
x2="511"
|
||||||
|
y2="256"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round"
|
||||||
|
id="line998" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g1010">
|
||||||
|
<line
|
||||||
|
x1="511"
|
||||||
|
y1="128.4"
|
||||||
|
x2="508.9"
|
||||||
|
y2="128.4"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round"
|
||||||
|
id="line1002" />
|
||||||
|
<line
|
||||||
|
x1="506.7"
|
||||||
|
y1="128.4"
|
||||||
|
x2="505.1"
|
||||||
|
y2="128.4"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-dasharray: 0.5694814920425415,2.1355555057525635"
|
||||||
|
id="line1004" />
|
||||||
|
<line
|
||||||
|
x1="504"
|
||||||
|
y1="128.4"
|
||||||
|
x2="3.9"
|
||||||
|
y2="128.4"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-dasharray: 4.271111011505127,2.1355555057525635,0.5694814920425415,2.1355555057525635"
|
||||||
|
id="line1006" />
|
||||||
|
<line
|
||||||
|
x1="2.9"
|
||||||
|
y1="128.4"
|
||||||
|
x2="0.8"
|
||||||
|
y2="128.4"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round"
|
||||||
|
id="line1008" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g1020">
|
||||||
|
<line
|
||||||
|
x1="128.3"
|
||||||
|
y1="511.3"
|
||||||
|
x2="128.3"
|
||||||
|
y2="509.1"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round"
|
||||||
|
id="line1012" />
|
||||||
|
<line
|
||||||
|
x1="128.3"
|
||||||
|
y1="507"
|
||||||
|
x2="128.3"
|
||||||
|
y2="505.4"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-dasharray: 0.569789707660675,2.1367111206054688"
|
||||||
|
id="line1014" />
|
||||||
|
<line
|
||||||
|
x1="128.3"
|
||||||
|
y1="504.3"
|
||||||
|
x2="128.3"
|
||||||
|
y2="3.9"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-dasharray: 4.2734222412109375,2.1367111206054688,0.569789707660675,2.1367111206054688"
|
||||||
|
id="line1016" />
|
||||||
|
<line
|
||||||
|
x1="128.3"
|
||||||
|
y1="2.9"
|
||||||
|
x2="128.3"
|
||||||
|
y2="0.8"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round"
|
||||||
|
id="line1018" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g1030">
|
||||||
|
<line
|
||||||
|
x1="255.9"
|
||||||
|
y1="0.8"
|
||||||
|
x2="255.9"
|
||||||
|
y2="2.9"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round"
|
||||||
|
id="line1022" />
|
||||||
|
<line
|
||||||
|
x1="255.9"
|
||||||
|
y1="5"
|
||||||
|
x2="255.9"
|
||||||
|
y2="6.7"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-dasharray: 0.569789707660675,2.1367111206054688"
|
||||||
|
id="line1024" />
|
||||||
|
<line
|
||||||
|
x1="255.9"
|
||||||
|
y1="7.7"
|
||||||
|
x2="255.9"
|
||||||
|
y2="508.1"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-dasharray: 4.2734222412109375,2.1367111206054688,0.569789707660675,2.1367111206054688"
|
||||||
|
id="line1026" />
|
||||||
|
<line
|
||||||
|
x1="255.9"
|
||||||
|
y1="509.1"
|
||||||
|
x2="255.9"
|
||||||
|
y2="511.3"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round"
|
||||||
|
id="line1028" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g1040">
|
||||||
|
<line
|
||||||
|
x1="383.4"
|
||||||
|
y1="484.8"
|
||||||
|
x2="383.4"
|
||||||
|
y2="482.6"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round"
|
||||||
|
id="line1032" />
|
||||||
|
<line
|
||||||
|
x1="383.4"
|
||||||
|
y1="480.5"
|
||||||
|
x2="383.4"
|
||||||
|
y2="478.9"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-dasharray: 0.5708136558532715,2.1405510902404785"
|
||||||
|
id="line1034" />
|
||||||
|
<line
|
||||||
|
x1="383.4"
|
||||||
|
y1="477.8"
|
||||||
|
x2="383.4"
|
||||||
|
y2="3.9"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round;stroke-dasharray: 4.281102180480957,2.1405510902404785,0.5708136558532715,2.1405510902404785"
|
||||||
|
id="line1036" />
|
||||||
|
<line
|
||||||
|
x1="383.4"
|
||||||
|
y1="2.9"
|
||||||
|
x2="383.4"
|
||||||
|
y2="0.8"
|
||||||
|
style="fill: none;stroke: #fff;stroke-linecap: round;stroke-linejoin: round"
|
||||||
|
id="line1038" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g1078">
|
||||||
|
<path
|
||||||
|
d="M277.3,489.1c4.6,0,7.4,2.8,7.4,8.1s-2.9,8.1-7.4,8.1-7.4-2.9-7.4-8.1S272.9,489.1,277.3,489.1Zm3.7,8.1c0-3.8-1.5-5.7-3.7-5.7s-3.8,1.9-3.8,5.7,1.3,5.6,3.8,5.6S281,500.9,281,497.2Z"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: #fff"
|
||||||
|
id="path1044" />
|
||||||
|
<path
|
||||||
|
d="M293.1,499h-2.5v6h-3.3V489.3h6.1a7.3,7.3,0,0,1,3.2.6,4.1,4.1,0,0,1,2.6,4,4.4,4.4,0,0,1-3.1,4.3h0l3.5,6.8H296Zm-.1-2.4c1.5,0,2.7-.7,2.7-2.5a2.4,2.4,0,0,0-2.7-2.5h-2.4v5Z"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: #fff"
|
||||||
|
id="path1046" />
|
||||||
|
<path
|
||||||
|
d="M302,489.3h3.4V505H302Z"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: #fff"
|
||||||
|
id="path1048" />
|
||||||
|
<path
|
||||||
|
d="M311.6,497.2c0,4,1.4,5.6,3.8,5.6s3.4-1.3,3.6-3.5V499h-3.7v-2.4h6.8V505h-2.6v-2.2h-.1a5,5,0,0,1-4.6,2.5c-4.4,0-6.8-3.1-6.8-7.9s3-8.3,7.4-8.3,6.1,1.7,6.4,4.9h-3.4a2.8,2.8,0,0,0-3-2.5C313,491.5,311.6,493.5,311.6,497.2Z"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: #fff"
|
||||||
|
id="path1050" />
|
||||||
|
<path
|
||||||
|
d="M325.1,489.3h3.4V505h-3.4Z"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: #fff"
|
||||||
|
id="path1052" />
|
||||||
|
<path
|
||||||
|
d="M331.7,489.3h3.7l5,8.5a16.8,16.8,0,0,1,1.2,2.3h0V489.3h3.1V505h-3.5l-5.3-8.7a12.8,12.8,0,0,1-1.1-2.4h-.1V505h-3Z"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: #fff"
|
||||||
|
id="path1054" />
|
||||||
|
<path
|
||||||
|
d="M356.8,501.5H351l-1.1,3.5h-3.2l5.4-15.7h3.8l5.6,15.7h-3.6Zm-3.5-7.1-1.5,4.6H356l-1.5-4.5c-.4-1.4-.6-2.3-.6-2.3h0A15.3,15.3,0,0,1,353.3,494.4Z"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: #fff"
|
||||||
|
id="path1056" />
|
||||||
|
<path
|
||||||
|
d="M363.4,489.3h3.4v13h6.8V505H363.4Z"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: #fff"
|
||||||
|
id="path1058" />
|
||||||
|
<path
|
||||||
|
d="M384,499.6V505h-3.4V489.3h5.5c3.4,0,6,1.4,6,5s-2.8,5.3-6.3,5.3Zm2-2.5a2.5,2.5,0,0,0,2.8-2.7c0-1.9-1.1-2.7-2.8-2.7h-2v5.4Z"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: #fff"
|
||||||
|
id="path1060" />
|
||||||
|
<path
|
||||||
|
d="M400.1,499h-2.4v6h-3.4V489.3h6.1a7.3,7.3,0,0,1,3.2.6,3.9,3.9,0,0,1,2.6,4,4.5,4.5,0,0,1-3,4.3h0l3.5,6.8H403Zm-.1-2.4c1.5,0,2.8-.7,2.8-2.5a2.4,2.4,0,0,0-2.7-2.5h-2.4v5Z"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: #fff"
|
||||||
|
id="path1062" />
|
||||||
|
<path
|
||||||
|
d="M408.7,489.3H412v9.1a5.6,5.6,0,0,0,.6,3.2,3.6,3.6,0,0,0,5,0c.6-.8.5-2.1.5-3.2v-9.1h3.3v10.2c0,3.9-2.5,5.8-6.4,5.8s-6.3-1.8-6.3-5.8Z"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: #fff"
|
||||||
|
id="path1064" />
|
||||||
|
<path
|
||||||
|
d="M432.4,493.5a2,2,0,0,0-2.3-2c-1.5,0-2.4.8-2.4,1.9s.6,1.7,2.1,1.9l2.4.5c2.8.5,4.1,2,4.1,4.3s-2.3,5.2-6.3,5.2-6.1-1.9-6.2-4.8h3.5a2.5,2.5,0,0,0,2.8,2.3c1.9,0,2.7-.9,2.7-2.1s-.5-1.7-2.2-2l-2.3-.4c-2.4-.5-4.1-1.9-4.1-4.4s2.2-4.8,5.9-4.8,5.7,2,5.8,4.4Z"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: #fff"
|
||||||
|
id="path1066" />
|
||||||
|
<path
|
||||||
|
d="M447.4,501.5h-5.7l-1.2,3.5h-3.2l5.5-15.7h3.7l5.6,15.7h-3.5Zm-3.5-7.1-1.4,4.6h4.1l-1.4-4.5a11.3,11.3,0,0,1-.6-2.3h-.1A15.3,15.3,0,0,1,443.9,494.4Z"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: #fff"
|
||||||
|
id="path1068" />
|
||||||
|
<path
|
||||||
|
d="M458.7,489.3h4.9l2.8,8.4a15.7,15.7,0,0,1,.7,2.3h0l.7-2.3,2.8-8.4h4.9V505h-3.3V492.7h-.1a26.9,26.9,0,0,1-1,3.3l-2.9,9h-2.5l-2.9-9a26.9,26.9,0,0,1-1-3.3h0V505h-3.1Z"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: #fff"
|
||||||
|
id="path1070" />
|
||||||
|
<path
|
||||||
|
d="M478.6,489.3H482V505h-3.4Z"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: #fff"
|
||||||
|
id="path1072" />
|
||||||
|
<path
|
||||||
|
d="M485.2,489.3h3.7l5,8.5a16.8,16.8,0,0,1,1.2,2.3h0V489.3h3.1V505h-3.5l-5.3-8.7a12.8,12.8,0,0,1-1.1-2.4h-.1V505h-3Z"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: #fff"
|
||||||
|
id="path1074" />
|
||||||
|
<path
|
||||||
|
d="M501.3,489.3h3.4V505h-3.4Z"
|
||||||
|
transform="translate(0.4 0.4)"
|
||||||
|
style="fill: #fff"
|
||||||
|
id="path1076" />
|
||||||
|
</g>
|
||||||
|
<rect
|
||||||
|
x="270.34909"
|
||||||
|
y="469.54761"
|
||||||
|
width="41.180065"
|
||||||
|
height="15.751938"
|
||||||
|
style="fill:#ff3c00;stroke-width:0.750092"
|
||||||
|
id="rect1336" />
|
||||||
|
<g
|
||||||
|
id="g1348"
|
||||||
|
transform="matrix(0.75009226,0,0,0.75009226,-18.88648,72.823744)">
|
||||||
|
<path
|
||||||
|
d="m 401.3,545.4 c 0,0.2 0,0.4 -0.2,0.4 h -2 c -0.2,0 -0.4,0 -0.4,-0.3 l -0.4,-1.7 h -3.2 l -0.4,1.7 c 0,0.2 -0.2,0.3 -0.4,0.3 h -2 c -0.2,0 -0.3,-0.1 -0.2,-0.4 l 3.3,-11.9 c 0,-0.2 0.2,-0.3 0.4,-0.3 h 1.7 c 0.2,0 0.3,0 0.4,0.3 l 3.3,11.9 z m -4.5,-9.2 -0.2,1.2 -0.9,4.2 h 2.2 l -0.9,-4.2 z"
|
||||||
|
style="fill:#ffffff"
|
||||||
|
id="path1338" />
|
||||||
|
<path
|
||||||
|
d="m 402.5,532.1 c 0,-0.2 0.1,-0.4 0.3,-0.4 h 1.8 c 0.2,0 0.3,0.1 0.3,0.4 v 13.3 c 0,0.2 0,0.4 -0.3,0.4 h -1.8 c -0.2,0 -0.3,-0.1 -0.3,-0.4 z"
|
||||||
|
style="fill:#ffffff"
|
||||||
|
id="path1340" />
|
||||||
|
<path
|
||||||
|
d="m 415,541.9 c 0,2.3 -1.4,4.1 -3.7,4.1 -2.3,0 -1.4,-0.5 -1.8,-1.1 v 3.9 c 0,0.2 -0.2,0.4 -0.4,0.4 h -1.7 c -0.2,0 -0.3,-0.1 -0.3,-0.4 v -13.5 c 0,-0.2 0.1,-0.4 0.3,-0.4 h 1.3 c 0.2,0 0.4,0.1 0.4,0.4 l 0.2,0.9 c 0.4,-0.8 1.1,-1.5 2.1,-1.5 2.2,0 3.6,1.9 3.6,4.1 z m -2.5,-3.2 c 0,-0.9 -0.6,-1.7 -1.5,-1.7 -0.9,0 -1.4,0.8 -1.5,1.8 v 3 c 0,1 0.6,1.9 1.5,1.9 0.9,0 1.5,-0.8 1.5,-1.7 z"
|
||||||
|
style="fill:#ffffff"
|
||||||
|
id="path1342" />
|
||||||
|
<path
|
||||||
|
d="m 422,538.6 c 0,-0.8 -0.6,-1.6 -1.5,-1.6 -0.9,0 -1.5,0.9 -1.5,1.6 v 6.8 c 0,0.2 -0.3,0.4 -0.5,0.4 h -1.7 c -0.2,0 -0.3,-0.1 -0.3,-0.4 v -13.3 c 0,-0.2 0.1,-0.4 0.3,-0.4 h 1.8 c 0.2,0 0.3,0 0.3,0.3 v 3.9 c 0.5,-0.8 1.2,-1.3 2.2,-1.3 1.9,0 3.3,1.3 3.3,4 v 6.7 c 0,0.2 -0.1,0.4 -0.3,0.4 h -1.8 c -0.2,0 -0.3,-0.1 -0.3,-0.4 v -6.8 z"
|
||||||
|
style="fill:#ffffff"
|
||||||
|
id="path1344" />
|
||||||
|
<path
|
||||||
|
d="m 426,538.8 c 0,-2.2 1.5,-4.1 3.7,-4.1 2.2,0 1.6,0.6 2,1.4 v -0.8 c 0.2,-0.2 0.3,-0.4 0.6,-0.4 h 1.3 c 0.2,0 0.3,0.1 0.3,0.4 v 10.1 c 0,0.2 -0.1,0.4 -0.3,0.4 h -1.3 c -0.2,0 -0.4,-0.1 -0.4,-0.4 v -0.9 c -0.5,0.8 -1.1,1.4 -2.2,1.4 -2.2,0 -3.7,-1.8 -3.7,-4.1 v -3.1 z m 2.5,3.2 c 0,0.9 0.6,1.7 1.5,1.7 0.9,0 1.4,-0.8 1.5,-1.8 v -3.1 c 0,-1 -0.6,-1.8 -1.5,-1.8 -0.9,0 -1.5,0.8 -1.5,1.7 z"
|
||||||
|
style="fill:#ffffff"
|
||||||
|
id="path1346" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 14 KiB |
103
resources/profiles/PrusaResearch/mk39.svg
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg id="svg3128" xmlns="http://www.w3.org/2000/svg" width="710.1" height="596.7" viewBox="0 0 710.1 596.7">
|
||||||
|
<line id="line2794" x1=".7" y1=".7" x2=".7" y2="596" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.4px;"/>
|
||||||
|
<line id="line2796" x1="142.4" y1=".7" x2="142.4" y2="595.6" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.4px;"/>
|
||||||
|
<line id="line2798" x1="284.2" y1=".7" x2="284.2" y2="595.6" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.4px;"/>
|
||||||
|
<line id="line2800" x1="709.4" y1="596" x2="709.4" y2=".7" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.4px;"/>
|
||||||
|
<line id="line2802" x1="1.2" y1="581.8" x2="709.4" y2="581.8" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.4px;"/>
|
||||||
|
<line id="line2804" x1=".7" y1="596" x2="709.4" y2="596" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.4px;"/>
|
||||||
|
<line id="line2806" x1="1.2" y1="440.1" x2="709.4" y2="440.1" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.4px;"/>
|
||||||
|
<line id="line2808" x1="1.2" y1="298.4" x2="709.4" y2="298.4" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.4px;"/>
|
||||||
|
<line id="line2810" x1="1.2" y1="156.6" x2="709.4" y2="156.6" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.4px;"/>
|
||||||
|
<line id="line2812" x1="1.2" y1="14.9" x2="709.4" y2="14.9" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.4px;"/>
|
||||||
|
<line id="line2814" x1="709.4" y1=".7" x2=".7" y2=".7" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.4px;"/>
|
||||||
|
<line id="line2816" x1="425.9" y1=".7" x2="425.9" y2="499.4" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.4px;"/>
|
||||||
|
<line id="line2818" x1="425.9" y1="522.6" x2="425.9" y2="595.7" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.4px;"/>
|
||||||
|
<line id="line2820" x1="567.6" y1=".7" x2="567.6" y2="499.4" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.4px;"/>
|
||||||
|
<line id="line2822" x1="567.6" y1="522.5" x2="567.6" y2="527.7" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.4px;"/>
|
||||||
|
<line id="line2824" x1="567.6" y1="548.6" x2="567.6" y2="595.4" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.4px;"/>
|
||||||
|
<line id="line2826" x1="85.8" y1=".7" x2="85.8" y2="595.9" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2828" x1="114.1" y1=".7" x2="114.1" y2="595.9" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2830" x1="170.8" y1=".7" x2="170.8" y2="595.9" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2832" x1="199.1" y1=".7" x2="199.1" y2="595.9" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2834" x1="227.5" y1=".7" x2="227.5" y2="595.9" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2836" x1="255.8" y1=".7" x2="255.8" y2="595.9" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2838" x1="312.5" y1=".7" x2="312.5" y2="595.9" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2840" x1="340.9" y1=".7" x2="340.9" y2="595.9" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2842" x1="681" y1=".7" x2="681" y2="595.9" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2844" x1="29.1" y1=".7" x2="29.1" y2="595.9" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2846" x1="57.4" y1=".7" x2="57.4" y2="595.9" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2848" x1="1.5" y1="468.4" x2="709.4" y2="468.4" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2850" x1="1.5" y1="496.8" x2="709.4" y2="496.8" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2852" x1="1.5" y1="525.1" x2="709.4" y2="525.1" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2854" x1="1.5" y1="553.5" x2="709.4" y2="553.5" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2856" x1="1.5" y1="411.7" x2="709.4" y2="411.7" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2858" x1="1.5" y1="383.4" x2="709.4" y2="383.4" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2860" x1="1.5" y1="355" x2="709.4" y2="355" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2862" x1="1.5" y1="326.7" x2="709.4" y2="326.7" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2864" x1="1.5" y1="270" x2="709.4" y2="270" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2866" x1="1.5" y1="241.7" x2="709.4" y2="241.7" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2868" x1="1.5" y1="213.3" x2="709.4" y2="213.3" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2870" x1="1.5" y1="185" x2="709.4" y2="185" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2872" x1="1.5" y1="128.3" x2="709.4" y2="128.3" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2874" x1="1.5" y1="99.9" x2="709.4" y2="99.9" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2876" x1="1.5" y1="71.6" x2="709.4" y2="71.6" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2878" x1="1.5" y1="43.2" x2="709.4" y2="43.2" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2880" x1="369.2" y1=".7" x2="369.2" y2="522.6" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2882" x1="369.2" y1="522.6" x2="369.2" y2="595.7" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2884" x1="397.6" y1=".7" x2="397.6" y2="499.4" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2886" x1="397.5" y1="522.6" x2="397.5" y2="595.7" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2888" x1="454.2" y1=".7" x2="454.2" y2="499.4" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2890" x1="454.3" y1="522.6" x2="454.3" y2="595.6" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2892" x1="482.6" y1=".7" x2="482.6" y2="499.4" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2894" x1="482.6" y1="522.6" x2="482.6" y2="595.6" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2896" x1="510.9" y1=".7" x2="510.9" y2="499.4" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2898" x1="510.9" y1="522.6" x2="510.9" y2="595.6" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2900" x1="539.3" y1=".7" x2="539.3" y2="499.4" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2902" x1="539.3" y1="522.6" x2="539.3" y2="595.6" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2904" x1="596" y1=".7" x2="596" y2="499.4" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2906" x1="624.3" y1=".7" x2="624.3" y2="499.4" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2908" x1="652.7" y1=".7" x2="652.7" y2="499.4" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2910" x1="652.7" y1="522.5" x2="652.7" y2="527.7" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2912" x1="652.6" y1="548.4" x2="652.6" y2="596" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2914" x1="624.3" y1="522.5" x2="624.3" y2="527.7" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2916" x1="624.3" y1="548.4" x2="624.3" y2="596" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2918" x1="596" y1="522.5" x2="596" y2="527.7" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<line id="line2920" x1="596" y1="548.4" x2="596" y2="596" style="fill: none; stroke: #fff; stroke-linecap: round; stroke-linejoin: round; stroke-width: .4px;"/>
|
||||||
|
<path id="path3098" d="m548.6,532.1h2.1v4.8h0c.1-.2.3-.4.5-.6.2-.2.4-.3.7-.5.2-.1.5-.2.8-.3.3,0,.5-.1.8,0,.7,0,1.3.1,1.9.4.5.2,1,.6,1.4,1.1.4.5.6,1,.8,1.6.2.6.3,1.3.3,1.9,0,.6,0,1.2-.2,1.8-.2.6-.4,1.1-.7,1.6-.7,1-1.8,1.5-3,1.5-.3,0-.6,0-1,0-.3,0-.6-.1-.9-.2-.3-.1-.5-.3-.8-.5-.2-.2-.4-.5-.6-.8h0v1.3h-2v-12.9Zm7.2,8.2c0-.4,0-.8-.2-1.2-.1-.4-.3-.7-.5-1-.2-.3-.5-.6-.8-.7-.3-.2-.7-.3-1.1-.3-.8,0-1.5.3-2,.9-.5.7-.7,1.6-.7,2.4,0,.4,0,.9.2,1.3.1.4.3.7.5,1,.2.3.5.5.8.7.3.2.7.3,1.1.2.4,0,.8,0,1.2-.3.3-.2.6-.4.8-.7.2-.3.4-.7.5-1,0-.4.1-.8.1-1.2Z" style="fill: #fff;"/>
|
||||||
|
<path id="path3100" d="m558.5,535.6h2.2l2.4,7h0l2.4-7h2.1l-3.6,9.8c-.2.4-.3.8-.5,1.2-.2.4-.4.7-.6,1-.2.3-.5.5-.9.7-.4.2-.9.3-1.3.3-.5,0-1,0-1.4-.1v-1.7h.5c.2,0,.3,0,.5,0,.2,0,.4,0,.6,0,.1,0,.3-.1.4-.3.1-.1.2-.3.3-.4,0-.2.1-.4.2-.5l.2-.7-3.5-9.2Z" style="fill: #fff;"/>
|
||||||
|
<path id="path3102" d="m581.1,540.8c0,.5,0,1.1-.1,1.6,0,.5-.3,1-.6,1.4-.3.4-.8.8-1.3,1-.7.3-1.5.4-2.2.4-.6,0-1.2,0-1.7-.3-.5-.2-.9-.5-1.2-.9-.3-.4-.6-.8-.7-1.3-.1-.5-.2-1.1-.2-1.6v-.7h2.2v.7c0,.6,0,1.2.4,1.7.3.4.9.7,1.4.6.3,0,.6,0,.9-.2.2-.1.4-.3.6-.5.1-.2.2-.5.3-.8,0-.4,0-.7,0-1.1v-8.8h2.2v8.7Z" style="fill: #fff;"/>
|
||||||
|
<path id="path3104" d="m587.8,545.1c-.7,0-1.4-.1-2-.4-.6-.2-1.1-.6-1.5-1-.4-.4-.7-1-.9-1.5-.2-.6-.3-1.3-.3-2,0-.7,0-1.4.3-2,.2-.6.5-1.1.9-1.5.4-.4.9-.8,1.5-1,1.3-.5,2.7-.5,4,0,.6.2,1.1.6,1.5,1,.4.4.7,1,.9,1.5.2.6.3,1.3.3,2,0,.7,0,1.4-.3,2-.2.6-.5,1.1-.9,1.5-.4.4-.9.8-1.5,1-.6.3-1.3.4-2,.4Zm0-1.6c.4,0,.8,0,1.2-.3.3-.2.6-.4.8-.8.2-.3.4-.7.5-1.1.1-.4.2-.8.2-1.2,0-.4,0-.8-.2-1.2,0-.4-.3-.7-.5-1-.2-.3-.5-.6-.8-.8-.7-.4-1.6-.4-2.4,0-.3.2-.6.4-.8.8-.2.3-.4.6-.5,1,0,.4-.1.8-.2,1.2,0,.4,0,.8.2,1.2,0,.4.3.7.5,1.1.2.3.5.6.8.8.4.2.8.3,1.2.3h0Z" style="fill: #fff;"/>
|
||||||
|
<path id="path3106" d="m595.7,541.9c0,.5.3,1,.7,1.3.4.2.9.4,1.4.4.2,0,.4,0,.7,0,.2,0,.5,0,.7-.2.2,0,.4-.2.5-.4.3-.4.2-.9,0-1.3-.2-.2-.4-.3-.7-.4-.3-.1-.7-.2-1-.3l-1.1-.2c-.4,0-.7-.2-1.1-.3-.4-.1-.7-.3-1-.5-.3-.2-.5-.5-.6-.9-.2-.4-.3-.8-.2-1.2,0-.5.1-.9.4-1.3.2-.3.6-.6.9-.8.4-.2.8-.4,1.3-.4.4,0,.9-.1,1.3-.1.5,0,.9,0,1.4.2.4,0,.8.3,1.2.5.4.2.7.5.9.9.2.4.4.9.4,1.3h-2.1c0-.4-.3-.8-.7-1-.4-.2-.8-.3-1.2-.2-.2,0-.3,0-.5,0-.2,0-.4,0-.6.1-.2,0-.3.2-.4.3-.1.1-.2.3-.2.5,0,.2,0,.5.3.6.2.2.4.3.7.4.3.1.7.2,1,.3l1.1.2c.4,0,.7.2,1.1.3.4.1.7.3,1,.5.3.2.5.5.7.8.2.4.3.8.3,1.2,0,.5-.1,1-.4,1.4-.3.4-.6.7-1,.9-.4.2-.9.4-1.3.5-.5.1-1,.2-1.5.2-.5,0-1.1,0-1.6-.2-.5-.1-.9-.3-1.3-.6-.4-.3-.7-.6-.9-1-.2-.4-.3-.9-.3-1.4h2Z" style="fill: #fff;"/>
|
||||||
|
<path id="path3108" d="m605.1,540.8c0,.3,0,.7.2,1,0,.3.3.6.5.9.2.3.5.5.8.6.4.2.7.2,1.1.2.5,0,1.1,0,1.5-.3.4-.3.7-.7.8-1.2h1.9c0,.5-.3.9-.6,1.3-.3.4-.6.7-1,1-.4.3-.8.5-1.2.6-.5.1-1,.2-1.5.2-.7,0-1.3-.1-1.9-.4-.5-.2-1-.6-1.4-1-.4-.4-.7-1-.9-1.5-.2-.6-.3-1.3-.3-2,0-.6.1-1.3.3-1.9.2-.6.5-1.1.9-1.6.8-1,2-1.5,3.3-1.5.7,0,1.4.1,2,.5.6.3,1.1.7,1.5,1.2.4.5.7,1.1.8,1.7.2.7.2,1.3.1,2h-6.9Zm4.8-1.3c0-.3,0-.6-.2-.9-.1-.3-.3-.6-.5-.8-.2-.2-.4-.4-.7-.5-.3-.1-.6-.2-.9-.2-.3,0-.7,0-1,.2-.3.1-.5.3-.8.5-.2.2-.4.5-.5.8-.1.3-.2.7-.2,1h4.8Z" style="fill: #fff;"/>
|
||||||
|
<path id="path3110" d="m612.6,535.6h1.5v-.8c0-.5,0-1,.2-1.4.1-.3.3-.6.6-.8.2-.2.5-.3.8-.4.3,0,.7-.1,1,0,.5,0,.9,0,1.4,0v1.6c-.1,0-.3,0-.4,0h-.5c-.3,0-.5,0-.7.2-.2.2-.3.5-.3.8v1h1.7v1.5h-1.7v7.8h-2v-7.8h-1.5v-1.5Z" style="fill: #fff;"/>
|
||||||
|
<path id="path3112" d="m624.5,532.1h5.7c.8,0,1.5.1,2.2.4.5.2,1,.6,1.3,1,.3.4.5.8.6,1.3.1.4.2.9.2,1.3,0,.4,0,.9-.2,1.3-.1.5-.3.9-.6,1.3-.4.4-.8.8-1.3,1-.7.3-1.5.4-2.2.4h-3.4v4.9h-2.2v-12.9Zm2.2,6.1h3.3c.3,0,.5,0,.8-.1.3,0,.5-.2.7-.3.2-.2.4-.4.5-.7.1-.3.2-.7.2-1,0-.3,0-.7-.2-1-.2-.5-.7-.9-1.2-1-.3,0-.6,0-.8,0h-3.3v4.2Z" style="fill: #fff;"/>
|
||||||
|
<path id="path3114" d="m636.2,535.6h1.9v1.8h0c0-.3.2-.5.4-.7.2-.2.4-.5.6-.7.2-.2.5-.4.8-.5.3-.1.6-.2.9-.2h.8v2h-.4c-.1,0-.3,0-.5,0-.7,0-1.3.3-1.8.8-.2.3-.4.6-.5,1-.1.4-.2.9-.2,1.4v4.4h-2v-9.3Z" style="fill: #fff;"/>
|
||||||
|
<path id="path3116" d="m650.7,544.9h-2v-1.3h0c-.3.5-.7.9-1.1,1.1-.5.3-1,.4-1.5.4-1,0-1.9-.2-2.7-.9-.6-.8-.9-1.8-.8-2.7v-5.9h2v5.7c0,.6.1,1.2.5,1.7.3.3.8.5,1.3.5.4,0,.7,0,1.1-.2.3-.1.5-.3.7-.5.2-.2.3-.5.4-.8,0-.3.1-.7.1-1v-5.4h2v9.3Z" style="fill: #fff;"/>
|
||||||
|
<path id="path3118" d="m654.4,541.9c0,.5.3,1,.7,1.2.4.2.9.4,1.4.4.2,0,.4,0,.7,0,.2,0,.5,0,.7-.2.2,0,.4-.2.5-.4.1-.2.2-.4.2-.6,0-.2-.1-.5-.3-.7-.2-.2-.4-.3-.7-.4-.3-.1-.7-.2-1-.3l-1.1-.2c-.4,0-.7-.2-1.1-.3-.4-.1-.7-.3-1-.5-.3-.2-.5-.5-.7-.8-.2-.4-.3-.8-.3-1.2,0-.5.1-.9.4-1.3.2-.3.6-.6.9-.8.4-.2.8-.4,1.3-.4.4,0,.9-.1,1.3-.1.5,0,.9,0,1.4.2.4.1.8.3,1.2.5.4.2.7.5.9.9.2.4.4.9.4,1.3h-2.1c0-.4-.3-.8-.7-1-.4-.2-.8-.3-1.2-.2-.2,0-.3,0-.5,0-.2,0-.4,0-.5.1-.2,0-.3.2-.4.3-.1.1-.2.3-.2.5,0,.2,0,.5.3.6.2.2.4.3.7.4.3.1.7.2,1,.3l1.1.2c.4,0,.7.2,1.1.3.4.1.7.3,1,.5.3.2.5.5.7.8.2.4.3.8.3,1.2,0,.5-.1,1-.4,1.4-.3.4-.6.7-1,.9-.4.2-.9.4-1.3.5-.5.1-1,.2-1.5.2-.6,0-1.1,0-1.6-.2-.5-.1-.9-.3-1.3-.6-.4-.3-.7-.6-.9-1-.2-.4-.3-.9-.3-1.4h2.1Z" style="fill: #fff;"/>
|
||||||
|
<path id="path3120" d="m670,542.8c0,.2,0,.4,0,.5,0,.1.2.2.4.2h.5v1.4h-.3c0,0-.3.2-.3.2h-.4c-.1,0-.2,0-.3,0-.3,0-.7,0-1-.2-.3-.2-.5-.5-.5-.9-.4.4-.9.7-1.5.9-.6.2-1.1.3-1.7.3-.4,0-.8,0-1.2-.2-.4-.1-.7-.3-1-.5-.3-.2-.5-.5-.7-.8-.2-.4-.3-.8-.3-1.2,0-.5,0-1,.3-1.4.2-.3.5-.6.8-.8.4-.2.7-.4,1.2-.4.4,0,.9-.2,1.3-.2.3,0,.7-.1,1.1-.2.3,0,.6,0,.9-.2.2,0,.4-.2.6-.3.2-.2.2-.4.2-.7,0-.2,0-.5-.2-.7-.1-.2-.3-.3-.5-.4-.2,0-.4-.2-.6-.2-.2,0-.4,0-.7,0-.5,0-1,.1-1.4.4-.4.3-.6.7-.6,1.1h-2c0-.5.2-1,.4-1.5.3-.4.6-.7,1-1,.4-.2.9-.4,1.3-.5.5-.1,1-.2,1.5-.2.5,0,.9,0,1.3.2.4,0,.8.2,1.2.5.3.2.6.5.8.8.2.4.3.8.3,1.2v4.8Zm-2.1-2.6c-.3.2-.7.3-1.2.4-.5,0-.9.1-1.4.2-.2,0-.4,0-.6.2-.2,0-.4.1-.5.3-.2.1-.3.3-.4.5,0,.2-.1.4-.1.7,0,.2,0,.4.2.6.1.2.3.3.5.4.2,0,.4.2.6.2.2,0,.4,0,.6,0,.2,0,.5,0,.7,0,.3,0,.5-.2.8-.3.2-.1.4-.3.6-.5.2-.2.2-.5.2-.8v-1.5Z" style="fill: #fff;"/>
|
||||||
|
<g>
|
||||||
|
<path d="m596.7,502.2h5.6l3.2,9.6c.5,1.5.8,2.6.8,2.6h0s.3-1.1.8-2.6l3.2-9.6h5.6v17.8h-3.8v-14h0s-.4,1.7-1.1,3.8l-3.4,10.2h-2.9l-3.4-10.2c-.7-2.1-1.1-3.8-1.1-3.8h0v13.9h-3.5v-17.8Z" style="fill: #ed6b21;"/>
|
||||||
|
<path d="m623.3,520.1h-3.8v-17.8h3.8v7.9l6.5-7.9h4.3l-6.4,7.5,6.7,10.4h-4.4l-4.9-7.5-1.8,2.1v5.4Z" style="fill: #ed6b21;"/>
|
||||||
|
<path d="m641,512.6v-2.6h1.2c1.5,0,2.5-.9,2.5-2.4s-1.1-2.3-2.4-2.3-2.5,1-2.6,2.5h-3.6c0-2.6,1.8-5.3,6.3-5.3s6,2.1,6,4.6-1.1,3.3-2.9,3.9h0c2,.5,3.4,1.9,3.4,4.2s-2.2,5.1-6.5,5.1-6.4-2.6-6.5-5.4h3.8c.2,1.7,1.3,2.5,2.7,2.5s2.7-1,2.7-2.5-1-2.5-2.7-2.5h-1.5Z" style="fill: #ed6b21;"/>
|
||||||
|
<path d="m651.1,516.4h4v3.7h-4v-3.7Z" style="fill: #ed6b21;"/>
|
||||||
|
<path d="m661.2,515.9c.2,1.2,1.2,1.8,2.4,1.8,2.1,0,3.2-2,3.3-5.7h0c-.7,1.2-2.1,2-3.9,2-2.8,0-5.5-1.9-5.5-5.5s2.4-5.9,6.6-5.9,6.7,2.7,6.7,8.4-2.9,9.5-7.2,9.5-5.4-1.8-5.7-4.5h3.4Zm0-7.5c0,1.9,1.3,2.9,2.7,2.9s2.7-1,2.7-2.9-1.4-2.9-2.7-2.9-2.7.9-2.7,2.9Z" style="fill: #ed6b21;"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path d="m385.6,511.3c0-1.3.2-2.6.6-3.7s1-2.1,1.7-3c.7-.9,1.7-1.5,2.8-2,1.1-.5,2.3-.7,3.7-.7s2.6.2,3.7.7c1.1.5,2,1.2,2.8,2s1.3,1.8,1.7,3,.6,2.4.6,3.7-.2,2.5-.6,3.6-1,2.1-1.7,2.9c-.7.8-1.7,1.5-2.8,2-1.1.5-2.3.7-3.7.7s-2.6-.2-3.7-.7c-1.1-.5-2-1.1-2.8-2-.7-.8-1.3-1.8-1.7-2.9-.4-1.1-.6-2.3-.6-3.6Zm3.9,0c0,.7.1,1.5.3,2.2.2.7.4,1.3.9,1.9.4.6.9,1,1.5,1.4s1.4.5,2.2.5,1.6-.2,2.2-.5,1.1-.8,1.5-1.4c.4-.6.6-1.2.9-1.9.2-.7.3-1.4.3-2.2s-.1-1.5-.3-2.3c-.2-.7-.4-1.4-.9-1.9-.4-.6-.9-1-1.5-1.4-.6-.3-1.4-.5-2.2-.5s-1.6.2-2.2.5c-.6.3-1.1.8-1.5,1.4s-.6,1.2-.9,1.9c-.2.7-.3,1.5-.3,2.3Z" style="fill: #959998;"/>
|
||||||
|
<path d="m404.8,502.3h9.6c.8,0,1.5.1,2.1.4.6.3,1.2.6,1.6,1.1.4.4.8,1,1.1,1.6.2.6.4,1.2.4,1.9,0,1.1-.2,1.9-.6,2.7-.4.7-1.2,1.4-2.1,1.7h0c.5.2.9.4,1.2.6s.6.6.8,1c.2.4.3.8.4,1.2s.2.9.2,1.3,0,.6,0,1,0,.8.1,1.2c0,.4.1.8.2,1.1.1.4.2.7.4.9h-3.9c-.1-.3-.2-.6-.3-.9,0-.3-.1-.7-.1-1.1s0-.7-.1-1.2c0-.4,0-.7-.1-1.1-.1-.9-.4-1.6-.9-2s-1.1-.6-2.1-.6h-3.9v6.9h-3.9v-17.7Zm3.9,8.1h4.3c.9,0,1.6-.2,2-.6.4-.4.7-1.1.7-1.9s-.2-1.5-.7-1.9-1.1-.6-2-.6h-4.3v5Z" style="fill: #959998;"/>
|
||||||
|
<path d="m421.8,502.3h3.9v17.8h-3.9v-17.8Z" style="fill: #959998;"/>
|
||||||
|
<path d="m441,518.1c-.7.9-1.5,1.5-2.3,1.9s-1.7.5-2.6.5c-1.4,0-2.6-.2-3.7-.7-1.1-.5-2-1.1-2.8-2-.7-.8-1.3-1.8-1.7-2.9-.4-1.1-.6-2.3-.6-3.6s.2-2.6.6-3.7,1-2.1,1.7-3c.7-.9,1.7-1.5,2.8-2,1.1-.5,2.3-.7,3.7-.7s1.8.1,2.7.4c.9.3,1.6.7,2.3,1.2s1.3,1.2,1.7,2,.7,1.7.9,2.7h-3.7c-.2-1-.7-1.7-1.4-2.2s-1.5-.7-2.4-.7-1.6.2-2.2.5-1.1.8-1.5,1.4c-.4.6-.6,1.2-.9,1.9-.2.7-.3,1.5-.3,2.3s.1,1.5.3,2.2c.2.7.4,1.3.9,1.9.4.6.9,1,1.5,1.4.6.3,1.4.5,2.2.5,1.3,0,2.3-.3,3-1s1.1-1.6,1.3-2.9h-3.9v-2.9h7.5v9.6h-2.5l-.4-2Z" style="fill: #959998;"/>
|
||||||
|
<path d="m446.3,502.3h3.9v17.8h-3.9v-17.8Z" style="fill: #959998;"/>
|
||||||
|
<path d="m452.7,502.3h3.9l7.4,11.9h0v-11.9h3.7v17.8h-3.9l-7.4-11.9h0v11.9h-3.7v-17.8Z" style="fill: #959998;"/>
|
||||||
|
<path d="m475.1,502.3h4l6.6,17.8h-4l-1.4-3.9h-6.6l-1.4,3.9h-3.9l6.7-17.8Zm-.4,10.9h4.6l-2.2-6.5h0l-2.3,6.5Z" style="fill: #959998;"/>
|
||||||
|
<path d="m486.5,502.3h3.9v14.5h8.6v3.3h-12.6v-17.8h0Z" style="fill: #959998;"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path d="m508.9,502.3h8c1.1,0,2.1.2,2.8.5s1.4.7,1.9,1.3c.5.5.9,1.2,1.1,1.8.2.7.3,1.4.3,2.1s-.1,1.4-.3,2.1-.6,1.3-1.1,1.8c-.5.5-1.1,1-1.9,1.3s-1.7.5-2.8.5h-4.1v6.4h-3.9v-17.8Zm3.9,8.4h3c.4,0,.9,0,1.3-.1.4,0,.8-.2,1.1-.4.3-.2.6-.5.7-.8.2-.3.3-.8.3-1.4s-.1-1-.3-1.4c-.2-.3-.4-.6-.7-.8-.3-.2-.7-.3-1.1-.4s-.9-.1-1.3-.1h-3v5.3Z" style="fill: #fff;"/>
|
||||||
|
<path d="m524.2,502.3h9.6c.8,0,1.5.1,2.1.4.6.3,1.2.6,1.6,1.1.4.4.8,1,1.1,1.6.2.6.4,1.2.4,1.9,0,1.1-.2,1.9-.6,2.7-.4.7-1.2,1.4-2.1,1.7h0c.5.2.9.4,1.2.6s.6.6.8,1c.2.4.3.8.4,1.2s.2.9.2,1.3,0,.6,0,1,0,.8.1,1.2c0,.4.1.8.2,1.1.1.4.2.7.4.9h-3.9c-.1-.3-.2-.6-.3-.9,0-.3-.1-.7-.1-1.1s0-.7-.1-1.2c0-.4,0-.7-.1-1.1-.1-.9-.4-1.6-.9-2s-1.1-.6-2.1-.6h-3.9v6.9h-3.9v-17.7Zm3.9,8.1h4.3c.9,0,1.5-.2,2-.6.4-.4.7-1.1.7-1.9s-.2-1.5-.7-1.9-1.1-.6-2-.6h-4.3v5Z" style="fill: #fff;"/>
|
||||||
|
<path d="m556.1,513.3c0,2.4-.7,4.2-2,5.4-1.4,1.2-3.2,1.8-5.6,1.8s-4.3-.6-5.6-1.8c-1.3-1.2-2-3-2-5.4v-11.1h3.9v11.1c0,.5,0,1,.1,1.4,0,.5.3.9.5,1.3.3.4.6.6,1.1.9.5.2,1.1.3,1.9.3,1.4,0,2.3-.3,2.9-.9s.8-1.6.8-2.9v-11.1h3.9v11h0Z" style="fill: #fff;"/>
|
||||||
|
<path d="m561.1,514.2c0,.6.1,1.1.3,1.5.2.4.5.7.9,1s.8.4,1.3.6,1,.2,1.5.2.7,0,1.1-.1.8-.2,1.1-.3.6-.4.9-.7c.2-.3.3-.6.3-1.1s-.2-.9-.5-1.2-.7-.5-1.2-.7c-.5-.2-1.1-.4-1.7-.5s-1.3-.3-1.9-.5c-.7-.2-1.3-.4-1.9-.6-.6-.2-1.2-.5-1.7-.9s-.9-.9-1.2-1.4c-.3-.6-.5-1.3-.5-2.1s.2-1.7.6-2.4.9-1.2,1.5-1.7,1.4-.8,2.1-1,1.6-.3,2.4-.3,1.8.1,2.7.3,1.6.5,2.3,1,1.2,1.1,1.6,1.8.6,1.6.6,2.6h-3.8c0-.5-.1-1-.3-1.3s-.4-.6-.7-.8-.7-.3-1.1-.4-.9-.1-1.3-.1-.6,0-1,.1c-.3,0-.6.2-.9.3-.3.2-.5.4-.6.6s-.2.6-.2.9,0,.6.2.9c.1.2.4.4.8.6s.9.4,1.6.5c.7.2,1.6.4,2.7.7.2,0,.5.1.9.2.3.1.7.2,1.1.4.4.2.8.4,1.2.6.4.2.7.5,1.1.9.3.4.6.8.8,1.3.2.5.3,1.1.3,1.8s-.2,1.6-.5,2.3c-.3.7-.8,1.3-1.4,1.8s-1.4.9-2.3,1.2c-.9.3-2,.4-3.2.4s-1.9-.1-2.9-.4-1.7-.6-2.4-1.2-1.3-1.2-1.7-2c-.4-.8-.6-1.7-.6-2.8h3.8Z" style="fill: #fff;"/>
|
||||||
|
<path d="m578.5,502.3h4l6.6,17.8h-4l-1.4-3.9h-6.6l-1.4,3.9h-3.9l6.7-17.8Zm-.4,10.9h4.6l-2.2-6.5h0l-2.3,6.5Z" style="fill: #fff;"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 21 KiB |
@ -110,21 +110,21 @@ typedef struct anycubicsla_format_header
|
|||||||
{
|
{
|
||||||
char tag[12];
|
char tag[12];
|
||||||
std::uint32_t payload_size;
|
std::uint32_t payload_size;
|
||||||
std::float_t pixel_size_um;
|
float pixel_size_um;
|
||||||
std::float_t layer_height_mm;
|
float layer_height_mm;
|
||||||
std::float_t exposure_time_s;
|
float exposure_time_s;
|
||||||
std::float_t delay_before_exposure_s;
|
float delay_before_exposure_s;
|
||||||
std::float_t bottom_exposure_time_s;
|
float bottom_exposure_time_s;
|
||||||
std::float_t bottom_layer_count;
|
float bottom_layer_count;
|
||||||
std::float_t lift_distance_mm;
|
float lift_distance_mm;
|
||||||
std::float_t lift_speed_mms;
|
float lift_speed_mms;
|
||||||
std::float_t retract_speed_mms;
|
float retract_speed_mms;
|
||||||
std::float_t volume_ml;
|
float volume_ml;
|
||||||
std::uint32_t antialiasing;
|
std::uint32_t antialiasing;
|
||||||
std::uint32_t res_x;
|
std::uint32_t res_x;
|
||||||
std::uint32_t res_y;
|
std::uint32_t res_y;
|
||||||
std::float_t weight_g;
|
float weight_g;
|
||||||
std::float_t price;
|
float price;
|
||||||
std::uint32_t price_currency;
|
std::uint32_t price_currency;
|
||||||
std::uint32_t per_layer_override; // ? unknown meaning ?
|
std::uint32_t per_layer_override; // ? unknown meaning ?
|
||||||
std::uint32_t print_time_s;
|
std::uint32_t print_time_s;
|
||||||
@ -155,19 +155,19 @@ typedef struct anycubicsla_format_layer
|
|||||||
{
|
{
|
||||||
std::uint32_t image_offset;
|
std::uint32_t image_offset;
|
||||||
std::uint32_t image_size;
|
std::uint32_t image_size;
|
||||||
std::float_t lift_distance_mm;
|
float lift_distance_mm;
|
||||||
std::float_t lift_speed_mms;
|
float lift_speed_mms;
|
||||||
std::float_t exposure_time_s;
|
float exposure_time_s;
|
||||||
std::float_t layer_height_mm;
|
float layer_height_mm;
|
||||||
std::float_t layer44; // unkown - usually 0
|
float layer44; // unkown - usually 0
|
||||||
std::float_t layer48; // unkown - usually 0
|
float layer48; // unkown - usually 0
|
||||||
} anycubicsla_format_layer;
|
} anycubicsla_format_layer;
|
||||||
|
|
||||||
typedef struct anycubicsla_format_misc
|
typedef struct anycubicsla_format_misc
|
||||||
{
|
{
|
||||||
std::float_t bottom_layer_height_mm;
|
float bottom_layer_height_mm;
|
||||||
std::float_t bottom_lift_distance_mm;
|
float bottom_lift_distance_mm;
|
||||||
std::float_t bottom_lift_speed_mms;
|
float bottom_lift_speed_mms;
|
||||||
|
|
||||||
} anycubicsla_format_misc;
|
} anycubicsla_format_misc;
|
||||||
|
|
||||||
@ -198,9 +198,9 @@ private:
|
|||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
std::float_t get_cfg_value_f(const DynamicConfig &cfg,
|
float get_cfg_value_f(const DynamicConfig &cfg,
|
||||||
const std::string &key,
|
const std::string &key,
|
||||||
const std::float_t &def = 0.f)
|
const float &def = 0.f)
|
||||||
{
|
{
|
||||||
if (cfg.has(key)) {
|
if (cfg.has(key)) {
|
||||||
if (auto opt = cfg.option(key))
|
if (auto opt = cfg.option(key))
|
||||||
@ -282,10 +282,10 @@ void fill_header(anycubicsla_format_header &h,
|
|||||||
{
|
{
|
||||||
CNumericLocalesSetter locales_setter;
|
CNumericLocalesSetter locales_setter;
|
||||||
|
|
||||||
std::float_t bottle_weight_g;
|
float bottle_weight_g;
|
||||||
std::float_t bottle_volume_ml;
|
float bottle_volume_ml;
|
||||||
std::float_t bottle_cost;
|
float bottle_cost;
|
||||||
std::float_t material_density;
|
float material_density;
|
||||||
auto &cfg = print.full_print_config();
|
auto &cfg = print.full_print_config();
|
||||||
auto mat_opt = cfg.option("material_notes");
|
auto mat_opt = cfg.option("material_notes");
|
||||||
std::string mnotes = mat_opt? cfg.option("material_notes")->serialize() : "";
|
std::string mnotes = mat_opt? cfg.option("material_notes")->serialize() : "";
|
||||||
@ -422,7 +422,7 @@ static void anycubicsla_write_int32(std::ofstream &out, std::uint32_t val)
|
|||||||
out.write((const char *) &i3, 1);
|
out.write((const char *) &i3, 1);
|
||||||
out.write((const char *) &i4, 1);
|
out.write((const char *) &i4, 1);
|
||||||
}
|
}
|
||||||
static void anycubicsla_write_float(std::ofstream &out, std::float_t val)
|
static void anycubicsla_write_float(std::ofstream &out, float val)
|
||||||
{
|
{
|
||||||
std::uint32_t *f = (std::uint32_t *) &val;
|
std::uint32_t *f = (std::uint32_t *) &val;
|
||||||
anycubicsla_write_int32(out, *f);
|
anycubicsla_write_int32(out, *f);
|
||||||
|
@ -3074,46 +3074,49 @@ std::string GCodeGenerator::_extrude(
|
|||||||
auto end = path.end();
|
auto end = path.end();
|
||||||
const bool emit_radius = m_config.arc_fitting == ArcFittingType::EmitRadius;
|
const bool emit_radius = m_config.arc_fitting == ArcFittingType::EmitRadius;
|
||||||
for (++ it; it != end; ++ it) {
|
for (++ it; it != end; ++ it) {
|
||||||
Vec2d p = this->point_to_gcode_quantized(it->point);
|
Vec2d p = this->point_to_gcode_quantized(it->point);
|
||||||
// Center of the radius to be emitted into the G-code: Either by radius or by center offset.
|
assert(p != prev);
|
||||||
double radius = 0;
|
if (p != prev) {
|
||||||
Vec2d ij;
|
// Center of the radius to be emitted into the G-code: Either by radius or by center offset.
|
||||||
if (it->radius != 0) {
|
double radius = 0;
|
||||||
// Extrude an arc.
|
Vec2d ij;
|
||||||
assert(m_config.arc_fitting == ArcFittingType::EmitCenter ||
|
if (it->radius != 0) {
|
||||||
m_config.arc_fitting == ArcFittingType::EmitRadius);
|
// Extrude an arc.
|
||||||
radius = unscaled<double>(it->radius);
|
assert(m_config.arc_fitting == ArcFittingType::EmitCenter ||
|
||||||
if (emit_radius) {
|
m_config.arc_fitting == ArcFittingType::EmitRadius);
|
||||||
// Only quantize radius if emitting it directly into G-code. Otherwise use the exact radius for calculating the IJ values.
|
radius = unscaled<double>(it->radius);
|
||||||
radius = GCodeFormatter::quantize_xyzf(radius);
|
if (emit_radius) {
|
||||||
|
// Only quantize radius if emitting it directly into G-code. Otherwise use the exact radius for calculating the IJ values.
|
||||||
|
radius = GCodeFormatter::quantize_xyzf(radius);
|
||||||
|
} else {
|
||||||
|
// Calculate quantized IJ circle center offset.
|
||||||
|
ij = GCodeFormatter::quantize(Vec2d(
|
||||||
|
Geometry::ArcWelder::arc_center(prev.cast<double>(), p.cast<double>(), double(radius), it->ccw())
|
||||||
|
- prev));
|
||||||
|
if (ij == Vec2d::Zero())
|
||||||
|
// Don't extrude a degenerated circle.
|
||||||
|
radius = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (radius == 0) {
|
||||||
|
// Extrude line segment.
|
||||||
|
if (const double line_length = (p - prev).norm(); line_length > 0) {
|
||||||
|
path_length += line_length;
|
||||||
|
gcode += m_writer.extrude_to_xy(p, e_per_mm * line_length, comment);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Calculate quantized IJ circle center offset.
|
double angle = Geometry::ArcWelder::arc_angle(prev.cast<double>(), p.cast<double>(), double(radius));
|
||||||
ij = GCodeFormatter::quantize(Vec2d(
|
assert(angle > 0);
|
||||||
Geometry::ArcWelder::arc_center(prev.cast<double>(), p.cast<double>(), double(radius), it->ccw())
|
const double line_length = angle * std::abs(radius);
|
||||||
- prev));
|
|
||||||
if (ij == Vec2d::Zero())
|
|
||||||
// Don't extrude a degenerated circle.
|
|
||||||
radius = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (radius == 0) {
|
|
||||||
// Extrude line segment.
|
|
||||||
if (const double line_length = (p - prev).norm(); line_length > 0) {
|
|
||||||
path_length += line_length;
|
path_length += line_length;
|
||||||
gcode += m_writer.extrude_to_xy(p, e_per_mm * line_length, comment);
|
const double dE = e_per_mm * line_length;
|
||||||
|
assert(dE > 0);
|
||||||
|
gcode += emit_radius ?
|
||||||
|
m_writer.extrude_to_xy_G2G3R(p, radius, it->ccw(), dE, comment) :
|
||||||
|
m_writer.extrude_to_xy_G2G3IJ(p, ij, it->ccw(), dE, comment);
|
||||||
}
|
}
|
||||||
} else {
|
prev = p;
|
||||||
double angle = Geometry::ArcWelder::arc_angle(prev.cast<double>(), p.cast<double>(), double(radius));
|
|
||||||
assert(angle > 0);
|
|
||||||
const double line_length = angle * std::abs(radius);
|
|
||||||
path_length += line_length;
|
|
||||||
const double dE = e_per_mm * line_length;
|
|
||||||
assert(dE > 0);
|
|
||||||
gcode += emit_radius ?
|
|
||||||
m_writer.extrude_to_xy_G2G3R(p, radius, it->ccw(), dE, comment) :
|
|
||||||
m_writer.extrude_to_xy_G2G3IJ(p, ij, it->ccw(), dE, comment);
|
|
||||||
}
|
}
|
||||||
prev = p;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_enable_cooling_markers)
|
if (m_enable_cooling_markers)
|
||||||
|
@ -196,7 +196,7 @@ std::string get_error_string(const ThumbnailErrors& errors)
|
|||||||
if (errors.has(ThumbnailError::OutOfRange))
|
if (errors.has(ThumbnailError::OutOfRange))
|
||||||
error_str += "\n - Input value is out of range";
|
error_str += "\n - Input value is out of range";
|
||||||
if (errors.has(ThumbnailError::InvalidExt))
|
if (errors.has(ThumbnailError::InvalidExt))
|
||||||
error_str += "\n - Some input extention is invalid";
|
error_str += "\n - Some extension in the input is invalid";
|
||||||
|
|
||||||
return error_str;
|
return error_str;
|
||||||
}
|
}
|
||||||
|
@ -310,7 +310,8 @@ void PrintConfigDef::init_common_params()
|
|||||||
|
|
||||||
def = this->add("thumbnails", coString);
|
def = this->add("thumbnails", coString);
|
||||||
def->label = L("G-code thumbnails");
|
def->label = L("G-code thumbnails");
|
||||||
def->tooltip = L("Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the following format: \"XxY/EXT, XxY/EXT, ...\"");
|
def->tooltip = L("Picture sizes to be stored into a .gcode / .bgcode and .sl1 / .sl1s files, in the following format: \"XxY/EXT, XxY/EXT, ...\"\n"
|
||||||
|
"Currently supported extensions are PNG, QOI and JPG.");
|
||||||
def->mode = comExpert;
|
def->mode = comExpert;
|
||||||
def->gui_type = ConfigOptionDef::GUIType::one_string;
|
def->gui_type = ConfigOptionDef::GUIType::one_string;
|
||||||
def->set_default_value(new ConfigOptionString());
|
def->set_default_value(new ConfigOptionString());
|
||||||
@ -429,8 +430,8 @@ void PrintConfigDef::init_fff_params()
|
|||||||
|
|
||||||
def = this->add("arc_fitting", coEnum);
|
def = this->add("arc_fitting", coEnum);
|
||||||
def->label = L("Arc fitting");
|
def->label = L("Arc fitting");
|
||||||
def->tooltip = L("Enable this to get a G-code file which has G2 and G3 moves. "
|
def->tooltip = L("Enable to get a G-code file which has G2 and G3 moves. "
|
||||||
"And the fitting tolerance is same with resolution");
|
"G-code resolution will be used as the fitting tolerance.");
|
||||||
def->set_enum<ArcFittingType>({
|
def->set_enum<ArcFittingType>({
|
||||||
{ "disabled", "Disabled" },
|
{ "disabled", "Disabled" },
|
||||||
{ "emit_center", "Enabled: G2/3 I J" },
|
{ "emit_center", "Enabled: G2/3 I J" },
|
||||||
@ -442,8 +443,8 @@ void PrintConfigDef::init_fff_params()
|
|||||||
def = this->add("arc_fitting_tolerance", coFloatOrPercent);
|
def = this->add("arc_fitting_tolerance", coFloatOrPercent);
|
||||||
def->label = L("Arc fitting tolerance");
|
def->label = L("Arc fitting tolerance");
|
||||||
def->sidetext = L("mm or %");
|
def->sidetext = L("mm or %");
|
||||||
def->tooltip = L("When using the arc_fitting option, allow the curve to deviate a cetain % from the collection of strait paths.\n"
|
def->tooltip = L("When using the arc_fitting option, allow the curve to deviate certain % from the collection of straight paths.\n"
|
||||||
"Can be a mm value or a percentage of the current extrusion width.");
|
"Can be either a mm value or a percentage of the current extrusion width.");
|
||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
def->set_default_value(new ConfigOptionFloatOrPercent(5, true));
|
def->set_default_value(new ConfigOptionFloatOrPercent(5, true));
|
||||||
@ -2074,7 +2075,7 @@ void PrintConfigDef::init_fff_params()
|
|||||||
def->label = L("Output filename format");
|
def->label = L("Output filename format");
|
||||||
def->tooltip = L("You can use all configuration options as variables inside this template. "
|
def->tooltip = L("You can use all configuration options as variables inside this template. "
|
||||||
"For example: [layer_height], [fill_density] etc. You can also use [timestamp], "
|
"For example: [layer_height], [fill_density] etc. You can also use [timestamp], "
|
||||||
"[year], [month], [day], [hour], [minute], [second], [version], [input_filename], "
|
"[year], [month], [day], [hour], [minute], [second], [version], "
|
||||||
"[input_filename_base], [default_output_extension].");
|
"[input_filename_base], [default_output_extension].");
|
||||||
def->full_width = true;
|
def->full_width = true;
|
||||||
def->mode = comExpert;
|
def->mode = comExpert;
|
||||||
@ -5103,6 +5104,7 @@ OtherSlicingStatesConfigDef::OtherSlicingStatesConfigDef()
|
|||||||
def->tooltip = L("Zero-based index of the first extruder used in the print. Same as initial_tool.");
|
def->tooltip = L("Zero-based index of the first extruder used in the print. Same as initial_tool.");
|
||||||
|
|
||||||
def = this->add("initial_filament_type", coString);
|
def = this->add("initial_filament_type", coString);
|
||||||
|
// TRN: Meaning 'filament type of the initial filament'
|
||||||
def->label = L("Initial filament type");
|
def->label = L("Initial filament type");
|
||||||
def->tooltip = L("String containing filament type of the first used extruder.");
|
def->tooltip = L("String containing filament type of the first used extruder.");
|
||||||
|
|
||||||
@ -5145,15 +5147,15 @@ PrintStatisticsConfigDef::PrintStatisticsConfigDef()
|
|||||||
|
|
||||||
def = this->add("total_cost", coFloat);
|
def = this->add("total_cost", coFloat);
|
||||||
def->label = L("Total cost");
|
def->label = L("Total cost");
|
||||||
def->tooltip = L("Total cost of all material used in the print. Calculated from filament_cost value in Filament Settings.");
|
def->tooltip = L("Total cost of all material used in the print. Calculated from cost in Filament Settings.");
|
||||||
|
|
||||||
def = this->add("total_weight", coFloat);
|
def = this->add("total_weight", coFloat);
|
||||||
def->label = L("Total weight");
|
def->label = L("Total weight");
|
||||||
def->tooltip = L("Total weight of the print. Calculated from filament_density value in Filament Settings.");
|
def->tooltip = L("Total weight of the print. Calculated from density in Filament Settings.");
|
||||||
|
|
||||||
def = this->add("total_wipe_tower_cost", coFloat);
|
def = this->add("total_wipe_tower_cost", coFloat);
|
||||||
def->label = L("Total wipe tower cost");
|
def->label = L("Total wipe tower cost");
|
||||||
def->tooltip = L("Total cost of the material wasted on the wipe tower. Calculated from filament_cost value in Filament Settings.");
|
def->tooltip = L("Total cost of the material wasted on the wipe tower. Calculated from cost in Filament Settings.");
|
||||||
|
|
||||||
def = this->add("total_wipe_tower_filament", coFloat);
|
def = this->add("total_wipe_tower_filament", coFloat);
|
||||||
def->label = L("Wipe tower volume");
|
def->label = L("Wipe tower volume");
|
||||||
@ -5164,7 +5166,7 @@ PrintStatisticsConfigDef::PrintStatisticsConfigDef()
|
|||||||
def->tooltip = L("Total length of filament used in the print.");
|
def->tooltip = L("Total length of filament used in the print.");
|
||||||
|
|
||||||
def = this->add("total_toolchanges", coInt);
|
def = this->add("total_toolchanges", coInt);
|
||||||
def->label = L("Total toolchanges");
|
def->label = L("Total number of toolchanges");
|
||||||
def->tooltip = L("Number of toolchanges during the print.");
|
def->tooltip = L("Number of toolchanges during the print.");
|
||||||
|
|
||||||
def = this->add("extruded_volume_total", coFloat);
|
def = this->add("extruded_volume_total", coFloat);
|
||||||
@ -5173,11 +5175,11 @@ PrintStatisticsConfigDef::PrintStatisticsConfigDef()
|
|||||||
|
|
||||||
def = this->add("extruded_weight", coFloats);
|
def = this->add("extruded_weight", coFloats);
|
||||||
def->label = L("Weight per extruder");
|
def->label = L("Weight per extruder");
|
||||||
def->tooltip = L("Weight per extruder extruded during the entire print. Calculated from filament_density value in Filament Settings.");
|
def->tooltip = L("Weight per extruder extruded during the entire print. Calculated from density in Filament Settings.");
|
||||||
|
|
||||||
def = this->add("extruded_weight_total", coFloat);
|
def = this->add("extruded_weight_total", coFloat);
|
||||||
def->label = L("Total weight");
|
def->label = L("Total weight");
|
||||||
def->tooltip = L("Total weight of the print. Calculated from filament_density value in Filament Settings.");
|
def->tooltip = L("Total weight of the print. Calculated from density in Filament Settings.");
|
||||||
|
|
||||||
def = this->add("total_layer_count", coInt);
|
def = this->add("total_layer_count", coInt);
|
||||||
def->label = L("Total layer count");
|
def->label = L("Total layer count");
|
||||||
|
@ -251,7 +251,7 @@ GLVolume::GLVolume(float r, float g, float b, float a)
|
|||||||
|
|
||||||
void GLVolume::set_render_color(bool force_transparent)
|
void GLVolume::set_render_color(bool force_transparent)
|
||||||
{
|
{
|
||||||
bool outside = is_outside || is_below_printbed();
|
bool outside = is_outside || (!is_modifier && is_below_printbed());
|
||||||
|
|
||||||
if (force_native_color || force_neutral_color) {
|
if (force_native_color || force_neutral_color) {
|
||||||
if (outside && shader_outside_printer_detection_enabled)
|
if (outside && shader_outside_printer_detection_enabled)
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include "GUI.hpp"
|
#include "GUI.hpp"
|
||||||
#include "MainFrame.hpp"
|
#include "MainFrame.hpp"
|
||||||
#include "format.hpp"
|
#include "format.hpp"
|
||||||
|
#include "libslic3r/GCode/Thumbnails.hpp"
|
||||||
|
|
||||||
#include <wx/app.h>
|
#include <wx/app.h>
|
||||||
#include <wx/panel.h>
|
#include <wx/panel.h>
|
||||||
@ -181,10 +182,22 @@ void BackgroundSlicingProcess::process_sla()
|
|||||||
|
|
||||||
const std::string export_path = m_sla_print->print_statistics().finalize_output_path(m_export_path);
|
const std::string export_path = m_sla_print->print_statistics().finalize_output_path(m_export_path);
|
||||||
|
|
||||||
ThumbnailsList thumbnails = this->render_thumbnails(
|
auto [thumbnails_list, errors] = GCodeThumbnails::make_and_check_thumbnail_list(current_print()->full_print_config());
|
||||||
ThumbnailsParams{current_print()->full_print_config().option<ConfigOptionPoints>("thumbnails")->values, true, true, true, true});
|
|
||||||
|
|
||||||
m_sla_print->export_print(export_path, thumbnails);
|
if (errors != enum_bitmask<ThumbnailError>()) {
|
||||||
|
std::string error_str = format("Invalid thumbnails value:");
|
||||||
|
error_str += GCodeThumbnails::get_error_string(errors);
|
||||||
|
throw Slic3r::ExportError(error_str);
|
||||||
|
}
|
||||||
|
|
||||||
|
Vec2ds sizes;
|
||||||
|
if (!thumbnails_list.empty()) {
|
||||||
|
sizes.reserve(thumbnails_list.size());
|
||||||
|
for (const auto& [format, size] : thumbnails_list)
|
||||||
|
sizes.emplace_back(size);
|
||||||
|
}
|
||||||
|
ThumbnailsList thumbnails = this->render_thumbnails(ThumbnailsParams{sizes, true, true, true, true });
|
||||||
|
m_sla_print->export_print(export_path, thumbnails);
|
||||||
|
|
||||||
m_print->set_status(100, GUI::format(_L("Masked SLA file exported to %1%"), export_path));
|
m_print->set_status(100, GUI::format(_L("Masked SLA file exported to %1%"), export_path));
|
||||||
} else if (! m_upload_job.empty()) {
|
} else if (! m_upload_job.empty()) {
|
||||||
@ -735,9 +748,22 @@ void BackgroundSlicingProcess::prepare_upload()
|
|||||||
m_upload_job.upload_data.upload_path = output_name_str;
|
m_upload_job.upload_data.upload_path = output_name_str;
|
||||||
} else {
|
} else {
|
||||||
m_upload_job.upload_data.upload_path = m_sla_print->print_statistics().finalize_output_path(m_upload_job.upload_data.upload_path.string());
|
m_upload_job.upload_data.upload_path = m_sla_print->print_statistics().finalize_output_path(m_upload_job.upload_data.upload_path.string());
|
||||||
|
|
||||||
ThumbnailsList thumbnails = this->render_thumbnails(
|
auto [thumbnails_list, errors] = GCodeThumbnails::make_and_check_thumbnail_list(current_print()->full_print_config());
|
||||||
ThumbnailsParams{current_print()->full_print_config().option<ConfigOptionPoints>("thumbnails")->values, true, true, true, true});
|
|
||||||
|
if (errors != enum_bitmask<ThumbnailError>()) {
|
||||||
|
std::string error_str = format("Invalid thumbnails value:");
|
||||||
|
error_str += GCodeThumbnails::get_error_string(errors);
|
||||||
|
throw Slic3r::ExportError(error_str);
|
||||||
|
}
|
||||||
|
|
||||||
|
Vec2ds sizes;
|
||||||
|
if (!thumbnails_list.empty()) {
|
||||||
|
sizes.reserve(thumbnails_list.size());
|
||||||
|
for (const auto& [format, size] : thumbnails_list)
|
||||||
|
sizes.emplace_back(size);
|
||||||
|
}
|
||||||
|
ThumbnailsList thumbnails = this->render_thumbnails(ThumbnailsParams{ sizes, true, true, true, true });
|
||||||
m_sla_print->export_print(source_path.string(),thumbnails, m_upload_job.upload_data.upload_path.filename().string());
|
m_sla_print->export_print(source_path.string(),thumbnails, m_upload_job.upload_data.upload_path.filename().string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
#include <wx/textctrl.h>
|
#include <wx/textctrl.h>
|
||||||
#include <wx/button.h>
|
#include <wx/button.h>
|
||||||
#include <wx/wupdlock.h>
|
#include <wx/wupdlock.h>
|
||||||
|
#include <wx/html/htmlwin.h>
|
||||||
|
|
||||||
#include "GUI.hpp"
|
#include "GUI.hpp"
|
||||||
#include "GUI_App.hpp"
|
#include "GUI_App.hpp"
|
||||||
@ -32,6 +33,7 @@ namespace GUI {
|
|||||||
//------------------------------------------
|
//------------------------------------------
|
||||||
|
|
||||||
EditGCodeDialog::EditGCodeDialog(wxWindow* parent, const std::string& key, const std::string& value) :
|
EditGCodeDialog::EditGCodeDialog(wxWindow* parent, const std::string& key, const std::string& value) :
|
||||||
|
// TRN: This is title of a dialog. The argument is the name of the currently edited custom G-code.
|
||||||
DPIDialog(parent, wxID_ANY, format_wxstr(_L("Edit Custom G-code (%1%)"), key), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
|
DPIDialog(parent, wxID_ANY, format_wxstr(_L("Edit Custom G-code (%1%)"), key), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
|
||||||
{
|
{
|
||||||
SetFont(wxGetApp().normal_font());
|
SetFont(wxGetApp().normal_font());
|
||||||
@ -40,12 +42,45 @@ EditGCodeDialog::EditGCodeDialog(wxWindow* parent, const std::string& key, const
|
|||||||
int border = 10;
|
int border = 10;
|
||||||
int em = em_unit();
|
int em = em_unit();
|
||||||
|
|
||||||
|
// append info line with link on printables.com
|
||||||
|
wxHtmlWindow* html_window = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxSize(60 * em, 5 * em), wxHW_SCROLLBAR_NEVER);
|
||||||
|
|
||||||
|
html_window->Bind(wxEVT_HTML_LINK_CLICKED, [](wxHtmlLinkEvent& event) {
|
||||||
|
wxGetApp().open_browser_with_warning_dialog(event.GetLinkInfo().GetHref());
|
||||||
|
event.Skip(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
const auto text_clr = wxGetApp().get_label_clr_default();
|
||||||
|
const auto bgr_clr_str = wxGetApp().get_html_bg_color(parent);
|
||||||
|
const auto text_clr_str = encode_color(ColorRGB(text_clr.Red(), text_clr.Green(), text_clr.Blue()));
|
||||||
|
|
||||||
|
//TRN this word-combination is a part of phraze "For more information about placeholders and its use visit our help page"
|
||||||
|
const wxString link = format_wxstr("<a href = \"%1%\">%2%</a>", "help.prusa3d.com/article/macros_1775", _L("help page"));
|
||||||
|
|
||||||
|
// TRN ConfigWizard : Downloader : %1% = "help page"
|
||||||
|
const wxString main_text = format_wxstr(_L("For more information about placeholders and its use visit our %1%."), link);
|
||||||
|
|
||||||
|
const wxFont& font = this->GetFont();
|
||||||
|
const int fs = font.GetPointSize();
|
||||||
|
int size[] = { fs,fs,fs,fs,fs,fs,fs };
|
||||||
|
html_window->SetFonts(font.GetFaceName(), font.GetFaceName(), size);
|
||||||
|
|
||||||
|
html_window->SetPage(format_wxstr(
|
||||||
|
"<html><body bgcolor=%1% link=%2%>"
|
||||||
|
"<font color=%2% size=\"3\">%3%</font>"
|
||||||
|
"</body></html>"
|
||||||
|
, bgr_clr_str
|
||||||
|
, text_clr_str
|
||||||
|
, main_text
|
||||||
|
));
|
||||||
|
|
||||||
|
|
||||||
wxStaticText* label_top = new wxStaticText(this, wxID_ANY, _L("Built-in placeholders (Double click item to add to G-code)") + ":");
|
wxStaticText* label_top = new wxStaticText(this, wxID_ANY, _L("Built-in placeholders (Double click item to add to G-code)") + ":");
|
||||||
|
|
||||||
auto* grid_sizer = new wxFlexGridSizer(1, 3, 5, 15);
|
auto* grid_sizer = new wxFlexGridSizer(1, 3, 5, 15);
|
||||||
grid_sizer->SetFlexibleDirection(wxBOTH);
|
grid_sizer->SetFlexibleDirection(wxBOTH);
|
||||||
|
|
||||||
m_params_list = new ParamsViewCtrl(this, wxSize(em * 30, em * 70));
|
m_params_list = new ParamsViewCtrl(this, wxSize(em * 45, em * 70));
|
||||||
m_params_list->SetFont(wxGetApp().code_font());
|
m_params_list->SetFont(wxGetApp().code_font());
|
||||||
wxGetApp().UpdateDarkUI(m_params_list);
|
wxGetApp().UpdateDarkUI(m_params_list);
|
||||||
|
|
||||||
@ -58,6 +93,7 @@ EditGCodeDialog::EditGCodeDialog(wxWindow* parent, const std::string& key, const
|
|||||||
#endif
|
#endif
|
||||||
);
|
);
|
||||||
m_gcode_editor->SetFont(wxGetApp().code_font());
|
m_gcode_editor->SetFont(wxGetApp().code_font());
|
||||||
|
m_gcode_editor->SetInsertionPointEnd();
|
||||||
wxGetApp().UpdateDarkUI(m_gcode_editor);
|
wxGetApp().UpdateDarkUI(m_gcode_editor);
|
||||||
|
|
||||||
grid_sizer->Add(m_params_list, 1, wxEXPAND);
|
grid_sizer->Add(m_params_list, 1, wxEXPAND);
|
||||||
@ -79,6 +115,7 @@ EditGCodeDialog::EditGCodeDialog(wxWindow* parent, const std::string& key, const
|
|||||||
|
|
||||||
wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
|
||||||
|
topSizer->Add(html_window , 0, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, border);
|
||||||
topSizer->Add(label_top , 0, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, border);
|
topSizer->Add(label_top , 0, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, border);
|
||||||
topSizer->Add(grid_sizer , 1, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, border);
|
topSizer->Add(grid_sizer , 1, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, border);
|
||||||
topSizer->Add(m_param_label , 0, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, border);
|
topSizer->Add(m_param_label , 0, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, border);
|
||||||
@ -97,6 +134,13 @@ EditGCodeDialog::EditGCodeDialog(wxWindow* parent, const std::string& key, const
|
|||||||
bind_list_and_button();
|
bind_list_and_button();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EditGCodeDialog::~EditGCodeDialog()
|
||||||
|
{
|
||||||
|
// To avoid redundant process of wxEVT_DATAVIEW_SELECTION_CHANGED after dialog distroing (on Linux)
|
||||||
|
// unbind this event from params_list
|
||||||
|
m_params_list->Unbind(wxEVT_DATAVIEW_SELECTION_CHANGED, &EditGCodeDialog::selection_changed, this);
|
||||||
|
}
|
||||||
|
|
||||||
std::string EditGCodeDialog::get_edited_gcode() const
|
std::string EditGCodeDialog::get_edited_gcode() const
|
||||||
{
|
{
|
||||||
return into_u8(m_gcode_editor->GetValue());
|
return into_u8(m_gcode_editor->GetValue());
|
||||||
@ -175,6 +219,7 @@ void EditGCodeDialog::init_params_list(const std::string& custom_gcode_name)
|
|||||||
// Add specific placeholders
|
// Add specific placeholders
|
||||||
|
|
||||||
if (!specific_params.empty()) {
|
if (!specific_params.empty()) {
|
||||||
|
// TRN: The argument is the name of currently edited custom gcode. The string starts a section of placeholders only available in this gcode.
|
||||||
wxDataViewItem group = m_params_list->AppendGroup(format_wxstr(_L("Specific for %1%"), custom_gcode_name), "add_gcode");
|
wxDataViewItem group = m_params_list->AppendGroup(format_wxstr(_L("Specific for %1%"), custom_gcode_name), "add_gcode");
|
||||||
for (const auto& opt_key : specific_params)
|
for (const auto& opt_key : specific_params)
|
||||||
if (custom_gcode_specific_config_def.has(opt_key)) {
|
if (custom_gcode_specific_config_def.has(opt_key)) {
|
||||||
@ -229,74 +274,90 @@ wxDataViewItem EditGCodeDialog::add_presets_placeholders()
|
|||||||
void EditGCodeDialog::add_selected_value_to_gcode()
|
void EditGCodeDialog::add_selected_value_to_gcode()
|
||||||
{
|
{
|
||||||
const wxString val = m_params_list->GetSelectedValue();
|
const wxString val = m_params_list->GetSelectedValue();
|
||||||
if (!val.IsEmpty())
|
if (val.IsEmpty())
|
||||||
m_gcode_editor->WriteText(val + "\n");
|
return;
|
||||||
|
|
||||||
|
const long pos = m_gcode_editor->GetInsertionPoint();
|
||||||
|
m_gcode_editor->WriteText(m_gcode_editor->GetInsertionPoint() == m_gcode_editor->GetLastPosition() ? "\n" + val : val);
|
||||||
|
|
||||||
|
if (val.Last() == ']') {
|
||||||
|
const long new_pos = m_gcode_editor->GetInsertionPoint();
|
||||||
|
if (val[val.Len() - 2] == '[')
|
||||||
|
m_gcode_editor->SetInsertionPoint(new_pos - 1); // set cursor into brackets
|
||||||
|
else
|
||||||
|
m_gcode_editor->SetSelection(new_pos - 17, new_pos - 1); // select "current_extruder"
|
||||||
|
}
|
||||||
|
|
||||||
|
m_gcode_editor->SetFocus();
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditGCodeDialog::selection_changed(wxDataViewEvent& evt)
|
||||||
|
{
|
||||||
|
wxString label;
|
||||||
|
wxString description;
|
||||||
|
|
||||||
|
const std::string opt_key = m_params_list->GetSelectedParamKey();
|
||||||
|
if (!opt_key.empty()) {
|
||||||
|
const ConfigOptionDef* def { nullptr };
|
||||||
|
|
||||||
|
const auto& full_config = wxGetApp().preset_bundle->full_config();
|
||||||
|
if (const ConfigDef* config_def = full_config.def(); config_def && config_def->has(opt_key)) {
|
||||||
|
def = config_def->get(opt_key);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (const ConfigDef* config: std::initializer_list<const ConfigDef*> {
|
||||||
|
&custom_gcode_specific_config_def,
|
||||||
|
&cgp_ro_slicing_states_config_def,
|
||||||
|
&cgp_rw_slicing_states_config_def,
|
||||||
|
&cgp_other_slicing_states_config_def,
|
||||||
|
&cgp_print_statistics_config_def,
|
||||||
|
&cgp_objects_info_config_def,
|
||||||
|
&cgp_dimensions_config_def,
|
||||||
|
&cgp_timestamps_config_def,
|
||||||
|
&cgp_other_presets_config_def
|
||||||
|
}) {
|
||||||
|
if (config->has(opt_key)) {
|
||||||
|
def = config->get(opt_key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (def) {
|
||||||
|
const ConfigOptionType scalar_type = def->is_scalar() ? def->type : static_cast<ConfigOptionType>(def->type - coVectorType);
|
||||||
|
wxString type_str = scalar_type == coNone ? "none" :
|
||||||
|
scalar_type == coFloat ? "float" :
|
||||||
|
scalar_type == coInt ? "integer" :
|
||||||
|
scalar_type == coString ? "string" :
|
||||||
|
scalar_type == coPercent ? "percent" :
|
||||||
|
scalar_type == coFloatOrPercent ? "float or percent" :
|
||||||
|
scalar_type == coPoint ? "point" :
|
||||||
|
scalar_type == coBool ? "bool" :
|
||||||
|
scalar_type == coEnum ? "enum" : "undef";
|
||||||
|
if (!def->is_scalar())
|
||||||
|
type_str += "[]";
|
||||||
|
|
||||||
|
label = (!def || (def->full_label.empty() && def->label.empty()) ) ? format_wxstr("%1%\n(%2%)", opt_key, type_str) :
|
||||||
|
(!def->full_label.empty() && !def->label.empty() ) ?
|
||||||
|
format_wxstr("%1% > %2%\n(%3%)", _(def->full_label), _(def->label), type_str) :
|
||||||
|
format_wxstr("%1%\n(%2%)", def->label.empty() ? _(def->full_label) : _(def->label), type_str);
|
||||||
|
|
||||||
|
if (def)
|
||||||
|
description = get_wraped_wxString(_(def->tooltip), 120);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
label = "Undef optptr";
|
||||||
|
}
|
||||||
|
|
||||||
|
m_param_label->SetLabel(label);
|
||||||
|
m_param_description->SetLabel(description);
|
||||||
|
|
||||||
|
Layout();
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditGCodeDialog::bind_list_and_button()
|
void EditGCodeDialog::bind_list_and_button()
|
||||||
{
|
{
|
||||||
m_params_list->Bind(wxEVT_DATAVIEW_SELECTION_CHANGED, [this](wxDataViewEvent& evt) {
|
m_params_list->Bind(wxEVT_DATAVIEW_SELECTION_CHANGED, &EditGCodeDialog::selection_changed, this);
|
||||||
wxString label;
|
|
||||||
wxString description;
|
|
||||||
|
|
||||||
const std::string opt_key = m_params_list->GetSelectedParamKey();
|
|
||||||
if (!opt_key.empty()) {
|
|
||||||
const ConfigOptionDef* def { nullptr };
|
|
||||||
|
|
||||||
const auto& full_config = wxGetApp().preset_bundle->full_config();
|
|
||||||
if (const ConfigDef* config_def = full_config.def(); config_def && config_def->has(opt_key)) {
|
|
||||||
def = config_def->get(opt_key);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
for (const ConfigDef* config: std::initializer_list<const ConfigDef*> {
|
|
||||||
&custom_gcode_specific_config_def,
|
|
||||||
&cgp_ro_slicing_states_config_def,
|
|
||||||
&cgp_rw_slicing_states_config_def,
|
|
||||||
&cgp_other_slicing_states_config_def,
|
|
||||||
&cgp_print_statistics_config_def,
|
|
||||||
&cgp_objects_info_config_def,
|
|
||||||
&cgp_dimensions_config_def,
|
|
||||||
&cgp_timestamps_config_def,
|
|
||||||
&cgp_other_presets_config_def
|
|
||||||
}) {
|
|
||||||
if (config->has(opt_key)) {
|
|
||||||
def = config->get(opt_key);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (def) {
|
|
||||||
const ConfigOptionType scalar_type = def->is_scalar() ? def->type : static_cast<ConfigOptionType>(def->type - coVectorType);
|
|
||||||
wxString type_str = scalar_type == coNone ? "none" :
|
|
||||||
scalar_type == coFloat ? "float" :
|
|
||||||
scalar_type == coInt ? "integer" :
|
|
||||||
scalar_type == coString ? "string" :
|
|
||||||
scalar_type == coPercent ? "percent" :
|
|
||||||
scalar_type == coFloatOrPercent ? "float or percent" :
|
|
||||||
scalar_type == coPoint ? "point" :
|
|
||||||
scalar_type == coBool ? "bool" :
|
|
||||||
scalar_type == coEnum ? "enum" : "undef";
|
|
||||||
if (!def->is_scalar())
|
|
||||||
type_str += "[]";
|
|
||||||
|
|
||||||
label = (!def || (def->full_label.empty() && def->label.empty()) ) ? format_wxstr("%1%\n(%2%)", opt_key, type_str) :
|
|
||||||
(!def->full_label.empty() && !def->label.empty() ) ?
|
|
||||||
format_wxstr("%1% > %2%\n(%3%)", _(def->full_label), _(def->label), type_str) :
|
|
||||||
format_wxstr("%1%\n(%2%)", def->label.empty() ? _(def->full_label) : _(def->label), type_str);
|
|
||||||
|
|
||||||
if (def)
|
|
||||||
description = get_wraped_wxString(_(def->tooltip), 120);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
label = "Undef optptr";
|
|
||||||
}
|
|
||||||
|
|
||||||
m_param_label->SetLabel(label);
|
|
||||||
m_param_description->SetLabel(description);
|
|
||||||
|
|
||||||
Layout();
|
|
||||||
});
|
|
||||||
|
|
||||||
m_params_list->Bind(wxEVT_DATAVIEW_ITEM_ACTIVATED, [this](wxDataViewEvent& ) {
|
m_params_list->Bind(wxEVT_DATAVIEW_ITEM_ACTIVATED, [this](wxDataViewEvent& ) {
|
||||||
add_selected_value_to_gcode();
|
add_selected_value_to_gcode();
|
||||||
|
@ -44,7 +44,7 @@ class EditGCodeDialog : public DPIDialog
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
EditGCodeDialog(wxWindow*parent, const std::string&key, const std::string&value);
|
EditGCodeDialog(wxWindow*parent, const std::string&key, const std::string&value);
|
||||||
~EditGCodeDialog() {}
|
~EditGCodeDialog();
|
||||||
|
|
||||||
std::string get_edited_gcode() const;
|
std::string get_edited_gcode() const;
|
||||||
|
|
||||||
@ -57,6 +57,8 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
void on_dpi_changed(const wxRect& suggested_rect) override;
|
void on_dpi_changed(const wxRect& suggested_rect) override;
|
||||||
void on_sys_color_changed() override;
|
void on_sys_color_changed() override;
|
||||||
|
|
||||||
|
void selection_changed(wxDataViewEvent& evt);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -391,7 +391,7 @@ void Field::get_value_by_opt_type(wxString& str, const bool check_value/* = true
|
|||||||
if (errors.has(ThumbnailError::InvalidExt)) {
|
if (errors.has(ThumbnailError::InvalidExt)) {
|
||||||
if (!error_str.empty())
|
if (!error_str.empty())
|
||||||
error_str += "\n\n";
|
error_str += "\n\n";
|
||||||
error_str += _L("Some input extention is invalid");
|
error_str += _L("Some extension in the input is invalid");
|
||||||
}
|
}
|
||||||
show_error(m_parent, error_str);
|
show_error(m_parent, error_str);
|
||||||
}
|
}
|
||||||
|
@ -209,7 +209,7 @@ void change_opt_value(DynamicPrintConfig& config, const t_config_option_key& opt
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case coPoints:{
|
case coPoints:{
|
||||||
if (opt_key == "bed_shape" || opt_key == "thumbnails") {
|
if (opt_key == "bed_shape") {
|
||||||
config.option<ConfigOptionPoints>(opt_key)->values = boost::any_cast<std::vector<Vec2d>>(value);
|
config.option<ConfigOptionPoints>(opt_key)->values = boost::any_cast<std::vector<Vec2d>>(value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2562,6 +2562,7 @@ bool GLGizmoCut3D::render_angle_input(const std::string& label, float& in_val, c
|
|||||||
m_is_slider_editing_done |= m_imgui->get_last_slider_status().deactivated_after_edit;
|
m_is_slider_editing_done |= m_imgui->get_last_slider_status().deactivated_after_edit;
|
||||||
if (!is_approx(old_val, val)) {
|
if (!is_approx(old_val, val)) {
|
||||||
if (m_imgui->get_last_slider_status().can_take_snapshot) {
|
if (m_imgui->get_last_slider_status().can_take_snapshot) {
|
||||||
|
// TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'.
|
||||||
Plater::TakeSnapshot snapshot(wxGetApp().plater(), format_wxstr("%1%: %2%", _L("Edited"), label), UndoRedo::SnapshotType::GizmoAction);
|
Plater::TakeSnapshot snapshot(wxGetApp().plater(), format_wxstr("%1%: %2%", _L("Edited"), label), UndoRedo::SnapshotType::GizmoAction);
|
||||||
m_imgui->get_last_slider_status().invalidate_snapshot();
|
m_imgui->get_last_slider_status().invalidate_snapshot();
|
||||||
if (m_mode == size_t(CutMode::cutTongueAndGroove))
|
if (m_mode == size_t(CutMode::cutTongueAndGroove))
|
||||||
|
@ -1155,6 +1155,30 @@ static const wxString sep = " - ";
|
|||||||
static const wxString sep_space = "";
|
static const wxString sep_space = "";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void append_about_menu_item(wxMenu* target_menu, int insert_pos = wxNOT_FOUND)
|
||||||
|
{
|
||||||
|
if (wxGetApp().is_editor())
|
||||||
|
append_menu_item(target_menu, wxID_ANY, wxString::Format(_L("&About %s"), SLIC3R_APP_NAME), _L("Show about dialog"),
|
||||||
|
[](wxCommandEvent&) { Slic3r::GUI::about(); }, nullptr, nullptr, []() {return true; }, nullptr, insert_pos);
|
||||||
|
else
|
||||||
|
append_menu_item(target_menu, wxID_ANY, wxString::Format(_L("&About %s"), GCODEVIEWER_APP_NAME), _L("Show about dialog"),
|
||||||
|
[](wxCommandEvent&) { Slic3r::GUI::about(); }, nullptr, nullptr, []() {return true; }, nullptr, insert_pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
static void init_macos_application_menu(wxMenuBar* menu_bar, MainFrame* main_frame)
|
||||||
|
{
|
||||||
|
wxMenu* apple_menu = menu_bar->OSXGetAppleMenu();
|
||||||
|
if (apple_menu != nullptr) {
|
||||||
|
append_about_menu_item(apple_menu, 0);
|
||||||
|
|
||||||
|
// This fixes a bug on macOS where the quit command doesn't emit window close events.
|
||||||
|
// wx bug: https://trac.wxwidgets.org/ticket/18328
|
||||||
|
apple_menu->Bind(wxEVT_MENU, [main_frame](wxCommandEvent&) { main_frame->Close(); }, wxID_EXIT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif // __APPLE__
|
||||||
|
|
||||||
static wxMenu* generate_help_menu()
|
static wxMenu* generate_help_menu()
|
||||||
{
|
{
|
||||||
wxMenu* helpMenu = new wxMenu();
|
wxMenu* helpMenu = new wxMenu();
|
||||||
@ -1189,13 +1213,10 @@ static wxMenu* generate_help_menu()
|
|||||||
[](wxCommandEvent&) { Slic3r::GUI::desktop_open_datadir_folder(); });
|
[](wxCommandEvent&) { Slic3r::GUI::desktop_open_datadir_folder(); });
|
||||||
append_menu_item(helpMenu, wxID_ANY, _L("Report an I&ssue"), wxString::Format(_L("Report an issue on %s"), SLIC3R_APP_NAME),
|
append_menu_item(helpMenu, wxID_ANY, _L("Report an I&ssue"), wxString::Format(_L("Report an issue on %s"), SLIC3R_APP_NAME),
|
||||||
[](wxCommandEvent&) { wxGetApp().open_browser_with_warning_dialog("https://github.com/prusa3d/slic3r/issues/new", nullptr, false); });
|
[](wxCommandEvent&) { wxGetApp().open_browser_with_warning_dialog("https://github.com/prusa3d/slic3r/issues/new", nullptr, false); });
|
||||||
if (wxGetApp().is_editor())
|
#ifndef __APPLE__
|
||||||
append_menu_item(helpMenu, wxID_ANY, wxString::Format(_L("&About %s"), SLIC3R_APP_NAME), _L("Show about dialog"),
|
append_about_menu_item(helpMenu);
|
||||||
[](wxCommandEvent&) { Slic3r::GUI::about(); });
|
#endif // __APPLE__
|
||||||
else
|
append_menu_item(helpMenu, wxID_ANY, _L("Show Tip of the Day")
|
||||||
append_menu_item(helpMenu, wxID_ANY, wxString::Format(_L("&About %s"), GCODEVIEWER_APP_NAME), _L("Show about dialog"),
|
|
||||||
[](wxCommandEvent&) { Slic3r::GUI::about(); });
|
|
||||||
append_menu_item(helpMenu, wxID_ANY, _L("Show Tip of the Day")
|
|
||||||
#if 0//debug
|
#if 0//debug
|
||||||
+ "\tCtrl+Shift+T"
|
+ "\tCtrl+Shift+T"
|
||||||
#endif
|
#endif
|
||||||
@ -1594,14 +1615,7 @@ void MainFrame::init_menubar_as_editor()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
// This fixes a bug on Mac OS where the quit command doesn't emit window close events
|
init_macos_application_menu(m_menubar, this);
|
||||||
// wx bug: https://trac.wxwidgets.org/ticket/18328
|
|
||||||
wxMenu* apple_menu = m_menubar->OSXGetAppleMenu();
|
|
||||||
if (apple_menu != nullptr) {
|
|
||||||
apple_menu->Bind(wxEVT_MENU, [this](wxCommandEvent &) {
|
|
||||||
Close();
|
|
||||||
}, wxID_EXIT);
|
|
||||||
}
|
|
||||||
#endif // __APPLE__
|
#endif // __APPLE__
|
||||||
|
|
||||||
if (plater()->printer_technology() == ptSLA)
|
if (plater()->printer_technology() == ptSLA)
|
||||||
@ -1652,10 +1666,10 @@ void MainFrame::init_menubar_as_gcodeviewer()
|
|||||||
"", nullptr, [this]() { return !m_plater->get_last_loaded_gcode().empty(); }, this);
|
"", nullptr, [this]() { return !m_plater->get_last_loaded_gcode().empty(); }, this);
|
||||||
#endif // __APPLE__
|
#endif // __APPLE__
|
||||||
fileMenu->AppendSeparator();
|
fileMenu->AppendSeparator();
|
||||||
append_menu_item(fileMenu, wxID_ANY, _L("Convert ascii G-code to &binary") + dots, _L("Convert a G-code file from ascii to binary format"),
|
append_menu_item(fileMenu, wxID_ANY, _L("Convert ASCII G-code to &binary") + dots, _L("Convert a G-code file from ASCII to binary format"),
|
||||||
[this](wxCommandEvent&) { if (m_plater != nullptr) m_plater->convert_gcode_to_binary(); }, "convert_file", nullptr,
|
[this](wxCommandEvent&) { if (m_plater != nullptr) m_plater->convert_gcode_to_binary(); }, "convert_file", nullptr,
|
||||||
[]() { return true; }, this);
|
[]() { return true; }, this);
|
||||||
append_menu_item(fileMenu, wxID_ANY, _L("Convert binary G-code to &ascii") + dots, _L("Convert a G-code file from binary to ascii format"),
|
append_menu_item(fileMenu, wxID_ANY, _L("Convert binary G-code to &ASCII") + dots, _L("Convert a G-code file from binary to ASCII format"),
|
||||||
[this](wxCommandEvent&) { if (m_plater != nullptr) m_plater->convert_gcode_to_ascii(); }, "convert_file", nullptr,
|
[this](wxCommandEvent&) { if (m_plater != nullptr) m_plater->convert_gcode_to_ascii(); }, "convert_file", nullptr,
|
||||||
[]() { return true; }, this);
|
[]() { return true; }, this);
|
||||||
fileMenu->AppendSeparator();
|
fileMenu->AppendSeparator();
|
||||||
@ -1693,14 +1707,7 @@ void MainFrame::init_menubar_as_gcodeviewer()
|
|||||||
SetMenuBar(m_menubar);
|
SetMenuBar(m_menubar);
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
// This fixes a bug on Mac OS where the quit command doesn't emit window close events
|
init_macos_application_menu(m_menubar, this);
|
||||||
// wx bug: https://trac.wxwidgets.org/ticket/18328
|
|
||||||
wxMenu* apple_menu = m_menubar->OSXGetAppleMenu();
|
|
||||||
if (apple_menu != nullptr) {
|
|
||||||
apple_menu->Bind(wxEVT_MENU, [this](wxCommandEvent&) {
|
|
||||||
Close();
|
|
||||||
}, wxID_EXIT);
|
|
||||||
}
|
|
||||||
#endif // __APPLE__
|
#endif // __APPLE__
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2717,7 +2717,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
|
|||||||
"Instead of considering them as multiple objects, should \n"
|
"Instead of considering them as multiple objects, should \n"
|
||||||
"the file be loaded as a single object having multiple parts?") + "\n",
|
"the file be loaded as a single object having multiple parts?") + "\n",
|
||||||
_L("Multi-part object detected"), wxICON_QUESTION | wxYES_NO);
|
_L("Multi-part object detected"), wxICON_QUESTION | wxYES_NO);
|
||||||
dlg.ShowCheckBox(_L("Apply to all multiple objects being loaded."));
|
dlg.ShowCheckBox(_L("Apply to all objects being loaded."));
|
||||||
int answer = dlg.ShowModal();
|
int answer = dlg.ShowModal();
|
||||||
if (dlg.IsCheckBoxChecked())
|
if (dlg.IsCheckBoxChecked())
|
||||||
answer_consider_as_multi_part_objects = answer;
|
answer_consider_as_multi_part_objects = answer;
|
||||||
@ -5551,7 +5551,7 @@ void Plater::convert_gcode_to_ascii()
|
|||||||
using namespace bgcode::core;
|
using namespace bgcode::core;
|
||||||
EResult res = bgcode::convert::from_binary_to_ascii(*in_file.f, *out_file.f, true);
|
EResult res = bgcode::convert::from_binary_to_ascii(*in_file.f, *out_file.f, true);
|
||||||
if (res != EResult::Success) {
|
if (res != EResult::Success) {
|
||||||
MessageDialog msg_dlg(this, _L(std::string(translate_result(res))), _L("Error converting gcode file"), wxICON_INFORMATION | wxOK);
|
MessageDialog msg_dlg(this, _L(std::string(translate_result(res))), _L("Error converting G-code file"), wxICON_INFORMATION | wxOK);
|
||||||
msg_dlg.ShowModal();
|
msg_dlg.ShowModal();
|
||||||
out_file.close();
|
out_file.close();
|
||||||
boost::nowide::remove(output_file.c_str());
|
boost::nowide::remove(output_file.c_str());
|
||||||
@ -5559,7 +5559,8 @@ void Plater::convert_gcode_to_ascii()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageDialog msg_dlg(this, _L("Succesfully created gcode ascii file \n") + output_file, _L("Convert gcode file to ascii format"), wxICON_ERROR | wxOK);
|
MessageDialog msg_dlg(this, Slic3r::GUI::format_wxstr("%1%\n%2%", _L("Successfully created G-code ASCII file"), output_file),
|
||||||
|
_L("Convert G-code file to ASCII format"), wxICON_ERROR | wxOK);
|
||||||
msg_dlg.ShowModal();
|
msg_dlg.ShowModal();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5603,7 +5604,7 @@ void Plater::convert_gcode_to_binary()
|
|||||||
const bgcode::binarize::BinarizerConfig& binarizer_config = GCodeProcessor::get_binarizer_config();
|
const bgcode::binarize::BinarizerConfig& binarizer_config = GCodeProcessor::get_binarizer_config();
|
||||||
EResult res = bgcode::convert::from_ascii_to_binary(*in_file.f, *out_file.f, binarizer_config);
|
EResult res = bgcode::convert::from_ascii_to_binary(*in_file.f, *out_file.f, binarizer_config);
|
||||||
if (res != EResult::Success) {
|
if (res != EResult::Success) {
|
||||||
MessageDialog msg_dlg(this, _L(std::string(translate_result(res))), _L("Error converting gcode file"), wxICON_INFORMATION | wxOK);
|
MessageDialog msg_dlg(this, _L(std::string(translate_result(res))), _L("Error converting G-code file"), wxICON_INFORMATION | wxOK);
|
||||||
msg_dlg.ShowModal();
|
msg_dlg.ShowModal();
|
||||||
out_file.close();
|
out_file.close();
|
||||||
boost::nowide::remove(output_file.c_str());
|
boost::nowide::remove(output_file.c_str());
|
||||||
@ -5611,7 +5612,8 @@ void Plater::convert_gcode_to_binary()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageDialog msg_dlg(this, _L("Succesfully created gcode binary file \n") + output_file, _L("Convert gcode file to binary format"), wxICON_ERROR | wxOK);
|
MessageDialog msg_dlg(this, Slic3r::GUI::format_wxstr("%1%\n%2%", _L("Successfully created G-code binary file"), output_file),
|
||||||
|
_L("Convert G-code file to binary format"), wxICON_ERROR | wxOK);
|
||||||
msg_dlg.ShowModal();
|
msg_dlg.ShowModal();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5848,7 +5850,8 @@ bool Plater::preview_zip_archive(const boost::filesystem::path& archive_path)
|
|||||||
// Decompress action. We already has correct file index in stat structure.
|
// Decompress action. We already has correct file index in stat structure.
|
||||||
mz_bool res = mz_zip_reader_extract_to_mem(&archive, stat.m_file_index, (void*)buffer.data(), (size_t)stat.m_uncomp_size, 0);
|
mz_bool res = mz_zip_reader_extract_to_mem(&archive, stat.m_file_index, (void*)buffer.data(), (size_t)stat.m_uncomp_size, 0);
|
||||||
if (res == 0) {
|
if (res == 0) {
|
||||||
wxString error_log = GUI::format_wxstr(_L("Failed to unzip file to %1%: %2% "), final_path.string(), mz_zip_get_error_string(mz_zip_get_last_error(&archive)));
|
// TRN: First argument = path to file, second argument = error description
|
||||||
|
wxString error_log = GUI::format_wxstr(_L("Failed to unzip file to %1%: %2%"), final_path.string(), mz_zip_get_error_string(mz_zip_get_last_error(&archive)));
|
||||||
BOOST_LOG_TRIVIAL(error) << error_log;
|
BOOST_LOG_TRIVIAL(error) << error_log;
|
||||||
show_error(nullptr, error_log);
|
show_error(nullptr, error_log);
|
||||||
break;
|
break;
|
||||||
|
@ -2665,6 +2665,7 @@ void TabPrinter::build_fff()
|
|||||||
auto [thumbnails_list, errors] = GCodeThumbnails::make_and_check_thumbnail_list(val);
|
auto [thumbnails_list, errors] = GCodeThumbnails::make_and_check_thumbnail_list(val);
|
||||||
|
|
||||||
if (errors != enum_bitmask<ThumbnailError>()) {
|
if (errors != enum_bitmask<ThumbnailError>()) {
|
||||||
|
// TRN: First argument is parameter name, the second one is the value.
|
||||||
std::string error_str = format(_u8L("Invalid value provided for parameter %1%: %2%"), "thumbnails", val);
|
std::string error_str = format(_u8L("Invalid value provided for parameter %1%: %2%"), "thumbnails", val);
|
||||||
error_str += GCodeThumbnails::get_error_string(errors);
|
error_str += GCodeThumbnails::get_error_string(errors);
|
||||||
InfoDialog(parent(), _L("G-code flavor is switched"), from_u8(error_str)).ShowModal();
|
InfoDialog(parent(), _L("G-code flavor is switched"), from_u8(error_str)).ShowModal();
|
||||||
@ -5004,11 +5005,8 @@ void Tab::fill_icon_descriptions()
|
|||||||
"the last saved preset."));
|
"the last saved preset."));
|
||||||
|
|
||||||
m_icon_descriptions.emplace_back(&m_bmp_edit_value, L("EDIT VALUE"),
|
m_icon_descriptions.emplace_back(&m_bmp_edit_value, L("EDIT VALUE"),
|
||||||
// TRN Description for "EDIT VALUE"
|
// TRN Description for "EDIT VALUE" in the Help dialog (the icon is currently used only to edit custom gcodes).
|
||||||
L("indicates that the settings were changed and are not equal to the last saved preset for "
|
L("clicking this icon opens a dialog allowing to edit this value."));
|
||||||
"the current option group.\n"
|
|
||||||
"Click the BACK ARROW icon to reset all settings for the current option group to "
|
|
||||||
"the last saved preset."));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tab::set_tooltips_text()
|
void Tab::set_tooltips_text()
|
||||||
|