diff --git a/resources/profiles/PrusaResearch.idx b/resources/profiles/PrusaResearch.idx index 5e85032d76..f1053366cb 100644 --- a/resources/profiles/PrusaResearch.idx +++ b/resources/profiles/PrusaResearch.idx @@ -1,4 +1,10 @@ +min_slic3r_version = 2.7.5-rc +1.14.0 Added new settings for SLA material profiles. min_slic3r_version = 2.7.3-beta1 +1.13.4 Updated FW version notification (6.0.1). Added ROSA3D filaments. Updated print profiles for 0.6 nozzle. Updated perimeter speeds in "0.10mm FAST DETAIL" profile (MK4/XL). Slightly increased nozzle temperature for Generic PETG/Prusa PETG/Prusament PETG (0.6n). +1.13.3 Updated FW version notification. +1.13.2 Added material profiles for Prusament Resin Flex Anatomic Red and Prusament Resin Flex Gingiva Mask. +1.13.1 Added material profile for Prusament Resin Model Transparent Clear. Enabled stealth mode support for MINI, XL, MK3.5, MK3.9, MK4 (this mode will be available in FW 6.0.0). 1.13.0 Updated version for PrusaSlicer 2.7.3 1.13.0-beta3 Reduced number of top/bottom layers (0.6). Updated cooling thresholds. 1.13.0-beta2 Disabled ramping lift for MK3.5. diff --git a/resources/profiles/PrusaResearch.ini b/resources/profiles/PrusaResearch.ini index bb62aade6a..5e3a8e9570 100644 --- a/resources/profiles/PrusaResearch.ini +++ b/resources/profiles/PrusaResearch.ini @@ -5,7 +5,7 @@ name = Prusa Research # 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.13.0 +config_version = 1.14.0 # Where to get the updates from? config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/PrusaResearch/ changelog_url = https://files.prusa3d.com/?latest=slicer-profiles&lng=%1% @@ -265,7 +265,7 @@ technology = SLA family = SL1 bed_model = sl1_bed.stl bed_texture = sl1.svg -default_materials = Prusa Orange Tough @0.05; Prusament Resin Tough Prusa Orange @0.05 +default_materials = Prusament Resin Tough Prusa Orange @0.05 [printer_model:SL1S] name = Original Prusa SL1S SPEED @@ -274,7 +274,7 @@ technology = SLA family = SL1 bed_model = sl1s_bed.stl bed_texture = sl1s.svg -default_materials = Prusa Orange Tough @0.05 SL1S; Prusament Resin Tough Prusa Orange @0.05 SL1S +default_materials = Prusament Resin Tough Prusa Orange @0.05 SL1S # All presets starting with asterisk, for example *common*, are intermediate and they will # not make it into the user interface. @@ -4089,6 +4089,7 @@ bottom_solid_min_thickness = 0.6 infill_anchor = 2.5 infill_anchor_max = 20 support_material_speed = 90 +fill_density = 20% [print:*MK4IS_common08*] inherits = *MK4IS_common* @@ -4124,6 +4125,21 @@ overhang_speed_3 = 80% # 0.4mm nozzle IS +[print:0.20mm SOLUBLE FULL @MK4IS 0.4] +inherits = 0.20mm STRUCTURAL @MK4IS 0.4; *soluble_support_MMU3* +solid_infill_speed = 60 +top_infill_extrusion_width = 0.42 +support_material_speed = 80 +support_material_interface_speed = 40 +support_material_extrusion_width = 0.4 +compatible_printers_condition = printer_notes=~/.*MK4IS.*/ and nozzle_diameter[0]==0.4 and single_extruder_multi_material + +[print:0.20mm SOLUBLE INTERFACE @MK4IS 0.4] +inherits = 0.20mm SOLUBLE FULL @MK4IS 0.4 +support_material_extruder = 0 +support_material_interface_layers = 3 +support_material_with_sheath = 0 + [print:0.20mm SPEED @MK4IS 0.4] inherits = *MK4IS_common* renamed_from = "0.20mm Input Shaper @MK4IS 0.4" @@ -4135,6 +4151,7 @@ perimeter_speed = 80 external_perimeter_speed = 45 small_perimeter_speed = 45 infill_speed = 120 +solid_infill_speed = 140 gap_fill_speed = 60 top_solid_infill_speed = 80 support_material_speed = 120 @@ -4164,6 +4181,7 @@ solid_infill_acceleration = 3500 top_solid_infill_acceleration = 1500 default_acceleration = 3000 overhang_speed_3 = 80% +bridge_speed = 45 [print:0.15mm STRUCTURAL @MK4IS 0.4] inherits = 0.20mm STRUCTURAL @MK4IS 0.4 @@ -4173,12 +4191,16 @@ bottom_solid_layers = 5 support_material_contact_distance = 0.17 raft_contact_distance = 0.15 infill_speed = 110 +bridge_speed = 45 [print:0.10mm FAST DETAIL @MK4IS 0.4] inherits = 0.15mm SPEED @MK4IS 0.4 layer_height = 0.1 top_solid_layers = 8 bottom_solid_layers = 7 +perimeter_speed = 140 +external_perimeter_speed = 140 +small_perimeter_speed = 140 support_material_contact_distance = 0.17 raft_contact_distance = 0.15 external_perimeter_acceleration = 2000 @@ -4513,10 +4535,10 @@ top_solid_layers = 6 perimeter_speed = 70 external_perimeter_speed = 45 small_perimeter_speed = 45 -solid_infill_speed = 165 -infill_speed = 130 +solid_infill_speed = 160 +infill_speed = 100 top_solid_infill_speed = 70 -bridge_speed = 40 +bridge_speed = 30 gap_fill_speed = 80 external_perimeter_acceleration = 1500 perimeter_acceleration = 2500 @@ -4542,8 +4564,8 @@ top_solid_layers = 5 perimeter_speed = 125 external_perimeter_speed = 125 small_perimeter_speed = 125 -solid_infill_speed = 125 -infill_speed = 200 +solid_infill_speed = 110 +infill_speed = 110 top_solid_infill_speed = 70 bridge_speed = 40 gap_fill_speed = 80 @@ -4569,8 +4591,8 @@ top_solid_layers = 5 perimeter_speed = 80 external_perimeter_speed = 45 small_perimeter_speed = 45 -infill_speed = 120 -solid_infill_speed = 120 +infill_speed = 100 +solid_infill_speed = 110 top_solid_infill_speed = 70 bridge_speed = 30 gap_fill_speed = 80 @@ -4586,7 +4608,7 @@ layer_height = 0.25 perimeter_speed = 90 external_perimeter_speed = 80 small_perimeter_speed = 80 -infill_speed = 200 +infill_speed = 100 solid_infill_speed = 90 top_solid_infill_speed = 60 support_material_speed = 80 @@ -4607,7 +4629,7 @@ perimeter_speed = 80 external_perimeter_speed = 45 small_perimeter_speed = 45 top_solid_infill_speed = 60 -bridge_speed = 40 +bridge_speed = 30 external_perimeter_acceleration = 1500 perimeter_acceleration = 2500 top_solid_infill_acceleration = 1500 @@ -4623,7 +4645,7 @@ top_solid_layers = 4 perimeter_speed = 70 external_perimeter_speed = 70 small_perimeter_speed = 70 -infill_speed = 200 +infill_speed = 100 solid_infill_speed = 70 top_solid_infill_speed = 60 bridge_speed = 40 @@ -4640,6 +4662,8 @@ support_material_contact_distance = 0.25 [print:0.32mm STRUCTURAL @MK4IS 0.6] inherits = 0.32mm SPEED @MK4IS 0.6 +bottom_solid_layers = 4 +top_solid_layers = 5 perimeter_speed = 70 external_perimeter_speed = 45 small_perimeter_speed = 45 @@ -4995,6 +5019,7 @@ infill_anchor_max = 20 bridge_speed = 40 support_tree_angle_slow = 25 support_tree_branch_diameter_double_wall = 5 +fill_density = 20% [print:*XLIS_common08*] inherits = *XLIS_common* @@ -5046,6 +5071,7 @@ perimeter_speed = 80 external_perimeter_speed = 45 small_perimeter_speed = 45 infill_speed = 120 +solid_infill_speed = 140 gap_fill_speed = 65 top_solid_infill_speed = 75 support_material_speed = 120 @@ -5091,6 +5117,7 @@ solid_infill_acceleration = 3500 top_solid_infill_acceleration = 1500 default_acceleration = 2500 overhang_speed_3 = 80% +bridge_speed = 45 [print:0.15mm STRUCTURAL @XLIS 0.4] inherits = 0.20mm STRUCTURAL @XLIS 0.4 @@ -5100,18 +5127,21 @@ bottom_solid_layers = 5 support_material_contact_distance = 0.17 raft_contact_distance = 0.15 infill_speed = 110 +bridge_speed = 45 [print:0.10mm FAST DETAIL @XLIS 0.4] inherits = 0.15mm SPEED @XLIS 0.4 layer_height = 0.1 top_solid_layers = 8 bottom_solid_layers = 7 +perimeter_speed = 140 +external_perimeter_speed = 140 +small_perimeter_speed = 140 support_material_contact_distance = 0.17 raft_contact_distance = 0.15 external_perimeter_acceleration = 2000 perimeter_acceleration = 2000 solid_infill_acceleration = 2500 -small_perimeter_speed = 150 infill_speed = 140 perimeters = 3 top_infill_extrusion_width = 0.4 @@ -5387,8 +5417,8 @@ top_solid_layers = 6 perimeter_speed = 80 external_perimeter_speed = 45 small_perimeter_speed = 45 -solid_infill_speed = 165 -infill_speed = 120 +solid_infill_speed = 160 +infill_speed = 105 top_solid_infill_speed = 70 gap_fill_speed = 75 external_perimeter_acceleration = 1500 @@ -5415,8 +5445,8 @@ top_solid_layers = 5 perimeter_speed = 120 external_perimeter_speed = 120 small_perimeter_speed = 120 -solid_infill_speed = 125 -infill_speed = 200 +solid_infill_speed = 110 +infill_speed = 120 top_solid_infill_speed = 70 gap_fill_speed = 75 external_perimeter_acceleration = 2500 @@ -5440,7 +5470,7 @@ layer_height = 0.2 bottom_solid_layers = 4 top_solid_layers = 5 infill_speed = 120 -solid_infill_speed = 120 +solid_infill_speed = 110 [print:0.25mm SPEED @XLIS 0.6] inherits = *XLIS_common06* @@ -5448,8 +5478,8 @@ layer_height = 0.25 perimeter_speed = 80 external_perimeter_speed = 80 small_perimeter_speed = 80 -infill_speed = 200 -solid_infill_speed = 95 +infill_speed = 100 +solid_infill_speed = 90 top_solid_infill_speed = 60 support_material_speed = 80 gap_fill_speed = 70 @@ -5503,9 +5533,9 @@ top_solid_layers = 4 perimeter_speed = 70 external_perimeter_speed = 70 small_perimeter_speed = 70 -infill_speed = 200 +infill_speed = 100 solid_infill_speed = 70 -top_solid_infill_speed = 65 +top_solid_infill_speed = 60 gap_fill_speed = 65 support_material_speed = 70 external_perimeter_acceleration = 2500 @@ -5520,8 +5550,8 @@ support_material_contact_distance = 0.25 [print:0.32mm STRUCTURAL @XLIS 0.6] inherits = 0.25mm STRUCTURAL @XLIS 0.6 layer_height = 0.32 -bottom_solid_layers = 3 -top_solid_layers = 4 +bottom_solid_layers = 4 +top_solid_layers = 5 perimeter_speed = 70 solid_infill_speed = 70 infill_speed = 70 @@ -5676,6 +5706,7 @@ small_perimeter_speed = 45 gap_fill_speed = 60 top_solid_infill_speed = 80 infill_speed = 115 +solid_infill_speed = 120 support_material_speed = 100 support_material_interface_speed = 50 external_perimeter_acceleration = 1500 @@ -5809,7 +5840,7 @@ perimeter_speed = 70 external_perimeter_speed = 45 small_perimeter_speed = 45 solid_infill_speed = 140 -infill_speed = 140 +infill_speed = 100 top_solid_infill_speed = 70 bridge_speed = 40 gap_fill_speed = 80 @@ -5838,7 +5869,7 @@ perimeter_speed = 115 external_perimeter_speed = 115 small_perimeter_speed = 115 solid_infill_speed = 100 -infill_speed = 120 +infill_speed = 110 top_solid_infill_speed = 70 bridge_speed = 40 gap_fill_speed = 80 @@ -5901,7 +5932,7 @@ external_perimeter_speed = 45 small_perimeter_speed = 45 infill_speed = 70 solid_infill_speed = 60 -top_solid_infill_speed = 55 +top_solid_infill_speed = 50 bridge_speed = 30 gap_fill_speed = 45 support_material_speed = 60 @@ -6051,6 +6082,7 @@ compatible_printers_condition = printer_notes=~/.*MK3.5.*/ and nozzle_diameter[0 [print:0.20mm STRUCTURAL @MK3.5 0.4] inherits = 0.20mm STRUCTURAL @MK4IS 0.4; *MK3.5_common* +solid_infill_speed = 120 compatible_printers_condition = printer_notes=~/.*MK3.5.*/ and nozzle_diameter[0]==0.4 and ! single_extruder_multi_material [print:0.15mm SPEED @MK3.5 0.4] @@ -6065,6 +6097,7 @@ compatible_printers_condition = printer_notes=~/.*MK3.5.*/ and nozzle_diameter[0 [print:0.15mm STRUCTURAL @MK3.5 0.4] inherits = 0.15mm STRUCTURAL @MK4IS 0.4; *MK3.5_common* +solid_infill_speed = 120 compatible_printers_condition = printer_notes=~/.*MK3.5.*/ and nozzle_diameter[0]==0.4 and ! single_extruder_multi_material [print:0.10mm FAST DETAIL @MK3.5 0.4] @@ -6276,7 +6309,7 @@ temperature = 220 start_filament_gcode = "{if printer_notes!~/.*(MK3.5|MINIIS).*/}\nM900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.8}0.06{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.8}0.01{elsif nozzle_diameter[0]==0.6}0.02{else}0.04{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K12{elsif nozzle_diameter[0]==0.8};{else}M900 K20{endif} ; Filament gcode LA 1.0\n{endif}\n\n{if printer_notes=~/.*MINIIS.*/}\nM572 S{if nozzle_diameter[0]==0.6}0.1{elsif nozzle_diameter[0]==0.8}0.07{elsif nozzle_diameter[0]==0.4}0.19{elsif nozzle_diameter[0]==0.25}0.55{else}0{endif}\n{endif}\n\n{if printer_notes=~/.*MK3.5.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.02{elsif nozzle_diameter[0]==0.5}0.018{elsif nozzle_diameter[0]==0.6}0.012{elsif nozzle_diameter[0]==0.8}0.01{elsif nozzle_diameter[0]==0.25}0.09{elsif nozzle_diameter[0]==0.3}0.065{else}0{endif} ; Filament gcode\n{endif}" [filament:*PLAPG*] -start_filament_gcode = "M900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*(MK4IS|XLIS).*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp" +start_filament_gcode = "M900 K{if nozzle_diameter[filament_extruder_id]==0.4}0.05{elsif nozzle_diameter[filament_extruder_id]==0.25}0.14{elsif nozzle_diameter[filament_extruder_id]==0.3}0.07{elsif nozzle_diameter[filament_extruder_id]==0.35}0.06{elsif nozzle_diameter[filament_extruder_id]==0.6}0.03{elsif nozzle_diameter[filament_extruder_id]==0.5}0.035{elsif nozzle_diameter[filament_extruder_id]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*(MK4IS|XLIS).*/}\nM572 S{if nozzle_diameter[filament_extruder_id]==0.4}0.036{elsif nozzle_diameter[filament_extruder_id]==0.5}0.025{elsif nozzle_diameter[filament_extruder_id]==0.6}0.02{elsif nozzle_diameter[filament_extruder_id]==0.8}0.014{elsif nozzle_diameter[filament_extruder_id]==0.25}0.12{elsif nozzle_diameter[filament_extruder_id]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp" compatible_printers_condition = printer_notes=~/.*MK4.*/ and nozzle_diameter[0]!=0.8 and nozzle_diameter[0]!=0.6 slowdown_below_layer_time = 8 idle_temperature = 70 @@ -6375,7 +6408,7 @@ filament_max_volumetric_speed = 15 [filament:*PETPG*] compatible_printers_condition = printer_notes=~/.*MK4.*/ and nozzle_diameter[0]!=0.6 and nozzle_diameter[0]!=0.8 filament_max_volumetric_speed = 9.5 -start_filament_gcode = "M900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*(MK4IS|XLIS).*/}\nM572 S{if nozzle_diameter[0]==0.4}0.055{elsif nozzle_diameter[0]==0.5}0.042{elsif nozzle_diameter[0]==0.6}0.032{elsif nozzle_diameter[0]==0.8}0.018{elsif nozzle_diameter[0]==0.25}0.18{elsif nozzle_diameter[0]==0.3}0.1{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp" +start_filament_gcode = "M900 K{if nozzle_diameter[filament_extruder_id]==0.4}0.07{elsif nozzle_diameter[filament_extruder_id]==0.25}0.12{elsif nozzle_diameter[filament_extruder_id]==0.3}0.09{elsif nozzle_diameter[filament_extruder_id]==0.35}0.08{elsif nozzle_diameter[filament_extruder_id]==0.6}0.04{elsif nozzle_diameter[filament_extruder_id]==0.5}0.05{elsif nozzle_diameter[filament_extruder_id]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*(MK4IS|XLIS).*/}\nM572 S{if nozzle_diameter[filament_extruder_id]==0.4}0.053{elsif nozzle_diameter[filament_extruder_id]==0.5}0.042{elsif nozzle_diameter[filament_extruder_id]==0.6}0.032{elsif nozzle_diameter[filament_extruder_id]==0.8}0.018{elsif nozzle_diameter[filament_extruder_id]==0.25}0.18{elsif nozzle_diameter[filament_extruder_id]==0.3}0.1{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp" idle_temperature = 70 filament_retract_length = 0.8 filament_wipe = 1 @@ -6597,7 +6630,7 @@ compatible_printers_condition = printer_notes!~/.*MINI.*/ and printer_notes!~/.* [filament:*ABSPG*] compatible_printers_condition = printer_notes=~/.*MK4.*/ and nozzle_diameter[0]!=0.6 and nozzle_diameter[0]!=0.8 and ! single_extruder_multi_material filament_max_volumetric_speed = 12 -start_filament_gcode = "M900 K{if nozzle_diameter[0]==0.4}0.04{elsif nozzle_diameter[0]==0.25}0.1{elsif nozzle_diameter[0]==0.3}0.06{elsif nozzle_diameter[0]==0.35}0.05{elsif nozzle_diameter[0]==0.5}0.03{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.01{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*(MK4IS|XLIS).*/}\nM572 S{if nozzle_diameter[0]==0.4}0.02{elsif nozzle_diameter[0]==0.5}0.018{elsif nozzle_diameter[0]==0.6}0.012{elsif nozzle_diameter[0]==0.8}0.01{elsif nozzle_diameter[0]==0.25}0.09{elsif nozzle_diameter[0]==0.3}0.065{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S40 ; set heatbreak target temp" +start_filament_gcode = "M900 K{if nozzle_diameter[filament_extruder_id]==0.4}0.04{elsif nozzle_diameter[filament_extruder_id]==0.25}0.1{elsif nozzle_diameter[filament_extruder_id]==0.3}0.06{elsif nozzle_diameter[filament_extruder_id]==0.35}0.05{elsif nozzle_diameter[filament_extruder_id]==0.5}0.03{elsif nozzle_diameter[filament_extruder_id]==0.6}0.02{elsif nozzle_diameter[filament_extruder_id]==0.8}0.01{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*(MK4IS|XLIS).*/}\nM572 S{if nozzle_diameter[filament_extruder_id]==0.4}0.02{elsif nozzle_diameter[filament_extruder_id]==0.5}0.018{elsif nozzle_diameter[filament_extruder_id]==0.6}0.012{elsif nozzle_diameter[filament_extruder_id]==0.8}0.01{elsif nozzle_diameter[filament_extruder_id]==0.25}0.09{elsif nozzle_diameter[filament_extruder_id]==0.3}0.065{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S40 ; set heatbreak target temp" filament_cooling_final_speed = 50 filament_cooling_initial_speed = 10 filament_cooling_moves = 5 @@ -6645,7 +6678,7 @@ slowdown_below_layer_time = 25 [filament:*PCPG*] inherits = *ABSPG* filament_max_volumetric_speed = 8 -start_filament_gcode = "M900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*(MK4IS|XLIS).*/}\nM572 S{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.6}0.025{elsif nozzle_diameter[0]==0.8}0.016{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp" +start_filament_gcode = "M900 K{if nozzle_diameter[filament_extruder_id]==0.4}0.07{elsif nozzle_diameter[filament_extruder_id]==0.3}0.09{elsif nozzle_diameter[filament_extruder_id]==0.35}0.08{elsif nozzle_diameter[filament_extruder_id]==0.6}0.04{elsif nozzle_diameter[filament_extruder_id]==0.5}0.05{elsif nozzle_diameter[filament_extruder_id]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*(MK4IS|XLIS).*/}\nM572 S{if nozzle_diameter[filament_extruder_id]==0.4}0.05{elsif nozzle_diameter[filament_extruder_id]==0.5}0.035{elsif nozzle_diameter[filament_extruder_id]==0.6}0.025{elsif nozzle_diameter[filament_extruder_id]==0.8}0.016{elsif nozzle_diameter[filament_extruder_id]==0.25}0.14{elsif nozzle_diameter[filament_extruder_id]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp" filament_minimal_purge_on_wipe_tower = 35 compatible_printers_condition = printer_notes=~/.*MK4.*/ and nozzle_diameter[0]!=0.6 and nozzle_diameter[0]!=0.8 and ! single_extruder_multi_material @@ -6684,7 +6717,7 @@ compatible_printers_condition = printer_model=~/.*XL.*/ and nozzle_diameter[0]== [filament:*PAPG*] inherits = *ABSPG* filament_max_volumetric_speed = 5 -start_filament_gcode = "M900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*(MK4IS|XLIS).*/}\nM572 S{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.6}0.025{elsif nozzle_diameter[0]==0.8}0.016{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp" +start_filament_gcode = "M900 K{if nozzle_diameter[filament_extruder_id]==0.4}0.07{elsif nozzle_diameter[filament_extruder_id]==0.3}0.09{elsif nozzle_diameter[filament_extruder_id]==0.35}0.08{elsif nozzle_diameter[filament_extruder_id]==0.6}0.04{elsif nozzle_diameter[filament_extruder_id]==0.5}0.05{elsif nozzle_diameter[filament_extruder_id]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*(MK4IS|XLIS).*/}\nM572 S{if nozzle_diameter[filament_extruder_id]==0.4}0.05{elsif nozzle_diameter[filament_extruder_id]==0.5}0.035{elsif nozzle_diameter[filament_extruder_id]==0.6}0.025{elsif nozzle_diameter[filament_extruder_id]==0.8}0.016{elsif nozzle_diameter[filament_extruder_id]==0.25}0.14{elsif nozzle_diameter[filament_extruder_id]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp" idle_temperature = 150 filament_minimal_purge_on_wipe_tower = 35 compatible_printers_condition = printer_notes=~/.*MK4.*/ and nozzle_diameter[0]!=0.6 and nozzle_diameter[0]!=0.8 and ! single_extruder_multi_material @@ -6755,6 +6788,7 @@ filament_retract_before_travel = 2 compatible_printers_condition = printer_notes=~/.*MK4.*/ and nozzle_diameter[0]>=0.3 and nozzle_diameter[0]!=0.6 and nozzle_diameter[0]!=0.8 and ! single_extruder_multi_material idle_temperature = 70 start_filament_gcode = "M900 K0 ; Filament gcode\n\nM142 S36 ; set heatbreak target temp" +filament_travel_max_lift = 0.6 [filament:*FLEX06PG*] inherits = *FLEXPG* @@ -7261,7 +7295,7 @@ renamed_from = "Kimya ABS Carbon @PG 0.8" filament_max_volumetric_speed = 14 [filament:Kimya ABS Carbon @MK4] -inherits = Kimya ABS Carbon; *ABSPG* +inherits = Kimya ABS Carbon; *ABSPG*; *04PLUSPG* filament_max_volumetric_speed = 6 [filament:Kimya ABS Carbon @MK4 0.6] @@ -7968,6 +8002,7 @@ inherits = Generic PETG filament_max_volumetric_speed = 14 slowdown_below_layer_time = 17 max_fan_speed = 60 +bridge_fan_speed = 60 compatible_printers_condition = nozzle_diameter[0]==0.6 and printer_model=="MK3.5" [filament:Generic PETG @PG] @@ -7977,7 +8012,9 @@ compatible_printers_condition = printer_notes=~/.*MK4.*/ and printer_notes!~/.*M [filament:Generic PETG @PG 0.6] inherits = Generic PETG; *PET06PG* filament_max_volumetric_speed = 17 -temperature = 235 +temperature = 240 +max_fan_speed = 60 +bridge_fan_speed = 60 compatible_printers_condition = printer_notes=~/.*MK4.*/ and printer_notes!~/.*MK4IS.*/ and nozzle_diameter[0]==0.6 [filament:Generic PETG @PG 0.8] @@ -7992,7 +8029,6 @@ filament_max_volumetric_speed = 9 [filament:Generic PETG @XL 0.6] inherits = Generic PETG @PG 0.6; *PET06XL* -temperature = 235 [filament:Generic PETG @XL 0.8] inherits = Generic PETG @PG 0.8; *PET08XL* @@ -8001,7 +8037,7 @@ inherits = Generic PETG @PG 0.8; *PET08XL* inherits = Generic PETG @PG renamed_from = "Generic PETG @MK4IS" filament_max_volumetric_speed = 9 -min_fan_speed = 35 +min_fan_speed = 30 max_fan_speed = 60 first_layer_temperature = 240 temperature = 245 @@ -9251,7 +9287,7 @@ first_layer_temperature = 230 temperature = 220 filament_max_volumetric_speed = 7.5 slowdown_below_layer_time = 10 -start_filament_gcode = "M572 S{if nozzle_diameter[0]==0.4}0.03{elsif nozzle_diameter[0]==0.5}0.022{elsif nozzle_diameter[0]==0.6}0.018{elsif nozzle_diameter[0]==0.8}0.012{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.075{else}0{endif} ; Filament gcode\nM142 S36 ; set heatbreak target temp" +start_filament_gcode = "M572 S{if nozzle_diameter[filament_extruder_id]==0.4}0.03{elsif nozzle_diameter[filament_extruder_id]==0.5}0.022{elsif nozzle_diameter[filament_extruder_id]==0.6}0.018{elsif nozzle_diameter[filament_extruder_id]==0.8}0.012{elsif nozzle_diameter[filament_extruder_id]==0.25}0.12{elsif nozzle_diameter[filament_extruder_id]==0.3}0.075{else}0{endif} ; Filament gcode\nM142 S36 ; set heatbreak target temp" compatible_printers_condition = printer_notes=~/.*XLIS.*/ and nozzle_diameter[0]!=0.8 and nozzle_diameter[0]!=0.6 [filament:Generic PLA Silk @XLIS 0.6] @@ -12065,12 +12101,16 @@ compatible_printers_condition = printer_notes=~/.*MK4.*/ and printer_notes!~/.*M [filament:Prusa PETG @PG 0.6] inherits = Prusa PETG; *PET06PG* +temperature = 240 +max_fan_speed = 60 +bridge_fan_speed = 60 compatible_printers_condition = printer_notes=~/.*MK4.*/ and printer_notes!~/.*MK4IS.*/ and nozzle_diameter[0]==0.6 -temperature = 235 [filament:Prusa PETG @PG 0.8] inherits = Prusa PETG; *PET08PG* temperature = 250 +max_fan_speed = 60 +bridge_fan_speed = 60 compatible_printers_condition = printer_notes=~/.*MK4.*/ and printer_notes!~/.*MK4IS.*/ and nozzle_diameter[0]==0.8 [filament:Prusa PETG @XL] @@ -12078,7 +12118,7 @@ inherits = Prusa PETG @PG; *PETXL* [filament:Prusa PETG @XL 0.6] inherits = Prusa PETG @PG 0.6; *PET06XL* -temperature = 235 +temperature = 240 [filament:Prusa PETG @XL 0.8] inherits = Prusa PETG @PG 0.8; *PET08XL* @@ -12086,7 +12126,7 @@ inherits = Prusa PETG @PG 0.8; *PET08XL* [filament:Prusa PETG @PGIS] inherits = Generic PETG @PG renamed_from = "Prusa PETG @MK4IS" -min_fan_speed = 35 +min_fan_speed = 30 max_fan_speed = 60 first_layer_temperature = 240 temperature = 245 @@ -12099,7 +12139,7 @@ compatible_printers_condition = printer_notes=~/.*PG.*/ and printer_notes=~/.*MK [filament:Prusa PETG @PGIS 0.6] inherits = Generic PETG @PG 0.6 first_layer_temperature = 240 -temperature = 235 +temperature = 240 filament_retract_length = 0.8 filament_wipe = 1 filament_retract_before_wipe = 20 @@ -12161,11 +12201,15 @@ compatible_printers_condition = printer_notes=~/.*MK4.*/ and printer_notes!~/.*M [filament:Prusament PETG @PG 0.6] inherits = Prusament PETG; *PET06PG* -temperature = 240 +temperature = 245 +max_fan_speed = 60 +bridge_fan_speed = 60 compatible_printers_condition = printer_notes=~/.*MK4.*/ and printer_notes!~/.*MK4IS.*/ and nozzle_diameter[0]==0.6 [filament:Prusament PETG @PG 0.8] inherits = Prusament PETG; *PET08PG* +max_fan_speed = 60 +bridge_fan_speed = 60 compatible_printers_condition = printer_notes=~/.*MK4.*/ and printer_notes!~/.*MK4IS.*/ and nozzle_diameter[0]==0.8 [filament:Prusament PETG @XL] @@ -12173,7 +12217,6 @@ inherits = Prusament PETG @PG; *PETXL* [filament:Prusament PETG @XL 0.6] inherits = Prusament PETG @PG 0.6; *PET06XL* -temperature = 240 [filament:Prusament PETG @XL 0.8] inherits = Prusament PETG @PG 0.8; *PET08XL* @@ -12182,7 +12225,7 @@ inherits = Prusament PETG @PG 0.8; *PET08XL* inherits = Prusament PETG @PG renamed_from = "Prusament PETG @MK4IS" filament_max_volumetric_speed = 9.5 -min_fan_speed = 35 +min_fan_speed = 30 max_fan_speed = 60 compatible_printers_condition = printer_notes=~/.*PG.*/ and printer_notes=~/.*MK4IS.*/ and nozzle_diameter[0]!=0.8 and nozzle_diameter[0]!=0.6 @@ -13756,6 +13799,120 @@ temperature = 240 [filament:Fiberlogy PP @XL 0.8] inherits = Fiberlogy PP @PG 0.8; *ABS08XL* +[filament:ROSA3D PLA Starter] +inherits = *PLA* +filament_vendor = ROSA3D Filaments +temperature = 215 +filament_cost = 74.90 +filament_density = 1.24 +filament_spool_weight = 250 + +[filament:ROSA3D PLA Starter @PG] +inherits = ROSA3D PLA Starter; *PLAPG* +first_layer_temperature = 220 +temperature = 220 +slowdown_below_layer_time = 8 + +[filament:ROSA3D PLA Starter @PG 0.6] +inherits = ROSA3D PLA Starter; *PLA06PG* +first_layer_temperature = 225 +temperature = 225 + +[filament:ROSA3D PLA Starter @PG 0.8] +inherits = ROSA3D PLA Starter; *PLA08PG* +first_layer_temperature = 225 +temperature = 225 + +[filament:ROSA3D PLA Starter @XL] +inherits = ROSA3D PLA Starter @PG; *PLAXL* + +[filament:ROSA3D PLA Starter @XL 0.6] +inherits = ROSA3D PLA Starter @PG 0.6; *PLA06XL* +filament_max_volumetric_speed = 15.5 + +[filament:ROSA3D PLA Starter @XL 0.8] +inherits = ROSA3D PLA Starter @PG 0.8; *PLA08XL* + +[filament:ROSA3D PLA Silk] +inherits = *PLA* +filament_vendor = ROSA3D Filaments +temperature = 215 +filament_max_volumetric_speed = 7 +filament_cost = 109.90 +filament_density = 1.24 +filament_spool_weight = 250 +start_filament_gcode = "M900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*(MK4IS|XLIS).*/}\nM572 S{if nozzle_diameter[0]==0.4}0.03{elsif nozzle_diameter[0]==0.5}0.022{elsif nozzle_diameter[0]==0.6}0.018{elsif nozzle_diameter[0]==0.8}0.012{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.075{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp" + +[filament:ROSA3D PLA Silk @PG] +inherits = ROSA3D PLA Silk; *PLAPG* +filament_max_volumetric_speed = 7 +slowdown_below_layer_time = 10 +first_layer_temperature = 225 +temperature = 225 + +[filament:ROSA3D PLA Silk @PG 0.6] +inherits = ROSA3D PLA Silk; *PLA06PG* +filament_max_volumetric_speed = 9 +temperature = 225 + +[filament:ROSA3D PLA Silk @PG 0.8] +inherits = ROSA3D PLA Silk; *PLA08PG* +first_layer_temperature = 225 +temperature = 225 + +[filament:ROSA3D PLA Silk @XL] +inherits = ROSA3D PLA Silk @PG; *PLAXL* +filament_max_volumetric_speed = 7 + +[filament:ROSA3D PLA Silk @XL 0.6] +inherits = ROSA3D PLA Silk @PG 0.6; *PLA06XL* +filament_max_volumetric_speed = 9 +first_layer_temperature = 225 +temperature = 225 + +[filament:ROSA3D PLA Silk @XL 0.8] +inherits = ROSA3D PLA Silk @PG 0.8; *PLA08XL* +filament_max_volumetric_speed = 12 + +[filament:ROSA3D PETG Standard] +inherits = *PET* +filament_vendor = ROSA3D Filaments +first_layer_temperature = 235 +temperature = 235 +filament_cost = 89.90 +filament_density = 1.29 +filament_spool_weight = 250 +filament_type = PETG + +[filament:ROSA3D PETG Standard @PG] +inherits = ROSA3D PETG Standard; *PETPG* + +[filament:ROSA3D PETG Standard @PG 0.6] +inherits = ROSA3D PETG Standard; *PET06PG* +filament_max_volumetric_speed = 15 + +[filament:ROSA3D PETG Standard @PG 0.8] +inherits = ROSA3D PETG Standard; *PET08PG* + +[filament:ROSA3D PETG Standard @XL] +inherits = ROSA3D PETG Standard @PG; *PETXL* + +[filament:ROSA3D PETG Standard @XL 0.6] +inherits = ROSA3D PETG Standard @PG 0.6; *PET06XL* +filament_max_volumetric_speed = 15 + +[filament:ROSA3D PETG Standard @XL 0.8] +inherits = ROSA3D PETG Standard @PG 0.8; *PET08XL* + +[filament:ROSA3D PETG Standard @MINI] +inherits = ROSA3D PETG Standard; *PETMINI* +filament_vendor = ROSA3D Filaments +first_layer_temperature = 240 +temperature = 240 +filament_cost = 89.90 +filament_density = 1.27 +filament_spool_weight = 250 + [filament:Filament PM PLA] inherits = *PLA* renamed_from = "Plasty Mladec PLA" @@ -14490,7 +14647,7 @@ first_layer_temperature = 230 temperature = 225 filament_max_volumetric_speed = 7.5 slowdown_below_layer_time = 8 -start_filament_gcode = "M900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*(MK4IS|XLIS).*/}\nM572 S{if nozzle_diameter[0]==0.4}0.033{elsif nozzle_diameter[0]==0.5}0.022{elsif nozzle_diameter[0]==0.6}0.018{elsif nozzle_diameter[0]==0.8}0.012{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.075{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp" +start_filament_gcode = "M900 K{if nozzle_diameter[filament_extruder_id]==0.4}0.05{elsif nozzle_diameter[filament_extruder_id]==0.25}0.14{elsif nozzle_diameter[filament_extruder_id]==0.3}0.07{elsif nozzle_diameter[filament_extruder_id]==0.35}0.06{elsif nozzle_diameter[filament_extruder_id]==0.6}0.03{elsif nozzle_diameter[filament_extruder_id]==0.5}0.035{elsif nozzle_diameter[filament_extruder_id]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*(MK4IS|XLIS).*/}\nM572 S{if nozzle_diameter[filament_extruder_id]==0.4}0.033{elsif nozzle_diameter[filament_extruder_id]==0.5}0.022{elsif nozzle_diameter[filament_extruder_id]==0.6}0.018{elsif nozzle_diameter[filament_extruder_id]==0.8}0.012{elsif nozzle_diameter[filament_extruder_id]==0.25}0.12{elsif nozzle_diameter[filament_extruder_id]==0.3}0.075{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp" compatible_printers_condition = printer_notes=~/.*PG.*/ and printer_notes=~/.*MK4IS.*/ and nozzle_diameter[0]!=0.8 and nozzle_diameter[0]!=0.6 [filament:Prusament PLA Blend @PGIS 0.6] @@ -14513,7 +14670,7 @@ first_layer_temperature = 230 temperature = 225 filament_max_volumetric_speed = 7.5 slowdown_below_layer_time = 10 -start_filament_gcode = "M572 S{if nozzle_diameter[0]==0.4}0.033{elsif nozzle_diameter[0]==0.5}0.022{elsif nozzle_diameter[0]==0.6}0.018{elsif nozzle_diameter[0]==0.8}0.012{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.075{else}0{endif} ; Filament gcode\nM142 S36 ; set heatbreak target temp" +start_filament_gcode = "M572 S{if nozzle_diameter[filament_extruder_id]==0.4}0.033{elsif nozzle_diameter[filament_extruder_id]==0.5}0.022{elsif nozzle_diameter[filament_extruder_id]==0.6}0.018{elsif nozzle_diameter[filament_extruder_id]==0.8}0.012{elsif nozzle_diameter[filament_extruder_id]==0.25}0.12{elsif nozzle_diameter[filament_extruder_id]==0.3}0.075{else}0{endif} ; Filament gcode\nM142 S36 ; set heatbreak target temp" compatible_printers_condition = printer_notes=~/.*XLIS.*/ and nozzle_diameter[0]!=0.8 and nozzle_diameter[0]!=0.6 [filament:Prusament PLA Blend @XLIS 0.6] @@ -15131,10 +15288,27 @@ temperature = 210 [filament:Verbatim BVOH @PG] inherits = Verbatim BVOH; *ABSPG* -first_layer_temperature = 215 -temperature = 210 +first_layer_temperature = 220 +temperature = 220 idle_temperature = 70 filament_max_volumetric_speed = 4 +compatible_printers_condition = printer_notes=~/.*MK4.*/ and nozzle_diameter[0]!=0.6 and nozzle_diameter[0]!=0.8 + +#MMU3 parameters +filament_minimal_purge_on_wipe_tower = 35 +filament_loading_speed = 10 +filament_loading_speed_start = 50 +filament_unloading_speed = 100 +filament_unloading_speed_start = 100 +filament_load_time = 10.5 +filament_unload_time = 8.5 +filament_toolchange_delay = 0 +filament_cooling_moves = 3 +filament_cooling_final_speed = 3.5 +filament_cooling_initial_speed = 10 +filament_stamping_distance = 45 +filament_stamping_loading_speed = 29 +filament_ramming_parameters = "250 100 39.9677 40.1613 40.2581 40.1613 40.0645| 0.05 39.9548 0.45 40.1484 0.95 40.1484 1.45 40.1484 1.95 40.1484 2.45 40.1484 2.95 40.1484 3.45 40.1484 3.95 40.1484 4.45 40.1484 4.95 40.1484" [filament:Verbatim BVOH @PG 0.6] inherits = Verbatim BVOH @PG; *ABS06PG* @@ -16237,9 +16411,9 @@ inherits = *common* layer_height = 0.025 support_head_width = 2 -[sla_print:0.035 Detail] -inherits = *common* -layer_height = 0.035 +; [sla_print:0.035 Detail] +; inherits = *common* +; layer_height = 0.035 [sla_print:0.05 Normal] inherits = *common* @@ -16279,6 +16453,9 @@ initial_exposure_time = 45 initial_layer_height = 0.05 material_correction = 1,1,1 material_notes = +material_print_speed = fast + +# SL1 [sla_material:*common 0.025*] inherits = *common* @@ -16304,6 +16481,30 @@ exposure_time = 20 initial_exposure_time = 45 initial_layer_height = 0.1 +[sla_material:*sl1_fast*] +area_fill = 35 +delay_before_exposure = 0,1 +delay_after_exposure = 0,0 +tower_hop_height = 0,0 +tower_speed = layer22,layer22 +use_tilt = 1,1 +tilt_down_initial_speed = layer400,layer400 +tilt_down_offset_steps = 0,0 +tilt_down_offset_delay = 0,0 +tilt_down_finish_speed = layer1750,layer1500 +tilt_down_cycles = 1,1 +tilt_down_delay = 0,0 +tilt_up_initial_speed = move5120,move5120 +tilt_up_offset_steps = 400,400 +tilt_up_offset_delay = 0,0 +tilt_up_finish_speed = layer400,layer400 +tilt_up_cycles = 1,1 +tilt_up_delay = 0,0 +# For legacy slicer versions +material_print_speed = fast + +# SL1S + [sla_material:*0.025_sl1s*] inherits = *common* compatible_prints_condition = layer_height == 0.025 @@ -16326,10 +16527,80 @@ exposure_time = 2.6 initial_exposure_time = 25 initial_layer_height = 0.1 +[sla_material:*sl1s_slow*] +area_fill = 35 +delay_before_exposure = 3,3 +delay_after_exposure = 0,0 +tower_hop_height = 0,0 +tower_speed = layer22,layer22 +use_tilt = 1,1 +tilt_down_initial_speed = layer1750,layer1750 +tilt_down_offset_steps = 0,0 +tilt_down_offset_delay = 0,0 +tilt_down_finish_speed = layer1750,layer1750 +tilt_down_cycles = 1,1 +tilt_down_delay = 0,0 +tilt_up_initial_speed = move8000,move8000 +tilt_up_offset_steps = 1200,1200 +tilt_up_offset_delay = 0,0 +tilt_up_finish_speed = layer1750,layer1750 +tilt_up_cycles = 1,1 +tilt_up_delay = 0,0 +# For legacy slicer versions +material_print_speed = slow + +[sla_material:*sl1s_fast*] +area_fill = 35 +delay_before_exposure = 0,1 +delay_after_exposure = 0,0 +tower_hop_height = 0,0 +tower_speed = layer22,layer22 +use_tilt = 1,1 +tilt_down_initial_speed = layer1750,layer1750 +tilt_down_offset_steps = 0,0 +tilt_down_offset_delay = 0,0 +tilt_down_finish_speed = move8000,layer1750 +tilt_down_cycles = 1,1 +tilt_down_delay = 0,0 +tilt_up_initial_speed = move8000,move8000 +tilt_up_offset_steps = 600,600 +tilt_up_offset_delay = 0,0 +tilt_up_finish_speed = layer1750,layer1750 +tilt_up_cycles = 1,1 +tilt_up_delay = 0,0 +# For legacy slicer versions +material_print_speed = slow + +[sla_material:*sl1s_hv*] +area_fill = 35 +delay_before_exposure = 3.5,3.5 +delay_after_exposure = 0,0 +tower_hop_height = 5,5 +tower_speed = layer2,layer2 +use_tilt = 1,1 +tilt_down_initial_speed = layer800,layer800 +tilt_down_offset_steps = 2200,2200 +tilt_down_offset_delay = 0,0 +tilt_down_finish_speed = layer1750,layer1750 +tilt_down_cycles = 1,1 +tilt_down_delay = 0,0 +tilt_up_initial_speed = layer1750,layer1750 +tilt_up_offset_steps = 2200,2200 +tilt_up_offset_delay = 0,0 +tilt_up_finish_speed = layer800,layer800 +tilt_up_cycles = 1,1 +tilt_up_delay = 0,0 +# For legacy slicer versions +material_print_speed = slow + +[sla_material:*legacy_fast*] +# For legacy slicer versions +material_print_speed = fast + ########### Materials 0.025 [sla_material:3DM-ABS @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 12 initial_exposure_time = 35 material_type = Tough @@ -16337,7 +16608,7 @@ material_vendor = 3DM material_colour = #FF8040 [sla_material:3DM-Vulcan Gold @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 12 initial_exposure_time = 30 material_type = Casting @@ -16345,7 +16616,7 @@ material_vendor = 3DM material_colour = #B0B000 [sla_material:3DM-TOUGH Clear @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 9 initial_exposure_time = 30 material_type = Tough @@ -16353,7 +16624,7 @@ material_vendor = 3DM material_colour = #F8F8F8 [sla_material:3DM-HR Red Wine @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 14 initial_exposure_time = 35 material_type = Tough @@ -16361,7 +16632,7 @@ material_vendor = 3DM material_colour = #EC0000 [sla_material:BlueCast Phrozen Wax @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 15 initial_exposure_time = 50 material_type = Tough @@ -16369,7 +16640,7 @@ material_vendor = BlueCast material_colour = #007EFD [sla_material:BlueCast Castable Wax @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 8 initial_exposure_time = 35 material_type = Casting @@ -16377,7 +16648,7 @@ material_vendor = BlueCast material_colour = #007EFD [sla_material:BlueCast EcoGray @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 6 initial_exposure_time = 40 material_type = Tough @@ -16385,23 +16656,23 @@ material_vendor = BlueCast material_colour = #808080 [sla_material:BlueCast Kera Master Dental @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 6 initial_exposure_time = 45 -material_type = Dental +material_type = Medical material_vendor = BlueCast material_colour = #B0B000 [sla_material:BlueCast Model Dental Gray @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 -material_type = Dental +material_type = Medical material_vendor = BlueCast material_colour = #C0C0C0 [sla_material:BlueCast X10 @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 4 initial_exposure_time = 100 material_type = Tough @@ -16409,7 +16680,7 @@ material_vendor = BlueCast material_colour = #007EFD [sla_material:BlueCast X-One @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 25 initial_exposure_time = 35 material_type = Casting @@ -16417,7 +16688,7 @@ material_vendor = BlueCast material_colour = #C0C0C0 [sla_material:DruckWege Type D High Temp @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 6 initial_exposure_time = 20 material_type = Tough @@ -16425,7 +16696,7 @@ material_vendor = DruckWege material_colour = #E800E8 [sla_material:Esun Bio-Photopolymer Resin White @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 5 initial_exposure_time = 30 material_type = Tough @@ -16433,7 +16704,7 @@ material_vendor = Esun material_colour = #FFFFFF [sla_material:FunToDo Castable Blend Red @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 10 initial_exposure_time = 35 material_type = Casting @@ -16441,7 +16712,7 @@ material_vendor = FunToDo material_colour = #EC0000 [sla_material:FunToDo Snow White @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 7 initial_exposure_time = 35 material_type = Tough @@ -16449,7 +16720,7 @@ material_vendor = FunToDo material_colour = #FFFFFF [sla_material:Harz Labs Basic Resin Red @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 10 initial_exposure_time = 20 material_type = Tough @@ -16457,7 +16728,7 @@ material_vendor = Harz Labs material_colour = #EC0000 [sla_material:Harz Labs Model Resin Cherry @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 10 initial_exposure_time = 20 material_type = Tough @@ -16465,7 +16736,7 @@ material_vendor = Harz Labs material_colour = #EC0000 [sla_material:Harz Labs Model Resin Black @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 10 initial_exposure_time = 20 material_type = Tough @@ -16473,15 +16744,15 @@ material_vendor = Harz Labs material_colour = #595959 [sla_material:Harz Labs Dental Cast Red @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 10 initial_exposure_time = 20 -material_type = Dental +material_type = Medical material_vendor = Harz Labs material_colour = #EC0000 [sla_material:Esun Standard Resin Black @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 6 initial_exposure_time = 30 material_type = Tough @@ -16489,7 +16760,7 @@ material_vendor = Esun material_colour = #595959 [sla_material:Photocentric Ash Grey @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 9 initial_exposure_time = 30 material_type = Tough @@ -16497,7 +16768,7 @@ material_vendor = Photocentric material_colour = #C0C0C0 [sla_material:Resinworks 3D Violet @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 15 initial_exposure_time = 30 material_type = Tough @@ -16505,7 +16776,7 @@ material_vendor = Resinworks 3D material_colour = #E800E8 [sla_material:Resinworks 3D Green @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 17 initial_exposure_time = 30 material_type = Tough @@ -16513,7 +16784,7 @@ material_vendor = Resinworks 3D material_colour = #00B900 [sla_material:Monocure 3D Black Rapid Resin @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 4 initial_exposure_time = 35 material_type = Tough @@ -16521,7 +16792,7 @@ material_vendor = Monocure material_colour = #595959 [sla_material:Monocure 3D Blue Rapid Resin @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 4 initial_exposure_time = 35 material_type = Tough @@ -16531,7 +16802,7 @@ material_colour = #007EFD ## Prusa Polymers 0.025 [sla_material:Prusament Resin Tough Prusa Orange @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 5 initial_exposure_time = 35 material_type = Tough @@ -16539,7 +16810,7 @@ material_vendor = Prusa Polymers material_colour = #FF8040 [sla_material:Prusament Resin Tough Rich Black @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 5 initial_exposure_time = 35 material_type = Tough @@ -16547,7 +16818,7 @@ material_vendor = Prusa Polymers material_colour = #595959 [sla_material:Prusament Resin Tough Anthracite Grey @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 material_type = Tough @@ -16555,7 +16826,7 @@ material_vendor = Prusa Polymers material_colour = #808080 [sla_material:Prusament Resin Tough Sandstone Model @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 4 initial_exposure_time = 35 material_type = Tough @@ -16563,7 +16834,7 @@ material_vendor = Prusa Polymers material_colour = #EEA061 [sla_material:Prusament Resin Tough Terra Brown @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 4 initial_exposure_time = 35 material_type = Tough @@ -16571,7 +16842,7 @@ material_vendor = Prusa Polymers material_colour = #7A5C45 [sla_material:Prusament Resin Tough Brick Red @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 4 initial_exposure_time = 35 material_type = Tough @@ -16579,7 +16850,7 @@ material_vendor = Prusa Polymers material_colour = #B46056 [sla_material:Prusament Resin Tough Grass Green @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 4 initial_exposure_time = 35 material_type = Tough @@ -16587,7 +16858,7 @@ material_vendor = Prusa Polymers material_colour = #37823F [sla_material:Prusament Resin Tough Bright Yellow @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 4 initial_exposure_time = 35 material_type = Tough @@ -16595,7 +16866,7 @@ material_vendor = Prusa Polymers material_colour = #F9DB4C [sla_material:Prusament Resin Tough Transparent Green @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 5 initial_exposure_time = 35 material_type = Tough @@ -16603,7 +16874,7 @@ material_vendor = Prusa Polymers material_colour = #1DAf5E [sla_material:Prusament Resin Tough Transparent Red @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 material_type = Tough @@ -16611,7 +16882,7 @@ material_vendor = Prusa Polymers material_colour = #D21B31 [sla_material:Prusament Resin Tough Transparent Amber @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 5 initial_exposure_time = 35 material_type = Tough @@ -16619,7 +16890,7 @@ material_vendor = Prusa Polymers material_colour = #FCB30E [sla_material:Prusament Resin Tough Classic Red @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 3 initial_exposure_time = 35 material_type = Tough @@ -16627,7 +16898,7 @@ material_vendor = Prusa Polymers material_colour = #EC0000 [sla_material:Prusament Resin Model Solid Grey @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 4.5 initial_exposure_time = 35 material_type = Tough @@ -16635,7 +16906,7 @@ material_vendor = Prusa Polymers material_colour = #9C9D9D [sla_material:Prusament Resin Model Alabaster White @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 4.5 initial_exposure_time = 30 material_type = Tough @@ -16643,7 +16914,7 @@ material_vendor = Prusa Polymers material_colour = #D6D7D8 [sla_material:Prusament Resin Model Neutral Beige @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 4.8 initial_exposure_time = 35 material_type = Tough @@ -16651,7 +16922,7 @@ material_vendor = Prusa Polymers material_colour = #BF9C87 [sla_material:Prusament Resin Model Ultra Violet @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 5 initial_exposure_time = 35 material_type = Tough @@ -16659,7 +16930,7 @@ material_vendor = Prusa Polymers material_colour = #413A7A [sla_material:Prusament Resin BioBased60 Herbal Green @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 7 initial_exposure_time = 30 material_type = Tough @@ -16667,7 +16938,7 @@ material_vendor = Prusa Polymers material_colour = #3AD200 [sla_material:Prusament Resin BioBased60 Magma Red @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 7 initial_exposure_time = 35 material_type = Tough @@ -16675,7 +16946,7 @@ material_vendor = Prusa Polymers material_colour = #D20202 [sla_material:Prusament Resin BioBased60 Natural Yellow @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 material_type = Tough @@ -16683,7 +16954,7 @@ material_vendor = Prusa Polymers material_colour = #ECDE05 [sla_material:Prusament Resin BioBased60 Obsidian Black @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 10 initial_exposure_time = 35 material_type = Tough @@ -16691,7 +16962,7 @@ material_vendor = Prusa Polymers material_colour = #232323 [sla_material:Prusament Resin BioBased60 Sapphire Blue @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 7.7 initial_exposure_time = 35 material_type = Tough @@ -16699,7 +16970,7 @@ material_vendor = Prusa Polymers material_colour = #2196F3 [sla_material:Prusament Resin BioBased60 Ivory White @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 7.5 initial_exposure_time = 35 material_type = Tough @@ -16707,7 +16978,7 @@ material_vendor = Prusa Polymers material_colour = #E3D99F [sla_material:Prusament Resin Flex80 Transparent Clear @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 10 initial_exposure_time = 30 material_type = Flexible @@ -16715,7 +16986,7 @@ material_vendor = Prusa Polymers material_colour = #F3F6F4 [sla_material:Prusament Resin Flex80 Black @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 8 initial_exposure_time = 30 material_type = Flexible @@ -16723,192 +16994,15 @@ material_vendor = Prusa Polymers material_colour = #595959 [sla_material:Prusament Resin Flex80 White @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 5.5 initial_exposure_time = 35 material_type = Flexible material_vendor = Prusa Polymers material_colour = #E2D3DB -## Prusa 0.025 - -[sla_material:Prusa Orange Tough @0.025] -inherits = *common 0.025* -exposure_time = 6 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FF8040 - -[sla_material:Prusa Grey Tough @0.025] -inherits = *common 0.025* -exposure_time = 7 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FF8040 - -[sla_material:Prusa Azure Blue Tough @0.025] -inherits = *common 0.025* -exposure_time = 7 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #007EFD - -## [sla_material:Prusa Blue Tough @0.025] -## inherits = *common 0.025* -## exposure_time = 5 -## initial_exposure_time = 35 -## material_type = Tough -## material_vendor = Made for Prusa - -[sla_material:Prusa Maroon Tough @0.025] -inherits = *common 0.025* -exposure_time = 6 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #804000 - -[sla_material:Prusa Beige Tough @0.025] -inherits = *common 0.025* -exposure_time = 6 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FFEEE6 - -[sla_material:Prusa Pink Tough @0.025] -inherits = *common 0.025* -exposure_time = 7 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FF80C0 - -[sla_material:Prusa White Tough @0.025] -inherits = *common 0.025* -exposure_time = 6.5 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FFFFFF - -[sla_material:Prusa Transparent Tough @0.025] -inherits = *common 0.025* -exposure_time = 6 -initial_exposure_time = 15 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #F8F8F8 - -[sla_material:Prusa Green Dental Casting @0.025] -inherits = *common 0.025* -exposure_time = 12 -initial_exposure_time = 40 -material_type = Casting -material_vendor = Made for Prusa -material_colour = #00B900 - -[sla_material:Prusa Transparent Green Tough @0.025] -inherits = *common 0.025* -exposure_time = 5 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #00B900 - -[sla_material:Prusa Clear ABS like @0.025] -inherits = *common 0.025* -exposure_time = 6 -initial_exposure_time = 30 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #F8F8F8 - -[sla_material:Prusa White ABS like @0.025] -inherits = *common 0.025* -exposure_time = 5 -initial_exposure_time = 30 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FFFFFF - -[sla_material:Prusa Grey High Tenacity @0.025] -inherits = *common 0.025* -exposure_time = 5 -initial_exposure_time = 30 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #C0C0C0 - -[sla_material:Prusa Super Low Odor Cyan Tough @0.025] -inherits = *common 0.025* -exposure_time = 5 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #79FFFF - -[sla_material:Prusa Super Low Odor Magenta Tough @0.025] -inherits = *common 0.025* -exposure_time = 5 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #E800E8 - -[sla_material:Prusa Super Low Odor Yellow Tough @0.025] -inherits = *common 0.025* -exposure_time = 5 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FFFF6F - -[sla_material:Prusa Orange-Yellow Teeth Model @0.025] -inherits = *common 0.025* -exposure_time = 5 -initial_exposure_time = 30 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FFFF6F - -[sla_material:Prusa Vibrant Orange Tough @0.025] -inherits = *common 0.025* -exposure_time = 6 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FF8040 - -[sla_material:Prusa Rich Black Tough @0.025] -inherits = *common 0.025* -exposure_time = 5 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #595959 - -[sla_material:Prusa Deep Blue Transparent Tough @0.025] -inherits = *common 0.025* -exposure_time = 5 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #F8F8F8 - -[sla_material:Prusa Yellow Jewelry Casting @0.025] -inherits = *common 0.025* -exposure_time = 8 -initial_exposure_time = 45 -material_type = Casting -material_vendor = Made for Prusa -material_colour = #FFFF6F - [sla_material:Ameralabs TGM-7 LED @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 4 initial_exposure_time = 35 material_type = Tough @@ -16916,7 +17010,7 @@ material_vendor = Ameralabs material_colour = #C0C0C0 [sla_material:PrimaCreator Tough Light Grey @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 material_type = Tough @@ -16924,7 +17018,7 @@ material_vendor = PrimaCreator material_colour = #C0C0C0 [sla_material:PrimaCreator Tough Clear @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 5 initial_exposure_time = 35 material_type = Tough @@ -16932,7 +17026,7 @@ material_vendor = PrimaCreator material_colour = #F8F8F8 [sla_material:PrimaCreator Tough White @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 5 initial_exposure_time = 35 material_type = Tough @@ -16940,7 +17034,7 @@ material_vendor = PrimaCreator material_colour = #FFFFFF [sla_material:PrimaCreator Flex Clear @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 4.5 initial_exposure_time = 30 material_type = Flexible @@ -16948,7 +17042,7 @@ material_vendor = PrimaCreator material_colour = #F8F8F8 [sla_material:Siraya Tech Simple Clear @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 8 initial_exposure_time = 35 material_type = Tough @@ -16956,7 +17050,7 @@ material_vendor = Siraya Tech material_colour = #F8F8F8 [sla_material:Siraya Tech Blu Clear V2 @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 9 initial_exposure_time = 30 material_type = Tough @@ -16964,7 +17058,7 @@ material_vendor = Siraya Tech material_colour = #F8F8F8 [sla_material:Siraya Tech Blu Blue @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 material_type = Tough @@ -16972,7 +17066,7 @@ material_vendor = Siraya Tech material_colour = #007EFD [sla_material:Siraya Tech Fast Grey @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 material_type = Tough @@ -16980,7 +17074,7 @@ material_vendor = Siraya Tech material_colour = #C0C0C0 [sla_material:Siraya Tech Tenacious @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 material_type = Tough @@ -16988,7 +17082,7 @@ material_vendor = Siraya Tech material_colour = #F8F8F8 [sla_material:Siraya Tech Easy @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 11 initial_exposure_time = 15 material_type = Tough @@ -16996,7 +17090,7 @@ material_vendor = Siraya Tech material_colour = #F8F8F8 [sla_material:Siraya Tech Sculpt @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 7 initial_exposure_time = 35 material_type = Tough @@ -17004,7 +17098,7 @@ material_vendor = Siraya Tech material_colour = #C0C0C0 [sla_material:Siraya Tech Fast Black @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 material_type = Tough @@ -17012,23 +17106,23 @@ material_vendor = Siraya Tech material_colour = #007EFD [sla_material:NextDent Model 2.0 Grey @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 14 initial_exposure_time = 35 -material_type = Dental +material_type = Medical material_vendor = NextDent material_colour = #808080 [sla_material:NextDent Surgical Guide @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 -material_type = Dental +material_type = Medical material_vendor = NextDent material_colour = #FF8040 [sla_material:NextDent Cast Purple @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 7 initial_exposure_time = 20 material_type = Casting @@ -17036,7 +17130,7 @@ material_vendor = NextDent material_colour = #E800E8 [sla_material:MakerJuice Labs Standard Red @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 9 initial_exposure_time = 35 material_type = Tough @@ -17044,7 +17138,7 @@ material_vendor = MakerJuice Labs material_colour = #EC0000 [sla_material:3DJake High Precision Grey @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 8.5 initial_exposure_time = 35 material_type = Tough @@ -17052,7 +17146,7 @@ material_vendor = 3DJake material_colour = #C0C0C0 [sla_material:3DJake High Precision Blue @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 6.5 initial_exposure_time = 35 material_type = Tough @@ -17060,7 +17154,7 @@ material_vendor = 3DJake material_colour = #007EFD [sla_material:Zortrax Black @0.025] -inherits = *common 0.025* +inherits = *common 0.025*; *sl1_fast* exposure_time = 4 initial_exposure_time = 35 material_type = Tough @@ -17070,15 +17164,15 @@ material_colour = #595959 ########### Materials 0.05 [sla_material:Asiga Denta Model @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 15 initial_exposure_time = 30 -material_type = Dental +material_type = Medical material_vendor = Asiga material_colour = #FFEEE6 [sla_material:Asiga PlasGRAY @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 29 initial_exposure_time = 60 material_type = Tough @@ -17086,7 +17180,7 @@ material_vendor = Asiga material_colour = #C0C0C0 [sla_material:Ameralabs TGM-7 LED @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 7 initial_exposure_time = 35 material_type = Tough @@ -17094,7 +17188,7 @@ material_vendor = Ameralabs material_colour = #C0C0C0 [sla_material:Ameralabs AMD 3 LED @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 5 initial_exposure_time = 30 material_type = Tough @@ -17102,7 +17196,7 @@ material_vendor = Ameralabs material_colour = #808080 [sla_material:BlueCast EcoGray @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 7 initial_exposure_time = 35 material_type = Tough @@ -17110,23 +17204,23 @@ material_vendor = BlueCast material_colour = #808080 [sla_material:BlueCast Kera Master Dental @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 7 initial_exposure_time = 50 -material_type = Dental +material_type = Medical material_vendor = BlueCast material_colour = #FFEEE6 [sla_material:BlueCast Model Dental Gray @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 8 initial_exposure_time = 35 -material_type = Dental +material_type = Medical material_vendor = BlueCast material_colour = #C0C0C0 [sla_material:BlueCast LCD-DLP Original @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 10 initial_exposure_time = 60 material_type = Tough @@ -17134,7 +17228,7 @@ material_vendor = BlueCast material_colour = #007EFD [sla_material:BlueCast Phrozen Wax @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 16 initial_exposure_time = 50 material_type = Tough @@ -17142,7 +17236,7 @@ material_vendor = BlueCast material_colour = #007EFD [sla_material:BlueCast Castable Wax @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 11 initial_exposure_time = 35 material_type = Casting @@ -17150,7 +17244,7 @@ material_vendor = BlueCast material_colour = #E800E8 [sla_material:BlueCast S+ @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 9 initial_exposure_time = 45 material_type = Tough @@ -17158,7 +17252,7 @@ material_vendor = BlueCast material_colour = #00B900 [sla_material:BlueCast X5 @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 9 initial_exposure_time = 100 material_type = Tough @@ -17166,7 +17260,7 @@ material_vendor = BlueCast material_colour = #007EFD [sla_material:BlueCast X10 @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 6 initial_exposure_time = 100 material_type = Tough @@ -17174,7 +17268,7 @@ material_vendor = BlueCast material_colour = #007EFD [sla_material:BlueCast 23LS @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 8 initial_exposure_time = 50 material_type = Tough @@ -17182,7 +17276,7 @@ material_vendor = BlueCast material_colour = #007EFD [sla_material:BlueCast X-One @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 27 initial_exposure_time = 35 material_type = Casting @@ -17190,7 +17284,7 @@ material_vendor = BlueCast material_colour = #C0C0C0 [sla_material:DruckWege Type D High Temp @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 10 initial_exposure_time = 20 material_type = Tough @@ -17198,7 +17292,7 @@ material_vendor = DruckWege material_colour = #E800E8 [sla_material:Monocure 3D Black Rapid Resin @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 material_type = Tough @@ -17206,7 +17300,7 @@ material_vendor = Monocure material_colour = #595959 [sla_material:Monocure 3D Blue Rapid Resin @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 7 initial_exposure_time = 35 material_type = Tough @@ -17214,7 +17308,7 @@ material_vendor = Monocure material_colour = #007EFD [sla_material:Monocure 3D Clear Rapid Resin @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 8 initial_exposure_time = 40 material_type = Tough @@ -17222,7 +17316,7 @@ material_vendor = Monocure material_colour = #F8F8F8 [sla_material:Monocure 3D Grey Rapid Resin @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 10 initial_exposure_time = 30 material_type = Tough @@ -17230,7 +17324,7 @@ material_vendor = Monocure material_colour = #C0C0C0 [sla_material:Monocure 3D White Rapid Resin @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 10 initial_exposure_time = 35 material_type = Tough @@ -17238,7 +17332,7 @@ material_vendor = Monocure material_colour = #FFFFFF [sla_material:3DM-HTR140 (high temperature) @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 12 initial_exposure_time = 45 material_type = Tough @@ -17246,7 +17340,7 @@ material_vendor = 3DM material_colour = #EC0000 [sla_material:Esun Bio-Photopolymer Resin White @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 8 initial_exposure_time = 30 material_type = Tough @@ -17254,7 +17348,7 @@ material_vendor = Esun material_colour = #FFFFFF [sla_material:Esun Standard Resin Black @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 7 initial_exposure_time = 30 material_type = Tough @@ -17262,7 +17356,7 @@ material_vendor = Esun material_colour = #595959 [sla_material:FunToDo Castable Blend Red @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 15 initial_exposure_time = 35 material_type = Casting @@ -17270,7 +17364,7 @@ material_vendor = FunToDo material_colour = #EC0000 [sla_material:FunToDo Industrial Blend Unpigmented @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 4 initial_exposure_time = 35 material_type = Tough @@ -17278,7 +17372,7 @@ material_vendor = FunToDo material_colour = #F8F8F8 [sla_material:FunToDo Snow White @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 10 initial_exposure_time = 35 material_type = Tough @@ -17286,7 +17380,7 @@ material_vendor = FunToDo material_colour = #FFFFFF [sla_material:3DM-ABS @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 13 initial_exposure_time = 25 material_type = Tough @@ -17294,7 +17388,7 @@ material_vendor = 3DM material_colour = #FF8040 [sla_material:3DM-BLACK @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 20 initial_exposure_time = 40 material_type = Tough @@ -17302,15 +17396,15 @@ material_vendor = 3DM material_colour = #595959 [sla_material:3DM-DENT @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 7 initial_exposure_time = 45 -material_type = Dental +material_type = Medical material_vendor = 3DM material_colour = #FFEEE6 [sla_material:3DM-HR Green @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 15 initial_exposure_time = 40 material_type = Tough @@ -17318,7 +17412,7 @@ material_vendor = 3DM material_colour = #00B900 [sla_material:3DM-HR Red Wine @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 18 initial_exposure_time = 35 material_type = Tough @@ -17326,7 +17420,7 @@ material_vendor = 3DM material_colour = #EC0000 [sla_material:3DM-XPRO White @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 9 initial_exposure_time = 35 material_type = Tough @@ -17334,7 +17428,7 @@ material_vendor = 3DM material_colour = #FFFFFF [sla_material:3DM-Vulcan Gold @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 15 initial_exposure_time = 30 material_type = Tough @@ -17342,7 +17436,7 @@ material_vendor = 3DM material_colour = #B0B000 [sla_material:3DM-TOUGH Clear @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 15 initial_exposure_time = 30 material_type = Tough @@ -17350,7 +17444,7 @@ material_vendor = 3DM material_colour = #F8F8F8 [sla_material:FunToDo Ash Grey @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 9 initial_exposure_time = 40 material_type = Tough @@ -17358,7 +17452,7 @@ material_vendor = FunToDo material_colour = #808080 [sla_material:Harz Labs Model Resin Cherry @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 13 initial_exposure_time = 20 material_type = Tough @@ -17366,7 +17460,7 @@ material_vendor = Harz Labs material_colour = #EC0000 [sla_material:Harz Labs Basic Resin Red @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 13 initial_exposure_time = 20 material_type = Tough @@ -17374,7 +17468,7 @@ material_vendor = Harz Labs material_colour = #EC0000 [sla_material:Harz Labs Model Resin Black @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 13 initial_exposure_time = 20 material_type = Tough @@ -17382,15 +17476,15 @@ material_vendor = Harz Labs material_colour = #595959 [sla_material:Harz Labs Dental Cast Red @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 13 initial_exposure_time = 20 -material_type = Dental +material_type = Medical material_vendor = Harz Labs material_colour = #EC0000 [sla_material:Resinworks 3D Violet @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 17 initial_exposure_time = 30 material_type = Tough @@ -17398,7 +17492,7 @@ material_vendor = Resinworks 3D material_colour = #E800E8 [sla_material:Resinworks 3D Green @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 21 initial_exposure_time = 35 material_type = Tough @@ -17406,7 +17500,7 @@ material_vendor = Resinworks 3D material_colour = #00B900 [sla_material:Photocentric Hard Grey @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 15 initial_exposure_time = 30 material_type = Tough @@ -17414,7 +17508,7 @@ material_vendor = Photocentric material_colour = #808080 [sla_material:Photocentric Ash Grey @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 10 initial_exposure_time = 30 material_type = Tough @@ -17422,7 +17516,7 @@ material_vendor = Photocentric material_colour = #C0C0C0 [sla_material:PrimaCreator Tough Light Grey @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 8.5 initial_exposure_time = 35 material_type = Tough @@ -17430,7 +17524,7 @@ material_vendor = PrimaCreator material_colour = #C0C0C0 [sla_material:PrimaCreator Tough Clear @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 7 initial_exposure_time = 35 material_type = Tough @@ -17438,7 +17532,7 @@ material_vendor = PrimaCreator material_colour = #F8F8F8 [sla_material:PrimaCreator Tough White @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 7.5 initial_exposure_time = 35 material_type = Tough @@ -17446,7 +17540,7 @@ material_vendor = PrimaCreator material_colour = #FFFFFF [sla_material:PrimaCreator Flex Clear @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 6.5 initial_exposure_time = 30 material_type = Flexible @@ -17454,7 +17548,7 @@ material_vendor = PrimaCreator material_colour = #F8F8F8 [sla_material:Siraya Tech Simple Clear @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 10 initial_exposure_time = 35 material_type = Tough @@ -17462,7 +17556,7 @@ material_vendor = Siraya Tech material_colour = #F8F8F8 [sla_material:Siraya Tech Blu Clear V2 @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 10 initial_exposure_time = 30 material_type = Tough @@ -17470,7 +17564,7 @@ material_vendor = Siraya Tech material_colour = #F8F8F8 [sla_material:Siraya Tech Blu Blue @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 12 initial_exposure_time = 35 material_type = Tough @@ -17478,7 +17572,7 @@ material_vendor = Siraya Tech material_colour = #007EFD [sla_material:Siraya Tech Fast Grey @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 10 initial_exposure_time = 35 material_type = Tough @@ -17486,7 +17580,7 @@ material_vendor = Siraya Tech material_colour = #C0C0C0 [sla_material:Siraya Tech Tenacious @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 8 initial_exposure_time = 35 material_type = Tough @@ -17494,7 +17588,7 @@ material_vendor = Siraya Tech material_colour = #F8F8F8 [sla_material:Siraya Tech Easy @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 12 initial_exposure_time = 15 material_type = Tough @@ -17502,7 +17596,7 @@ material_vendor = Siraya Tech material_colour = #F8F8F8 [sla_material:Siraya Tech Sculpt @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 8 initial_exposure_time = 35 material_type = Tough @@ -17510,7 +17604,7 @@ material_vendor = Siraya Tech material_colour = #C0C0C0 [sla_material:Siraya Tech Fast Black @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 9 initial_exposure_time = 35 material_type = Tough @@ -17518,23 +17612,23 @@ material_vendor = Siraya Tech material_colour = #595959 [sla_material:NextDent Model 2.0 Grey @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 12 initial_exposure_time = 35 -material_type = Dental +material_type = Medical material_vendor = NextDent material_colour = #C0C0C0 [sla_material:NextDent Surgical Guide @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 7 initial_exposure_time = 35 -material_type = Dental +material_type = Medical material_vendor = NextDent material_colour = #FFEEE6 [sla_material:NextDent Cast Purple @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 9 initial_exposure_time = 20 material_type = Casting @@ -17542,15 +17636,15 @@ material_vendor = NextDent material_colour = #E800E8 [sla_material:NextDent Crown Bridge @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 11 initial_exposure_time = 35 -material_type = Dental +material_type = Medical material_vendor = NextDent material_colour = #FFFFFF [sla_material:MakerJuice Labs Standard Red @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 10 initial_exposure_time = 35 material_type = Tough @@ -17558,7 +17652,7 @@ material_vendor = MakerJuice Labs material_colour = #EC0000 [sla_material:3DJake High Precision Grey @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 9 initial_exposure_time = 35 material_type = Tough @@ -17566,7 +17660,7 @@ material_vendor = 3DJake material_colour = #C0C0C0 [sla_material:3DJake High Precision Blue @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 7 initial_exposure_time = 35 material_type = Tough @@ -17574,7 +17668,7 @@ material_vendor = 3DJake material_colour = #007EFD [sla_material:Dragon Resin Metalshine Metal Grey @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 30 initial_exposure_time = 50 material_type = Tough @@ -17582,7 +17676,7 @@ material_vendor = Dragon Resin material_colour = #808080 [sla_material:Dragon Resin Metalshine Dark Brass @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 30 initial_exposure_time = 50 material_type = Tough @@ -17590,7 +17684,7 @@ material_vendor = Dragon Resin material_colour = #B0B000 [sla_material:Dragon Resin Metalshine Brass @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 30 initial_exposure_time = 50 material_type = Tough @@ -17598,7 +17692,7 @@ material_vendor = Dragon Resin material_colour = #B0B000 [sla_material:Zortrax Black @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 7 initial_exposure_time = 35 material_type = Tough @@ -17608,7 +17702,7 @@ material_colour = #595959 ## Prusa Polymers 0.05 [sla_material:Prusament Resin Tough Prusa Orange @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 material_type = Tough @@ -17616,7 +17710,7 @@ material_vendor = Prusa Polymers material_colour = #FF8040 [sla_material:Prusament Resin Tough Rich Black @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 material_type = Tough @@ -17624,7 +17718,7 @@ material_vendor = Prusa Polymers material_colour = #595959 [sla_material:Prusament Resin Tough Anthracite Grey @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 7 initial_exposure_time = 35 material_type = Tough @@ -17632,7 +17726,7 @@ material_vendor = Prusa Polymers material_colour = #C0C0C0 [sla_material:Prusament Resin Tough Sandstone Model @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 material_type = Tough @@ -17640,7 +17734,7 @@ material_vendor = Prusa Polymers material_colour = #EEA061 [sla_material:Prusament Resin Tough Terra Brown @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 material_type = Tough @@ -17648,7 +17742,7 @@ material_vendor = Prusa Polymers material_colour = #7A5C45 [sla_material:Prusament Resin Tough Brick Red @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 material_type = Tough @@ -17656,7 +17750,7 @@ material_vendor = Prusa Polymers material_colour = #B46056 [sla_material:Prusament Resin Tough Grass Green @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 material_type = Tough @@ -17664,7 +17758,7 @@ material_vendor = Prusa Polymers material_colour = #37823F [sla_material:Prusament Resin Tough Bright Yellow @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 material_type = Tough @@ -17672,7 +17766,7 @@ material_vendor = Prusa Polymers material_colour = #F9DB4C [sla_material:Prusament Resin Tough Transparent Green @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 material_type = Tough @@ -17680,7 +17774,7 @@ material_vendor = Prusa Polymers material_colour = #1DAf5E [sla_material:Prusament Resin Tough Transparent Red @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 8 initial_exposure_time = 35 material_type = Tough @@ -17688,7 +17782,7 @@ material_vendor = Prusa Polymers material_colour = #D21B31 [sla_material:Prusament Resin Tough Transparent Amber @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 material_type = Tough @@ -17696,7 +17790,7 @@ material_vendor = Prusa Polymers material_colour = #FCB30E [sla_material:Prusament Resin Tough Classic Red @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 4 initial_exposure_time = 35 material_type = Tough @@ -17704,7 +17798,7 @@ material_vendor = Prusa Polymers material_colour = #EC0000 [sla_material:Prusament Resin Model Solid Grey @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 5 initial_exposure_time = 35 material_type = Tough @@ -17712,7 +17806,7 @@ material_vendor = Prusa Polymers material_colour = #9C9D9D [sla_material:Prusament Resin Model Alabaster White @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 5 initial_exposure_time = 30 material_type = Tough @@ -17720,7 +17814,7 @@ material_vendor = Prusa Polymers material_colour = #D6D7D8 [sla_material:Prusament Resin Model Neutral Beige @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 5.5 initial_exposure_time = 35 material_type = Tough @@ -17728,7 +17822,7 @@ material_vendor = Prusa Polymers material_colour = #BF9C87 [sla_material:Prusament Resin Model Ultra Violet @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 6 initial_exposure_time = 35 material_type = Tough @@ -17736,7 +17830,7 @@ material_vendor = Prusa Polymers material_colour = #413A7A [sla_material:Prusament Resin BioBased60 Herbal Green @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 8 initial_exposure_time = 30 material_type = Tough @@ -17744,7 +17838,7 @@ material_vendor = Prusa Polymers material_colour = #3AD200 [sla_material:Prusament Resin BioBased60 Magma Red @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 8 initial_exposure_time = 35 material_type = Tough @@ -17752,7 +17846,7 @@ material_vendor = Prusa Polymers material_colour = #D20202 [sla_material:Prusament Resin BioBased60 Natural Yellow @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 7 initial_exposure_time = 35 material_type = Tough @@ -17760,7 +17854,7 @@ material_vendor = Prusa Polymers material_colour = #ECDE05 [sla_material:Prusament Resin BioBased60 Obsidian Black @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 12 initial_exposure_time = 35 material_type = Tough @@ -17768,7 +17862,7 @@ material_vendor = Prusa Polymers material_colour = #232323 [sla_material:Prusament Resin BioBased60 Sapphire Blue @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 8 initial_exposure_time = 35 material_type = Tough @@ -17776,7 +17870,7 @@ material_vendor = Prusa Polymers material_colour = #2196F3 [sla_material:Prusament Resin BioBased60 Ivory White @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 9.5 initial_exposure_time = 35 material_type = Tough @@ -17784,7 +17878,7 @@ material_vendor = Prusa Polymers material_colour = #E3D99F [sla_material:Prusament Resin Flex80 Transparent Clear @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 15 initial_exposure_time = 30 material_type = Flexible @@ -17792,7 +17886,7 @@ material_vendor = Prusa Polymers material_colour = #F3F6F4 [sla_material:Prusament Resin Flex80 Black @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 10 initial_exposure_time = 30 material_type = Flexible @@ -17800,289 +17894,17 @@ material_vendor = Prusa Polymers material_colour = #595959 [sla_material:Prusament Resin Flex80 White @0.05] -inherits = *common 0.05* +inherits = *common 0.05*; *sl1_fast* exposure_time = 6.5 initial_exposure_time = 35 material_type = Flexible material_vendor = Prusa Polymers material_colour = #E2D3DB -## Prusa 0.05 - -[sla_material:Prusa Beige Tough @0.05] -inherits = *common 0.05* -exposure_time = 7 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = - -[sla_material:Prusa Orange Tough @0.05] -inherits = *common 0.05* -exposure_time = 7.5 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FF8040 - -[sla_material:Prusa Grey Tough @0.05] -inherits = *common 0.05* -exposure_time = 8.5 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #808080 - -[sla_material:Prusa Black Tough @0.05] -inherits = *common 0.05* -exposure_time = 6 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #595959 - -## [sla_material:Prusa Super Low Odor Beige Tough @0.05] -## inherits = *common 0.05* -## exposure_time = 7.5 -## initial_exposure_time = 35 -## material_type = Tough -## material_vendor = Made for Prusa - -## [sla_material:Prusa Super Low Odor White Tough @0.05] -## inherits = *common 0.05* -## exposure_time = 6.5 -## initial_exposure_time = 35 -## material_type = Tough -## material_vendor = Made for Prusa - -## [sla_material:Prusa Super Low Odor Grey Tough @0.05] -## inherits = *common 0.05* -## exposure_time = 6.5 -## initial_exposure_time = 35 -## material_type = Tough -## material_vendor = Made for Prusa - -[sla_material:Prusa Super Low Odor Cyan Tough @0.05] -inherits = *common 0.05* -exposure_time = 6 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #79FFFF - -[sla_material:Prusa Super Low Odor Magenta Tough @0.05] -inherits = *common 0.05* -exposure_time = 6 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #E800E8 - -[sla_material:Prusa Super Low Odor Yellow Tough @0.05] -inherits = *common 0.05* -exposure_time = 6 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FFFF6F - -## [sla_material:Prusa Black High Tenacity @0.05] -## inherits = *common 0.05* -## exposure_time = 7 -## initial_exposure_time = 35 -## material_type = Tough -## material_vendor = Made for Prusa - -[sla_material:Prusa Orange-Yellow Teeth Model @0.05] -inherits = *common 0.05* -exposure_time = 7 -initial_exposure_time = 30 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FFFF6F - -[sla_material:Prusa Green Dental Casting @0.05] -inherits = *common 0.05* -exposure_time = 13 -initial_exposure_time = 50 -material_type = Casting -material_vendor = Made for Prusa -material_colour = #00B900 - -## [sla_material:Prusa Yellow Solid @0.05] -## inherits = *common 0.05* -## exposure_time = 7 -## initial_exposure_time = 35 - -[sla_material:Prusa White Tough @0.05] -inherits = *common 0.05* -exposure_time = 7.5 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FFFFFF - -[sla_material:Prusa Transparent Green Tough @0.05] -inherits = *common 0.05* -exposure_time = 6 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #00B900 - -[sla_material:Prusa Transparent Red Tough @0.05] -inherits = *common 0.05* -exposure_time = 6 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #EC0000 - -[sla_material:Prusa Maroon Tough @0.05] -inherits = *common 0.05* -exposure_time = 7.5 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #804000 - -[sla_material:Prusa Pink Tough @0.05] -inherits = *common 0.05* -exposure_time = 8 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FF80C0 - -[sla_material:Prusa Azure Blue Tough @0.05] -inherits = *common 0.05* -exposure_time = 8 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #007EFD - -## [sla_material:Prusa Blue Tough @0.05] -## inherits = *common 0.05* -## exposure_time = 8 -## initial_exposure_time = 35 -## material_type = Tough -## material_vendor = Made for Prusa - -[sla_material:Prusa Transparent Tough @0.05] -inherits = *common 0.05* -exposure_time = 7 -initial_exposure_time = 15 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #F8F8F8 - -## [sla_material:Prusa Yellow Flexible @0.05] -## inherits = *common 0.05* -## exposure_time = 9 -## initial_exposure_time = 35 - -[sla_material:Prusa Transparent Flexible @0.05] -inherits = *common 0.05* -exposure_time = 5 -initial_exposure_time = 15 -material_type = Flexible -material_vendor = Made for Prusa -material_colour = #F8F8F8 - -## [sla_material:Prusa White Flexible @0.05] -## inherits = *common 0.05* -## exposure_time = 9 -## initial_exposure_time = 35 - -[sla_material:Prusa Blue Flexible @0.05] -inherits = *common 0.05* -exposure_time = 5 -initial_exposure_time = 15 -material_type = Flexible -material_vendor = Made for Prusa -material_colour = #007EFD - -## [sla_material:Prusa Black Flexible @0.05] -## inherits = *common 0.05* -## exposure_time = 9 -## initial_exposure_time = 35 - -## [sla_material:Prusa Red Flexible @0.05] -## inherits = *common 0.05* -## exposure_time = 9 -## initial_exposure_time = 35 - -[sla_material:Prusa Clear ABS like @0.05] -inherits = *common 0.05* -exposure_time = 8 -initial_exposure_time = 30 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #F8F8F8 - -[sla_material:Prusa White ABS like @0.05] -inherits = *common 0.05* -exposure_time = 8 -initial_exposure_time = 30 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FFFFFF - -[sla_material:Prusa Yellow Jewelry Casting @0.05] -inherits = *common 0.05* -exposure_time = 13 -initial_exposure_time = 45 -material_type = Casting -material_vendor = Made for Prusa -material_colour = #FFFF6F - -[sla_material:Prusa Grey High Tenacity @0.05] -inherits = *common 0.05* -exposure_time = 7 -initial_exposure_time = 30 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #C0C0C0 - -[sla_material:Prusa Vibrant Orange Tough @0.05] -inherits = *common 0.05* -exposure_time = 7 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FF8040 - -[sla_material:Prusa Rich Black Tough @0.05] -inherits = *common 0.05* -exposure_time = 8 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #595959 - -[sla_material:Prusa Deep Blue Transparent Tough @0.05] -inherits = *common 0.05* -exposure_time = 8 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #007EFD - -########### Materials 0.035 - -[sla_material:Prusa Orange Tough @0.035] -inherits = *common 0.035* -exposure_time = 6 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FF8040 - ########### Materials 0.1 [sla_material:BlueCast EcoGray @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 10 initial_exposure_time = 35 material_type = Tough @@ -18090,7 +17912,7 @@ material_vendor = BlueCast material_colour = #C0C0C0 [sla_material:BlueCast Kera Master Dental @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 13 initial_exposure_time = 50 material_type = Tough @@ -18098,7 +17920,7 @@ material_vendor = BlueCast material_colour = #FFEEE6 [sla_material:BlueCast X-One @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 30 initial_exposure_time = 45 material_type = Casting @@ -18106,7 +17928,7 @@ material_vendor = BlueCast material_colour = #C0C0C0 [sla_material:Ameralabs TGM-7 LED @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 10 initial_exposure_time = 45 material_type = Tough @@ -18116,7 +17938,7 @@ material_colour = #C0C0C0 ## Prusa Polymers 0.1 [sla_material:Prusament Resin Tough Prusa Orange @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 13 initial_exposure_time = 45 material_type = Tough @@ -18124,7 +17946,7 @@ material_vendor = Prusa Polymers material_colour = #FF8040 [sla_material:Prusament Resin Tough Rich Black @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 13 initial_exposure_time = 45 material_type = Tough @@ -18132,7 +17954,7 @@ material_vendor = Prusa Polymers material_colour = #595959 [sla_material:Prusament Resin Tough Anthracite Grey @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 14 initial_exposure_time = 45 material_type = Tough @@ -18140,7 +17962,7 @@ material_vendor = Prusa Polymers material_colour = #808080 [sla_material:Prusament Resin Tough Classic Red @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 6 initial_exposure_time = 45 material_type = Tough @@ -18148,7 +17970,7 @@ material_vendor = Prusa Polymers material_colour = #EC0000 [sla_material:Prusament Resin Tough Sandstone Model @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 13 initial_exposure_time = 45 material_type = Tough @@ -18156,7 +17978,7 @@ material_vendor = Prusa Polymers material_colour = #EEA061 [sla_material:Prusament Resin Tough Terra Brown @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 13 initial_exposure_time = 45 material_type = Tough @@ -18164,7 +17986,7 @@ material_vendor = Prusa Polymers material_colour = #7A5C45 [sla_material:Prusament Resin Tough Brick Red @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 13 initial_exposure_time = 45 material_type = Tough @@ -18172,7 +17994,7 @@ material_vendor = Prusa Polymers material_colour = #B46056 [sla_material:Prusament Resin Tough Grass Green @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 13 initial_exposure_time = 45 material_type = Tough @@ -18180,7 +18002,7 @@ material_vendor = Prusa Polymers material_colour = #37823F [sla_material:Prusament Resin Tough Bright Yellow @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 13 initial_exposure_time = 45 material_type = Tough @@ -18188,7 +18010,7 @@ material_vendor = Prusa Polymers material_colour = #F9DB4C [sla_material:Prusament Resin Tough Transparent Green @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 13 initial_exposure_time = 45 material_type = Tough @@ -18196,7 +18018,7 @@ material_vendor = Prusa Polymers material_colour = #1DAf5E [sla_material:Prusament Resin Tough Transparent Red @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 13 initial_exposure_time = 45 material_type = Tough @@ -18204,7 +18026,7 @@ material_vendor = Prusa Polymers material_colour = #D21B31 [sla_material:Prusament Resin Tough Transparent Amber @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 13 initial_exposure_time = 45 material_type = Tough @@ -18212,7 +18034,7 @@ material_vendor = Prusa Polymers material_colour = #FCB30E [sla_material:Prusament Resin BioBased60 Herbal Green @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 13 initial_exposure_time = 45 material_type = Tough @@ -18220,7 +18042,7 @@ material_vendor = Prusa Polymers material_colour = #3AD200 [sla_material:Prusament Resin Model Solid Grey @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 13 initial_exposure_time = 45 material_type = Tough @@ -18228,7 +18050,7 @@ material_vendor = Prusa Polymers material_colour = #9C9D9D [sla_material:Prusament Resin Model Alabaster White @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 13 initial_exposure_time = 45 material_type = Tough @@ -18236,7 +18058,7 @@ material_vendor = Prusa Polymers material_colour = #D6D7D8 [sla_material:Prusament Resin Model Neutral Beige @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 7 initial_exposure_time = 45 material_type = Tough @@ -18244,7 +18066,7 @@ material_vendor = Prusa Polymers material_colour = #BF9C87 [sla_material:Prusament Resin Model Ultra Violet @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 7 initial_exposure_time = 35 material_type = Tough @@ -18252,7 +18074,7 @@ material_vendor = Prusa Polymers material_colour = #413A7A [sla_material:Prusament Resin BioBased60 Magma Red @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 13 initial_exposure_time = 45 material_type = Tough @@ -18260,7 +18082,7 @@ material_vendor = Prusa Polymers material_colour = #D20202 [sla_material:Prusament Resin BioBased60 Natural Yellow @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 8 initial_exposure_time = 35 material_type = Tough @@ -18268,7 +18090,7 @@ material_vendor = Prusa Polymers material_colour = #ECDE05 [sla_material:Prusament Resin BioBased60 Obsidian Black @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 16 initial_exposure_time = 35 material_type = Tough @@ -18276,7 +18098,7 @@ material_vendor = Prusa Polymers material_colour = #232323 [sla_material:Prusament Resin BioBased60 Sapphire Blue @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 9 initial_exposure_time = 35 material_type = Tough @@ -18284,7 +18106,7 @@ material_vendor = Prusa Polymers material_colour = #2196F3 [sla_material:Prusament Resin BioBased60 Ivory White @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 12 initial_exposure_time = 45 material_type = Tough @@ -18292,7 +18114,7 @@ material_vendor = Prusa Polymers material_colour = #E3D99F [sla_material:Prusament Resin Flex80 Transparent Clear @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 20 initial_exposure_time = 30 material_type = Flexible @@ -18300,7 +18122,7 @@ material_vendor = Prusa Polymers material_colour = #F3F6F4 [sla_material:Prusament Resin Flex80 Black @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 13 initial_exposure_time = 30 material_type = Flexible @@ -18308,105 +18130,15 @@ material_vendor = Prusa Polymers material_colour = #595959 [sla_material:Prusament Resin Flex80 White @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 7.5 initial_exposure_time = 45 material_type = Flexible material_vendor = Prusa Polymers material_colour = #E2D3DB -## Prusa 0.1 - -[sla_material:Prusa Orange Tough @0.1] -inherits = *common 0.1* -exposure_time = 13 -initial_exposure_time = 45 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FF8040 - -[sla_material:Prusa Beige Tough @0.1] -inherits = *common 0.1* -exposure_time = 13 -initial_exposure_time = 45 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FFEEE6 - -[sla_material:Prusa Pink Tough @0.1] -inherits = *common 0.1* -exposure_time = 13 -initial_exposure_time = 45 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FF80C0 - -[sla_material:Prusa Azure Blue Tough @0.1] -inherits = *common 0.1* -exposure_time = 13 -initial_exposure_time = 45 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #007EFD - -[sla_material:Prusa Maroon Tough @0.1] -inherits = *common 0.1* -exposure_time = 13 -initial_exposure_time = 45 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #804000 - -[sla_material:Prusa White Tough @0.1] -inherits = *common 0.1* -exposure_time = 13 -initial_exposure_time = 45 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FFFFFF - -[sla_material:Prusa Black Tough @0.1] -inherits = *common 0.1* -exposure_time = 13 -initial_exposure_time = 55 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #595959 - -[sla_material:Prusa Transparent Tough @0.1] -inherits = *common 0.1* -exposure_time = 8 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #F8F8F8 - -[sla_material:Prusa Green Dental Casting @0.1] -inherits = *common 0.1* -exposure_time = 15 -initial_exposure_time = 50 -material_type = Casting -material_vendor = Made for Prusa -material_colour = #00B900 - -[sla_material:Prusa Transparent Green Tough @0.1] -inherits = *common 0.1* -exposure_time = 7 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #00B900 - -[sla_material:Prusa Vibrant Orange Tough @0.1] -inherits = *common 0.1* -exposure_time = 8 -initial_exposure_time = 35 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FF8040 - [sla_material:PrimaCreator Tough Light Grey @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 14 initial_exposure_time = 45 material_type = Tough @@ -18414,7 +18146,7 @@ material_vendor = PrimaCreator material_colour = #C0C0C0 [sla_material:PrimaCreator Tough Clear @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 13 initial_exposure_time = 45 material_type = Tough @@ -18422,7 +18154,7 @@ material_vendor = PrimaCreator material_colour = #F8F8F8 [sla_material:PrimaCreator Tough White @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 13 initial_exposure_time = 45 material_type = Tough @@ -18430,7 +18162,7 @@ material_vendor = PrimaCreator material_colour = #FFFFFF [sla_material:PrimaCreator Flex Clear @0.1] -inherits = *common 0.1* +inherits = *common 0.1*; *sl1_fast* exposure_time = 12 initial_exposure_time = 35 material_type = Flexible @@ -18444,7 +18176,7 @@ material_colour = #F8F8F8 ## Prusa Polymers 0.025 [sla_material:Prusament Resin Tough Prusa Orange @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.8 initial_exposure_time = 25 material_type = Tough @@ -18452,7 +18184,7 @@ material_vendor = Prusa Polymers material_colour = #FF8040 [sla_material:Prusament Resin Tough Rich Black @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.8 initial_exposure_time = 25 material_type = Tough @@ -18460,7 +18192,7 @@ material_vendor = Prusa Polymers material_colour = #595959 [sla_material:Prusament Resin Tough Anthracite Grey @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Tough @@ -18468,7 +18200,7 @@ material_vendor = Prusa Polymers material_colour = #808080 [sla_material:Prusament Resin Tough Sandstone Model @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Tough @@ -18476,7 +18208,7 @@ material_vendor = Prusa Polymers material_colour = #EEA061 [sla_material:Prusament Resin Tough Terra Brown @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.8 initial_exposure_time = 25 material_type = Tough @@ -18484,7 +18216,7 @@ material_vendor = Prusa Polymers material_colour = #7A5C45 [sla_material:Prusament Resin Tough Brick Red @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.8 initial_exposure_time = 25 material_type = Tough @@ -18492,7 +18224,7 @@ material_vendor = Prusa Polymers material_colour = #B46056 [sla_material:Prusament Resin Tough Grass Green @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.8 initial_exposure_time = 25 material_type = Tough @@ -18500,7 +18232,7 @@ material_vendor = Prusa Polymers material_colour = #37823F [sla_material:Prusament Resin Tough Bright Yellow @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.8 initial_exposure_time = 25 material_type = Tough @@ -18508,7 +18240,7 @@ material_vendor = Prusa Polymers material_colour = #F9DB4C [sla_material:Prusament Resin Tough Transparent Green @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.8 initial_exposure_time = 25 material_type = Tough @@ -18516,7 +18248,7 @@ material_vendor = Prusa Polymers material_colour = #1DAf5E [sla_material:Prusament Resin Tough Transparent Red @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Tough @@ -18524,7 +18256,7 @@ material_vendor = Prusa Polymers material_colour = #D21B31 [sla_material:Prusament Resin Tough Transparent Amber @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.8 initial_exposure_time = 25 material_type = Tough @@ -18532,7 +18264,7 @@ material_vendor = Prusa Polymers material_colour = #FCB30E [sla_material:Prusament Resin Tough Classic Red @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.8 initial_exposure_time = 25 material_type = Tough @@ -18540,7 +18272,7 @@ material_vendor = Prusa Polymers material_colour = #EC0000 [sla_material:Prusament Resin Model Solid Grey @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Tough @@ -18548,7 +18280,7 @@ material_vendor = Prusa Polymers material_colour = #9C9D9D [sla_material:Prusament Resin Model Alabaster White @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 20 material_type = Tough @@ -18556,7 +18288,7 @@ material_vendor = Prusa Polymers material_colour = #D6D7D8 [sla_material:Prusament Resin Model Neutral Beige @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Tough @@ -18564,23 +18296,23 @@ material_vendor = Prusa Polymers material_colour = #BF9C87 [sla_material:Prusament Resin Model Ultra Violet @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Tough material_vendor = Prusa Polymers material_colour = #413A7A -; [sla_material:Prusament Resin Model Transparent Clear @0.025 SL1S] -; inherits = *0.025_sl1s* -; exposure_time = 1.8 -; initial_exposure_time = 10 -; material_type = Tough -; material_vendor = Prusa Polymers -; material_colour = #F3F6F4 +[sla_material:Prusament Resin Model Transparent Clear @0.025 SL1S] +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* +exposure_time = 2.2 +initial_exposure_time = 10 +material_type = Tough +material_vendor = Prusa Polymers +material_colour = #F3F6F4 [sla_material:Prusament Resin BioBased60 Herbal Green @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3.5 initial_exposure_time = 30 material_type = Tough @@ -18588,7 +18320,7 @@ material_vendor = Prusa Polymers material_colour = #3AD200 [sla_material:Prusament Resin BioBased60 Magma Red @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3.5 initial_exposure_time = 30 material_type = Tough @@ -18596,7 +18328,7 @@ material_vendor = Prusa Polymers material_colour = #D20202 [sla_material:Prusament Resin BioBased60 Natural Yellow @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_slow* exposure_time = 2.8 initial_exposure_time = 30 material_type = Tough @@ -18605,7 +18337,7 @@ material_colour = #ECDE05 material_print_speed = slow [sla_material:Prusament Resin BioBased60 Obsidian Black @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 4.5 initial_exposure_time = 25 material_type = Tough @@ -18613,7 +18345,7 @@ material_vendor = Prusa Polymers material_colour = #232323 [sla_material:Prusament Resin BioBased60 Sapphire Blue @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.8 initial_exposure_time = 25 material_type = Tough @@ -18621,7 +18353,7 @@ material_vendor = Prusa Polymers material_colour = #2196F3 [sla_material:Prusament Resin BioBased60 Ivory White @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3 initial_exposure_time = 50 material_type = Tough @@ -18629,7 +18361,7 @@ material_vendor = Prusa Polymers material_colour = #E3D99F [sla_material:Prusament Resin Flex80 Transparent Clear @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_slow* exposure_time = 4 initial_exposure_time = 25 material_type = Flexible @@ -18638,7 +18370,7 @@ material_colour = #F3F6F4 material_print_speed = slow [sla_material:Prusament Resin Flex80 Black @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_slow* exposure_time = 2.6 initial_exposure_time = 25 material_type = Flexible @@ -18647,137 +18379,31 @@ material_colour = #595959 material_print_speed = slow [sla_material:Prusament Resin Flex80 White @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.8 initial_exposure_time = 17 material_type = Flexible material_vendor = Prusa Polymers material_colour = #E2D3DB -## Made for Prusa 0.025 +[sla_material:Prusament Resin Flex Anatomic Red @0.025 SL1S] +inherits = *0.025_sl1s*; *sl1s_slow* +exposure_time = 2.6 +initial_exposure_time = 20 +material_type = Medical +material_vendor = Prusa Polymers +material_colour = #AD4F54 -[sla_material:Prusa Orange Tough @0.025 SL1S] -inherits = *0.025_sl1s* -exposure_time = 1.8 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FF8040 - -[sla_material:Prusa White ABS like @0.025 SL1S] -inherits = *0.025_sl1s* -exposure_time = 1.8 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FFFFFF - -[sla_material:Prusa Azure Blue Tough @0.025 SL1S] -inherits = *0.025_sl1s* -exposure_time = 1.8 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #007EFD - -[sla_material:Prusa Black Tough @0.025 SL1S] -inherits = *0.025_sl1s* -exposure_time = 2 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #595959 - -[sla_material:Prusa Cyan Tough @0.025 SL1S] -inherits = *0.025_sl1s* -exposure_time = 1.8 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #79FFFF - -[sla_material:Prusa Magenta Tough @0.025 SL1S] -inherits = *0.025_sl1s* -exposure_time = 1.8 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #E800E8 - -[sla_material:Prusa Maroon Tough @0.025 SL1S] -inherits = *0.025_sl1s* -exposure_time = 2 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #804000 - -[sla_material:Prusa White Tough @0.025 SL1S] -inherits = *0.025_sl1s* -exposure_time = 1.8 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FFFFFF - -[sla_material:Prusa Pink Tough @0.025 SL1S] -inherits = *0.025_sl1s* -exposure_time = 1.8 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FF80C0 - -[sla_material:Prusa Grey Tough @0.025 SL1S] -inherits = *0.025_sl1s* -exposure_time = 2 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #C0C0C0 - -[sla_material:Prusa Blue Flexible @0.025 SL1S] -inherits = *0.025_sl1s* -exposure_time = 1.8 -initial_exposure_time = 25 -material_type = Flexible -material_vendor = Made for Prusa -material_colour = #007EFD - -[sla_material:Prusa Grey High Tenacity @0.025 SL1S] -inherits = *0.025_sl1s* -exposure_time = 1.8 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #C0C0C0 - -[sla_material:Prusa Vibrant Orange Tough @0.025 SL1S] -inherits = *0.025_sl1s* -exposure_time = 4 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FF8040 - -[sla_material:Prusa Deep Blue Transparent Tough @0.025 SL1S] -inherits = *0.025_sl1s* -exposure_time = 4 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #007EFD - -[sla_material:Prusa Green Dental Casting @0.025 SL1S] -inherits = *0.025_sl1s* -exposure_time = 3 -initial_exposure_time = 50 -material_type = Casting -material_vendor = Made for Prusa -material_colour = #00B900 +[sla_material:Prusament Resin Flex Gingiva Mask @0.025 SL1S] +inherits = *0.025_sl1s*; *sl1s_slow* +exposure_time = 2.6 +initial_exposure_time = 20 +material_type = Medical +material_vendor = Prusa Polymers +material_colour = #DB7F80 [sla_material:Ameralabs TGM-7 LED @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_slow* exposure_time = 1.8 initial_exposure_time = 25 material_type = Tough @@ -18786,7 +18412,7 @@ material_colour = #C0C0C0 material_print_speed = slow [sla_material:BASF Ultracur3D RG 35 @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 4 initial_exposure_time = 25 material_type = Tough @@ -18794,7 +18420,7 @@ material_vendor = BASF material_colour = #FFEEE6 [sla_material:BASF Ultracur3D ST 45 @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.5 initial_exposure_time = 25 material_type = Tough @@ -18802,7 +18428,7 @@ material_vendor = BASF material_colour = #595959 [sla_material:BASF Ultracur3D ST 45 M @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.5 initial_exposure_time = 25 material_type = Tough @@ -18810,7 +18436,7 @@ material_vendor = BASF material_colour = #595959 [sla_material:BASF Ultracur3D ST 80 @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 4.5 initial_exposure_time = 25 material_type = Tough @@ -18818,7 +18444,7 @@ material_vendor = BASF material_colour = #FFEEE6 [sla_material:BASF Ultracur3D ST 80 White @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 4.5 initial_exposure_time = 25 material_type = Tough @@ -18826,7 +18452,7 @@ material_vendor = BASF material_colour = #FFFFFF [sla_material:BASF Ultracur3D ST 80 Black @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 4.5 initial_exposure_time = 25 material_type = Tough @@ -18834,7 +18460,7 @@ material_vendor = BASF material_colour = #595959 [sla_material:BASF Ultracur3D EL 150 Black @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Flexible @@ -18842,7 +18468,7 @@ material_vendor = BASF material_colour = #595959 [sla_material:BASF Ultracur3D FL 300 Black @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3 initial_exposure_time = 25 material_type = Flexible @@ -18850,7 +18476,7 @@ material_vendor = BASF material_colour = #595959 [sla_material:BlueCast X-One @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_slow* exposure_time = 6 initial_exposure_time = 25 material_type = Casting @@ -18859,7 +18485,7 @@ material_colour = #C0C0C0 material_print_speed = slow [sla_material:PrimaCreator Tough Light Grey @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.8 initial_exposure_time = 25 material_type = Tough @@ -18867,7 +18493,7 @@ material_vendor = PrimaCreator material_colour = #C0C0C0 [sla_material:PrimaCreator Tough Clear @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.8 initial_exposure_time = 25 material_type = Tough @@ -18875,7 +18501,7 @@ material_vendor = PrimaCreator material_colour = #F8F8F8 [sla_material:PrimaCreator Tough White @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.8 initial_exposure_time = 25 material_type = Tough @@ -18883,7 +18509,7 @@ material_vendor = PrimaCreator material_colour = #FFFFFF [sla_material:PrimaCreator Flex Clear @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.8 initial_exposure_time = 25 material_type = Flexible @@ -18891,7 +18517,7 @@ material_vendor = PrimaCreator material_colour = #F8F8F8 [sla_material:PrimaCreator Water Washable Transparent @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.8 initial_exposure_time = 25 material_type = Tough @@ -18899,16 +18525,16 @@ material_vendor = PrimaCreator material_colour = #F8F8F8 [sla_material:DruckWege Type D Dental Model @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_slow* exposure_time = 1.2 initial_exposure_time = 15 -material_type = Dental +material_type = Medical material_vendor = DruckWege material_colour = #FFEEE6 material_print_speed = slow [sla_material:DruckWege Type D Standard White @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_slow* exposure_time = 1.6 initial_exposure_time = 15 material_type = Tough @@ -18917,7 +18543,7 @@ material_colour = #FFFFFF material_print_speed = slow [sla_material:DruckWege Type D Standard Pigmentfrei Clear @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_slow* exposure_time = 1.8 initial_exposure_time = 15 material_type = Tough @@ -18926,7 +18552,7 @@ material_colour = #F8F8F8 material_print_speed = slow [sla_material:3DM-ABS Orange @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.8 initial_exposure_time = 25 material_type = Tough @@ -18934,7 +18560,7 @@ material_vendor = 3DM material_colour = #FF8040 [sla_material:3DM-TOUGH Clear @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.8 initial_exposure_time = 25 material_type = Tough @@ -18942,7 +18568,7 @@ material_vendor = 3DM material_colour = #F8F8F8 [sla_material:Peopoly Deft White @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.8 initial_exposure_time = 25 material_type = Tough @@ -18950,7 +18576,7 @@ material_vendor = Peopoly material_colour = #FFFFFF [sla_material:Peopoly Neo Clear @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.8 initial_exposure_time = 25 material_type = Tough @@ -18958,7 +18584,7 @@ material_vendor = Peopoly material_colour = #F8F8F8 [sla_material:Liqcreate Clear Impact @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 7 initial_exposure_time = 40 material_type = Tough @@ -18966,7 +18592,7 @@ material_vendor = Liqcreate material_colour = #F8F8F8 [sla_material:Liqcreate Strong X @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 7 initial_exposure_time = 40 material_type = Tough @@ -18974,7 +18600,7 @@ material_vendor = Liqcreate material_colour = #C0C0C0 [sla_material:Resinworks 3D Green @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 5 initial_exposure_time = 25 material_type = Tough @@ -18982,7 +18608,7 @@ material_vendor = Resinworks 3D material_colour = #00B900 [sla_material:3DJake Blue @0.025 SL1S] -inherits = *0.025_sl1s* +inherits = *0.025_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.8 initial_exposure_time = 25 material_type = Tough @@ -18994,7 +18620,7 @@ material_colour = #007EFD ## Prusa Polymers 0.05 [sla_material:Prusament Resin Tough Prusa Orange @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Tough @@ -19002,7 +18628,7 @@ material_vendor = Prusa Polymers material_colour = #FF8040 [sla_material:Prusament Resin Tough Rich Black @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Tough @@ -19010,7 +18636,7 @@ material_vendor = Prusa Polymers material_colour = #595959 [sla_material:Prusament Resin Tough Anthracite Grey @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.4 initial_exposure_time = 25 material_type = Tough @@ -19018,7 +18644,7 @@ material_vendor = Prusa Polymers material_colour = #808080 [sla_material:Prusament Resin Tough Sandstone Model @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.4 initial_exposure_time = 25 material_type = Tough @@ -19026,7 +18652,7 @@ material_vendor = Prusa Polymers material_colour = #EEA061 [sla_material:Prusament Resin Tough Terra Brown @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Tough @@ -19034,7 +18660,7 @@ material_vendor = Prusa Polymers material_colour = #7A5C45 [sla_material:Prusament Resin Tough Brick Red @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Tough @@ -19042,7 +18668,7 @@ material_vendor = Prusa Polymers material_colour = #B46056 [sla_material:Prusament Resin Tough Grass Green @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Tough @@ -19050,7 +18676,7 @@ material_vendor = Prusa Polymers material_colour = #37823F [sla_material:Prusament Resin Tough Bright Yellow @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Tough @@ -19058,7 +18684,7 @@ material_vendor = Prusa Polymers material_colour = #F9DB4C [sla_material:Prusament Resin Tough Transparent Green @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Tough @@ -19066,7 +18692,7 @@ material_vendor = Prusa Polymers material_colour = #1DAf5E [sla_material:Prusament Resin Tough Transparent Red @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.6 initial_exposure_time = 25 material_type = Tough @@ -19074,7 +18700,7 @@ material_vendor = Prusa Polymers material_colour = #D21B31 [sla_material:Prusament Resin Tough Transparent Amber @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.6 initial_exposure_time = 25 material_type = Tough @@ -19082,7 +18708,7 @@ material_vendor = Prusa Polymers material_colour = #FCB30E [sla_material:Prusament Resin Tough Classic Red @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Tough @@ -19090,7 +18716,7 @@ material_vendor = Prusa Polymers material_colour = #EC0000 [sla_material:Prusament Resin Model Solid Grey @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.2 initial_exposure_time = 25 material_type = Tough @@ -19098,7 +18724,7 @@ material_vendor = Prusa Polymers material_colour = #9C9D9D [sla_material:Prusament Resin Model Alabaster White @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.2 initial_exposure_time = 20 material_type = Tough @@ -19106,7 +18732,7 @@ material_vendor = Prusa Polymers material_colour = #D6D7D8 [sla_material:Prusament Resin Model Neutral Beige @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.2 initial_exposure_time = 25 material_type = Tough @@ -19114,23 +18740,23 @@ material_vendor = Prusa Polymers material_colour = #BF9C87 [sla_material:Prusament Resin Model Ultra Violet @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.2 initial_exposure_time = 25 material_type = Tough material_vendor = Prusa Polymers material_colour = #413A7A -; [sla_material:Prusament Resin Model Transparent Clear @0.05 SL1S] -; inherits = *0.05_sl1s* -; exposure_time = 2 -; initial_exposure_time = 10 -; material_type = Tough -; material_vendor = Prusa Polymers -; material_colour = #F3F6F4 +[sla_material:Prusament Resin Model Transparent Clear @0.05 SL1S] +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* +exposure_time = 2.5 +initial_exposure_time = 10 +material_type = Tough +material_vendor = Prusa Polymers +material_colour = #F3F6F4 [sla_material:Prusament Resin BioBased60 Herbal Green @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 4 initial_exposure_time = 30 material_type = Tough @@ -19138,7 +18764,7 @@ material_vendor = Prusa Polymers material_colour = #3AD200 [sla_material:Prusament Resin BioBased60 Magma Red @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 4 initial_exposure_time = 30 material_type = Tough @@ -19146,7 +18772,7 @@ material_vendor = Prusa Polymers material_colour = #D20202 [sla_material:Prusament Resin BioBased60 Natural Yellow @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_slow* exposure_time = 3 initial_exposure_time = 30 material_type = Tough @@ -19155,7 +18781,7 @@ material_colour = #ECDE05 material_print_speed = slow [sla_material:Prusament Resin BioBased60 Obsidian Black @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 6 initial_exposure_time = 25 material_type = Tough @@ -19163,7 +18789,7 @@ material_vendor = Prusa Polymers material_colour = #232323 [sla_material:Prusament Resin BioBased60 Sapphire Blue @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3 initial_exposure_time = 25 material_type = Tough @@ -19171,7 +18797,7 @@ material_vendor = Prusa Polymers material_colour = #2196F3 [sla_material:Prusament Resin BioBased60 Ivory White @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3.5 initial_exposure_time = 50 material_type = Tough @@ -19179,7 +18805,7 @@ material_vendor = Prusa Polymers material_colour = #E3D99F [sla_material:Prusament Resin Flex80 Transparent Clear @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_slow* exposure_time = 5 initial_exposure_time = 25 material_type = Flexible @@ -19188,7 +18814,7 @@ material_colour = #F3F6F4 material_print_speed = slow [sla_material:Prusament Resin Flex80 Black @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_slow* exposure_time = 3 initial_exposure_time = 25 material_type = Flexible @@ -19197,137 +18823,31 @@ material_colour = #595959 material_print_speed = slow [sla_material:Prusament Resin Flex80 White @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3 initial_exposure_time = 17 material_type = Flexible material_vendor = Prusa Polymers material_colour = #E2D3DB -## Made for Prusa 0.05 +[sla_material:Prusament Resin Flex Anatomic Red @0.05 SL1S] +inherits = *0.05_sl1s*; *sl1s_slow* +exposure_time = 3 +initial_exposure_time = 20 +material_type = Medical +material_vendor = Prusa Polymers +material_colour = #AD4F54 -[sla_material:Prusa Orange Tough @0.05 SL1S] -inherits = *0.05_sl1s* -exposure_time = 2 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FF8040 - -[sla_material:Prusa White ABS like @0.05 SL1S] -inherits = *0.05_sl1s* -exposure_time = 2 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FFFFFF - -[sla_material:Prusa Azure Blue Tough @0.05 SL1S] -inherits = *0.05_sl1s* -exposure_time = 2 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #007EFD - -[sla_material:Prusa Black Tough @0.05 SL1S] -inherits = *0.05_sl1s* -exposure_time = 2.4 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #595959 - -[sla_material:Prusa Cyan Tough @0.05 SL1S] -inherits = *0.05_sl1s* -exposure_time = 2 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #79FFFF - -[sla_material:Prusa Magenta Tough @0.05 SL1S] -inherits = *0.05_sl1s* -exposure_time = 2 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #E800E8 - -[sla_material:Prusa Maroon Tough @0.05 SL1S] -inherits = *0.05_sl1s* -exposure_time = 2.4 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #804000 - -[sla_material:Prusa White Tough @0.05 SL1S] -inherits = *0.05_sl1s* -exposure_time = 2 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FFFFFF - -[sla_material:Prusa Pink Tough @0.05 SL1S] -inherits = *0.05_sl1s* -exposure_time = 2 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FF80C0 - -[sla_material:Prusa Blue Flexible @0.05 SL1S] -inherits = *0.05_sl1s* -exposure_time = 2 -initial_exposure_time = 25 -material_type = Flexible -material_vendor = Made for Prusa -material_colour = #007EFD - -[sla_material:Prusa Grey Tough @0.05 SL1S] -inherits = *0.05_sl1s* -exposure_time = 2.4 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #C0C0C0 - -[sla_material:Prusa Grey High Tenacity @0.05 SL1S] -inherits = *0.05_sl1s* -exposure_time = 2 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #C0C0C0 - -[sla_material:Prusa Vibrant Orange Tough @0.05 SL1S] -inherits = *0.05_sl1s* -exposure_time = 5 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FF8040 - -[sla_material:Prusa Deep Blue Transparent Tough @0.05 SL1S] -inherits = *0.05_sl1s* -exposure_time = 5 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #007EFD - -[sla_material:Prusa Green Dental Casting @0.05 SL1S] -inherits = *0.05_sl1s* -exposure_time = 4 -initial_exposure_time = 50 -material_type = Casting -material_vendor = Made for Prusa -material_colour = #00B900 +[sla_material:Prusament Resin Flex Gingiva Mask @0.05 SL1S] +inherits = *0.05_sl1s*; *sl1s_slow* +exposure_time = 3 +initial_exposure_time = 20 +material_type = Medical +material_vendor = Prusa Polymers +material_colour = #DB7F80 [sla_material:Ameralabs TGM-7 LED @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_slow* exposure_time = 2 initial_exposure_time = 25 material_type = Tough @@ -19336,7 +18856,7 @@ material_colour = #C0C0C0 material_print_speed = slow [sla_material:BASF Ultracur3D RG 35 @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 4.5 initial_exposure_time = 25 material_type = Tough @@ -19344,7 +18864,7 @@ material_vendor = BASF material_colour = #FFEEE6 [sla_material:BASF Ultracur3D ST 45 @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3 initial_exposure_time = 25 material_type = Tough @@ -19352,7 +18872,7 @@ material_vendor = BASF material_colour = #595959 [sla_material:BASF Ultracur3D ST 45 M @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3 initial_exposure_time = 25 material_type = Tough @@ -19360,7 +18880,7 @@ material_vendor = BASF material_colour = #595959 [sla_material:BASF Ultracur3D ST 80 @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 5.5 initial_exposure_time = 25 material_type = Tough @@ -19368,7 +18888,7 @@ material_vendor = BASF material_colour = #FFEEE6 [sla_material:BASF Ultracur3D ST 80 White @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 5.9 initial_exposure_time = 25 material_type = Tough @@ -19376,7 +18896,7 @@ material_vendor = BASF material_colour = #FFFFFF [sla_material:BASF Ultracur3D ST 80 Black @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 5.9 initial_exposure_time = 25 material_type = Tough @@ -19384,7 +18904,7 @@ material_vendor = BASF material_colour = #595959 [sla_material:BASF Ultracur3D EL 150 Black @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3.8 initial_exposure_time = 25 material_type = Flexible @@ -19392,7 +18912,7 @@ material_vendor = BASF material_colour = #595959 [sla_material:BASF Ultracur3D FL 300 Black @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 4.8 initial_exposure_time = 25 material_type = Flexible @@ -19400,7 +18920,7 @@ material_vendor = BASF material_colour = #595959 [sla_material:PrimaCreator Tough Light Grey @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.4 initial_exposure_time = 25 material_type = Tough @@ -19408,7 +18928,7 @@ material_vendor = PrimaCreator material_colour = #C0C0C0 [sla_material:PrimaCreator Tough Clear @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Tough @@ -19416,7 +18936,7 @@ material_vendor = PrimaCreator material_colour = #F8F8F8 [sla_material:PrimaCreator Tough White @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Tough @@ -19424,7 +18944,7 @@ material_vendor = PrimaCreator material_colour = #FFFFFF [sla_material:PrimaCreator Flex Clear @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Flexible @@ -19432,7 +18952,7 @@ material_vendor = PrimaCreator material_colour = #F8F8F8 [sla_material:PrimaCreator Water Washable Transparent @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Tough @@ -19440,16 +18960,16 @@ material_vendor = PrimaCreator material_colour = #F8F8F8 [sla_material:DruckWege Type D Dental Model @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_slow* exposure_time = 1.4 initial_exposure_time = 15 -material_type = Dental +material_type = Medical material_vendor = DruckWege material_colour = #FFEEE6 material_print_speed = slow [sla_material:DruckWege Type D Standard White @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_slow* exposure_time = 2 initial_exposure_time = 15 material_type = Tough @@ -19458,7 +18978,7 @@ material_colour = #FFFFFF material_print_speed = slow [sla_material:DruckWege Type D Standard Pigmentfrei Clear @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_slow* exposure_time = 2 initial_exposure_time = 15 material_type = Tough @@ -19467,7 +18987,7 @@ material_colour = #F8F8F8 material_print_speed = slow [sla_material:3DM-ABS Orange @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.6 initial_exposure_time = 25 material_type = Tough @@ -19475,7 +18995,7 @@ material_vendor = 3DM material_colour = #FF8040 [sla_material:3DM-TOUGH Clear @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.6 initial_exposure_time = 25 material_type = Tough @@ -19483,7 +19003,7 @@ material_vendor = 3DM material_colour = #F8F8F8 [sla_material:Peopoly Deft White @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Tough @@ -19491,7 +19011,7 @@ material_vendor = Peopoly material_colour = #FFFFFF [sla_material:Peopoly Neo Clear @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Tough @@ -19499,7 +19019,7 @@ material_vendor = Peopoly material_colour = #F8F8F8 [sla_material:3DM-ABS @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.6 initial_exposure_time = 25 material_type = Tough @@ -19507,15 +19027,15 @@ material_vendor = 3DM material_colour = #FF8040 [sla_material:3DM-DENT @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.3 initial_exposure_time = 36 -material_type = Dental +material_type = Medical material_vendor = 3DM material_colour = #FFEEE6 [sla_material:3DM-HR Green @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 5 initial_exposure_time = 28 material_type = Tough @@ -19523,7 +19043,7 @@ material_vendor = 3DM material_colour = #00B900 [sla_material:3DM-HR Red Wine @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 6 initial_exposure_time = 32 material_type = Tough @@ -19531,7 +19051,7 @@ material_vendor = 3DM material_colour = #EC0000 [sla_material:3DM-Vulcan Gold @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 5 initial_exposure_time = 24 material_type = Casting @@ -19539,7 +19059,7 @@ material_vendor = 3DM material_colour = #B0B000 [sla_material:3DM-XPRO White @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3 initial_exposure_time = 28 material_type = Tough @@ -19547,15 +19067,15 @@ material_vendor = 3DM material_colour = #FFFFFF [sla_material:Asiga Denta Model @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 5 initial_exposure_time = 24 -material_type = Dental +material_type = Medical material_vendor = Asiga material_colour = #FFEEE6 [sla_material:Asiga PlasGRAY @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 9.7 initial_exposure_time = 48 material_type = Tough @@ -19563,7 +19083,7 @@ material_vendor = Asiga material_colour = #C0C0C0 [sla_material:BlueCast EcoGray @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.3 initial_exposure_time = 28 material_type = Tough @@ -19571,7 +19091,7 @@ material_vendor = BlueCast material_colour = #808080 [sla_material:BlueCast Phrozen Wax @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 5.3 initial_exposure_time = 40 material_type = Tough @@ -19579,7 +19099,7 @@ material_vendor = BlueCast material_colour = #007EFD [sla_material:BlueCast X-One @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_slow* exposure_time = 7 initial_exposure_time = 25 material_type = Casting @@ -19588,15 +19108,15 @@ material_colour = #C0C0C0 material_print_speed = slow [sla_material:NextDent Model 2.0 Grey @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 4 initial_exposure_time = 28 -material_type = Dental +material_type = Medical material_vendor = NextDent material_colour = #C0C0C0 [sla_material:NextDent Cast Purple @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3 initial_exposure_time = 16 material_type = Casting @@ -19604,7 +19124,7 @@ material_vendor = NextDent material_colour = #E800E8 [sla_material:Siraya Tech Tenacious @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.7 initial_exposure_time = 28 material_type = Tough @@ -19612,7 +19132,7 @@ material_vendor = Siraya Tech material_colour = #F8F8F8 [sla_material:Siraya Tech Blu Clear V2 @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3.3 initial_exposure_time = 24 material_type = Tough @@ -19620,7 +19140,7 @@ material_vendor = Siraya Tech material_colour = #F8F8F8 [sla_material:Siraya Tech Blu Blue @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 4 initial_exposure_time = 28 material_type = Tough @@ -19628,7 +19148,7 @@ material_vendor = Siraya Tech material_colour = #007EFD [sla_material:Siraya Tech Fast Black @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3 initial_exposure_time = 28 material_type = Tough @@ -19636,7 +19156,7 @@ material_vendor = Siraya Tech material_colour = #595959 [sla_material:Siraya Tech Fast Grey @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3.3 initial_exposure_time = 28 material_type = Tough @@ -19644,7 +19164,7 @@ material_vendor = Siraya Tech material_colour = #C0C0C0 [sla_material:Siraya Tech Simple Clear @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3.3 initial_exposure_time = 28 material_type = Tough @@ -19652,7 +19172,7 @@ material_vendor = Siraya Tech material_colour = #F8F8F8 [sla_material:Siraya Tech Sculpt @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.7 initial_exposure_time = 28 material_type = Tough @@ -19660,7 +19180,7 @@ material_vendor = Siraya Tech material_colour = #C0C0C0 [sla_material:Harz Labs Model Resin Cherry @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 4.3 initial_exposure_time = 16 material_type = Tough @@ -19668,7 +19188,7 @@ material_vendor = Harz Labs material_colour = #EC0000 [sla_material:Harz Labs Model Resin Black @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 4.3 initial_exposure_time = 16 material_type = Tough @@ -19676,7 +19196,7 @@ material_vendor = Harz Labs material_colour = #595959 [sla_material:Harz Labs Basic Resin Red @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 4.3 initial_exposure_time = 16 material_type = Tough @@ -19684,7 +19204,7 @@ material_vendor = Harz Labs material_colour = #EC0000 [sla_material:Resinworks 3D Violet @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 5.7 initial_exposure_time = 24 material_type = Tough @@ -19692,7 +19212,7 @@ material_vendor = Resinworks 3D material_colour = #E800E8 [sla_material:FunToDo Industrial Blend Unpigmented @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.3 initial_exposure_time = 28 material_type = Tough @@ -19700,7 +19220,7 @@ material_vendor = FunToDo material_colour = #F8F8F8 [sla_material:FunToDo Snow White @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3.3 initial_exposure_time = 28 material_type = Tough @@ -19708,7 +19228,7 @@ material_vendor = FunToDo material_colour = #FFFFFF [sla_material:FunToDo Ash Grey @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3 initial_exposure_time = 32 material_type = Tough @@ -19716,7 +19236,7 @@ material_vendor = FunToDo material_colour = #808080 [sla_material:Ameralabs AMD 3 LED @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 1.7 initial_exposure_time = 24 material_type = Tough @@ -19724,7 +19244,7 @@ material_vendor = Ameralabs material_colour = #808080 [sla_material:Dragon Resin Metalshine Metal Grey @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 10 initial_exposure_time = 40 material_type = Tough @@ -19732,7 +19252,7 @@ material_vendor = Dragon Resin material_colour = #808080 [sla_material:Dragon Resin Metalshine Dark Brass @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 10 initial_exposure_time = 40 material_type = Tough @@ -19740,7 +19260,7 @@ material_vendor = Dragon Resin material_colour = #B0B000 [sla_material:Dragon Resin Metalshine Brass @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 10 initial_exposure_time = 40 material_type = Tough @@ -19748,7 +19268,7 @@ material_vendor = Dragon Resin material_colour = #B0B000 [sla_material:Esun Bio-Photopolymer Resin White @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.7 initial_exposure_time = 24 material_type = Tough @@ -19756,7 +19276,7 @@ material_vendor = Esun material_colour = #FFFFFF [sla_material:Esun Standard Resin Black @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.3 initial_exposure_time = 24 material_type = Tough @@ -19764,7 +19284,7 @@ material_vendor = Esun material_colour = #595959 [sla_material:Monocure 3D Black Rapid Resin @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 28 material_type = Tough @@ -19772,7 +19292,7 @@ material_vendor = Monocure material_colour = #595959 [sla_material:Monocure 3D Blue Rapid Resin @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.3 initial_exposure_time = 28 material_type = Tough @@ -19780,7 +19300,7 @@ material_vendor = Monocure material_colour = #007EFD [sla_material:Monocure 3D Clear Rapid Resin @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.7 initial_exposure_time = 32 material_type = Tough @@ -19788,7 +19308,7 @@ material_vendor = Monocure material_colour = #F8F8F8 [sla_material:Monocure 3D Grey Rapid Resin @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3.3 initial_exposure_time = 25 material_type = Tough @@ -19796,7 +19316,7 @@ material_vendor = Monocure material_colour = #C0C0C0 [sla_material:Monocure 3D White Rapid Resin @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3.3 initial_exposure_time = 28 material_type = Tough @@ -19804,7 +19324,7 @@ material_vendor = Monocure material_colour = #FFFFFF [sla_material:Photocentric Hard Grey @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 5 initial_exposure_time = 24 material_type = Tough @@ -19812,7 +19332,7 @@ material_vendor = Photocentric material_colour = #808080 [sla_material:Liqcreate Clear Impact @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 10 initial_exposure_time = 40 material_type = Tough @@ -19820,7 +19340,7 @@ material_vendor = Liqcreate material_colour = #F8F8F8 [sla_material:Liqcreate Strong X @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 10 initial_exposure_time = 40 material_type = Tough @@ -19828,7 +19348,7 @@ material_vendor = Liqcreate material_colour = #C0C0C0 [sla_material:Resinworks 3D Green @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 7 initial_exposure_time = 25 material_type = Tough @@ -19836,7 +19356,7 @@ material_vendor = Resinworks 3D material_colour = #00B900 [sla_material:3DJake Blue @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2 initial_exposure_time = 25 material_type = Tough @@ -19844,7 +19364,7 @@ material_vendor = 3DJake material_colour = #007EFD [sla_material:LOCTITE 3D IND475 @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 4 initial_exposure_time = 15 material_type = Flexible @@ -19852,7 +19372,7 @@ material_vendor = Henkel material_colour = #FFFFFF [sla_material:LOCTITE 3D PRO476 @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 7 initial_exposure_time = 25 material_type = Tough @@ -19860,7 +19380,7 @@ material_vendor = Henkel material_colour = #595959 [sla_material:LOCTITE 3D 3843 HDT60 High Toughness @0.05 SL1S] -inherits = *0.05_sl1s* +inherits = *0.05_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 13 initial_exposure_time = 25 material_type = Tough @@ -19872,7 +19392,7 @@ material_colour = #595959 ## Prusa Polymers 0.1 [sla_material:Prusament Resin Tough Prusa Orange @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.6 initial_exposure_time = 25 material_type = Tough @@ -19880,7 +19400,7 @@ material_vendor = Prusa Polymers material_colour = #FF8040 [sla_material:Prusament Resin Tough Rich Black @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.6 initial_exposure_time = 25 material_type = Tough @@ -19888,7 +19408,7 @@ material_vendor = Prusa Polymers material_colour = #595959 [sla_material:Prusament Resin Tough Anthracite Grey @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3 initial_exposure_time = 25 material_type = Tough @@ -19896,7 +19416,7 @@ material_vendor = Prusa Polymers material_colour = #808080 [sla_material:Prusament Resin Tough Sandstone Model @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3 initial_exposure_time = 25 material_type = Tough @@ -19904,7 +19424,7 @@ material_vendor = Prusa Polymers material_colour = #EEA061 [sla_material:Prusament Resin Tough Terra Brown @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.6 initial_exposure_time = 25 material_type = Tough @@ -19912,7 +19432,7 @@ material_vendor = Prusa Polymers material_colour = #7A5C45 [sla_material:Prusament Resin Tough Brick Red @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.6 initial_exposure_time = 25 material_type = Tough @@ -19920,7 +19440,7 @@ material_vendor = Prusa Polymers material_colour = #B46056 [sla_material:Prusament Resin Tough Grass Green @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.6 initial_exposure_time = 25 material_type = Tough @@ -19928,7 +19448,7 @@ material_vendor = Prusa Polymers material_colour = #37823F [sla_material:Prusament Resin Tough Bright Yellow @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.6 initial_exposure_time = 25 material_type = Tough @@ -19936,7 +19456,7 @@ material_vendor = Prusa Polymers material_colour = #F9DB4C [sla_material:Prusament Resin Tough Transparent Green @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.6 initial_exposure_time = 25 material_type = Tough @@ -19944,7 +19464,7 @@ material_vendor = Prusa Polymers material_colour = #1DAf5E [sla_material:Prusament Resin Tough Transparent Red @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3 initial_exposure_time = 25 material_type = Tough @@ -19952,7 +19472,7 @@ material_vendor = Prusa Polymers material_colour = #D21B31 [sla_material:Prusament Resin Tough Transparent Amber @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3.6 initial_exposure_time = 25 material_type = Tough @@ -19960,7 +19480,7 @@ material_vendor = Prusa Polymers material_colour = #FCB30E [sla_material:Prusament Resin Tough Classic Red @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.6 initial_exposure_time = 25 material_type = Tough @@ -19968,7 +19488,7 @@ material_vendor = Prusa Polymers material_colour = #EC0000 [sla_material:Prusament Resin Model Solid Grey @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.8 initial_exposure_time = 25 material_type = Tough @@ -19976,7 +19496,7 @@ material_vendor = Prusa Polymers material_colour = #9C9D9D [sla_material:Prusament Resin Model Alabaster White @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.8 initial_exposure_time = 20 material_type = Tough @@ -19984,7 +19504,7 @@ material_vendor = Prusa Polymers material_colour = #D6D7D8 [sla_material:Prusament Resin Model Neutral Beige @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.8 initial_exposure_time = 25 material_type = Tough @@ -19992,24 +19512,24 @@ material_vendor = Prusa Polymers material_colour = #BF9C87 [sla_material:Prusament Resin Model Ultra Violet @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.6 initial_exposure_time = 25 material_type = Tough material_vendor = Prusa Polymers material_colour = #413A7A -; [sla_material:Prusament Resin Model Transparent Clear @0.1 SL1S] -; inherits = *0.1_sl1s* -; exposure_time = 2.4 -; initial_exposure_time = 10 -; material_type = Tough -; material_vendor = Prusa Polymers -; material_colour = #F3F6F4 -; material_print_speed = slow +[sla_material:Prusament Resin Model Transparent Clear @0.1 SL1S] +inherits = *0.1_sl1s*; *sl1s_slow* +exposure_time = 3.2 +initial_exposure_time = 10 +material_type = Tough +material_vendor = Prusa Polymers +material_colour = #F3F6F4 +material_print_speed = slow [sla_material:Prusament Resin BioBased60 Herbal Green @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 5 initial_exposure_time = 30 material_type = Tough @@ -20017,7 +19537,7 @@ material_vendor = Prusa Polymers material_colour = #3AD200 [sla_material:Prusament Resin BioBased60 Magma Red @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 5 initial_exposure_time = 30 material_type = Tough @@ -20025,7 +19545,7 @@ material_vendor = Prusa Polymers material_colour = #D20202 [sla_material:Prusament Resin BioBased60 Natural Yellow @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_slow* exposure_time = 4 initial_exposure_time = 30 material_type = Tough @@ -20034,7 +19554,7 @@ material_colour = #ECDE05 material_print_speed = slow [sla_material:Prusament Resin BioBased60 Obsidian Black @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 7.5 initial_exposure_time = 25 material_type = Tough @@ -20042,7 +19562,7 @@ material_vendor = Prusa Polymers material_colour = #232323 [sla_material:Prusament Resin BioBased60 Sapphire Blue @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 4 initial_exposure_time = 25 material_type = Tough @@ -20050,7 +19570,7 @@ material_vendor = Prusa Polymers material_colour = #2196F3 [sla_material:Prusament Resin BioBased60 Ivory White @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 4.5 initial_exposure_time = 50 material_type = Tough @@ -20058,7 +19578,7 @@ material_vendor = Prusa Polymers material_colour = #E3D99F [sla_material:Prusament Resin Flex80 Transparent Clear @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_slow* exposure_time = 6 initial_exposure_time = 25 material_type = Flexible @@ -20067,7 +19587,7 @@ material_colour = #F3F6F4 material_print_speed = slow [sla_material:Prusament Resin Flex80 Black @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_slow* exposure_time = 3.5 initial_exposure_time = 25 material_type = Flexible @@ -20076,137 +19596,31 @@ material_colour = #595959 material_print_speed = slow [sla_material:Prusament Resin Flex80 White @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3.5 initial_exposure_time = 17 material_type = Flexible material_vendor = Prusa Polymers material_colour = #E2D3DB -## Made for Prusa 0.1 +[sla_material:Prusament Resin Flex Anatomic Red @0.1 SL1S] +inherits = *0.1_sl1s*; *sl1s_slow* +exposure_time = 3.5 +initial_exposure_time = 20 +material_type = Medical +material_vendor = Prusa Polymers +material_colour = #AD4F54 -[sla_material:Prusa Orange Tough @0.1 SL1S] -inherits = *0.1_sl1s* -exposure_time = 2.6 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FF8040 - -[sla_material:Prusa White ABS like @0.1 SL1S] -inherits = *0.1_sl1s* -exposure_time = 2.6 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FFFFFF - -[sla_material:Prusa Azure Blue Tough @0.1 SL1S] -inherits = *0.1_sl1s* -exposure_time = 2.6 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #007EFD - -[sla_material:Prusa Black Tough @0.1 SL1S] -inherits = *0.1_sl1s* -exposure_time = 3 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #595959 - -[sla_material:Prusa Cyan Tough @0.1 SL1S] -inherits = *0.1_sl1s* -exposure_time = 2.6 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #79FFFF - -[sla_material:Prusa Magenta Tough @0.1 SL1S] -inherits = *0.1_sl1s* -exposure_time = 2.6 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #E800E8 - -[sla_material:Prusa Maroon Tough @0.1 SL1S] -inherits = *0.1_sl1s* -exposure_time = 3 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #804000 - -[sla_material:Prusa White Tough @0.1 SL1S] -inherits = *0.1_sl1s* -exposure_time = 2.6 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FFFFFF - -[sla_material:Prusa Pink Tough @0.1 SL1S] -inherits = *0.1_sl1s* -exposure_time = 2.6 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FF80C0 - -[sla_material:Prusa Blue Flexible @0.1 SL1S] -inherits = *0.1_sl1s* -exposure_time = 2.6 -initial_exposure_time = 25 -material_type = Flexible -material_vendor = Made for Prusa -material_colour = #007EFD - -[sla_material:Prusa Grey Tough @0.1 SL1S] -inherits = *0.1_sl1s* -exposure_time = 3 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #007EFD - -[sla_material:Prusa Grey High Tenacity @0.1 SL1S] -inherits = *0.1_sl1s* -exposure_time = 2.6 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #808080 - -[sla_material:Prusa Vibrant Orange Tough @0.1 SL1S] -inherits = *0.1_sl1s* -exposure_time = 10 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #FF8040 - -[sla_material:Prusa Deep Blue Transparent Tough @0.1 SL1S] -inherits = *0.1_sl1s* -exposure_time = 10 -initial_exposure_time = 25 -material_type = Tough -material_vendor = Made for Prusa -material_colour = #007EFD - -[sla_material:Prusa Green Dental Casting @0.1 SL1S] -inherits = *0.1_sl1s* -exposure_time = 8 -initial_exposure_time = 50 -material_type = Casting -material_vendor = Made for Prusa -material_colour = #00B900 +[sla_material:Prusament Resin Flex Gingiva Mask @0.1 SL1S] +inherits = *0.1_sl1s*; *sl1s_slow* +exposure_time = 3.5 +initial_exposure_time = 20 +material_type = Medical +material_vendor = Prusa Polymers +material_colour = #DB7F80 [sla_material:Ameralabs TGM-7 LED @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_slow* exposure_time = 2.6 initial_exposure_time = 25 material_type = Tough @@ -20215,7 +19629,7 @@ material_colour = #C0C0C0 material_print_speed = slow [sla_material:BASF Ultracur3D RG 35 @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 10 initial_exposure_time = 25 material_type = Tough @@ -20223,7 +19637,7 @@ material_vendor = BASF material_colour = #FFEEE6 [sla_material:BASF Ultracur3D ST 45 @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 7.5 initial_exposure_time = 25 material_type = Tough @@ -20231,7 +19645,7 @@ material_vendor = BASF material_colour = #595959 [sla_material:BASF Ultracur3D ST 45 M @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 4.5 initial_exposure_time = 25 material_type = Tough @@ -20239,7 +19653,7 @@ material_vendor = BASF material_colour = #595959 [sla_material:BASF Ultracur3D ST 80 @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 9 initial_exposure_time = 25 material_type = Tough @@ -20247,7 +19661,7 @@ material_vendor = BASF material_colour = #FFEEE6 [sla_material:BASF Ultracur3D ST 80 White @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 9 initial_exposure_time = 25 material_type = Tough @@ -20255,7 +19669,7 @@ material_vendor = BASF material_colour = #FFFFFF [sla_material:BASF Ultracur3D ST 80 Black @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 9 initial_exposure_time = 25 material_type = Tough @@ -20263,7 +19677,7 @@ material_vendor = BASF material_colour = #595959 [sla_material:BASF Ultracur3D EL 150 Black @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 5 initial_exposure_time = 25 material_type = Flexible @@ -20271,7 +19685,7 @@ material_vendor = BASF material_colour = #595959 [sla_material:BASF Ultracur3D FL 300 Black @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 6 initial_exposure_time = 25 material_type = Flexible @@ -20279,7 +19693,7 @@ material_vendor = BASF material_colour = #595959 [sla_material:BlueCast X-One @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_slow* exposure_time = 8.5 initial_exposure_time = 25 material_type = Casting @@ -20288,7 +19702,7 @@ material_colour = #C0C0C0 material_print_speed = slow [sla_material:PrimaCreator Tough Light Grey @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3 initial_exposure_time = 25 material_type = Tough @@ -20296,7 +19710,7 @@ material_vendor = PrimaCreator material_colour = #C0C0C0 [sla_material:PrimaCreator Tough Clear @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.6 initial_exposure_time = 25 material_type = Tough @@ -20304,7 +19718,7 @@ material_vendor = PrimaCreator material_colour = #F8F8F8 [sla_material:PrimaCreator Tough White @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.6 initial_exposure_time = 25 material_type = Tough @@ -20312,7 +19726,7 @@ material_vendor = PrimaCreator material_colour = #FFFFFF [sla_material:PrimaCreator Flex Clear @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.6 initial_exposure_time = 25 material_type = Flexible @@ -20320,7 +19734,7 @@ material_vendor = PrimaCreator material_colour = #F8F8F8 [sla_material:PrimaCreator Water Washable Transparent @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.6 initial_exposure_time = 25 material_type = Tough @@ -20328,16 +19742,16 @@ material_vendor = PrimaCreator material_colour = #F8F8F8 [sla_material:DruckWege Type D Dental Model @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_slow* exposure_time = 2.6 initial_exposure_time = 15 -material_type = Dental +material_type = Medical material_vendor = DruckWege material_colour = #FFEEE6 material_print_speed = slow [sla_material:3DM-ABS Orange @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3 initial_exposure_time = 25 material_type = Tough @@ -20345,7 +19759,7 @@ material_vendor = 3DM material_colour = #FF8040 [sla_material:3DM-TOUGH Clear @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3 initial_exposure_time = 25 material_type = Tough @@ -20353,7 +19767,7 @@ material_vendor = 3DM material_colour = #F8F8F8 [sla_material:Peopoly Deft White @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.6 initial_exposure_time = 25 material_type = Tough @@ -20361,7 +19775,7 @@ material_vendor = Peopoly material_colour = #FFFFFF [sla_material:Peopoly Neo Clear @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 2.6 initial_exposure_time = 25 material_type = Tough @@ -20369,7 +19783,7 @@ material_vendor = Peopoly material_colour = #F8F8F8 [sla_material:Liqcreate Clear Impact @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 20 initial_exposure_time = 40 material_type = Tough @@ -20377,7 +19791,7 @@ material_vendor = Liqcreate material_colour = #F8F8F8 [sla_material:Liqcreate Strong X @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 20 initial_exposure_time = 40 material_type = Tough @@ -20385,7 +19799,7 @@ material_vendor = Liqcreate material_colour = #C0C0C0 [sla_material:Resinworks 3D Green @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 13 initial_exposure_time = 25 material_type = Tough @@ -20393,7 +19807,7 @@ material_vendor = Resinworks 3D material_colour = #00B900 [sla_material:3DJake Blue @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 3 initial_exposure_time = 25 material_type = Tough @@ -20401,7 +19815,7 @@ material_vendor = 3DJake material_colour = #007EFD [sla_material:LOCTITE 3D IND475 @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 6.5 initial_exposure_time = 15 material_type = Flexible @@ -20409,7 +19823,7 @@ material_vendor = Henkel material_colour = #FFFFFF [sla_material:LOCTITE 3D PRO476 @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 9 initial_exposure_time = 25 material_type = Tough @@ -20417,7 +19831,7 @@ material_vendor = Henkel material_colour = #595959 [sla_material:LOCTITE 3D 3843 HDT60 High Toughness @0.1 SL1S] -inherits = *0.1_sl1s* +inherits = *0.1_sl1s*; *sl1s_fast*; *legacy_fast* exposure_time = 18 initial_exposure_time = 25 material_type = Tough @@ -21171,21 +20585,22 @@ bed_shape = 0x0,180x0,180x180,0x180 default_filament_profile = "Prusament PLA" default_print_profile = 0.15mm QUALITY @MINI gcode_flavor = marlin2 -machine_max_acceleration_e = 5000 -machine_max_acceleration_extruding = 2000 -machine_max_acceleration_retracting = 1250 -machine_max_acceleration_travel = 2500 -machine_max_acceleration_x = 2500 -machine_max_acceleration_y = 2500 -machine_max_acceleration_z = 400 -machine_max_feedrate_e = 80 -machine_max_feedrate_x = 180 -machine_max_feedrate_y = 180 -machine_max_feedrate_z = 12 -machine_max_jerk_e = 10 -machine_max_jerk_x = 8 -machine_max_jerk_y = 8 -machine_max_jerk_z = 2 +silent_mode = 1 +machine_max_acceleration_e = 5000,5000 +machine_max_acceleration_extruding = 2000,2000 +machine_max_acceleration_retracting = 1250,1250 +machine_max_acceleration_travel = 2500,2500 +machine_max_acceleration_x = 2500,2500 +machine_max_acceleration_y = 2500,2500 +machine_max_acceleration_z = 400,400 +machine_max_feedrate_e = 80,80 +machine_max_feedrate_x = 180,180 +machine_max_feedrate_y = 180,180 +machine_max_feedrate_z = 12,12 +machine_max_jerk_e = 10,10 +machine_max_jerk_x = 8,8 +machine_max_jerk_y = 8,8 +machine_max_jerk_z = 2,2 machine_min_extruding_rate = 0 machine_min_travel_rate = 0 max_layer_height = 0.25 @@ -21202,7 +20617,6 @@ retract_before_travel = 1.5 retract_lift_above = 0 retract_lift_below = 179 retract_layer_change = 1 -silent_mode = 0 remaining_times = 1 start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S170 ; set extruder temp for bed leveling\nM140 S[first_layer_bed_temperature] ; set bed temp\nM109 R170 ; wait for bed leveling temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM204 T1250 ; set travel acceleration\nG28 ; home all without mesh bed level\nG29 ; mesh bed leveling \nM204 T[machine_max_acceleration_travel] ; restore travel acceleration\nM104 S[first_layer_temperature] ; set extruder temp\nG92 E0\nG1 Y-2 X179 F2400\nG1 Z3 F720\nM109 S[first_layer_temperature] ; wait for extruder temp\n\n; intro line\nG1 X170 F1000\nG1 Z0.2 F720\nG1 X110 E8 F900\nG1 X40 E10 F700\nG92 E0\n\nM221 S95 ; set flow end_gcode = G1 E-1 F2100 ; retract\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F720 ; Move print head up{endif}\nG1 X178 Y178 F4200 ; park print head\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+30, max_print_height)} F720 ; Move print head further up{endif}\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM221 S100 ; reset flow\nM900 K0 ; reset LA\nM84 ; disable motors\n; max_layer_z = [max_layer_z] @@ -21259,18 +20673,20 @@ bed_shape = 0x0,180x0,180x180,0x180 default_filament_profile = "Prusament PLA @MINIIS" default_print_profile = 0.20mm SPEED @MINIIS 0.4 gcode_flavor = marlin2 -machine_max_acceleration_extruding = 4000 -machine_max_acceleration_travel = 4000 -machine_max_acceleration_x = 4000 -machine_max_acceleration_y = 4000 -machine_max_acceleration_z = 400 -machine_max_feedrate_e = 80 -machine_max_feedrate_x = 400 -machine_max_feedrate_y = 400 +silent_mode = 1 +machine_max_acceleration_e = 5000,5000 +machine_max_acceleration_extruding = 4000,2500 +machine_max_acceleration_retracting = 1250,1250 +machine_max_acceleration_travel = 4000,2500 +machine_max_acceleration_x = 4000,2500 +machine_max_acceleration_y = 4000,2500 +machine_max_acceleration_z = 400,400 +machine_max_feedrate_x = 400,180 +machine_max_feedrate_y = 400,180 retract_length = 2.5 retract_lift = 0.2 wipe = 0 -start_gcode = M862.3 P "MINI" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM862.5 P2 ; g-code level check\nM862.6 P"Input shaper" ; FW feature check\nM115 U5.1.2+13478\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S170 ; set extruder temp for bed leveling\nM140 S[first_layer_bed_temperature] ; set bed temp\nM109 R170 ; wait for bed leveling temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM569 S1 X Y ; set stealthchop for X Y\nM204 T1250 ; set travel acceleration\nG28 ; home all without mesh bed level\nG29 ; mesh bed leveling \nM104 S[first_layer_temperature] ; set extruder temp\nG92 E0\n\nG1 X0 Y-2 Z3 F2400\n\nM109 S[first_layer_temperature] ; wait for extruder temp\n\n; intro line\nG1 X10 Z0.2 F1000\nG1 X70 E8 F900\nG1 X140 E10 F700\nG92 E0\n\nM569 S0 X Y ; set spreadcycle for X Y\nM204 T[machine_max_acceleration_travel] ; restore travel acceleration\nM572 W0.06 ; set smooth time\nM221 S95 ; set flow\n +start_gcode = M862.3 P "MINI" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM862.5 P2 ; g-code level check\nM862.6 P"Input shaper" ; FW feature check\nM115 U6.0.1+14848\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S170 ; set extruder temp for bed leveling\nM140 S[first_layer_bed_temperature] ; set bed temp\nM109 R170 ; wait for bed leveling temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM569 S1 X Y ; set stealthchop for X Y\nM204 T1250 ; set travel acceleration\nG28 ; home all without mesh bed level\nG29 ; mesh bed leveling \nM104 S[first_layer_temperature] ; set extruder temp\nG92 E0\n\nG1 X0 Y-2 Z3 F2400\n\nM109 S[first_layer_temperature] ; wait for extruder temp\n\n; intro line\nG1 X10 Z0.2 F1000\nG1 X70 E8 F900\nG1 X140 E10 F700\nG92 E0\n\nM569 S0 X Y ; set spreadcycle for X Y\nM204 T[machine_max_acceleration_travel] ; restore travel acceleration\nM572 W0.06 ; set smooth time\nM221 S95 ; set flow\n end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F720 ; Move print head up{endif}\nG1 X170 Y170 F4200 ; park print head\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+50, max_print_height)} F720 ; Move print head further up{endif}\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM221 S100 ; reset flow\nM572 S0 ; reset PA\nM569 S1 X Y ; reset to stealthchop for X Y\nM84 ; disable motors\n; max_layer_z = [max_layer_z] printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MINIIS\nNO_TEMPLATES\n before_layer_gcode = ;BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\nM201 X{interpolate_table(extruded_weight_total, (0,4000), (1000,1700), (10000,1700))} Y{interpolate_table(extruded_weight_total, (0,4000), (1000,1700), (10000,1700))}\n{if ! spiral_vase}M74 W[extruded_weight_total]{endif}\n @@ -21320,27 +20736,27 @@ printer_variant = 0.4 printer_model = XL nozzle_diameter = 0.4 end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F720{endif} ; Move bed down\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X6 Y350 F6000 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+100, max_print_height)} F300{endif} ; Move bed down\nM900 K0 ; reset LA\nM142 S36 ; reset heatbreak target temp\nM221 S100 ; reset flow percentage\nM84 ; disable motors\n; max_layer_z = [max_layer_z] +silent_mode = 1 machine_limits_usage = emit_to_gcode -machine_max_acceleration_e = 2500 -machine_max_acceleration_extruding = 3000 -machine_max_acceleration_retracting = 1200 -machine_max_acceleration_travel = 3000 -machine_max_acceleration_x = 5000 -machine_max_acceleration_y = 5000 -machine_max_acceleration_z = 200 -machine_max_feedrate_e = 100 -machine_max_feedrate_x = 400 -machine_max_feedrate_y = 400 -machine_max_feedrate_z = 12 -machine_max_jerk_e = 10 -machine_max_jerk_x = 8 -machine_max_jerk_y = 8 -machine_max_jerk_z = 2 +machine_max_acceleration_e = 2500,2500 +machine_max_acceleration_extruding = 3000,2500 +machine_max_acceleration_retracting = 1200,1200 +machine_max_acceleration_travel = 3000,2500 +machine_max_acceleration_x = 5000,2500 +machine_max_acceleration_y = 5000,2500 +machine_max_acceleration_z = 200,200 +machine_max_feedrate_e = 100,100 +machine_max_feedrate_x = 400,140 +machine_max_feedrate_y = 400,140 +machine_max_feedrate_z = 12,12 +machine_max_jerk_e = 10,10 +machine_max_jerk_x = 8,8 +machine_max_jerk_y = 8,8 +machine_max_jerk_z = 2,2 machine_min_extruding_rate = 0,0 machine_min_travel_rate = 0,0 max_layer_height = 0.25 min_layer_height = 0.07 -silent_mode = 0 remaining_times = 1 printer_notes = Do not remove the keywords below.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_XL\nPG retract_lift_below = 359 @@ -21350,7 +20766,7 @@ retract_before_travel = 1.5 retract_before_wipe = 80% retract_layer_change = 1 retract_length = 0.8 -start_gcode = M17 ; enable steppers\nM862.3 P "XL" ; printer model check\nM115 U5.1.2+13478\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; set print area\nM555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}\n; inform about nozzle diameter\nM862.1 P[nozzle_diameter]\n; set & wait for bed and extruder temp for MBL\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n; home carriage, pick tool, home all\nG28 XY\nM84 E ; turn off E motor\nG28 Z\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nG29 G ; absorb heat\n; move to the nozzle cleanup area\nG1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F4800\nM302 S160 ; lower cold extrusion limit to 160C\nG1 E{-(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; retraction for nozzle cleanup\n; nozzle cleanup\nM84 E ; turn off E motor\nG29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)))} Y{(first_layer_print_min[1] - 7)} W{32} H{7}\nG0 Z10 F480 ; move away in Z\n{if first_layer_bed_temperature[0] > 60}\nG0 Z70 F480 ; move away (a bit more) in Z\nG0 X30 Y{print_bed_min[1]} F6000 ; move away in X/Y for higher bed temperatures\n{endif}\nM106 S100 ; cool off the nozzle\nM107 ; stop cooling off the nozzle - turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nM104 S[first_layer_temperature] ; set extruder temp\nG1 Z10 F720 ; move away in Z\nG0 X30 Y-8 F6000 ; move next to the sheet\n; wait for extruder temp\nM109 T0 S{first_layer_temperature[0]}\n;\n; purge\n;\nG92 E0 ; reset extruder position\nG0 X{(0 == 0 ? 30 : (0 == 1 ? 150 : (0 == 2 ? 210 : 330)))} Y{(0 < 4 ? -8 : -5.5)} ; move close to the sheet's edge\nG1 E{(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E10 X40 Z0.2 F500 ; purge\nG0 X70 E9 F800 ; purge\nG0 X{70 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{70 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG92 E0 ; reset extruder position\n +start_gcode = M17 ; enable steppers\nM862.3 P "XL" ; printer model check\nM115 U6.0.1+14848\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; set print area\nM555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}\n; inform about nozzle diameter\nM862.1 P[nozzle_diameter]\n; set & wait for bed and extruder temp for MBL\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n; home carriage, pick tool, home all\nG28 XY\nM84 E ; turn off E motor\nG28 Z\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nG29 G ; absorb heat\n; move to the nozzle cleanup area\nG1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F4800\nM302 S160 ; lower cold extrusion limit to 160C\nG1 E{-(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; retraction for nozzle cleanup\n; nozzle cleanup\nM84 E ; turn off E motor\nG29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)))} Y{(first_layer_print_min[1] - 7)} W{32} H{7}\nG0 Z10 F480 ; move away in Z\n{if first_layer_bed_temperature[0] > 60}\nG0 Z70 F480 ; move away (a bit more) in Z\nG0 X30 Y{print_bed_min[1]} F6000 ; move away in X/Y for higher bed temperatures\n{endif}\nM106 S100 ; cool off the nozzle\nM107 ; stop cooling off the nozzle - turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nM104 S[first_layer_temperature] ; set extruder temp\nG1 Z10 F720 ; move away in Z\nG0 X30 Y-8 F6000 ; move next to the sheet\n; wait for extruder temp\nM109 T0 S{first_layer_temperature[0]}\n;\n; purge\n;\nG92 E0 ; reset extruder position\nG0 X{(0 == 0 ? 30 : (0 == 1 ? 150 : (0 == 2 ? 210 : 330)))} Y{(0 < 4 ? -8 : -5.5)} ; move close to the sheet's edge\nG1 E{(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E10 X40 Z0.2 F500 ; purge\nG0 X70 E9 F800 ; purge\nG0 X{70 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{70 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG92 E0 ; reset extruder position\n default_print_profile = 0.20mm QUALITY @XL 0.4 default_filament_profile = "Prusament PLA @PG" thumbnails = 16x16/QOI, 313x173/QOI, 440x240/QOI, 480x240/QOI, 640x480/PNG @@ -21366,14 +20782,19 @@ retract_length_toolchange = 0 [printer:*commonXLIS*] inherits = *commonXL* printer_model = XLIS -machine_max_acceleration_extruding = 4000 -machine_max_acceleration_travel = 5000 -machine_max_acceleration_x = 7000 -machine_max_acceleration_y = 7000 -machine_max_feedrate_x = 400 -machine_max_feedrate_y = 400 +silent_mode = 1 +machine_max_acceleration_e = 2500,2500 +machine_max_acceleration_extruding = 4000,2500 +machine_max_acceleration_retracting = 1200,1200 +machine_max_acceleration_travel = 5000,2500 +machine_max_acceleration_x = 7000,2500 +machine_max_acceleration_y = 7000,2500 +machine_max_acceleration_z = 200,200 +machine_max_feedrate_e = 100,100 +machine_max_feedrate_x = 400,140 +machine_max_feedrate_y = 400,140 printer_notes = Do not remove the keywords below.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_XLIS\nPG\nINPUT_SHAPER -start_gcode = M17 ; enable steppers\nM862.3 P "XL" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P"Input shaper" ; FW feature check\nM115 U5.1.2+13478\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; set print area\nM555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}\n; inform about nozzle diameter\nM862.1 P[nozzle_diameter]\n; set & wait for bed and extruder temp for MBL\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n; home carriage, pick tool, home all\nG28 XY\nM84 E ; turn off E motor\nG28 Z\n\nM104 T{initial_tool} S{if is_nil(idle_temperature[initial_tool])}70{else}{idle_temperature[initial_tool]}{endif}\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nG29 G ; absorb heat\n\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} \n; wait for temp\n\n; move to the nozzle cleanup area\nG1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F4800\nM302 S160 ; lower cold extrusion limit to 160C\nG1 E{-(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; retraction for nozzle cleanup\n; nozzle cleanup\nM84 E ; turn off E motor\nG29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)))} Y{(first_layer_print_min[1] - 7)} W{32} H{7}\nG0 Z10 F480 ; move away in Z\n{if first_layer_bed_temperature[0] > 60}\nG0 Z70 F480 ; move away (a bit more) in Z\nG0 X30 Y{print_bed_min[1]} F6000 ; move away in X/Y for higher bed temperatures\n{endif}\nM106 S100 ; cool off the nozzle\nM107 ; stop cooling off the nozzle - turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nM104 S[first_layer_temperature] ; set extruder temp\nG1 Z10 F720 ; move away in Z\nG0 X30 Y-8 F6000 ; move next to the sheet\n; wait for extruder temp\nM109 T0 S{first_layer_temperature[0]}\n;\n; purge\n;\nG92 E0 ; reset extruder position\nG0 X{(0 == 0 ? 30 : (0 == 1 ? 150 : (0 == 2 ? 210 : 330)))} Y{(0 < 4 ? -8 : -5.5)} ; move close to the sheet's edge\nG1 E{(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E10 X40 Z0.2 F500 ; purge\nG0 X70 E9 F800 ; purge\nG0 X{70 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{70 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG92 E0 ; reset extruder position\n\nM593 X T2 F38.4\nM593 Y T2 F39.2\n +start_gcode = M17 ; enable steppers\nM862.3 P "XL" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P"Input shaper" ; FW feature check\nM115 U6.0.1+14848\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; set print area\nM555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}\n; inform about nozzle diameter\nM862.1 P[nozzle_diameter]\n; set & wait for bed and extruder temp for MBL\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n; home carriage, pick tool, home all\nG28 XY\nM84 E ; turn off E motor\nG28 Z\n\nM104 T{initial_tool} S{if is_nil(idle_temperature[initial_tool])}70{else}{idle_temperature[initial_tool]}{endif}\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nG29 G ; absorb heat\n\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} \n; wait for temp\n\n; move to the nozzle cleanup area\nG1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F4800\nM302 S160 ; lower cold extrusion limit to 160C\nG1 E{-(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; retraction for nozzle cleanup\n; nozzle cleanup\nM84 E ; turn off E motor\nG29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)))} Y{(first_layer_print_min[1] - 7)} W{32} H{7}\nG0 Z10 F480 ; move away in Z\n{if first_layer_bed_temperature[0] > 60}\nG0 Z70 F480 ; move away (a bit more) in Z\nG0 X30 Y{print_bed_min[1]} F6000 ; move away in X/Y for higher bed temperatures\n{endif}\nM106 S100 ; cool off the nozzle\nM107 ; stop cooling off the nozzle - turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nM104 S[first_layer_temperature] ; set extruder temp\nG1 Z10 F720 ; move away in Z\nG0 X30 Y-8 F6000 ; move next to the sheet\n; wait for extruder temp\nM109 T0 S{first_layer_temperature[0]}\n;\n; purge\n;\nG92 E0 ; reset extruder position\nG0 X{(0 == 0 ? 30 : (0 == 1 ? 150 : (0 == 2 ? 210 : 330)))} Y{(0 < 4 ? -8 : -5.5)} ; move close to the sheet's edge\nG1 E{(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E10 X40 Z0.2 F500 ; purge\nG0 X70 E9 F800 ; purge\nG0 X{70 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{70 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG92 E0 ; reset extruder position\n default_print_profile = 0.20mm SPEED @XLIS 0.4 default_filament_profile = "Prusament PLA @XLIS" @@ -21396,7 +20817,7 @@ retract_restart_extra = 0,0,0,0,0 retract_restart_extra_toolchange = 0,0,0,0,0 wipe = 1,1,1,1,1 extruder_colour = #FF8000;#DB5182;#3EC0FF;#FF4F4F;#FBEB7D -start_gcode = M17 ; enable steppers\nM862.3 P "XL" ; printer model check\nM115 U5.1.2+13478\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; set print area\nM555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}\n; inform about nozzle diameter\n{if (is_extruder_used[0])}M862.1 T0 P{nozzle_diameter[0]}{endif}\n{if (is_extruder_used[1])}M862.1 T1 P{nozzle_diameter[1]}{endif}\n{if (is_extruder_used[2])}M862.1 T2 P{nozzle_diameter[2]}{endif}\n{if (is_extruder_used[3])}M862.1 T3 P{nozzle_diameter[3]}{endif}\n{if (is_extruder_used[4])}M862.1 T4 P{nozzle_diameter[4]}{endif}\n\n; turn off unused heaters\n{if ! is_extruder_used[0]} M104 T0 S0 {endif}\n{if ! is_extruder_used[1]} M104 T1 S0 {endif}\n{if num_extruders > 2 and ! is_extruder_used[2]} M104 T2 S0 {endif}\n{if num_extruders > 3 and ! is_extruder_used[3]} M104 T3 S0 {endif}\n{if num_extruders > 4 and ! is_extruder_used[4]} M104 T4 S0 {endif}\n\nM217 Z{max(zhop, 2.0)} ; set toolchange z hop to 2mm, or zhop variable from slicer if higher\n; set bed and extruder temp for MBL\nM140 S[first_layer_bed_temperature] ; set bed temp\nG0 Z5 ; add Z clearance\nM109 T{initial_tool} S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\n; Home XY\nG28 XY\n; try picking tools used in print\nG1 F{travel_speed * 60}\n{if (is_extruder_used[0]) and (initial_tool != 0)}T0 S1 L0 D0{endif}\n{if (is_extruder_used[1]) and (initial_tool != 1)}T1 S1 L0 D0{endif}\n{if (is_extruder_used[2]) and (initial_tool != 2)}T2 S1 L0 D0{endif}\n{if (is_extruder_used[3]) and (initial_tool != 3)}T3 S1 L0 D0{endif}\n{if (is_extruder_used[4]) and (initial_tool != 4)}T4 S1 L0 D0{endif}\n; select tool that will be used to home & MBL\nT{initial_tool} S1 L0 D0\n; home Z with MBL tool\nM84 E ; turn off E motor\nG28 Z\nG0 Z5 ; add Z clearance\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nG29 G ; absorb heat\n; move to the nozzle cleanup area\nG1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F{(travel_speed * 60)}\nM302 S160 ; lower cold extrusion limit to 160C\nG1 E{-(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; retraction for nozzle cleanup\n; nozzle cleanup\nM84 E ; turn off E motor\nG29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)))} Y{(first_layer_print_min[1] - 7)} W{32} H{7}\nG0 Z5 F480 ; move away in Z\nM107 ; turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W{(((is_extruder_used[4]) or ((is_extruder_used[3]) or (is_extruder_used[2]))) ? "300" : ((is_extruder_used[1]) ? "130" : "50"))} H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nG1 Z10 F720 ; move away in Z\nG1 F{travel_speed * 60}\nP0 S1 L1 D0; park the tool\n; set extruder temp\n{if first_layer_temperature[0] > 0 and (is_extruder_used[0])}M104 T0 S{first_layer_temperature[0]}{endif}\n{if first_layer_temperature[1] > 0 and (is_extruder_used[1])}M104 T1 S{first_layer_temperature[1]}{endif}\n{if first_layer_temperature[2] > 0 and (is_extruder_used[2])}M104 T2 S{first_layer_temperature[2]}{endif}\n{if first_layer_temperature[3] > 0 and (is_extruder_used[3])}M104 T3 S{first_layer_temperature[3]}{endif}\n{if first_layer_temperature[4] > 0 and (is_extruder_used[4])}M104 T4 S{first_layer_temperature[4]}{endif}\n{if (is_extruder_used[0]) and initial_tool != 0}\n;\n; purge first tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T0 S{first_layer_temperature[0]}\nT0 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(0 == 0 ? 30 : (0 == 1 ? 150 : (0 == 2 ? 210 : 330)))} Y{(0 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[0])}10{else}30{endif} X40 Z0.2 F{if is_nil(filament_multitool_ramming[0])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X70 E9 F800 ; continue purging and wipe the nozzle\nG0 X{70 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{70 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[0]} F2400 ; retract\n{e_retracted[0] = 1.5 * retract_length[0]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[0]) ? (first_layer_temperature[0] + standby_temperature_delta) : (idle_temperature[0]))} T0\n{endif}\n{if (is_extruder_used[1]) and initial_tool != 1}\n;\n; purge second tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T1 S{first_layer_temperature[1]}\nT1 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(1 == 0 ? 30 : (1 == 1 ? 150 : (1 == 2 ? 210 : 330)))} Y{(1 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[1])}10{else}30{endif} X140 Z0.2 F{if is_nil(filament_multitool_ramming[1])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X110 E9 F800 ; continue purging and wipe the nozzle\nG0 X{110 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{110 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[1]} F2400 ; retract\n{e_retracted[1] = 1.5 * retract_length[1]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[1]) ? (first_layer_temperature[1] + standby_temperature_delta) : (idle_temperature[1]))} T1\n{endif}\n{if (is_extruder_used[2]) and initial_tool != 2}\n;\n; purge third tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T2 S{first_layer_temperature[2]}\nT2 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(2 == 0 ? 30 : (2 == 1 ? 150 : (2 == 2 ? 210 : 330)))} Y{(2 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[2])}10{else}30{endif} X220 Z0.2 F{if is_nil(filament_multitool_ramming[2])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X250 E9 F800 ; continue purging and wipe the nozzle\nG0 X{250 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{250 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[2]} F2400 ; retract\n{e_retracted[2] = 1.5 * retract_length[2]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[2]) ? (first_layer_temperature[2] + standby_temperature_delta) : (idle_temperature[2]))} T2\n{endif}\n{if (is_extruder_used[3]) and initial_tool != 3}\n;\n; purge fourth tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T3 S{first_layer_temperature[3]}\nT3 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(3 == 0 ? 30 : (3 == 1 ? 150 : (3 == 2 ? 210 : 330)))} Y{(3 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[3])}10{else}30{endif} X320 Z0.2 F{if is_nil(filament_multitool_ramming[3])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X290 E9 F800 ; continue purging and wipe the nozzle\nG0 X{290 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{290 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[3]} F2400 ; retract\n{e_retracted[3] = 1.5 * retract_length[3]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[3]) ? (first_layer_temperature[3] + standby_temperature_delta) : (idle_temperature[3]))} T3\n{endif}\n{if (is_extruder_used[4]) and initial_tool != 4}\n;\n; purge fifth tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T4 S{first_layer_temperature[4]}\nT4 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(4 == 0 ? 30 : (4 == 1 ? 150 : (4 == 2 ? 210 : 330)))} Y{(4 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[4])}10{else}30{endif} X320 Z0.2 F{if is_nil(filament_multitool_ramming[4])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X290 E9 F800 ; continue purging and wipe the nozzle\nG0 X{290 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{290 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[4]} F2400 ; retract\n{e_retracted[4] = 1.5 * retract_length[4]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[4]) ? (first_layer_temperature[4] + standby_temperature_delta) : (idle_temperature[4]))} T4\n{endif}\n;\n; purge initial tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T{initial_tool} S{first_layer_temperature[initial_tool]}\nT{initial_tool} S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330)))} Y{(initial_tool < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[initial_tool])}10{else}30{endif} X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 10)} Z0.2 F{if is_nil(filament_multitool_ramming[initial_tool])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40)} E9 F800 ; continue purging and wipe the nozzle\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 3)} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 3 * 2)} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[initial_tool]} F2400 ; retract\n{e_retracted[initial_tool] = 1.5 * retract_length[initial_tool]}\nG92 E0 ; reset extruder position +start_gcode = M17 ; enable steppers\nM862.3 P "XL" ; printer model check\nM115 U6.0.1+14848\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; set print area\nM555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}\n; inform about nozzle diameter\n{if (is_extruder_used[0])}M862.1 T0 P{nozzle_diameter[0]}{endif}\n{if (is_extruder_used[1])}M862.1 T1 P{nozzle_diameter[1]}{endif}\n{if (is_extruder_used[2])}M862.1 T2 P{nozzle_diameter[2]}{endif}\n{if (is_extruder_used[3])}M862.1 T3 P{nozzle_diameter[3]}{endif}\n{if (is_extruder_used[4])}M862.1 T4 P{nozzle_diameter[4]}{endif}\n\n; turn off unused heaters\n{if ! is_extruder_used[0]} M104 T0 S0 {endif}\n{if ! is_extruder_used[1]} M104 T1 S0 {endif}\n{if num_extruders > 2 and ! is_extruder_used[2]} M104 T2 S0 {endif}\n{if num_extruders > 3 and ! is_extruder_used[3]} M104 T3 S0 {endif}\n{if num_extruders > 4 and ! is_extruder_used[4]} M104 T4 S0 {endif}\n\nM217 Z{max(zhop, 2.0)} ; set toolchange z hop to 2mm, or zhop variable from slicer if higher\n; set bed and extruder temp for MBL\nM140 S[first_layer_bed_temperature] ; set bed temp\nG0 Z5 ; add Z clearance\nM109 T{initial_tool} S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\n; Home XY\nG28 XY\n; try picking tools used in print\nG1 F{travel_speed * 60}\n{if (is_extruder_used[0]) and (initial_tool != 0)}T0 S1 L0 D0{endif}\n{if (is_extruder_used[1]) and (initial_tool != 1)}T1 S1 L0 D0{endif}\n{if (is_extruder_used[2]) and (initial_tool != 2)}T2 S1 L0 D0{endif}\n{if (is_extruder_used[3]) and (initial_tool != 3)}T3 S1 L0 D0{endif}\n{if (is_extruder_used[4]) and (initial_tool != 4)}T4 S1 L0 D0{endif}\n; select tool that will be used to home & MBL\nT{initial_tool} S1 L0 D0\n; home Z with MBL tool\nM84 E ; turn off E motor\nG28 Z\nG0 Z5 ; add Z clearance\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nG29 G ; absorb heat\n; move to the nozzle cleanup area\nG1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F{(travel_speed * 60)}\nM302 S160 ; lower cold extrusion limit to 160C\nG1 E{-(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; retraction for nozzle cleanup\n; nozzle cleanup\nM84 E ; turn off E motor\nG29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)))} Y{(first_layer_print_min[1] - 7)} W{32} H{7}\nG0 Z5 F480 ; move away in Z\nM107 ; turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W{(((is_extruder_used[4]) or ((is_extruder_used[3]) or (is_extruder_used[2]))) ? "300" : ((is_extruder_used[1]) ? "130" : "50"))} H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nG1 Z10 F720 ; move away in Z\nG1 F{travel_speed * 60}\nP0 S1 L1 D0; park the tool\n; set extruder temp\n{if first_layer_temperature[0] > 0 and (is_extruder_used[0])}M104 T0 S{first_layer_temperature[0]}{endif}\n{if first_layer_temperature[1] > 0 and (is_extruder_used[1])}M104 T1 S{first_layer_temperature[1]}{endif}\n{if first_layer_temperature[2] > 0 and (is_extruder_used[2])}M104 T2 S{first_layer_temperature[2]}{endif}\n{if first_layer_temperature[3] > 0 and (is_extruder_used[3])}M104 T3 S{first_layer_temperature[3]}{endif}\n{if first_layer_temperature[4] > 0 and (is_extruder_used[4])}M104 T4 S{first_layer_temperature[4]}{endif}\n{if (is_extruder_used[0]) and initial_tool != 0}\n;\n; purge first tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T0 S{first_layer_temperature[0]}\nT0 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(0 == 0 ? 30 : (0 == 1 ? 150 : (0 == 2 ? 210 : 330)))} Y{(0 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[0])}10{else}30{endif} X40 Z0.2 F{if is_nil(filament_multitool_ramming[0])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X70 E9 F800 ; continue purging and wipe the nozzle\nG0 X{70 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{70 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[0]} F2400 ; retract\n{e_retracted[0] = 1.5 * retract_length[0]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[0]) ? (first_layer_temperature[0] + standby_temperature_delta) : (idle_temperature[0]))} T0\n{endif}\n{if (is_extruder_used[1]) and initial_tool != 1}\n;\n; purge second tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T1 S{first_layer_temperature[1]}\nT1 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(1 == 0 ? 30 : (1 == 1 ? 150 : (1 == 2 ? 210 : 330)))} Y{(1 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[1])}10{else}30{endif} X140 Z0.2 F{if is_nil(filament_multitool_ramming[1])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X110 E9 F800 ; continue purging and wipe the nozzle\nG0 X{110 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{110 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[1]} F2400 ; retract\n{e_retracted[1] = 1.5 * retract_length[1]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[1]) ? (first_layer_temperature[1] + standby_temperature_delta) : (idle_temperature[1]))} T1\n{endif}\n{if (is_extruder_used[2]) and initial_tool != 2}\n;\n; purge third tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T2 S{first_layer_temperature[2]}\nT2 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(2 == 0 ? 30 : (2 == 1 ? 150 : (2 == 2 ? 210 : 330)))} Y{(2 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[2])}10{else}30{endif} X220 Z0.2 F{if is_nil(filament_multitool_ramming[2])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X250 E9 F800 ; continue purging and wipe the nozzle\nG0 X{250 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{250 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[2]} F2400 ; retract\n{e_retracted[2] = 1.5 * retract_length[2]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[2]) ? (first_layer_temperature[2] + standby_temperature_delta) : (idle_temperature[2]))} T2\n{endif}\n{if (is_extruder_used[3]) and initial_tool != 3}\n;\n; purge fourth tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T3 S{first_layer_temperature[3]}\nT3 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(3 == 0 ? 30 : (3 == 1 ? 150 : (3 == 2 ? 210 : 330)))} Y{(3 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[3])}10{else}30{endif} X320 Z0.2 F{if is_nil(filament_multitool_ramming[3])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X290 E9 F800 ; continue purging and wipe the nozzle\nG0 X{290 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{290 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[3]} F2400 ; retract\n{e_retracted[3] = 1.5 * retract_length[3]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[3]) ? (first_layer_temperature[3] + standby_temperature_delta) : (idle_temperature[3]))} T3\n{endif}\n{if (is_extruder_used[4]) and initial_tool != 4}\n;\n; purge fifth tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T4 S{first_layer_temperature[4]}\nT4 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(4 == 0 ? 30 : (4 == 1 ? 150 : (4 == 2 ? 210 : 330)))} Y{(4 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[4])}10{else}30{endif} X320 Z0.2 F{if is_nil(filament_multitool_ramming[4])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X290 E9 F800 ; continue purging and wipe the nozzle\nG0 X{290 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{290 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[4]} F2400 ; retract\n{e_retracted[4] = 1.5 * retract_length[4]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[4]) ? (first_layer_temperature[4] + standby_temperature_delta) : (idle_temperature[4]))} T4\n{endif}\n;\n; purge initial tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T{initial_tool} S{first_layer_temperature[initial_tool]}\nT{initial_tool} S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330)))} Y{(initial_tool < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[initial_tool])}10{else}30{endif} X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 10)} Z0.2 F{if is_nil(filament_multitool_ramming[initial_tool])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40)} E9 F800 ; continue purging and wipe the nozzle\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 3)} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 3 * 2)} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[initial_tool]} F2400 ; retract\n{e_retracted[initial_tool] = 1.5 * retract_length[initial_tool]}\nG92 E0 ; reset extruder position end_gcode = G4 ; wait\n\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+5, max_print_height)}{endif} ; Move bed down\n\nP0 S1 ; park tool\n\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+97, max_print_height)} F300{endif} ; Move bed further down\n\n; turn off extruder heaters\n{if is_extruder_used[0]} M104 T0 S0 {endif}\n{if is_extruder_used[1]} M104 T1 S0 {endif}\n{if is_extruder_used[2]} M104 T2 S0 {endif}\n{if is_extruder_used[3]} M104 T3 S0 {endif}\n{if is_extruder_used[4]} M104 T4 S0 {endif}\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM221 S100 ; reset flow percentage\nM84 ; disable motors\nM77 ; stop print timer\n; max_layer_z = [max_layer_z] toolchange_gcode = ; Change Tool[previous_extruder] -> Tool[next_extruder] (layer [layer_num])\n{\nlocal max_speed_toolchange = 350.0;\nlocal wait_for_extruder_temp = true;\nposition[2] = position[2] + 2.0;\n\nlocal speed_toolchange = max_speed_toolchange;\nif travel_speed < max_speed_toolchange then\n speed_toolchange = travel_speed;\nendif\n"G1 F" + (speed_toolchange * 60) + "\n";\nif wait_for_extruder_temp and not((layer_num < 0) and (next_extruder == initial_tool)) then\n "P0 S1 L2 D0\n";\n "; " + layer_num + "\n";\n if layer_num == 0 then\n "M109 S" + first_layer_temperature[next_extruder] + " T" + next_extruder + "\n";\n else\n "M109 S" + temperature[next_extruder] + " T" + next_extruder + "\n";\n endif\nendif\n"T" + next_extruder + " S1 L0 D0\n";\n} color_change_gcode = M600 @@ -21406,14 +20827,18 @@ travel_slope = 1,1,1,1,1 [printer:*XLMULTIIS*] inherits = *XLMULTI* -machine_max_acceleration_extruding = 4000 -machine_max_acceleration_travel = 5000 -machine_max_acceleration_x = 7000 -machine_max_acceleration_y = 7000 -machine_max_feedrate_x = 400 -machine_max_feedrate_y = 400 +machine_max_acceleration_e = 2500,2500 +machine_max_acceleration_extruding = 4000,2500 +machine_max_acceleration_retracting = 1200,1200 +machine_max_acceleration_travel = 5000,2500 +machine_max_acceleration_x = 7000,2500 +machine_max_acceleration_y = 7000,2500 +machine_max_acceleration_z = 200,200 +machine_max_feedrate_e = 100,100 +machine_max_feedrate_x = 400,140 +machine_max_feedrate_y = 400,140 printer_notes = Do not remove the keywords below.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_XLIS\nPG\nINPUT_SHAPER -start_gcode = M17 ; enable steppers\nM862.3 P "XL" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P"Input shaper" ; FW feature check\nM115 U5.1.2+13478\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; set print area\nM555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}\n; inform about nozzle diameter\n{if (is_extruder_used[0])}M862.1 T0 P{nozzle_diameter[0]}{endif}\n{if (is_extruder_used[1])}M862.1 T1 P{nozzle_diameter[1]}{endif}\n{if (is_extruder_used[2])}M862.1 T2 P{nozzle_diameter[2]}{endif}\n{if (is_extruder_used[3])}M862.1 T3 P{nozzle_diameter[3]}{endif}\n{if (is_extruder_used[4])}M862.1 T4 P{nozzle_diameter[4]}{endif}\n\n; turn off unused heaters\n{if ! is_extruder_used[0]} M104 T0 S0 {endif}\n{if ! is_extruder_used[1]} M104 T1 S0 {endif}\n{if num_extruders > 2 and ! is_extruder_used[2]} M104 T2 S0 {endif}\n{if num_extruders > 3 and ! is_extruder_used[3]} M104 T3 S0 {endif}\n{if num_extruders > 4 and ! is_extruder_used[4]} M104 T4 S0 {endif}\n\nM217 Z{max(zhop, 2.0)} ; set toolchange z hop to 2mm, or zhop variable from slicer if higher\n; set bed and extruder temp for MBL\nM140 S[first_layer_bed_temperature] ; set bed temp\nG0 Z5 ; add Z clearance\nM109 T{initial_tool} S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\n; Home XY\nG28 XY\n; try picking tools used in print\nG1 F{travel_speed * 60}\n{if (is_extruder_used[0]) and (initial_tool != 0)}T0 S1 L0 D0{endif}\n{if (is_extruder_used[1]) and (initial_tool != 1)}T1 S1 L0 D0{endif}\n{if (is_extruder_used[2]) and (initial_tool != 2)}T2 S1 L0 D0{endif}\n{if (is_extruder_used[3]) and (initial_tool != 3)}T3 S1 L0 D0{endif}\n{if (is_extruder_used[4]) and (initial_tool != 4)}T4 S1 L0 D0{endif}\n; select tool that will be used to home & MBL\nT{initial_tool} S1 L0 D0\n; home Z with MBL tool\nM84 E ; turn off E motor\nG28 Z\nG0 Z5 ; add Z clearance\n\nM104 T{initial_tool} S{if is_nil(idle_temperature[initial_tool])}70{else}{idle_temperature[initial_tool]}{endif} ; set idle temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nG29 G ; absorb heat\n\nM109 T{initial_tool} S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\n; move to the nozzle cleanup area\nG1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F{(travel_speed * 60)}\nM302 S160 ; lower cold extrusion limit to 160C\nG1 E{-(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; retraction for nozzle cleanup\n; nozzle cleanup\nM84 E ; turn off E motor\nG29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)))} Y{(first_layer_print_min[1] - 7)} W{32} H{7}\nG0 Z5 F480 ; move away in Z\nM107 ; turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W{(((is_extruder_used[4]) or ((is_extruder_used[3]) or (is_extruder_used[2]))) ? "300" : ((is_extruder_used[1]) ? "130" : "50"))} H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nG1 Z10 F720 ; move away in Z\nG1 F{travel_speed * 60}\nP0 S1 L1 D0; park the tool\n; set extruder temp\n{if first_layer_temperature[0] > 0 and (is_extruder_used[0])}M104 T0 S{first_layer_temperature[0]}{endif}\n{if first_layer_temperature[1] > 0 and (is_extruder_used[1])}M104 T1 S{first_layer_temperature[1]}{endif}\n{if first_layer_temperature[2] > 0 and (is_extruder_used[2])}M104 T2 S{first_layer_temperature[2]}{endif}\n{if first_layer_temperature[3] > 0 and (is_extruder_used[3])}M104 T3 S{first_layer_temperature[3]}{endif}\n{if first_layer_temperature[4] > 0 and (is_extruder_used[4])}M104 T4 S{first_layer_temperature[4]}{endif}\n{if (is_extruder_used[0]) and initial_tool != 0}\n;\n; purge first tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T0 S{first_layer_temperature[0]}\nT0 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(0 == 0 ? 30 : (0 == 1 ? 150 : (0 == 2 ? 210 : 330)))} Y{(0 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[0])}10{else}30{endif} X40 Z0.2 F{if is_nil(filament_multitool_ramming[0])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X70 E9 F800 ; continue purging and wipe the nozzle\nG0 X{70 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{70 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[0]} F2400 ; retract\n{e_retracted[0] = 1.5 * retract_length[0]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[0]) ? (first_layer_temperature[0] + standby_temperature_delta) : (idle_temperature[0]))} T0\n{endif}\n{if (is_extruder_used[1]) and initial_tool != 1}\n;\n; purge second tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T1 S{first_layer_temperature[1]}\nT1 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(1 == 0 ? 30 : (1 == 1 ? 150 : (1 == 2 ? 210 : 330)))} Y{(1 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[1])}10{else}30{endif} X140 Z0.2 F{if is_nil(filament_multitool_ramming[1])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X110 E9 F800 ; continue purging and wipe the nozzle\nG0 X{110 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{110 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[1]} F2400 ; retract\n{e_retracted[1] = 1.5 * retract_length[1]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[1]) ? (first_layer_temperature[1] + standby_temperature_delta) : (idle_temperature[1]))} T1\n{endif}\n{if (is_extruder_used[2]) and initial_tool != 2}\n;\n; purge third tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T2 S{first_layer_temperature[2]}\nT2 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(2 == 0 ? 30 : (2 == 1 ? 150 : (2 == 2 ? 210 : 330)))} Y{(2 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[2])}10{else}30{endif} X220 Z0.2 F{if is_nil(filament_multitool_ramming[2])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X250 E9 F800 ; continue purging and wipe the nozzle\nG0 X{250 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{250 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[2]} F2400 ; retract\n{e_retracted[2] = 1.5 * retract_length[2]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[2]) ? (first_layer_temperature[2] + standby_temperature_delta) : (idle_temperature[2]))} T2\n{endif}\n{if (is_extruder_used[3]) and initial_tool != 3}\n;\n; purge fourth tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T3 S{first_layer_temperature[3]}\nT3 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(3 == 0 ? 30 : (3 == 1 ? 150 : (3 == 2 ? 210 : 330)))} Y{(3 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[3])}10{else}30{endif} X320 Z0.2 F{if is_nil(filament_multitool_ramming[3])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X290 E9 F800 ; continue purging and wipe the nozzle\nG0 X{290 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{290 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[3]} F2400 ; retract\n{e_retracted[3] = 1.5 * retract_length[3]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[3]) ? (first_layer_temperature[3] + standby_temperature_delta) : (idle_temperature[3]))} T3\n{endif}\n{if (is_extruder_used[4]) and initial_tool != 4}\n;\n; purge fifth tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T4 S{first_layer_temperature[4]}\nT4 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(4 == 0 ? 30 : (4 == 1 ? 150 : (4 == 2 ? 210 : 330)))} Y{(4 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[4])}10{else}30{endif} X320 Z0.2 F{if is_nil(filament_multitool_ramming[4])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X290 E9 F800 ; continue purging and wipe the nozzle\nG0 X{290 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{290 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[4]} F2400 ; retract\n{e_retracted[4] = 1.5 * retract_length[4]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[4]) ? (first_layer_temperature[4] + standby_temperature_delta) : (idle_temperature[4]))} T4\n{endif}\n;\n; purge initial tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T{initial_tool} S{first_layer_temperature[initial_tool]}\nT{initial_tool} S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330)))} Y{(initial_tool < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[initial_tool])}10{else}30{endif} X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 10)} Z0.2 F{if is_nil(filament_multitool_ramming[initial_tool])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40)} E9 F800 ; continue purging and wipe the nozzle\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 3)} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 3 * 2)} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[initial_tool]} F2400 ; retract\n{e_retracted[initial_tool] = 1.5 * retract_length[initial_tool]}\nG92 E0 ; reset extruder position\n\nM593 X T2 F35.8\nM593 Y T2 F35.4\n +start_gcode = M17 ; enable steppers\nM862.3 P "XL" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P"Input shaper" ; FW feature check\nM115 U6.0.1+14848\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; set print area\nM555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}\n; inform about nozzle diameter\n{if (is_extruder_used[0])}M862.1 T0 P{nozzle_diameter[0]}{endif}\n{if (is_extruder_used[1])}M862.1 T1 P{nozzle_diameter[1]}{endif}\n{if (is_extruder_used[2])}M862.1 T2 P{nozzle_diameter[2]}{endif}\n{if (is_extruder_used[3])}M862.1 T3 P{nozzle_diameter[3]}{endif}\n{if (is_extruder_used[4])}M862.1 T4 P{nozzle_diameter[4]}{endif}\n\n; turn off unused heaters\n{if ! is_extruder_used[0]} M104 T0 S0 {endif}\n{if ! is_extruder_used[1]} M104 T1 S0 {endif}\n{if num_extruders > 2 and ! is_extruder_used[2]} M104 T2 S0 {endif}\n{if num_extruders > 3 and ! is_extruder_used[3]} M104 T3 S0 {endif}\n{if num_extruders > 4 and ! is_extruder_used[4]} M104 T4 S0 {endif}\n\nM217 Z{max(zhop, 2.0)} ; set toolchange z hop to 2mm, or zhop variable from slicer if higher\n; set bed and extruder temp for MBL\nM140 S[first_layer_bed_temperature] ; set bed temp\nG0 Z5 ; add Z clearance\nM109 T{initial_tool} S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\n; Home XY\nG28 XY\n; try picking tools used in print\nG1 F{travel_speed * 60}\n{if (is_extruder_used[0]) and (initial_tool != 0)}T0 S1 L0 D0{endif}\n{if (is_extruder_used[1]) and (initial_tool != 1)}T1 S1 L0 D0{endif}\n{if (is_extruder_used[2]) and (initial_tool != 2)}T2 S1 L0 D0{endif}\n{if (is_extruder_used[3]) and (initial_tool != 3)}T3 S1 L0 D0{endif}\n{if (is_extruder_used[4]) and (initial_tool != 4)}T4 S1 L0 D0{endif}\n; select tool that will be used to home & MBL\nT{initial_tool} S1 L0 D0\n; home Z with MBL tool\nM84 E ; turn off E motor\nG28 Z\nG0 Z5 ; add Z clearance\n\nM104 T{initial_tool} S{if is_nil(idle_temperature[initial_tool])}70{else}{idle_temperature[initial_tool]}{endif} ; set idle temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nG29 G ; absorb heat\n\nM109 T{initial_tool} S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\n; move to the nozzle cleanup area\nG1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F{(travel_speed * 60)}\nM302 S160 ; lower cold extrusion limit to 160C\nG1 E{-(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; retraction for nozzle cleanup\n; nozzle cleanup\nM84 E ; turn off E motor\nG29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)))} Y{(first_layer_print_min[1] - 7)} W{32} H{7}\nG0 Z5 F480 ; move away in Z\nM107 ; turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W{(((is_extruder_used[4]) or ((is_extruder_used[3]) or (is_extruder_used[2]))) ? "300" : ((is_extruder_used[1]) ? "130" : "50"))} H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nG1 Z10 F720 ; move away in Z\nG1 F{travel_speed * 60}\nP0 S1 L1 D0; park the tool\n; set extruder temp\n{if first_layer_temperature[0] > 0 and (is_extruder_used[0])}M104 T0 S{first_layer_temperature[0]}{endif}\n{if first_layer_temperature[1] > 0 and (is_extruder_used[1])}M104 T1 S{first_layer_temperature[1]}{endif}\n{if first_layer_temperature[2] > 0 and (is_extruder_used[2])}M104 T2 S{first_layer_temperature[2]}{endif}\n{if first_layer_temperature[3] > 0 and (is_extruder_used[3])}M104 T3 S{first_layer_temperature[3]}{endif}\n{if first_layer_temperature[4] > 0 and (is_extruder_used[4])}M104 T4 S{first_layer_temperature[4]}{endif}\n{if (is_extruder_used[0]) and initial_tool != 0}\n;\n; purge first tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T0 S{first_layer_temperature[0]}\nT0 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(0 == 0 ? 30 : (0 == 1 ? 150 : (0 == 2 ? 210 : 330)))} Y{(0 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[0])}10{else}30{endif} X40 Z0.2 F{if is_nil(filament_multitool_ramming[0])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X70 E9 F800 ; continue purging and wipe the nozzle\nG0 X{70 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{70 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[0]} F2400 ; retract\n{e_retracted[0] = 1.5 * retract_length[0]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[0]) ? (first_layer_temperature[0] + standby_temperature_delta) : (idle_temperature[0]))} T0\n{endif}\n{if (is_extruder_used[1]) and initial_tool != 1}\n;\n; purge second tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T1 S{first_layer_temperature[1]}\nT1 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(1 == 0 ? 30 : (1 == 1 ? 150 : (1 == 2 ? 210 : 330)))} Y{(1 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[1])}10{else}30{endif} X140 Z0.2 F{if is_nil(filament_multitool_ramming[1])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X110 E9 F800 ; continue purging and wipe the nozzle\nG0 X{110 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{110 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[1]} F2400 ; retract\n{e_retracted[1] = 1.5 * retract_length[1]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[1]) ? (first_layer_temperature[1] + standby_temperature_delta) : (idle_temperature[1]))} T1\n{endif}\n{if (is_extruder_used[2]) and initial_tool != 2}\n;\n; purge third tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T2 S{first_layer_temperature[2]}\nT2 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(2 == 0 ? 30 : (2 == 1 ? 150 : (2 == 2 ? 210 : 330)))} Y{(2 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[2])}10{else}30{endif} X220 Z0.2 F{if is_nil(filament_multitool_ramming[2])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X250 E9 F800 ; continue purging and wipe the nozzle\nG0 X{250 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{250 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[2]} F2400 ; retract\n{e_retracted[2] = 1.5 * retract_length[2]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[2]) ? (first_layer_temperature[2] + standby_temperature_delta) : (idle_temperature[2]))} T2\n{endif}\n{if (is_extruder_used[3]) and initial_tool != 3}\n;\n; purge fourth tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T3 S{first_layer_temperature[3]}\nT3 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(3 == 0 ? 30 : (3 == 1 ? 150 : (3 == 2 ? 210 : 330)))} Y{(3 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[3])}10{else}30{endif} X320 Z0.2 F{if is_nil(filament_multitool_ramming[3])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X290 E9 F800 ; continue purging and wipe the nozzle\nG0 X{290 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{290 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[3]} F2400 ; retract\n{e_retracted[3] = 1.5 * retract_length[3]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[3]) ? (first_layer_temperature[3] + standby_temperature_delta) : (idle_temperature[3]))} T3\n{endif}\n{if (is_extruder_used[4]) and initial_tool != 4}\n;\n; purge fifth tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T4 S{first_layer_temperature[4]}\nT4 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(4 == 0 ? 30 : (4 == 1 ? 150 : (4 == 2 ? 210 : 330)))} Y{(4 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[4])}10{else}30{endif} X320 Z0.2 F{if is_nil(filament_multitool_ramming[4])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X290 E9 F800 ; continue purging and wipe the nozzle\nG0 X{290 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{290 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[4]} F2400 ; retract\n{e_retracted[4] = 1.5 * retract_length[4]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(is_nil(idle_temperature[4]) ? (first_layer_temperature[4] + standby_temperature_delta) : (idle_temperature[4]))} T4\n{endif}\n;\n; purge initial tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T{initial_tool} S{first_layer_temperature[initial_tool]}\nT{initial_tool} S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330)))} Y{(initial_tool < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if is_nil(filament_multitool_ramming[initial_tool])}10{else}30{endif} X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 10)} Z0.2 F{if is_nil(filament_multitool_ramming[initial_tool])}500{else}170{endif} ; purge while moving towards the sheet\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40)} E9 F800 ; continue purging and wipe the nozzle\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 3)} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 3 * 2)} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[initial_tool]} F2400 ; retract\n{e_retracted[initial_tool] = 1.5 * retract_length[initial_tool]}\nG92 E0 ; reset extruder position\n default_print_profile = 0.20mm SPEED @XLIS 0.4 default_filament_profile = "Prusament PLA @XLIS" @@ -21544,7 +20969,7 @@ retract_length = 0.7 max_layer_height = 0.22 min_layer_height = 0.05 default_print_profile = 0.16mm QUALITY @XL 0.3 -machine_max_acceleration_travel = 2500 +machine_max_acceleration_travel = 2500,2500 [printer:Original Prusa XL - 2T 0.3 nozzle] inherits = *XL2MULTI* @@ -21563,7 +20988,7 @@ retract_length_toolchange = 1.2,1.2 retract_lift_below = 359,359 wipe = 1,1 extruder_colour = #FF8000;#DB5182 -machine_max_acceleration_travel = 2500 +machine_max_acceleration_travel = 2500,2500 [printer:Original Prusa XL - 5T 0.3 nozzle] inherits = *XLMULTI* @@ -21573,7 +20998,7 @@ nozzle_diameter = 0.3,0.3,0.3,0.3,0.3 retract_lift = 0.3,0.3,0.3,0.3,0.3 min_layer_height = 0.05,0.05,0.05,0.05,0.05 max_layer_height = 0.22,0.22,0.22,0.22,0.22 -machine_max_acceleration_travel = 2500 +machine_max_acceleration_travel = 2500,2500 [printer:Original Prusa XL 0.25 nozzle] inherits = *commonXL* @@ -21584,7 +21009,7 @@ retract_lift = 0.15 max_layer_height = 0.15 min_layer_height = 0.05 default_print_profile = 0.12mm QUALITY @XL 0.25 -machine_max_acceleration_travel = 1500 +machine_max_acceleration_travel = 2500,2500 [printer:Original Prusa XL - 2T 0.25 nozzle] inherits = *XL2MULTI* @@ -21603,9 +21028,7 @@ retract_length_toolchange = 1.2,1.2 retract_lift_below = 359,359 wipe = 1,1 extruder_colour = #FF8000;#DB5182 -machine_max_acceleration_travel = 1500 -machine_max_feedrate_x = 400 -machine_max_feedrate_y = 400 +machine_max_acceleration_travel = 2500,2500 [printer:Original Prusa XL - 5T 0.25 nozzle] inherits = *XLMULTI* @@ -21616,9 +21039,7 @@ retract_lift = 0.15,0.15,0.15,0.15,0.15 min_layer_height = 0.05,0.05,0.05,0.05,0.05 max_layer_height = 0.15,0.15,0.15,0.15,0.15 retract_length = 0.8,0.8,0.8,0.8,0.8 -machine_max_acceleration_travel = 1500 -machine_max_feedrate_x = 400 -machine_max_feedrate_y = 400 +machine_max_acceleration_travel = 2500,2500 [printer:Original Prusa XL 0.8 nozzle] inherits = *commonXL* @@ -21793,7 +21214,7 @@ retract_length = 0.7 max_layer_height = 0.22 min_layer_height = 0.05 default_print_profile = 0.16mm SPEED @XLIS 0.3 -machine_max_acceleration_travel = 3000 +machine_max_acceleration_travel = 3000,2500 [printer:Original Prusa XL - 2T Input Shaper 0.3 nozzle] inherits = *XL2MULTIIS* @@ -21813,7 +21234,7 @@ retract_length_toolchange = 1.2,1.2 retract_lift_below = 359,359 wipe = 1,1 extruder_colour = #FF8000;#DB5182 -machine_max_acceleration_travel = 2500 +machine_max_acceleration_travel = 2500,2500 [printer:Original Prusa XL - 5T Input Shaper 0.3 nozzle] inherits = *XLMULTIIS* @@ -21824,7 +21245,7 @@ nozzle_diameter = 0.3,0.3,0.3,0.3,0.3 retract_lift = 0.3,0.3,0.3,0.3,0.3 min_layer_height = 0.05,0.05,0.05,0.05,0.05 max_layer_height = 0.22,0.22,0.22,0.22,0.22 -machine_max_acceleration_travel = 2500 +machine_max_acceleration_travel = 2500,2500 [printer:Original Prusa XL Input Shaper 0.25 nozzle] inherits = *commonXLIS* @@ -21836,9 +21257,7 @@ retract_lift = 0.15 max_layer_height = 0.15 min_layer_height = 0.05 default_print_profile = 0.12mm SPEED @XLIS 0.25 -machine_max_acceleration_travel = 2000 -machine_max_feedrate_x = 400 -machine_max_feedrate_y = 400 +machine_max_acceleration_travel = 2500,2500 [printer:Original Prusa XL - 2T Input Shaper 0.25 nozzle] inherits = *XL2MULTIIS* @@ -21858,9 +21277,7 @@ retract_length_toolchange = 1.2,1.2 retract_lift_below = 359,359 wipe = 1,1 extruder_colour = #FF8000;#DB5182 -machine_max_acceleration_travel = 1500 -machine_max_feedrate_x = 400 -machine_max_feedrate_y = 400 +machine_max_acceleration_travel = 2500,2500 [printer:Original Prusa XL - 5T Input Shaper 0.25 nozzle] inherits = *XLMULTIIS* @@ -21872,9 +21289,7 @@ retract_lift = 0.15,0.15,0.15,0.15,0.15 min_layer_height = 0.05,0.05,0.05,0.05,0.05 max_layer_height = 0.15,0.15,0.15,0.15,0.15 retract_length = 0.8,0.8,0.8,0.8,0.8 -machine_max_acceleration_travel = 1500 -machine_max_feedrate_x = 400 -machine_max_feedrate_y = 400 +machine_max_acceleration_travel = 2500,2500 [printer:Original Prusa XL Input Shaper 0.8 nozzle] inherits = *commonXLIS* @@ -21932,27 +21347,27 @@ printer_variant = 0.4 printer_model = MK4 nozzle_diameter = 0.4 end_gcode = {if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X241 Y170 F3600 ; park\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+23, max_print_height)} F300 ; Move print head up{endif}\nG4 ; wait\nM900 K0 ; reset LA\nM142 S36 ; reset heatbreak target temp\nM84 X Y E ; disable motors\n; max_layer_z = [max_layer_z] +silent_mode = 1 machine_limits_usage = emit_to_gcode -machine_max_acceleration_e = 2500 -machine_max_acceleration_extruding = 2000 -machine_max_acceleration_retracting = 1200 -machine_max_acceleration_travel = 2000 -machine_max_acceleration_x = 2500 -machine_max_acceleration_y = 2500 -machine_max_acceleration_z = 200 -machine_max_feedrate_e = 100 -machine_max_feedrate_x = 200 -machine_max_feedrate_y = 200 -machine_max_feedrate_z = 40 -machine_max_jerk_e = 10 -machine_max_jerk_x = 8 -machine_max_jerk_y = 8 -machine_max_jerk_z = 2 +machine_max_acceleration_e = 2500,2500 +machine_max_acceleration_extruding = 2000,2000 +machine_max_acceleration_retracting = 1200,1200 +machine_max_acceleration_travel = 2000,2000 +machine_max_acceleration_x = 2500,2500 +machine_max_acceleration_y = 2500,2500 +machine_max_acceleration_z = 200,200 +machine_max_feedrate_e = 100,100 +machine_max_feedrate_x = 200,160 +machine_max_feedrate_y = 200,160 +machine_max_feedrate_z = 40,40 +machine_max_jerk_e = 10,10 +machine_max_jerk_x = 8,8 +machine_max_jerk_y = 8,8 +machine_max_jerk_z = 2,2 machine_min_extruding_rate = 0 machine_min_travel_rate = 0 max_layer_height = 0.25 min_layer_height = 0.07 -silent_mode = 0 remaining_times = 1 printer_notes = Do not remove the keywords below.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK4\nPG retract_lift_below = 219 @@ -21962,7 +21377,7 @@ retract_before_travel = 1.5 retract_before_wipe = 80% retract_layer_change = 1 retract_length = 0.8 -start_gcode = M17 ; enable steppers\nM862.3 P "[printer_model]" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U5.1.2+13478\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\nM84 E ; turn off E motor\n\nG28 ; home all without mesh bed level\n\nG1 X{10 + 32} Y-4 Z5 F4800\n\nM302 S160 ; lower cold extrusion limit to 160C\n\n{if filament_type[initial_tool]=="FLEX"}\nG1 E-4 F2400 ; retraction\n{else}\nG1 E-2 F2400 ; retraction\n{endif}\n\nM84 E ; turn off E motor\n\nG29 P9 X10 Y-4 W32 H4\n\n{if first_layer_bed_temperature[initial_tool]<=60}M106 S100{endif}\n\nG0 Z40 F10000\n\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nM107\n\n;\n; MBL\n;\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X0 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[0]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[0]}\n\nG92 E0\nM569 S0 E ; set spreadcycle mode for extruder\n\n;\n; Extrude purge line\n;\nG92 E0 ; reset extruder position\nG1 E{(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X25 E4 F500 ; purge\nG0 X35 E4 F650 ; purge\nG0 X45 E4 F800 ; purge\nG0 X{45 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{45 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; set flow to 100% +start_gcode = M17 ; enable steppers\nM862.3 P "[printer_model]" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U6.0.1+14848\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\nM84 E ; turn off E motor\n\nG28 ; home all without mesh bed level\n\nG1 X{10 + 32} Y-4 Z5 F4800\n\nM302 S160 ; lower cold extrusion limit to 160C\n\n{if filament_type[initial_tool]=="FLEX"}\nG1 E-4 F2400 ; retraction\n{else}\nG1 E-2 F2400 ; retraction\n{endif}\n\nM84 E ; turn off E motor\n\nG29 P9 X10 Y-4 W32 H4\n\n{if first_layer_bed_temperature[initial_tool]<=60}M106 S100{endif}\n\nG0 Z40 F10000\n\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nM107\n\n;\n; MBL\n;\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X0 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[0]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[0]}\n\nG92 E0\nM569 S0 E ; set spreadcycle mode for extruder\n\n;\n; Extrude purge line\n;\nG92 E0 ; reset extruder position\nG1 E{(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X25 E4 F500 ; purge\nG0 X35 E4 F650 ; purge\nG0 X45 E4 F800 ; purge\nG0 X{45 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{45 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; set flow to 100% default_print_profile = 0.20mm QUALITY @MK4 0.4 default_filament_profile = "Prusament PLA @PG" thumbnails = 16x16/QOI, 313x173/QOI, 440x240/QOI, 480x240/QOI, 640x480/PNG @@ -22016,7 +21431,7 @@ retract_lift = 0.15 max_layer_height = 0.15 min_layer_height = 0.05 default_print_profile = 0.12mm QUALITY @MK4 0.25 -machine_max_acceleration_travel = 1500 +machine_max_acceleration_travel = 2500,2500 [printer:Original Prusa MK4 0.8 nozzle] inherits = *commonMK4* @@ -22038,22 +21453,23 @@ renamed_from = "Original Prusa MK4 Input Shaper (Alpha)" printer_model = MK4IS printer_variant = 0.4 max_layer_height = 0.30 +silent_mode = 1 machine_limits_usage = emit_to_gcode -machine_max_acceleration_e = 2500,5000 -machine_max_acceleration_extruding = 4000,2000 -machine_max_acceleration_retracting = 1200,2000 -machine_max_acceleration_travel = 4000,1250 -machine_max_acceleration_x = 4000,2000 -machine_max_acceleration_y = 4000,2000 -machine_max_acceleration_z = 200,2000 -machine_max_feedrate_e = 100,120 -machine_max_feedrate_x = 300,100 -machine_max_feedrate_y = 300,100 -machine_max_feedrate_z = 40,12 -machine_max_jerk_e = 10,1.5 +machine_max_acceleration_e = 2500,2500 +machine_max_acceleration_extruding = 4000,2500 +machine_max_acceleration_retracting = 1200,1200 +machine_max_acceleration_travel = 4000,2500 +machine_max_acceleration_x = 4000,2500 +machine_max_acceleration_y = 4000,2500 +machine_max_acceleration_z = 200,200 +machine_max_feedrate_e = 100,100 +machine_max_feedrate_x = 300,160 +machine_max_feedrate_y = 300,160 +machine_max_feedrate_z = 40,40 +machine_max_jerk_e = 10,10 machine_max_jerk_x = 8,8 machine_max_jerk_y = 8,8 -machine_max_jerk_z = 2,0.4 +machine_max_jerk_z = 2,2 machine_min_extruding_rate = 0,0 machine_min_travel_rate = 0,0 max_print_height = 220 @@ -22062,8 +21478,8 @@ retract_length = 0.7 wipe = 0 retract_before_wipe = 80 retract_speed = 35 -deretract_speed = 0 -start_gcode = M17 ; enable steppers\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM862.3 P "MK4" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P"Input shaper" ; FW feature check\nM115 U5.1.2+13478\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\nM84 E ; turn off E motor\n\nG28 ; home all without mesh bed level\n\nG1 X{10 + 32} Y-4 Z5 F4800\n\nM302 S160 ; lower cold extrusion limit to 160C\n\n{if filament_type[initial_tool]=="FLEX"}\nG1 E-4 F2400 ; retraction\n{else}\nG1 E-2 F2400 ; retraction\n{endif}\n\nM84 E ; turn off E motor\n\nG29 P9 X10 Y-4 W32 H4\n\n{if first_layer_bed_temperature[initial_tool]<=60}M106 S100{endif}\n\nG0 Z40 F10000\n\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nM107\n\n;\n; MBL\n;\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X0 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[0]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[0]}\n\nG92 E0\nM569 S0 E ; set spreadcycle mode for extruder\n\n;\n; Extrude purge line\n;\nG92 E0 ; reset extruder position\nG1 E{(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X25 E4 F500 ; purge\nG0 X35 E4 F650 ; purge\nG0 X45 E4 F800 ; purge\nG0 X{45 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{45 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; set flow to 100% +deretract_speed = 25 +start_gcode = M17 ; enable steppers\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM862.3 P "MK4" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P"Input shaper" ; FW feature check\nM115 U6.0.1+14848\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\nM84 E ; turn off E motor\n\nG28 ; home all without mesh bed level\n\nG1 X{10 + 32} Y-4 Z5 F4800\n\nM302 S160 ; lower cold extrusion limit to 160C\n\n{if filament_type[initial_tool]=="FLEX"}\nG1 E-4 F2400 ; retraction\n{else}\nG1 E-2 F2400 ; retraction\n{endif}\n\nM84 E ; turn off E motor\n\nG29 P9 X10 Y-4 W32 H4\n\n{if first_layer_bed_temperature[initial_tool]<=60}M106 S100{endif}\n\nG0 Z40 F10000\n\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nM107\n\n;\n; MBL\n;\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X0 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[0]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[0]}\n\nG92 E0\nM569 S0 E ; set spreadcycle mode for extruder\n\n;\n; Extrude purge line\n;\nG92 E0 ; reset extruder position\nG1 E{(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X25 E4 F500 ; purge\nG0 X35 E4 F650 ; purge\nG0 X45 E4 F800 ; purge\nG0 X{45 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{45 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; set flow to 100% end_gcode = {if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X241 Y170 F3600 ; park\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+23, max_print_height)} F300 ; Move print head up{endif}\nG4 ; wait\nM572 S0 ; reset PA\nM593 X T2 F0 ; disable IS\nM593 Y T2 F0 ; disable IS\nM84 X Y E ; disable motors\n; max_layer_z = [max_layer_z] before_layer_gcode = ;BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\nM201 X{interpolate_table(extruded_weight_total, (0,4000), (1400,2500), (10000,2500))} Y{interpolate_table(extruded_weight_total, (0,4000), (1400,2500), (10000,2500))}\n{if ! spiral_vase}M74 W[extruded_weight_total]{endif}\n default_print_profile = 0.20mm SPEED @MK4IS 0.4 @@ -22088,9 +21504,9 @@ retract_length = 0.7,0.7,0.7,0.7,0.7 wipe = 0,0,0,0,0 retract_before_wipe = 80,80,80,80,80 retract_speed = 35,35,35,35,35 -deretract_speed = 0,0,0,0,0 +deretract_speed = 25,25,25,25,25 retract_length_toolchange = 0,0,0,0,0 -start_gcode = M17 ; enable steppers\nM862.1 P0.4 ; nozzle diameter check\nM862.3 P "MK4" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P "Input shaper" ; FW feature check\nM862.6 P "MMU3" ; FW feature check\nM115 U5.1.0-BETA+13823\n\n; setup MMU\nM708 A0x0b X5 ; extra load distance\nM708 A0x0d X140 ; unload feeedrate\nM708 A0x11 X140 ; load feedrate\nM708 A0x14 X20 ; slow feedrate\nM708 A0x1e X12 ; Pulley current to ~200mA\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 R{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\nM84 E ; turn off E motor\n\nG28 ; home all without mesh bed level\n\nG1 X{10 + 32} Y-4 Z5 F4800\n\nM302 S160 ; lower cold extrusion limit to 160C\n\n{if filament_type[initial_tool]=="FLEX"}\nG1 E-4 F2400 ; retraction\n{else}\nG1 E-2 F2400 ; retraction\n{endif}\n\nM84 E ; turn off E motor\n\nG29 P9 X10 Y-4 W32 H4\n\n{if first_layer_bed_temperature[initial_tool]<=60}M106 S100{endif}\n\nG0 Z40 F10000\n\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nM107\n\n;\n; MBL\n;\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X0 Y0 W130 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[initial_tool]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[initial_tool]}\n\nG92 E0\nM569 S0 E ; set spreadcycle mode for extruder\n\nT[initial_tool]\nG1 E{parking_pos_retraction + extra_loading_move - 15} F1000 ; load to the nozzle\n\n;\n; Extrude purge line\n;\nG92 E0 ; reset extruder position\nG1 E{(filament_type[initial_tool] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X105 E36 F500 ; purge\nG0 X115 E4 F650 ; purge\nG0 X125 E4 F800 ; purge\nG0 X{125 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{125 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; set flow to 100% +start_gcode = M17 ; enable steppers\nM862.1 P0.4 ; nozzle diameter check\nM862.3 P "MK4" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P "Input shaper" ; FW feature check\nM862.6 P "MMU3" ; FW feature check\nM115 U6.0.1+14848\n\n; setup MMU\nM708 A0x0b X5 ; extra load distance\nM708 A0x0d X140 ; unload feeedrate\nM708 A0x11 X140 ; load feedrate\nM708 A0x14 X20 ; slow feedrate\nM708 A0x1e X12 ; Pulley current to ~200mA\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 R{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\nM84 E ; turn off E motor\n\nG28 ; home all without mesh bed level\n\nG1 X{10 + 32} Y-4 Z5 F4800\n\nM302 S160 ; lower cold extrusion limit to 160C\n\n{if filament_type[initial_tool]=="FLEX"}\nG1 E-4 F2400 ; retraction\n{else}\nG1 E-2 F2400 ; retraction\n{endif}\n\nM84 E ; turn off E motor\n\nG29 P9 X10 Y-4 W32 H4\n\n{if first_layer_bed_temperature[initial_tool]<=60}M106 S100{endif}\n\nG0 Z40 F10000\n\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nM107\n\n;\n; MBL\n;\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X0 Y0 W130 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[initial_tool]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[initial_tool]}\n\nG92 E0\nM569 S0 E ; set spreadcycle mode for extruder\n\nT[initial_tool]\nG1 E{parking_pos_retraction + extra_loading_move - 15} F1000 ; load to the nozzle\n\n;\n; Extrude purge line\n;\nG92 E0 ; reset extruder position\nG1 E{(filament_type[initial_tool] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X105 E36 F500 ; purge\nG0 X115 E4 F650 ; purge\nG0 X125 E4 F800 ; purge\nG0 X{125 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{125 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; set flow to 100% end_gcode = {if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X241 Y170 F3600 ; park\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+23, max_print_height)} F300 ; Move print head up{endif}\nM702 ; unload the current filament\nG4 ; wait\nM572 S0 ; reset PA\nM593 X T2 F0 ; disable IS\nM593 Y T2 F0 ; disable IS\nM84 X Y E ; disable motors\n; max_layer_z = [max_layer_z] before_layer_gcode = ;BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\nM201 X{interpolate_table(extruded_weight_total, (0,4000), (1400,2500), (10000,2500))} Y{interpolate_table(extruded_weight_total, (0,4000), (1400,2500), (10000,2500))}\n{if ! spiral_vase}M74 W[extruded_weight_total]{endif}\n default_print_profile = 0.20mm SPEED @MK4IS 0.4 @@ -22107,6 +21523,7 @@ retract_lift = 0.15 max_layer_height = 0.15 min_layer_height = 0.05 default_print_profile = 0.12mm STRUCTURAL @MK4IS 0.25 +machine_max_acceleration_travel = 2500,2500 [printer:Original Prusa MK4 Input Shaper 0.3 nozzle] inherits = Original Prusa MK4 Input Shaper 0.4 nozzle @@ -22165,22 +21582,23 @@ inherits = *commonMK4* printer_model = MK3.9 printer_variant = 0.4 max_layer_height = 0.30 +silent_mode = 1 machine_limits_usage = emit_to_gcode -machine_max_acceleration_e = 2500,5000 -machine_max_acceleration_extruding = 4000,2000 -machine_max_acceleration_retracting = 1200,2000 -machine_max_acceleration_travel = 4000,1250 -machine_max_acceleration_x = 4000,2000 -machine_max_acceleration_y = 4000,2000 -machine_max_acceleration_z = 200,2000 -machine_max_feedrate_e = 100,120 -machine_max_feedrate_x = 300,100 -machine_max_feedrate_y = 300,100 -machine_max_feedrate_z = 40,12 -machine_max_jerk_e = 10,1.5 +machine_max_acceleration_e = 2500,2500 +machine_max_acceleration_extruding = 4000,2500 +machine_max_acceleration_retracting = 1200,1200 +machine_max_acceleration_travel = 4000,2500 +machine_max_acceleration_x = 4000,2500 +machine_max_acceleration_y = 4000,2500 +machine_max_acceleration_z = 200,200 +machine_max_feedrate_e = 100,100 +machine_max_feedrate_x = 300,160 +machine_max_feedrate_y = 300,160 +machine_max_feedrate_z = 40,40 +machine_max_jerk_e = 10,10 machine_max_jerk_x = 8,8 machine_max_jerk_y = 8,8 -machine_max_jerk_z = 2,0.4 +machine_max_jerk_z = 2,2 machine_min_extruding_rate = 0,0 machine_min_travel_rate = 0,0 max_print_height = 220 @@ -22189,8 +21607,8 @@ retract_length = 0.7 wipe = 0 retract_before_wipe = 80 retract_speed = 35 -deretract_speed = 0 -start_gcode = M17 ; enable steppers\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM862.3 P "[printer_model]" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P"Input shaper" ; FW feature check\nM115 U5.1.2+13478\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\nM84 E ; turn off E motor\n\nG28 ; home all without mesh bed level\n\nG1 X{10 + 32} Y-4 Z5 F4800\n\nM302 S160 ; lower cold extrusion limit to 160C\n\n{if filament_type[initial_tool]=="FLEX"}\nG1 E-4 F2400 ; retraction\n{else}\nG1 E-2 F2400 ; retraction\n{endif}\n\nM84 E ; turn off E motor\n\nG29 P9 X10 Y-4 W32 H4\n\n{if first_layer_bed_temperature[initial_tool]<=60}M106 S100{endif}\n\nG0 Z40 F10000\n\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nM107\n\n;\n; MBL\n;\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X0 Y0 W130 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[0]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[0]}\n\nG92 E0\nM569 S0 E ; set spreadcycle mode for extruder\n\n;\n; Extrude purge line\n;\nG92 E0 ; reset extruder position\nG1 E{(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X25 E4 F500 ; purge\nG0 X35 E4 F650 ; purge\nG0 X45 E4 F800 ; purge\nG0 X{45 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{45 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; set flow to 100% +deretract_speed = 25 +start_gcode = M17 ; enable steppers\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM862.3 P "[printer_model]" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P"Input shaper" ; FW feature check\nM115 U6.0.1+14848\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\nM84 E ; turn off E motor\n\nG28 ; home all without mesh bed level\n\nG1 X{10 + 32} Y-4 Z5 F4800\n\nM302 S160 ; lower cold extrusion limit to 160C\n\n{if filament_type[initial_tool]=="FLEX"}\nG1 E-4 F2400 ; retraction\n{else}\nG1 E-2 F2400 ; retraction\n{endif}\n\nM84 E ; turn off E motor\n\nG29 P9 X10 Y-4 W32 H4\n\n{if first_layer_bed_temperature[initial_tool]<=60}M106 S100{endif}\n\nG0 Z40 F10000\n\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nM107\n\n;\n; MBL\n;\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X0 Y0 W130 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[0]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[0]}\n\nG92 E0\nM569 S0 E ; set spreadcycle mode for extruder\n\n;\n; Extrude purge line\n;\nG92 E0 ; reset extruder position\nG1 E{(filament_type[0] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X25 E4 F500 ; purge\nG0 X35 E4 F650 ; purge\nG0 X45 E4 F800 ; purge\nG0 X{45 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{45 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; set flow to 100% end_gcode = {if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X241 Y170 F3600 ; park\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+23, max_print_height)} F300 ; Move print head up{endif}\nG4 ; wait\nM572 S0 ; reset PA\nM593 X T2 F0 ; disable IS\nM593 Y T2 F0 ; disable IS\nM84 X Y E ; disable motors\n; max_layer_z = [max_layer_z] before_layer_gcode = ;BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\nM201 X{interpolate_table(extruded_weight_total, (0,4000), (1400,2500), (10000,2500))} Y{interpolate_table(extruded_weight_total, (0,4000), (1400,2500), (10000,2500))}\n{if ! spiral_vase}M74 W[extruded_weight_total]{endif}\n default_print_profile = 0.20mm SPEED @MK4IS 0.4 @@ -22202,7 +21620,7 @@ printer_model = MK3.9MMU3 multimaterial_purging = 80 printer_variant = 0.4 printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile. \n\nPRINTER_MODEL_MK3.9\nPRINTER_MODEL_MK4IS\nPRINTER_MODEL_MK3.9MMU3\nPG -start_gcode = M17 ; enable steppers\nM862.1 P0.4 ; nozzle diameter check\nM862.3 P "MK3.9" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P "Input shaper" ; FW feature check\nM862.6 P "MMU3" ; FW feature check\nM115 U5.1.0-BETA+13823\n\n; setup MMU\nM708 A0x0b X5 ; extra load distance\nM708 A0x0d X140 ; unload feeedrate\nM708 A0x11 X140 ; load feedrate\nM708 A0x14 X20 ; slow feedrate\nM708 A0x1e X12 ; Pulley current to ~200mA\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 R{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\nM84 E ; turn off E motor\n\nG28 ; home all without mesh bed level\n\nG1 X{10 + 32} Y-4 Z5 F4800\n\nM302 S160 ; lower cold extrusion limit to 160C\n\n{if filament_type[initial_tool]=="FLEX"}\nG1 E-4 F2400 ; retraction\n{else}\nG1 E-2 F2400 ; retraction\n{endif}\n\nM84 E ; turn off E motor\n\nG29 P9 X10 Y-4 W32 H4\n\n{if first_layer_bed_temperature[initial_tool]<=60}M106 S100{endif}\n\nG0 Z40 F10000\n\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nM107\n\n;\n; MBL\n;\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X0 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[initial_tool]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[initial_tool]}\n\nG92 E0\nM569 S0 E ; set spreadcycle mode for extruder\n\nT[initial_tool]\nG1 E{parking_pos_retraction + extra_loading_move - 15} F1000 ; load to the nozzle\n\n;\n; Extrude purge line\n;\nG92 E0 ; reset extruder position\nG1 E{(filament_type[initial_tool] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X105 E36 F500 ; purge\nG0 X115 E4 F650 ; purge\nG0 X125 E4 F800 ; purge\nG0 X{125 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{125 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; set flow to 100% +start_gcode = M17 ; enable steppers\nM862.1 P0.4 ; nozzle diameter check\nM862.3 P "MK3.9" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P "Input shaper" ; FW feature check\nM862.6 P "MMU3" ; FW feature check\nM115 U6.0.1+14848\n\n; setup MMU\nM708 A0x0b X5 ; extra load distance\nM708 A0x0d X140 ; unload feeedrate\nM708 A0x11 X140 ; load feedrate\nM708 A0x14 X20 ; slow feedrate\nM708 A0x1e X12 ; Pulley current to ~200mA\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 R{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\nM84 E ; turn off E motor\n\nG28 ; home all without mesh bed level\n\nG1 X{10 + 32} Y-4 Z5 F4800\n\nM302 S160 ; lower cold extrusion limit to 160C\n\n{if filament_type[initial_tool]=="FLEX"}\nG1 E-4 F2400 ; retraction\n{else}\nG1 E-2 F2400 ; retraction\n{endif}\n\nM84 E ; turn off E motor\n\nG29 P9 X10 Y-4 W32 H4\n\n{if first_layer_bed_temperature[initial_tool]<=60}M106 S100{endif}\n\nG0 Z40 F10000\n\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nM107\n\n;\n; MBL\n;\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X0 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[initial_tool]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[initial_tool]}\n\nG92 E0\nM569 S0 E ; set spreadcycle mode for extruder\n\nT[initial_tool]\nG1 E{parking_pos_retraction + extra_loading_move - 15} F1000 ; load to the nozzle\n\n;\n; Extrude purge line\n;\nG92 E0 ; reset extruder position\nG1 E{(filament_type[initial_tool] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X105 E36 F500 ; purge\nG0 X115 E4 F650 ; purge\nG0 X125 E4 F800 ; purge\nG0 X{125 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{125 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; set flow to 100% [printer:Original Prusa MK3.9 0.25 nozzle] inherits = Original Prusa MK3.9 0.4 nozzle @@ -22213,6 +21631,7 @@ retract_lift = 0.15 max_layer_height = 0.15 min_layer_height = 0.05 default_print_profile = 0.12mm STRUCTURAL @MK4IS 0.25 +machine_max_acceleration_travel = 2500,2500 [printer:Original Prusa MK3.9 0.3 nozzle] inherits = Original Prusa MK3.9 0.4 nozzle @@ -22269,21 +21688,22 @@ max_layer_height = 0.30 max_print_height = 210 retract_lift_below = 209 machine_limits_usage = emit_to_gcode -machine_max_acceleration_e = 2500,5000 -machine_max_acceleration_extruding = 4000,4000 +silent_mode = 1 +machine_max_acceleration_e = 2500,2500 +machine_max_acceleration_extruding = 4000,2500 machine_max_acceleration_retracting = 1250,1250 -machine_max_acceleration_travel = 4000,4000 -machine_max_acceleration_x = 4000,4000 -machine_max_acceleration_y = 4000,4000 +machine_max_acceleration_travel = 4000,2500 +machine_max_acceleration_x = 4000,2500 +machine_max_acceleration_y = 4000,2500 machine_max_acceleration_z = 200,200 machine_max_feedrate_e = 120,120 -machine_max_feedrate_x = 300,300 -machine_max_feedrate_y = 300,300 +machine_max_feedrate_x = 300,160 +machine_max_feedrate_y = 300,160 machine_max_feedrate_z = 12,12 machine_max_jerk_e = 5,5 machine_max_jerk_x = 8,8 machine_max_jerk_y = 8,8 -machine_max_jerk_z = 2,0.4 +machine_max_jerk_z = 2,2 machine_min_extruding_rate = 0,0 machine_min_travel_rate = 0,0 printer_notes = Don't remove the following keywords. \nPRINTER_MODEL_MK3.5\n @@ -22292,7 +21712,7 @@ wipe = 1 retract_before_wipe = 0 retract_speed = 35 deretract_speed = 0 -start_gcode = M17 ; enable steppers\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM862.3 P "MK3.5" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P"Input shaper" ; FW feature check\nM115 U5.2.1+13903\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S170 ; set extruder temp for bed leveling\nM109 T0 R170 ; wait for temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nG28 ; home all\n\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X23 Y5 W80 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[0]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[0]}\n\n; Extrude purge line\n\nG92 E0 ; reset extruder position\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X25 E4 F500 ; purge\nG0 X35 E4 F650 ; purge\nG0 X45 E4 F800 ; purge\nG0 X{45 + 3} Z0.05 F8000 ; wipe, move close to the bed\nG0 X{45 + 3 * 2} Z0.2 F8000 ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; reset flow to 100%\n +start_gcode = M17 ; enable steppers\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM862.3 P "MK3.5" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P"Input shaper" ; FW feature check\nM115 U6.0.1+14848\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S170 ; set extruder temp for bed leveling\nM109 T0 R170 ; wait for temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nG28 ; home all\n\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X23 Y5 W80 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[0]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[0]}\n\n; Extrude purge line\n\nG92 E0 ; reset extruder position\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X25 E4 F500 ; purge\nG0 X35 E4 F650 ; purge\nG0 X45 E4 F800 ; purge\nG0 X{45 + 3} Z0.05 F8000 ; wipe, move close to the bed\nG0 X{45 + 3 * 2} Z0.2 F8000 ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; reset flow to 100%\n end_gcode = {if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X241 Y201 F3600 ; park\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+23, max_print_height)} F300 ; Move print head up{endif}\nG4 ; wait\nM572 S0 ; reset PA\nM593 X T2 F0 ; disable IS\nM593 Y T2 F0 ; disable IS\nM84 X Y E ; disable motors\n; max_layer_z = [max_layer_z] before_layer_gcode = ;BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\nM201 X{interpolate_table(extruded_weight_total, (0,4000), (1400,2500), (10000,2500))} Y{interpolate_table(extruded_weight_total, (0,4000), (1400,2500), (10000,2500))}\n{if ! spiral_vase}M74 W[extruded_weight_total]{endif}\n default_print_profile = 0.20mm SPEED @MK3.5 0.4 @@ -22308,6 +21728,7 @@ retract_lift = 0.15 max_layer_height = 0.15 min_layer_height = 0.05 default_print_profile = 0.12mm STRUCTURAL @MK3.5 0.25 +machine_max_acceleration_travel = 2500,2500 [printer:Original Prusa MK3.5 0.3 nozzle] inherits = Original Prusa MK3.5 0.4 nozzle @@ -22379,7 +21800,7 @@ retract_before_wipe = 0,0,0,0,0 retract_speed = 35,35,35,35,35 deretract_speed = 0,0,0,0,0 printer_notes = Don't remove the following keywords. \nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK3.5MMU\n -start_gcode = M17 ; enable steppers\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM862.3 P "MK3.5" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P"Input shaper" ; FW feature check\nM862.6 P "MMU3" ; FW feature check\nM115 U5.2.1+13903\n; setup MMU\nM708 A0x1e X12 ; Pulley current to ~200mA\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S{first_layer_bed_temperature[initial_tool]} ; set bed temp\nM104 S170 ; set extruder temp for bed leveling\nM109 R170 ; wait for temp\nM190 S{first_layer_bed_temperature[initial_tool]} ; wait for bed temp\n\n\nG28 ; home all\n\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X23 Y5 W160 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[initial_tool]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[initial_tool]}\n\nT[initial_tool]\nG1 E{parking_pos_retraction + extra_loading_move} F1000 ; load to the nozzle\n\n; Extrude purge line\n\nG92 E0 ; reset extruder position\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X105 E36 F500 ; purge\nG0 X115 E4 F650 ; purge\nG0 X125 E4 F800 ; purge\nG0 X{125 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{125 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; reset flow to 100%\n +start_gcode = M17 ; enable steppers\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM862.3 P "MK3.5" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P"Input shaper" ; FW feature check\nM862.6 P "MMU3" ; FW feature check\nM115 U6.0.1+14848\n; setup MMU\nM708 A0x1e X12 ; Pulley current to ~200mA\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S{first_layer_bed_temperature[initial_tool]} ; set bed temp\nM104 S170 ; set extruder temp for bed leveling\nM109 R170 ; wait for temp\nM190 S{first_layer_bed_temperature[initial_tool]} ; wait for bed temp\n\n\nG28 ; home all\n\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X23 Y5 W160 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[initial_tool]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[initial_tool]}\n\nT[initial_tool]\nG1 E{parking_pos_retraction + extra_loading_move} F1000 ; load to the nozzle\n\n; Extrude purge line\n\nG92 E0 ; reset extruder position\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X105 E36 F500 ; purge\nG0 X115 E4 F650 ; purge\nG0 X125 E4 F800 ; purge\nG0 X{125 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{125 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; reset flow to 100%\n end_gcode = {if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nG1 X241 Y201 F7200 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+49, max_print_height)} F720 ; Move print head further up{endif}\n{if has_wipe_tower}\nG1 E-15 F3000\n{else}\nG1 E2 F5000\nG1 E2 F5500\nG1 E2 F6000\nG1 E-15 F5800\nG1 E-20 F5500\nG1 E10 F3000\nG1 E-10 F3100\nG1 E10 F3150\nG1 E-10 F3250\nG1 E10 F3300\n{endif}\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n\n; Unload filament\nM702\n\nG4 ; wait\nM221 S100 ; reset flow\nM572 S0 ; reset LA\nM104 S0 ; turn off temperature\nM84 ; disable motors\n; max_layer_z = [max_layer_z] before_layer_gcode = ;BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\nM201 X{interpolate_table(extruded_weight_total, (0,4000), (1400,2500), (10000,2500))} Y{interpolate_table(extruded_weight_total, (0,4000), (1400,2500), (10000,2500))}\n{if ! spiral_vase}M74 W[extruded_weight_total]{endif}\n default_print_profile = 0.20mm SPEED @MK3.5 0.4 @@ -22452,7 +21873,6 @@ min_initial_exposure_time = 1 max_initial_exposure_time = 300 printer_correction = 1,1,1 relative_correction = 1,1 -area_fill = 45 # The obsolete presets will be removed when upgrading from the legacy configuration structure (up to Slic3r 1.39.2) to 1.40.0 and newer. [obsolete_presets] diff --git a/src/imgui/imconfig.h b/src/imgui/imconfig.h index 172db0ec95..0ca4e8fbf7 100644 --- a/src/imgui/imconfig.h +++ b/src/imgui/imconfig.h @@ -153,8 +153,8 @@ namespace ImGui const wchar_t PlugMarker = 0x1C; const wchar_t DowelMarker = 0x1D; const wchar_t SnapMarker = 0x1E; - const wchar_t HorizontalHide = 0xB1; - const wchar_t HorizontalShow = 0xB2; + const wchar_t HorizontalHide = 0xB4; + const wchar_t HorizontalShow = 0xB6; // Do not forget use following letters only in wstring const wchar_t DocumentationButton = 0x2600; const wchar_t DocumentationHoverButton = 0x2601; diff --git a/src/libslic3r/Config.cpp b/src/libslic3r/Config.cpp index 1ad7e44c72..e26a599971 100644 --- a/src/libslic3r/Config.cpp +++ b/src/libslic3r/Config.cpp @@ -294,6 +294,7 @@ ConfigOption* ConfigOptionDef::create_empty_option() const case coBool: return new ConfigOptionBool(); case coBools: return new ConfigOptionBools(); case coEnum: return new ConfigOptionEnumGeneric(this->enum_def->m_enum_keys_map); + case coEnums: return new ConfigOptionEnumsGeneric(this->enum_def->m_enum_keys_map); default: throw ConfigurationError(std::string("Unknown option type for option ") + this->label); } } @@ -304,7 +305,10 @@ ConfigOption* ConfigOptionDef::create_default_option() const if (this->default_value) return (this->default_value->type() == coEnum) ? // Special case: For a DynamicConfig, convert a templated enum to a generic enum. - new ConfigOptionEnumGeneric(this->enum_def->m_enum_keys_map, this->default_value->getInt()) : + new ConfigOptionEnumGeneric(this->enum_def->m_enum_keys_map, this->default_value->getInt()) : + (this->default_value->type() == coEnums) ? + // Special case: For a DynamicConfig, convert a templated enums to a generic enums. + new ConfigOptionEnumsGeneric(this->enum_def->m_enum_keys_map, this->default_value->getInts()) : this->default_value->clone(); return this->create_empty_option(); } @@ -333,7 +337,7 @@ void ConfigDef::finalize() // Validate & finalize open & closed enums. for (std::pair &kvp : options) { ConfigOptionDef& def = kvp.second; - if (def.type == coEnum) { + if (def.type == coEnum || def.type == coEnums) { assert(def.enum_def); assert(def.enum_def->is_valid_closed_enum()); assert(! def.is_gui_type_enum_open()); @@ -1467,6 +1471,7 @@ CEREAL_REGISTER_TYPE(Slic3r::ConfigOptionBool) CEREAL_REGISTER_TYPE(Slic3r::ConfigOptionBools) CEREAL_REGISTER_TYPE(Slic3r::ConfigOptionBoolsNullable) CEREAL_REGISTER_TYPE(Slic3r::ConfigOptionEnumGeneric) +CEREAL_REGISTER_TYPE(Slic3r::ConfigOptionEnumsGeneric) CEREAL_REGISTER_TYPE(Slic3r::ConfigBase) CEREAL_REGISTER_TYPE(Slic3r::DynamicConfig) @@ -1508,4 +1513,5 @@ CEREAL_REGISTER_POLYMORPHIC_RELATION(Slic3r::ConfigOptionSingle, Slic3r::C CEREAL_REGISTER_POLYMORPHIC_RELATION(Slic3r::ConfigOptionVector, Slic3r::ConfigOptionBools) CEREAL_REGISTER_POLYMORPHIC_RELATION(Slic3r::ConfigOptionVector, Slic3r::ConfigOptionBoolsNullable) CEREAL_REGISTER_POLYMORPHIC_RELATION(Slic3r::ConfigOptionInt, Slic3r::ConfigOptionEnumGeneric) +CEREAL_REGISTER_POLYMORPHIC_RELATION(Slic3r::ConfigOptionInts, Slic3r::ConfigOptionEnumsGeneric) CEREAL_REGISTER_POLYMORPHIC_RELATION(Slic3r::ConfigBase, Slic3r::DynamicConfig) diff --git a/src/libslic3r/Config.hpp b/src/libslic3r/Config.hpp index 46126a621c..7f922481e2 100644 --- a/src/libslic3r/Config.hpp +++ b/src/libslic3r/Config.hpp @@ -214,6 +214,8 @@ enum ConfigOptionType { coBools = coBool + coVectorType, // a generic enum coEnum = 9, + // vector of enum values + coEnums = coEnum + coVectorType, }; enum ConfigOptionMode { @@ -290,6 +292,7 @@ public: // Set a value from a ConfigOption. The two options should be compatible. virtual void set(const ConfigOption *option) = 0; virtual int getInt() const { throw BadOptionTypeException("Calling ConfigOption::getInt on a non-int ConfigOption"); } + virtual std::vector getInts() const { throw BadOptionTypeException("Calling ConfigOption::getInts on a non-ints ConfigOption"); } virtual double getFloat() const { throw BadOptionTypeException("Calling ConfigOption::getFloat on a non-float ConfigOption"); } virtual bool getBool() const { throw BadOptionTypeException("Calling ConfigOption::getBool on a non-boolean ConfigOption"); } virtual void setInt(int /* val */) { throw BadOptionTypeException("Calling ConfigOption::setInt on a non-int ConfigOption"); } @@ -1741,6 +1744,113 @@ public: } }; +template +class ConfigOptionEnums : public ConfigOptionVector +{ +public: + // by default, use the first value (0) of the T enum type + ConfigOptionEnums() : ConfigOptionVector() {} + explicit ConfigOptionEnums(size_t n, const T& value) : ConfigOptionVector(n, value) {} + explicit ConfigOptionEnums(std::initializer_list il) : ConfigOptionVector(std::move(il)) {} + explicit ConfigOptionEnums(const std::vector& values) : ConfigOptionVector(values) {} + + static ConfigOptionType static_type() { return coEnums; } + ConfigOptionType type() const override { return static_type(); } + ConfigOption* clone() const override { return new ConfigOptionEnums(*this); } + ConfigOptionEnums& operator=(const ConfigOption *opt) { this->set(opt); return *this; } + bool operator==(const ConfigOptionEnums &rhs) const throw() { return this->values == rhs.values; } + bool operator< (const ConfigOptionEnums &rhs) const throw() { return this->values < rhs.values; } + bool is_nil(size_t) const override { return false; } + + std::vector getInts() const override { + std::vector ret; + ret.reserve(this->values.size()); + for (const auto& v : this->values) + ret.push_back(int(v)); + return ret; + } + + bool operator==(const ConfigOption& rhs) const override + { + if (rhs.type() != this->type()) + throw ConfigurationError("ConfigOptionEnums: Comparing incompatible types"); + // rhs could be of the following type: ConfigOptionEnumsGeneric or ConfigOptionEnums + return this->getInts() == rhs.getInts(); + } + + void set(const ConfigOption* rhs) override { + if (rhs->type() != this->type()) + throw ConfigurationError("ConfigOptionEnums: Assigning an incompatible type"); + // rhs could be of the following type: ConfigOptionEnumGeneric or ConfigOptionEnum + std::vector ret; + std::vector rhs_vals = rhs->getInts(); + ret.reserve(rhs_vals.size()); + for (const int& v : rhs_vals) + ret.push_back(T(v)); + this->values = ret; + } + + std::string serialize() const override + { + const t_config_enum_names& names = ConfigOptionEnum::get_enum_names(); + std::ostringstream ss; + for (const T& v : this->values) { + assert(static_cast(v) < int(names.size())); + if (&v != &this->values.front()) + ss << "," << names[static_cast(v)]; + } + return ss.str(); + } + + std::vector vserialize() const override + { + std::vector vv; + vv.reserve(this->values.size()); + for (const T v : this->values) { + std::ostringstream ss; + serialize_single_value(ss, int(v)); + vv.push_back(ss.str()); + } + return vv; + } + + bool deserialize(const std::string& str, bool append = false) override + { + if (!append) + this->values.clear(); + std::istringstream is(str); + std::string item_str; + while (std::getline(is, item_str, ',')) { + boost::trim(item_str); + if (item_str == "nil") { + throw ConfigurationError("Deserializing nil into a non-nullable object"); + } + else { + std::istringstream iss(item_str); + int value; + iss >> value; + this->values.push_back(static_cast(value)); + } + } + return true; + } + + static bool from_string(const std::string &str, T &value) + { + const t_config_enum_values &enum_keys_map = ConfigOptionEnum::get_enum_values(); + auto it = enum_keys_map.find(str); + if (it == enum_keys_map.end()) + return false; + value = static_cast(it->second); + return true; + } + +private: + void serialize_single_value(std::ostringstream& ss, const int v) const { + ss << v; + } +}; + // Generic enum configuration value. // We use this one in DynamicConfig objects when creating a config value object for ConfigOptionType == coEnum. // In the StaticConfig, it is better to use the specialized ConfigOptionEnum containers. @@ -1797,6 +1907,132 @@ private: template void serialize(Archive& ar) { ar(cereal::base_class(this)); } }; +template +class ConfigOptionEnumsGenericTempl : public ConfigOptionIntsTempl +{ +public: + ConfigOptionEnumsGenericTempl(const t_config_enum_values* keys_map = nullptr) : keys_map(keys_map) {} + explicit ConfigOptionEnumsGenericTempl(const t_config_enum_values* keys_map, std::vector values) : keys_map(keys_map) { this->values = values; } + + const t_config_enum_values* keys_map; + + ConfigOptionEnumsGenericTempl() : ConfigOptionIntsTempl() {} + explicit ConfigOptionEnumsGenericTempl(size_t n, int value) : ConfigOptionIntsTempl(n, value) {} + explicit ConfigOptionEnumsGenericTempl(std::initializer_list il) : ConfigOptionIntsTempl(std::move(il)) {} + explicit ConfigOptionEnumsGenericTempl(const std::vector& v) : ConfigOptionIntsTempl(v) {} + explicit ConfigOptionEnumsGenericTempl(std::vector&& v) : ConfigOptionIntsTempl(std::move(v)) {} + + static ConfigOptionType static_type() { return coEnums; } + ConfigOptionType type() const override { return static_type(); } + ConfigOption* clone() const override { return new ConfigOptionEnumsGenericTempl(*this); } + ConfigOptionEnumsGenericTempl& operator= (const ConfigOption* opt) { this->set(opt); return *this; } + bool operator==(const ConfigOptionEnumsGenericTempl& rhs) const throw() { return this->values == rhs.values; } + bool operator< (const ConfigOptionEnumsGenericTempl& rhs) const throw() { return this->values < rhs.values; } + std::vector getInts() const override { return this->values; } + + bool operator==(const ConfigOption& rhs) const override + { + if (rhs.type() != this->type()) + throw ConfigurationError("ConfigOptionEnumsGeneric: Comparing incompatible types"); + // rhs could be of the following type: ConfigOptionEnumsGeneric or ConfigOptionEnums + return this->values == rhs.getInts(); + } + + void set(const ConfigOption* rhs) override { + if (rhs->type() != this->type()) + throw ConfigurationError("ConfigOptionEnumsGeneric: Assigning an incompatible type"); + // rhs could be of the following type: ConfigOptionEnumsGeneric or ConfigOptionEnums + this->values = rhs->getInts(); + } + + // Could a special "nil" value be stored inside the vector, indicating undefined value? + bool nullable() const override { return NULLABLE; } + // Special "nil" value to be stored into the vector if this->supports_nil(). + static int nil_value() { return std::numeric_limits::max(); } + // A scalar is nil, or all values of a vector are nil. + bool is_nil() const override { for (auto v : this->values) if (v != nil_value()) return false; return true; } + bool is_nil(size_t idx) const override { return this->values[idx < this->values.size() ? idx : 0] == nil_value(); } + + int& get_at(size_t i) { + assert(!this->values.empty()); + return *reinterpret_cast(&((i < this->values.size()) ? this->values[i] : this->values.front())); + } + + int get_at(size_t i) const { return i < this->values.size() ? this->values[i] : this->values.front(); } + + std::string serialize() const override + { + std::ostringstream ss; + for (const int& v : this->values) { + if (&v != &this->values.front()) + ss << ","; + serialize_single_value(ss, v); + } + return ss.str(); + } + + std::vector vserialize() const override + { + std::vector vv; + vv.reserve(this->values.size()); + for (const int v : this->values) { + std::ostringstream ss; + serialize_single_value(ss, v); + vv.push_back(ss.str()); + } + return vv; + } + + bool deserialize(const std::string& str, bool append = false) override + { + if (!append) + this->values.clear(); + std::istringstream is(str); + std::string item_str; + while (std::getline(is, item_str, ',')) { + boost::trim(item_str); + if (item_str == "nil") { + if (NULLABLE) + this->values.push_back(nil_value()); + else + throw ConfigurationError("Deserializing nil into a non-nullable object"); + } + else { + auto it = this->keys_map->find(item_str); + if (it == this->keys_map->end()) + return false; + this->values.push_back(it->second); + } + } + return true; + } + +private: + void serialize_single_value(std::ostringstream& ss, const int v) const { + if (v == nil_value()) { + if (NULLABLE) + ss << "nil"; + else + throw ConfigurationError("Serializing NaN"); + } + else { + for (const auto& kvp : *this->keys_map) + if (kvp.second == v) { + ss << kvp.first; + return; + } + ss << std::string(); + } + } + + friend class cereal::access; + template void serialize(Archive& ar) { ar(cereal::base_class>(this)); } +}; + +using ConfigOptionEnumsGeneric = ConfigOptionEnumsGenericTempl; +using ConfigOptionEnumsGenericNullable = ConfigOptionEnumsGenericTempl; + + // Definition of values / labels for a combo box. // Mostly used for closed enums (when type == coEnum), but may be used for // open enums with ints resp. floats, if gui_type is set to GUIType::i_enum_open" resp. GUIType::f_enum_open. @@ -2043,6 +2279,7 @@ public: case coBool: { auto opt = new ConfigOptionBool(); archive(*opt); return opt; } case coBools: { auto opt = new ConfigOptionBools(); archive(*opt); return opt; } case coEnum: { auto opt = new ConfigOptionEnumGeneric(this->enum_def->m_enum_keys_map); archive(*opt); return opt; } + case coEnums: { auto opt = new ConfigOptionEnumsGeneric(this->enum_def->m_enum_keys_map); archive(*opt); return opt; } default: throw ConfigurationError(std::string("ConfigOptionDef::load_option_from_archive(): Unknown option type for option ") + this->opt_key); } } @@ -2077,6 +2314,7 @@ public: case coBool: archive(*static_cast(opt)); break; case coBools: archive(*static_cast(opt)); break; case coEnum: archive(*static_cast(opt)); break; + case coEnums: archive(*static_cast(opt)); break; default: throw ConfigurationError(std::string("ConfigOptionDef::save_option_to_archive(): Unknown option type for option ") + this->opt_key); } } @@ -2484,6 +2722,8 @@ public: // Thus the virtual method getInt() is used to retrieve the enum value. template ENUM opt_enum(const t_config_option_key &opt_key) const { return static_cast(this->option(opt_key)->getInt()); } + template + ENUM opt_enum(const t_config_option_key &opt_key, unsigned int idx) const { return dynamic_cast*>(this->option(opt_key))->get_at(idx);} bool opt_bool(const t_config_option_key &opt_key) const { return this->option(opt_key)->value != 0; } bool opt_bool(const t_config_option_key &opt_key, unsigned int idx) const { return this->option(opt_key)->get_at(idx) != 0; } diff --git a/src/libslic3r/Format/SL1.cpp b/src/libslic3r/Format/SL1.cpp index f298cdf395..2150dcca93 100644 --- a/src/libslic3r/Format/SL1.cpp +++ b/src/libslic3r/Format/SL1.cpp @@ -19,6 +19,7 @@ #include "libslic3r/miniz_extension.hpp" #include "libslic3r/LocalesUtils.hpp" #include "libslic3r/GCode/ThumbnailData.hpp" +#include "libslic3r/Utils/JsonUtils.hpp" #include "SLAArchiveReader.hpp" #include "SLAArchiveFormatRegistry.hpp" @@ -33,6 +34,7 @@ #include +#include #include #include @@ -51,6 +53,110 @@ std::string to_ini(const ConfMap &m) return ret; } +static std::string get_key(const std::string& opt_key) +{ + static const std::set ms_opts = { + "delay_before_exposure" + , "delay_after_exposure" + , "tilt_down_offset_delay" + , "tilt_up_offset_delay" + , "tilt_down_delay" + , "tilt_up_delay" + }; + + static const std::set nm_opts = { + "tower_hop_height" + }; + + static const std::set speed_opts = { + "tower_speed" + , "tilt_down_initial_speed" + , "tilt_down_finish_speed" + , "tilt_up_initial_speed" + , "tilt_up_finish_speed" + }; + + if (ms_opts.find(opt_key) != ms_opts.end()) + return opt_key + "_ms"; + + if (nm_opts.find(opt_key) != nm_opts.end()) + return opt_key + "_nm"; + + if (speed_opts.find(opt_key) != speed_opts.end()) + return boost::replace_all_copy(opt_key, "_speed", "_profile"); + + return opt_key; +} + +namespace pt = boost::property_tree; + +std::string to_json(const SLAPrint& print, const ConfMap &m) +{ + auto& cfg = print.full_print_config(); + + pt::ptree below_node; + pt::ptree above_node; + + const t_config_enum_names& tilt_enum_names = ConfigOptionEnum< TiltSpeeds>::get_enum_names(); + const t_config_enum_names& tower_enum_names = ConfigOptionEnum::get_enum_names(); + + for (const std::string& opt_key : tilt_options()) { + const ConfigOption* opt = cfg.option(opt_key); + assert(opt != nullptr); + + switch (opt->type()) { + case coFloats: { + auto values = static_cast(opt); + // those options have to be exported in ms instead of s + below_node.put(get_key(opt_key), int(1000 * values->get_at(0))); + above_node.put(get_key(opt_key), int(1000 * values->get_at(1))); + } + break; + case coInts: { + auto values = static_cast(opt); + int koef = opt_key == "tower_hop_height" ? 1000000 : 1; + below_node.put(get_key(opt_key), koef * values->get_at(0)); + above_node.put(get_key(opt_key), koef * values->get_at(1)); + } + break; + case coBools: { + auto values = static_cast(opt); + below_node.put(get_key(opt_key), values->get_at(0)); + above_node.put(get_key(opt_key), values->get_at(1)); + } + break; + case coEnums: { + const t_config_enum_names& enum_names = opt_key == "tower_speed" ? tower_enum_names : tilt_enum_names; + auto values = static_cast*>(opt); + below_node.put(get_key(opt_key), enum_names[values->get_at(0)]); + above_node.put(get_key(opt_key), enum_names[values->get_at(1)]); + } + break; + case coNone: + default: + break; + } + } + + pt::ptree profile_node; + profile_node.put("area_fill", cfg.option("area_fill")->serialize()); + profile_node.add_child("below_area_fill", below_node); + profile_node.add_child("above_area_fill", above_node); + + pt::ptree root; + // params from config.ini + for (auto& param : m) + root.put(param.first, param.second ); + + root.put("version", "1"); + root.add_child("exposure_profile", profile_node); + + // Boost confirms its implementation has no 100% conformance to JSON standard. + // In the boost libraries, boost will always serialize each value as string and parse all values to a string equivalent. + // so, post-prosess output + return write_json_with_post_process(root); +} + std::string get_cfg_value(const DynamicPrintConfig &cfg, const std::string &key) { std::string ret; @@ -123,10 +229,15 @@ void fill_slicerconf(ConfMap &m, const SLAPrint &print) auto is_banned = [](const std::string &key) { return std::binary_search(banned_keys.begin(), banned_keys.end(), key); }; + + auto is_tilt_param = [](const std::string& key) -> bool { + const auto& keys = tilt_options(); + return std::find(keys.begin(), keys.end(), key) != keys.end(); + }; auto &cfg = print.full_print_config(); for (const std::string &key : cfg.keys()) - if (! is_banned(key) && ! cfg.option(key)->is_nil()) + if (! is_banned(key) && !is_tilt_param(key) && ! cfg.option(key)->is_nil()) m[key] = cfg.opt_serialize(key); } @@ -212,6 +323,9 @@ void SL1Archive::export_print(Zipper &zipper, zipper.add_entry("prusaslicer.ini"); zipper << to_ini(slicerconf); + zipper.add_entry("config.json"); + zipper << to_json(print, iniconf); + size_t i = 0; for (const sla::EncodedRaster &rst : m_layers) { diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 27612f5281..ea1024101b 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -606,6 +607,7 @@ static std::vector s_Preset_sla_material_options { "material_notes", "material_vendor", "material_print_speed", + "area_fill", "default_sla_material_profile", "compatible_prints", "compatible_prints_condition", "compatible_printers", "compatible_printers_condition", "inherits", @@ -622,20 +624,40 @@ static std::vector s_Preset_sla_material_options { "material_ow_branchingsupport_pillar_diameter", "material_ow_support_points_density_relative", - - "material_ow_relative_correction_x", - "material_ow_relative_correction_y", - "material_ow_relative_correction_z", + "material_ow_absolute_correction", "material_ow_elefant_foot_compensation" }; +static std::vector s_Preset_sla_tilt_options{ + "delay_before_exposure" + ,"delay_after_exposure" + ,"tower_hop_height" + ,"tower_speed" + ,"use_tilt" + ,"tilt_down_initial_speed" + ,"tilt_down_offset_steps" + ,"tilt_down_offset_delay" + ,"tilt_down_finish_speed" + ,"tilt_down_cycles" + ,"tilt_down_delay" + ,"tilt_up_initial_speed" + ,"tilt_up_offset_steps" + ,"tilt_up_offset_delay" + ,"tilt_up_finish_speed" + ,"tilt_up_cycles" + ,"tilt_up_delay" +}; +const std::vector& tilt_options() { return s_Preset_sla_tilt_options; } + +static std::vector s_Preset_sla_material_options_all = boost::copy_range>(boost::join(s_Preset_sla_material_options, s_Preset_sla_tilt_options)); + static std::vector s_Preset_sla_printer_options { "printer_technology", "bed_shape", "bed_custom_texture", "bed_custom_model", "max_print_height", "display_width", "display_height", "display_pixels_x", "display_pixels_y", "display_mirror_x", "display_mirror_y", "display_orientation", - "fast_tilt_time", "slow_tilt_time", "high_viscosity_tilt_time", "area_fill", + "fast_tilt_time", "slow_tilt_time", "high_viscosity_tilt_time", //"area_fill", "relative_correction", "relative_correction_x", "relative_correction_y", @@ -659,7 +681,7 @@ const std::vector& Preset::machine_limits_options() { return s_Pres // of the nozzle_diameter vector. const std::vector& Preset::nozzle_options() { return print_config_def.extruder_option_keys(); } const std::vector& Preset::sla_print_options() { return s_Preset_sla_print_options; } -const std::vector& Preset::sla_material_options() { return s_Preset_sla_material_options; } +const std::vector& Preset::sla_material_options() { return s_Preset_sla_material_options_all; } const std::vector& Preset::sla_printer_options() { return s_Preset_sla_printer_options; } const std::vector& Preset::printer_options() @@ -1378,6 +1400,7 @@ inline t_config_option_keys deep_diff(const ConfigBase &config_this, const Confi case coPercents:add_correct_opts_to_diff(opt_key, diff, config_other, config_this); break; case coPoints: add_correct_opts_to_diff(opt_key, diff, config_other, config_this); break; case coFloatsOrPercents: add_correct_opts_to_diff(opt_key, diff, config_other, config_this); break; + case coEnums: add_correct_opts_to_diff(opt_key, diff, config_other, config_this); break; default: diff.emplace_back(opt_key); break; } // "nozzle_diameter" is a vector option which contain info about diameter for each nozzle diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 069b4fbd4e..22a3101b75 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -257,6 +257,7 @@ static t_config_enum_values s_keys_map_PerimeterGeneratorType { }; CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(PerimeterGeneratorType) + static t_config_enum_values s_keys_map_TopOnePerimeterType { { "none", int(TopOnePerimeterType::None) }, { "top", int(TopOnePerimeterType::TopSurfaces) }, @@ -264,6 +265,39 @@ static t_config_enum_values s_keys_map_TopOnePerimeterType { }; CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(TopOnePerimeterType) +static const t_config_enum_values s_keys_map_TowerSpeeds{ + { "layer1", tsLayer1 }, + { "layer2", tsLayer2 }, + { "layer3", tsLayer3 }, + { "layer4", tsLayer4 }, + { "layer5", tsLayer5 }, + { "layer8", tsLayer8 }, + { "layer11", tsLayer11 }, + { "layer14", tsLayer14 }, + { "layer18", tsLayer18 }, + { "layer22", tsLayer22 }, + { "layer24", tsLayer24 }, +}; +CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(TowerSpeeds) + +static const t_config_enum_values s_keys_map_TiltSpeeds{ + { "move120", tsMove120 }, + { "layer200", tsLayer200 }, + { "move300", tsMove300 }, + { "layer400", tsLayer400 }, + { "layer600", tsLayer600 }, + { "layer800", tsLayer800 }, + { "layer1000", tsLayer1000 }, + { "layer1250", tsLayer1250 }, + { "layer1500", tsLayer1500 }, + { "layer1750", tsLayer1750 }, + { "layer2000", tsLayer2000 }, + { "layer2250", tsLayer2250 }, + { "move5120", tsMove5120 }, + { "move8000", tsMove8000 }, +}; +CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(TiltSpeeds) + static void assign_printer_technology_to_unknown(t_optiondef_map &options, PrinterTechnology printer_technology) { for (std::pair &kvp : options) @@ -284,6 +318,7 @@ PrintConfigDef::PrintConfigDef() this->init_extruder_option_keys(); assign_printer_technology_to_unknown(this->options, ptFFF); this->init_sla_params(); + this->init_sla_tilt_params(); assign_printer_technology_to_unknown(this->options, ptSLA); this->finalize(); } @@ -3949,12 +3984,14 @@ void PrintConfigDef::init_sla_params() def->set_default_value(new ConfigOptionFloat(10.)); def = this->add("area_fill", coFloat); - def->label = L("Area fill"); - def->tooltip = L("The percentage of the bed area. \nIf the print area exceeds the specified value, \nthen a slow tilt will be used, otherwise - a fast tilt"); + def->label = L("Area fill threshold"); + def->tooltip = L("The value is expressed as a percentage of the bed area. If the area of a particular layer " + "is smaller than 'area_fill', then 'Below area fill threshold' parameters are used to determine the " + "layer separation (tearing) procedure. Otherwise 'Above area fill threshold' parameters are used."); def->sidetext = L("%"); def->min = 0; - def->mode = comExpert; - def->set_default_value(new ConfigOptionFloat(50.)); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloat(35.)); def = this->add("relative_correction", coFloats); def->label = L("Printer scaling correction"); @@ -3993,6 +4030,7 @@ void PrintConfigDef::init_sla_params() def->full_label = L("Printer absolute correction"); def->tooltip = L("Will inflate or deflate the sliced 2D polygons according " "to the sign of the correction."); + def->sidetext = L("mm"); def->mode = comExpert; def->set_default_value(new ConfigOptionFloat(0.0)); @@ -4444,8 +4482,7 @@ void PrintConfigDef::init_sla_params() "support_head_penetration", "branchingsupport_head_penetration", "support_head_width", "branchingsupport_head_width", "support_pillar_diameter", "branchingsupport_pillar_diameter", - "relative_correction_x", "relative_correction_y", "relative_correction_z", - "elefant_foot_compensation", + "elefant_foot_compensation", "absolute_correction", // int "support_points_density_relative" }) { @@ -4467,6 +4504,186 @@ void PrintConfigDef::init_sla_params() } } +// SLA Materials "sub-presets" settings +void PrintConfigDef::init_sla_tilt_params() +{ + ConfigOptionDef* def; + + def = this->add("delay_before_exposure", coFloats); + def->full_label = L("Delay before exposure"); + def->tooltip = L("Delay before exposure after previous layer separation."); + def->sidetext = L("s"); + def->min = 0; + def->max = 30; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloats({ 3., 3.})); + + def = this->add("delay_after_exposure", coFloats); + def->full_label = L("Delay after exposure"); + def->tooltip = L("Delay after exposure before layer separation."); + def->sidetext = L("s"); + def->min = 0; + def->max = 30; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloats({ 0., 0.})); + + def = this->add("tower_hop_height", coInts); + def->full_label = L("Tower hop height"); + def->tooltip = L("The height of the tower raise."); + def->sidetext = L("mm"); + def->min = 0; + def->max = 100; + def->mode = comExpert; + def->set_default_value(new ConfigOptionInts({ 0, 0})); + + def = this->add("tower_speed", coEnums); + def->full_label = L("Tower speed"); + def->tooltip = L("Tower speed used for tower raise."); + def->mode = comExpert; + def->sidetext = L("mm/s"); + def->set_enum({ + { "layer1", "1" }, + { "layer2", "2" }, + { "layer3", "3" }, + { "layer4", "4" }, + { "layer5", "5" }, + { "layer8", "8" }, + { "layer11", "11" }, + { "layer14", "14" }, + { "layer18", "18" }, + { "layer22", "22" }, + { "layer24", "24" }, + }); + def->set_default_value(new ConfigOptionEnums({ tsLayer22, tsLayer22 })); + + const std::initializer_list> tilt_speeds_il = { + { "move120", "120" }, + { "layer200", "200" }, + { "move300", "300" }, + { "layer400", "400" }, + { "layer600", "600" }, + { "layer800", "800" }, + { "layer1000", "1000" }, + { "layer1250", "1250" }, + { "layer1500", "1500" }, + { "layer1750", "1750" }, + { "layer2000", "2000" }, + { "layer2250", "2250" }, + { "move5120", "5120" }, + { "move8000", "8000" }, + }; + + def = this->add("tilt_down_initial_speed", coEnums); + def->full_label = L("Tilt down initial speed"); + def->tooltip = L("Tilt speed used for an initial portion of tilt down move."); + def->mode = comExpert; + def->sidetext = L("Îĵ-steps/s"); + def->set_enum(tilt_speeds_il); + def->set_default_value(new ConfigOptionEnums({ tsLayer1750, tsLayer1750 })); + + def = this->add("tilt_down_finish_speed", coEnums); + def->full_label = L("Tilt down finish speed"); + def->tooltip = L("Tilt speed used for the rest of the tilt down move."); + def->mode = comExpert; + def->sidetext = L("Îĵ-steps/s"); + def->set_enum(tilt_speeds_il); + def->set_default_value(new ConfigOptionEnums({ tsLayer1750, tsLayer1750 })); + + def = this->add("tilt_up_initial_speed", coEnums); + def->full_label = L("Tilt up initial speed"); + def->tooltip = L("Tilt speed used for an initial portion of tilt up move."); + def->mode = comExpert; + def->sidetext = L("Îĵ-steps/s"); + def->set_enum(tilt_speeds_il); + def->set_default_value(new ConfigOptionEnums({ tsMove8000, tsMove8000 })); + + def = this->add("tilt_up_finish_speed", coEnums); + def->full_label = L("Tilt up finish speed"); + def->tooltip = L("Tilt speed used for the rest of the tilt-up."); + def->mode = comExpert; + def->sidetext = L("Îĵ-steps/s"); + def->set_enum(tilt_speeds_il); + def->set_default_value(new ConfigOptionEnums({ tsLayer1750, tsLayer1750 })); + + def = this->add("use_tilt", coBools); + def->full_label = L("Use tilt"); + def->tooltip = L("If enabled, tilt is used for layer separation. Otherwise, all the parameters below are ignored."); + def->mode = comExpert; + def->set_default_value(new ConfigOptionBools({ true, true })); + + def = this->add("tilt_down_offset_steps", coInts); + def->full_label = L("Tilt down offset steps"); + def->tooltip = L("Number of steps to move down from the calibrated (horizontal) position with 'tilt_down_initial_speed'."); + def->sidetext = L("Îĵ-steps"); + def->min = 0; + def->max = 10000; + def->mode = comExpert; + def->set_default_value(new ConfigOptionInts({ 0, 0 })); + + def = this->add("tilt_down_offset_delay", coFloats); + def->full_label = L("Tilt down offset delay"); + def->tooltip = L("Delay after the tilt reaches 'tilt_down_offset_steps' position."); + def->sidetext = L("s"); + def->min = 0; + def->max = 20; + def->mode = comExpert; + def->set_default_value(new ConfigOptionFloats({ 0., 0. })); + + def = this->add("tilt_down_cycles", coInts); + def->full_label = L("Tilt down cycles"); + def->tooltip = L("Number of cycles to split the rest of the tilt down move."); + def->min = 0; + def->max = 10; + def->mode = comExpert; + def->set_default_value(new ConfigOptionInts({ 1, 1 })); + + def = this->add("tilt_down_delay", coFloats); + def->full_label = L("Tilt down delay"); + def->tooltip = L("The delay between tilt-down cycles."); + def->sidetext = L("s"); + def->min = 0; + def->max = 20; + def->mode = comExpert; + def->set_default_value(new ConfigOptionFloats({ 0., 0. })); + + def = this->add("tilt_up_offset_steps", coInts); + def->full_label = L("Tilt up offset steps"); + def->tooltip = L("Move tilt up to calibrated (horizontal) position minus this offset."); + def->sidetext = L("Îĵ-steps"); + def->min = 0; + def->max = 10000; + def->mode = comExpert; + def->set_default_value(new ConfigOptionInts({ 1200, 1200 })); + + def = this->add("tilt_up_offset_delay", coFloats); + def->full_label = L("Tilt up offset delay"); + def->tooltip = L("Delay after the tilt reaches 'tilt_up_offset_steps' position."); + def->sidetext = L("s"); + def->min = 0; + def->max = 20; + def->mode = comExpert; + def->set_default_value(new ConfigOptionFloats({ 0., 0. })); + + def = this->add("tilt_up_cycles", coInts); + def->full_label = L("Tilt up cycles"); + def->tooltip = L("Number of cycles to split the rest of the tilt-up."); + def->min = 0; + def->max = 10; + def->mode = comExpert; + def->set_default_value(new ConfigOptionInts({ 1, 1 })); + + def = this->add("tilt_up_delay", coFloats); + def->full_label = L("Tilt up delay"); + def->tooltip = L("The delay between tilt-up cycles."); + def->sidetext = L("s"); + def->min = 0; + def->max = 20; + def->mode = comExpert; + def->set_default_value(new ConfigOptionFloats({ 0., 0. })); + +} + + // Ignore the following obsolete configuration keys: static std::set PrintConfigDef_ignore = { "clip_multipart_objects", @@ -4741,6 +4958,87 @@ void DynamicPrintConfig::normalize_fdm() opt_wall_transition_length->value = std::max(opt_wall_transition_length->value, 0.001); } +// Default values containe option pair of values (Below and Above) for each titl modes +// (Slow, Fast, HighViscosity and NoTilt) -> used for SL1S and other vendors printers + +const std::map tilt_options_floats_defs = +{ + {"delay_before_exposure", ConfigOptionFloats({ 3., 3., 0., 1., 3.5, 3.5, 0., 0. }) } , + {"delay_after_exposure", ConfigOptionFloats({ 0., 0., 0., 0., 0., 0., 0., 0. }) } , + {"tilt_down_offset_delay", ConfigOptionFloats({ 0., 0., 0., 0., 0., 0., 0., 0. }) } , + {"tilt_down_delay", ConfigOptionFloats({ 0., 0., 0., 0.5, 0., 0., 0., 0. }) } , + {"tilt_up_offset_delay", ConfigOptionFloats({ 0., 0., 0., 0., 0., 0., 0., 0. }) } , + {"tilt_up_delay", ConfigOptionFloats({ 0., 0., 0., 0., 0., 0., 0., 0. }) } , +}; + +const std::map tilt_options_ints_defs = +{ + {"tower_hop_height", ConfigOptionInts({ 0, 0, 0, 0, 5, 5, 0, 0 }) } , + {"tilt_down_offset_steps", ConfigOptionInts({ 0, 0, 0, 0, 2200, 2200, 0, 0 }) } , + {"tilt_down_cycles", ConfigOptionInts({ 1, 1, 1, 1, 1, 1, 0, 0 }) } , + {"tilt_up_offset_steps", ConfigOptionInts({ 1200, 1200, 600, 600, 2200, 2200, 0, 0 }) } , + {"tilt_up_cycles", ConfigOptionInts({ 1, 1, 1, 1, 1, 1, 0, 0 }) } , +}; + +const std::map tilt_options_bools_defs = +{ + {"use_tilt", ConfigOptionBools({ true, true, true, true, true, true, false, false })} , +}; + +const std::map> tower_tilt_options_enums_defs = +{ + {"tower_speed", ConfigOptionEnums({ tsLayer22, tsLayer22, tsLayer22, tsLayer22, tsLayer2, tsLayer2, tsLayer1, tsLayer1 })} , +}; + +const std::map> tilt_options_enums_defs = +{ + {"tilt_down_initial_speed", ConfigOptionEnums({ tsLayer1750, tsLayer1750, tsLayer1750, tsLayer1750, tsLayer800, tsLayer800, tsMove120, tsMove120 }) } , + {"tilt_down_finish_speed", ConfigOptionEnums({ tsLayer1750, tsLayer1750, tsMove8000, tsLayer1750, tsLayer1750, tsLayer1750, tsMove120, tsMove120 }) } , + {"tilt_up_initial_speed", ConfigOptionEnums({ tsMove8000, tsMove8000, tsMove8000, tsMove8000, tsLayer1750, tsLayer1750, tsMove120, tsMove120 }) } , + {"tilt_up_finish_speed", ConfigOptionEnums({ tsLayer1750, tsLayer1750, tsLayer1750, tsLayer1750, tsLayer800, tsLayer800, tsMove120, tsMove120 }) } , +}; + +// Default values containe option pair of values (Below and Above) for each titl modes +// (Slow, Fast, HighViscosity and NoTilt) -> used for SL1 printer + +const std::map tilt_options_floats_sl1_defs = +{ + {"delay_before_exposure", ConfigOptionFloats({ 3., 3., 0., 1., 3.5, 3.5, 0., 0. }) } , + {"delay_after_exposure", ConfigOptionFloats({ 0., 0., 0., 0., 0., 0., 0., 0. }) } , + {"tilt_down_offset_delay", ConfigOptionFloats({ 1., 1., 0., 0., 0., 0., 0., 0. }) } , + {"tilt_down_delay", ConfigOptionFloats({ 0., 0., 0., 0., 0., 0., 0., 0. }) } , + {"tilt_up_offset_delay", ConfigOptionFloats({ 0., 0., 0., 0., 1., 1., 0., 0. }) } , + {"tilt_up_delay", ConfigOptionFloats({ 0., 0., 0., 0., 0., 0., 0., 0. }) } , +}; + +const std::map tilt_options_ints_sl1_defs = +{ + {"tower_hop_height", ConfigOptionInts({ 0, 0, 0, 0, 5, 5, 0, 0 }) } , + {"tilt_down_offset_steps", ConfigOptionInts({ 650, 650, 0, 0, 2200, 2200, 0, 0 }) } , + {"tilt_down_cycles", ConfigOptionInts({ 1, 1, 1, 1, 1, 1, 0, 0 }) } , + {"tilt_up_offset_steps", ConfigOptionInts({ 400, 400, 400, 400, 2200, 2200, 0, 0 }) } , + {"tilt_up_cycles", ConfigOptionInts({ 1, 1, 1, 1, 1, 1, 0, 0 }) } , +}; + +const std::map tilt_options_bools_sl1_defs = +{ + {"use_tilt", ConfigOptionBools({ true, true, true, true, true, true, false, false })} , +}; + + +const std::map> tower_tilt_options_enums_sl1_defs = +{ + {"tower_speed", ConfigOptionEnums({ tsLayer22, tsLayer22, tsLayer22, tsLayer22, tsLayer2, tsLayer2, tsLayer1, tsLayer1 })} , +}; + +const std::map> tilt_options_enums_sl1_defs = +{ + {"tilt_down_initial_speed", ConfigOptionEnums({ tsLayer400, tsLayer400, tsLayer400, tsLayer400, tsLayer600, tsLayer600, tsMove120, tsMove120 }) } , + {"tilt_down_finish_speed", ConfigOptionEnums({ tsLayer1500, tsLayer1500, tsLayer1750, tsLayer1500, tsLayer1500, tsLayer1500, tsMove120, tsMove120 }) } , + {"tilt_up_initial_speed", ConfigOptionEnums({ tsMove5120, tsMove5120, tsMove5120, tsMove5120, tsLayer1500, tsLayer1500, tsMove120, tsMove120 }) } , + {"tilt_up_finish_speed", ConfigOptionEnums({ tsLayer400, tsLayer400, tsLayer400, tsLayer400, tsLayer600, tsLayer600, tsMove120, tsMove120 }) } , +}; + void handle_legacy_sla(DynamicPrintConfig &config) { for (std::string corr : {"relative_correction", "material_correction"}) { @@ -4761,6 +5059,66 @@ void handle_legacy_sla(DynamicPrintConfig &config) } } } + + // Load default tilt options in config in respect to the print speed, if config is loaded from old PS + + if (config.has("material_print_speed") && + !config.has("tilt_down_offset_delay") // Config from old PS doesn't contain any of tilt options, so check it + ) { + int tilt_mode = config.option("material_print_speed")->getInt(); + + const bool is_sl1_model = config.opt_string("printer_model") == "SL1"; + + const std::map floats_defs = is_sl1_model ? tilt_options_floats_sl1_defs : tilt_options_floats_defs; + const std::map ints_defs = is_sl1_model ? tilt_options_ints_sl1_defs : tilt_options_ints_defs; + const std::map bools_defs = is_sl1_model ? tilt_options_bools_sl1_defs : tilt_options_bools_defs; + const std::map> tower_enums_defs = is_sl1_model ? tower_tilt_options_enums_sl1_defs : tower_tilt_options_enums_defs; + const std::map> tilt_enums_defs = is_sl1_model ? tilt_options_enums_sl1_defs : tilt_options_enums_defs; + + for (const std::string& opt_key : tilt_options()) { + switch (config.def()->get(opt_key)->type) { + case coFloats: { + ConfigOptionFloats values = floats_defs.at(opt_key); + double val1 = values.get_at(2 * tilt_mode); + double val2 = values.get_at(2 * tilt_mode + 1); + config.set_key_value(opt_key, new ConfigOptionFloats({ val1, val2 })); + } + break; + case coInts: { + auto values = ints_defs.at(opt_key); + int val1 = values.get_at(2 * tilt_mode); + int val2 = values.get_at(2 * tilt_mode + 1); + config.set_key_value(opt_key, new ConfigOptionInts({ val1, val2 })); + } + break; + case coBools: { + auto values = bools_defs.at(opt_key); + bool val1 = values.get_at(2 * tilt_mode); + bool val2 = values.get_at(2 * tilt_mode + 1); + config.set_key_value(opt_key, new ConfigOptionBools({ val1, val2 })); + } + break; + case coEnums: { + int val1, val2; + if (opt_key == "tower_speed") { + auto values = tower_enums_defs.at(opt_key); + val1 = values.get_at(2 * tilt_mode); + val2 = values.get_at(2 * tilt_mode + 1); + } + else { + auto values = tilt_enums_defs.at(opt_key); + val1 = values.get_at(2 * tilt_mode); + val2 = values.get_at(2 * tilt_mode + 1); + } + config.set_key_value(opt_key, new ConfigOptionEnumsGeneric({ val1, val2 })); + } + break; + case coNone: + default: + break; + } + } + } } void DynamicPrintConfig::set_num_extruders(unsigned int num_extruders) diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index e36995842e..9cf6ae8038 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -171,6 +171,37 @@ enum class GCodeThumbnailsFormat { PNG, JPG, QOI }; +enum TowerSpeeds : int { + tsLayer1, + tsLayer2, + tsLayer3, + tsLayer4, + tsLayer5, + tsLayer8, + tsLayer11, + tsLayer14, + tsLayer18, + tsLayer22, + tsLayer24, +}; + +enum TiltSpeeds : int { + tsMove120, + tsLayer200, + tsMove300, + tsLayer400, + tsLayer600, + tsLayer800, + tsLayer1000, + tsLayer1250, + tsLayer1500, + tsLayer1750, + tsLayer2000, + tsLayer2250, + tsMove5120, + tsMove8000, +}; + #define CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(NAME) \ template<> const t_config_enum_names& ConfigOptionEnum::get_enum_names(); \ template<> const t_config_enum_values& ConfigOptionEnum::get_enum_values(); @@ -226,6 +257,7 @@ private: void init_fff_params(); void init_extruder_option_keys(); void init_sla_params(); + void init_sla_tilt_params(); void init_sla_support_params(const std::string &method_prefix); std::vector m_extruder_option_keys; @@ -305,6 +337,9 @@ public: { PrintConfigDef::handle_legacy_composite(*this); } }; +// This vector containes list of parameters for preview of tilt profiles +const std::vector& tilt_options(); + void handle_legacy_sla(DynamicPrintConfig &config); class StaticPrintConfig : public StaticConfig @@ -1148,11 +1183,28 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloatNullable, material_ow_support_head_width)) ((ConfigOptionFloatNullable, material_ow_branchingsupport_head_width)) ((ConfigOptionIntNullable, material_ow_support_points_density_relative)) - ((ConfigOptionFloatNullable, material_ow_elefant_foot_compensation)) - ((ConfigOptionFloatNullable, material_ow_relative_correction_x)) - ((ConfigOptionFloatNullable, material_ow_relative_correction_y)) - ((ConfigOptionFloatNullable, material_ow_relative_correction_z)) + ((ConfigOptionFloatNullable, material_ow_absolute_correction)) + ((ConfigOptionFloat, area_fill)) + + //tilt params + ((ConfigOptionFloats, delay_before_exposure)) + ((ConfigOptionFloats, delay_after_exposure)) + ((ConfigOptionInts, tower_hop_height)) + ((ConfigOptionEnums, tower_speed)) + ((ConfigOptionBools, use_tilt)) + ((ConfigOptionEnums, tilt_down_initial_speed)) + ((ConfigOptionInts, tilt_down_offset_steps)) + ((ConfigOptionFloats, tilt_down_offset_delay)) + ((ConfigOptionEnums, tilt_down_finish_speed)) + ((ConfigOptionInts, tilt_down_cycles)) + ((ConfigOptionFloats, tilt_down_delay)) + ((ConfigOptionEnums, tilt_up_initial_speed)) + ((ConfigOptionInts, tilt_up_offset_steps)) + ((ConfigOptionFloats, tilt_up_offset_delay)) + ((ConfigOptionEnums, tilt_up_finish_speed)) + ((ConfigOptionInts, tilt_up_cycles)) + ((ConfigOptionFloats, tilt_up_delay)) ) PRINT_CONFIG_CLASS_DEFINE( @@ -1179,13 +1231,14 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloat, fast_tilt_time)) ((ConfigOptionFloat, slow_tilt_time)) ((ConfigOptionFloat, high_viscosity_tilt_time)) - ((ConfigOptionFloat, area_fill)) +// ((ConfigOptionFloat, area_fill)) ((ConfigOptionFloat, min_exposure_time)) ((ConfigOptionFloat, max_exposure_time)) ((ConfigOptionFloat, min_initial_exposure_time)) ((ConfigOptionFloat, max_initial_exposure_time)) ((ConfigOptionString, sla_archive_format)) ((ConfigOptionFloat, sla_output_precision)) + ((ConfigOptionString, printer_model)) ) PRINT_CONFIG_CLASS_DERIVED_DEFINE0( diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp index 6ced79fd0e..8116cae2ce 100644 --- a/src/libslic3r/SLAPrint.cpp +++ b/src/libslic3r/SLAPrint.cpp @@ -219,10 +219,8 @@ static t_config_option_keys print_config_diffs(const StaticPrintConfig &curr "branchingsupport_head_width"sv, "branchingsupport_pillar_diameter"sv, "support_points_density_relative"sv, - "relative_correction_x"sv, - "relative_correction_y"sv, - "relative_correction_z"sv, "elefant_foot_compensation"sv, + "absolute_correction"sv, }; static constexpr auto material_ow_prefix = "material_ow_"; @@ -685,6 +683,12 @@ std::string SLAPrint::validate(std::vector*) const } } + if ((!m_material_config.use_tilt.get_at(0) && m_material_config.tower_hop_height.get_at(0) == 0) + || (!m_material_config.use_tilt.get_at(1) && m_material_config.tower_hop_height.get_at(1) == 0)) + return _u8L("Disabling the 'Use tilt' function causes the object to separate away from the film in the " + "vertical direction only. Therefore, it is necessary to set the 'Tower hop height' parameter " + "to reasonable value. The recommended value is 5 mm."); + return ""; } @@ -858,7 +862,26 @@ bool SLAPrint::invalidate_state_by_config_options(const std::vector steps; diff --git a/src/libslic3r/SLAPrint.hpp b/src/libslic3r/SLAPrint.hpp index 4148745f88..aebfe7b8aa 100644 --- a/src/libslic3r/SLAPrint.hpp +++ b/src/libslic3r/SLAPrint.hpp @@ -406,13 +406,15 @@ struct SLAPrintStatistics { SLAPrintStatistics() { clear(); } double estimated_print_time; + double estimated_print_time_tolerance; double objects_used_material; double support_used_material; size_t slow_layers_count; size_t fast_layers_count; double total_cost; double total_weight; - std::vector layers_times; + std::vector layers_times_running_total; + std::vector layers_areas; // Config with the filled in print statistics. DynamicConfig config() const; @@ -423,13 +425,15 @@ struct SLAPrintStatistics void clear() { estimated_print_time = 0.; + estimated_print_time_tolerance = 0.; objects_used_material = 0.; support_used_material = 0.; slow_layers_count = 0; fast_layers_count = 0; total_cost = 0.; total_weight = 0.; - layers_times.clear(); + layers_times_running_total.clear(); + layers_areas.clear(); } }; diff --git a/src/libslic3r/SLAPrintSteps.cpp b/src/libslic3r/SLAPrintSteps.cpp index 56da543fc8..326d6992a1 100644 --- a/src/libslic3r/SLAPrintSteps.cpp +++ b/src/libslic3r/SLAPrintSteps.cpp @@ -911,6 +911,188 @@ void SLAPrint::Steps::initialize_printer_input() } } +static int Ms(int s) +{ + return s; +} + +// constant values from FW +int tiltHeight = 4959; //nm +int tower_microstep_size_nm = 250000; +int first_extra_slow_layers = 3; +int refresh_delay_ms = 0; + +static int nm_to_tower_microsteps(int nm) { + // add implementation + return nm / tower_microstep_size_nm; +} + +static int count_move_time(const std::string& axis_name, double length, int steprate) +{ + if (length < 0 || steprate < 0) + return 0; + + // sla - fw checks every 0.1 s if axis is still moving.See: Axis._wait_to_stop_delay.Additional 0.021 s is + // measured average delay of the system.Thus, the axis movement time is always quantized by this value. + double delay = 0.121; + + // Both axes use linear ramp movements. This factor compensates the tilt acceleration and deceleration time. + double tilt_comp_factor = 0.1; + + // Both axes use linear ramp movements.This factor compensates the tower acceleration and deceleration time. + int tower_comp_factor = 20000; + + int l = int(length); + return axis_name == "tower" ? Ms((int(l / (steprate * delay) + (steprate + l) / tower_comp_factor) + 1) * (delay * 1000)) : + Ms((int(l / (steprate * delay) + tilt_comp_factor) + 1) * (delay * 1000)); +} + +struct ExposureProfile { + + // map of internal TowerSpeeds to maximum_steprates (usteps/s) + // this values was provided in default_tower_moving_profiles.json by SLA-team + std::map tower_speeds = { + { tsLayer1 , 800 }, + { tsLayer2 , 1600 }, + { tsLayer3 , 2400 }, + { tsLayer4 , 3200 }, + { tsLayer5 , 4000 }, + { tsLayer8 , 6400 }, + { tsLayer11, 8800 }, + { tsLayer14, 11200 }, + { tsLayer18, 14400 }, + { tsLayer22, 17600 }, + { tsLayer24, 19200 }, + }; + + // map of internal TiltSpeeds to maximum_steprates (usteps/s) + // this values was provided in default_tilt_moving_profiles.json by SLA-team + std::map tilt_speeds = { + { tsMove120 , 120 }, + { tsLayer200 , 200 }, + { tsMove300 , 300 }, + { tsLayer400 , 400 }, + { tsLayer600 , 600 }, + { tsLayer800 , 800 }, + { tsLayer1000, 1000 }, + { tsLayer1250, 1250 }, + { tsLayer1500, 1500 }, + { tsLayer1750, 1750 }, + { tsLayer2000, 2000 }, + { tsLayer2250, 2250 }, + { tsMove5120 , 5120 }, + { tsMove8000 , 8000 }, + }; + + int delay_before_exposure_ms { 0 }; + int delay_after_exposure_ms { 0 }; + int tilt_down_offset_delay_ms { 0 }; + int tilt_down_delay_ms { 0 }; + int tilt_up_offset_delay_ms { 0 }; + int tilt_up_delay_ms { 0 }; + int tower_hop_height_nm { 0 }; + int tilt_down_offset_steps { 0 }; + int tilt_down_cycles { 0 }; + int tilt_up_offset_steps { 0 }; + int tilt_up_cycles { 0 }; + bool use_tilt { true }; + int tower_speed { 0 }; + int tilt_down_initial_speed { 0 }; + int tilt_down_finish_speed { 0 }; + int tilt_up_initial_speed { 0 }; + int tilt_up_finish_speed { 0 }; + + ExposureProfile() {} + + ExposureProfile(const SLAMaterialConfig& config, int opt_id) + { + delay_before_exposure_ms = int(1000 * config.delay_before_exposure.get_at(opt_id)); + delay_after_exposure_ms = int(1000 * config.delay_after_exposure.get_at(opt_id)); + tilt_down_offset_delay_ms = int(1000 * config.tilt_down_offset_delay.get_at(opt_id)); + tilt_down_delay_ms = int(1000 * config.tilt_down_delay.get_at(opt_id)); + tilt_up_offset_delay_ms = int(1000 * config.tilt_up_offset_delay.get_at(opt_id)); + tilt_up_delay_ms = int(1000 * config.tilt_up_delay.get_at(opt_id)); + tower_hop_height_nm = config.tower_hop_height.get_at(opt_id) * 1000000; + tilt_down_offset_steps = config.tilt_down_offset_steps.get_at(opt_id); + tilt_down_cycles = config.tilt_down_cycles.get_at(opt_id); + tilt_up_offset_steps = config.tilt_up_offset_steps.get_at(opt_id); + tilt_up_cycles = config.tilt_up_cycles.get_at(opt_id); + use_tilt = config.use_tilt.get_at(opt_id); + tower_speed = tower_speeds.at(static_cast(config.tower_speed.getInts()[opt_id])); + tilt_down_initial_speed = tilt_speeds.at(static_cast(config.tilt_down_initial_speed.getInts()[opt_id])); + tilt_down_finish_speed = tilt_speeds.at(static_cast(config.tilt_down_finish_speed.getInts()[opt_id])); + tilt_up_initial_speed = tilt_speeds.at(static_cast(config.tilt_up_initial_speed.getInts()[opt_id])); + tilt_up_finish_speed = tilt_speeds.at(static_cast(config.tilt_up_finish_speed.getInts()[opt_id])); + } +}; + +static int layer_peel_move_time(int layer_height_nm, ExposureProfile p) +{ + int profile_change_delay = Ms(20); // propagation delay of sending profile change command to MC + int sleep_delay = Ms(2); // average delay of the Linux system sleep function + + int tilt = Ms(0); + if (p.use_tilt) { + tilt += profile_change_delay; + // initial down movement + tilt += count_move_time( + "tilt", + p.tilt_down_offset_steps, + p.tilt_down_initial_speed); + // initial down delay + tilt += p.tilt_down_offset_delay_ms + sleep_delay; + // profile change delay if down finish profile is different from down initial + tilt += profile_change_delay; + // cycle down movement + tilt += p.tilt_down_cycles * count_move_time( + "tilt", + int((tiltHeight - p.tilt_down_offset_steps) / p.tilt_down_cycles), + p.tilt_down_finish_speed); + // cycle down delay + tilt += p.tilt_down_cycles * (p.tilt_down_delay_ms + sleep_delay); + + // profile change delay if up initial profile is different from down finish + tilt += profile_change_delay; + // initial up movement + tilt += count_move_time( + "tilt", + tiltHeight - p.tilt_up_offset_steps, + p.tilt_up_initial_speed); + // initial up delay + tilt += p.tilt_up_offset_delay_ms + sleep_delay; + // profile change delay if up initial profile is different from down finish + tilt += profile_change_delay; + // finish up movement + tilt += p.tilt_up_cycles * count_move_time( + "tilt", + int(p.tilt_up_offset_steps / p.tilt_up_cycles), + p.tilt_up_finish_speed); + // cycle down delay + tilt += p.tilt_up_cycles * (p.tilt_up_delay_ms + sleep_delay); + } + + int tower = Ms(0); + if (p.tower_hop_height_nm > 0) { + tower += count_move_time( + "tower", + nm_to_tower_microsteps(int(p.tower_hop_height_nm) + layer_height_nm), + p.tower_speed); + tower += count_move_time( + "tower", + nm_to_tower_microsteps(int(p.tower_hop_height_nm)), + p.tower_speed); + tower += profile_change_delay; + } + else { + tower += count_move_time( + "tower", + nm_to_tower_microsteps(layer_height_nm), + p.tower_speed); + tower += profile_change_delay; + } + return int(tilt + tower); +} + // Merging the slices from all the print objects into one slice grid and // calculating print statistics from the merge result. void SLAPrint::Steps::merge_slices_and_eval_stats() { @@ -924,7 +1106,7 @@ void SLAPrint::Steps::merge_slices_and_eval_stats() { print_statistics.clear(); - const double area_fill = printer_config.area_fill.getFloat()*0.01;// 0.5 (50%); + const double area_fill = material_config.area_fill.getFloat()*0.01;// 0.5 (50%); const double fast_tilt = printer_config.fast_tilt_time.getFloat();// 5.0; const double slow_tilt = printer_config.slow_tilt_time.getFloat();// 8.0; const double hv_tilt = printer_config.high_viscosity_tilt_time.getFloat();// 10.0; @@ -934,34 +1116,29 @@ void SLAPrint::Steps::merge_slices_and_eval_stats() { const int fade_layers_cnt = m_print->m_default_object_config.faded_layers.getInt();// 10 // [3;20] + ExposureProfile below(material_config, 0); + ExposureProfile above(material_config, 1); + + const int first_slow_layers = fade_layers_cnt + first_extra_slow_layers; + const std::string printer_model = printer_config.printer_model; + const bool is_prusa_print = printer_model == "SL1" || printer_model == "SL1S" || printer_model == "M1"; + const auto width = scaled(printer_config.display_width.getFloat()); const auto height = scaled(printer_config.display_height.getFloat()); const double display_area = width*height; - double supports_volume(0.0); - double models_volume(0.0); - - double estim_time(0.0); - std::vector layers_times; - layers_times.reserve(printer_input.size()); - - size_t slow_layers = 0; - size_t fast_layers = 0; + std::vector> layers_info; // time, area, is_fast, models_volume, supports_volume + layers_info.resize(printer_input.size()); const double delta_fade_time = (init_exp_time - exp_time) / (fade_layers_cnt + 1); - double fade_layer_time = init_exp_time; - - execution::SpinningMutex mutex; - using Lock = std::lock_guard; // Going to parallel: auto printlayerfn = [this, // functions and read only vars - area_fill, display_area, exp_time, init_exp_time, fast_tilt, slow_tilt, hv_tilt, material_config, delta_fade_time, + area_fill, display_area, exp_time, init_exp_time, fast_tilt, slow_tilt, hv_tilt, material_config, delta_fade_time, is_prusa_print, first_slow_layers, below, above, // write vars - &mutex, &models_volume, &supports_volume, &estim_time, &slow_layers, - &fast_layers, &fade_layer_time, &layers_times](size_t sliced_layer_cnt) + &layers_info](size_t sliced_layer_cnt) { PrintLayer &layer = m_print->m_printer_input[sliced_layer_cnt]; @@ -1011,9 +1188,7 @@ void SLAPrint::Steps::merge_slices_and_eval_stats() { for (const ExPolygon& polygon : model_polygons) layer_model_area += area(polygon); - if (layer_model_area < 0 || layer_model_area > 0) { - Lock lck(mutex); models_volume += layer_model_area * l_height; - } + const double models_volume = (layer_model_area < 0 || layer_model_area > 0) ? layer_model_area * l_height : 0.; if(!supports_polygons.empty()) { if(model_polygons.empty()) supports_polygons = union_ex(supports_polygons); @@ -1025,9 +1200,8 @@ void SLAPrint::Steps::merge_slices_and_eval_stats() { for (const ExPolygon& polygon : supports_polygons) layer_support_area += area(polygon); - if (layer_support_area < 0 || layer_support_area > 0) { - Lock lck(mutex); supports_volume += layer_support_area * l_height; - } + const double supports_volume = (layer_support_area < 0 || layer_support_area > 0) ? layer_support_area * l_height : 0.; + const double layer_area = layer_model_area + layer_support_area; // Here we can save the expensively calculated polygons for printing ExPolygons trslices; @@ -1037,34 +1211,32 @@ void SLAPrint::Steps::merge_slices_and_eval_stats() { layer.transformed_slices(union_ex(trslices)); - // Calculation of the slow and fast layers to the future controlling those values on FW + // Calculation of the printing time + // + Calculation of the slow and fast layers to the future controlling those values on FW + double layer_times = 0.0; + bool is_fast_layer = false; - const bool is_fast_layer = (layer_model_area + layer_support_area) <= display_area*area_fill; - const double tilt_time = material_config.material_print_speed == slamsSlow ? slow_tilt : - material_config.material_print_speed == slamsHighViscosity ? hv_tilt : - is_fast_layer ? fast_tilt : slow_tilt; + if (is_prusa_print) { + is_fast_layer = int(sliced_layer_cnt) < first_slow_layers || layer_area <= display_area * area_fill; + const int l_height_nm = 1000000 * l_height; - { Lock lck(mutex); - if (is_fast_layer) - fast_layers++; - else - slow_layers++; + layer_times = layer_peel_move_time(l_height_nm, is_fast_layer ? below : above) + + (is_fast_layer ? below : above).delay_before_exposure_ms + + (is_fast_layer ? below : above).delay_after_exposure_ms + + refresh_delay_ms * 5 + // ~ 5x frame display wait + 124; // Magical constant to compensate remaining computation delay in exposure thread - // Calculation of the printing time + layer_times *= 0.001; // All before calculations are made in ms, but we need it in s + } + else { + is_fast_layer = layer_area <= display_area*area_fill; + const double tilt_time = material_config.material_print_speed == slamsSlow ? slow_tilt : + material_config.material_print_speed == slamsHighViscosity ? hv_tilt : + is_fast_layer ? fast_tilt : slow_tilt; - double layer_times = 0.0; - if (sliced_layer_cnt < 3) - layer_times += init_exp_time; - else if (fade_layer_time > exp_time) { - fade_layer_time -= delta_fade_time; - layer_times += fade_layer_time; - } - else - layer_times += exp_time; layer_times += tilt_time; //// Per layer times (magical constants cuclulated from FW) - static double exposure_safe_delay_before{ 3.0 }; static double exposure_high_viscosity_delay_before{ 3.5 }; static double exposure_slow_move_delay_before{ 1.0 }; @@ -1081,33 +1253,41 @@ void SLAPrint::Steps::merge_slices_and_eval_stats() { l_height * 5 // tower move + 120 / 1000 // Magical constant to compensate remaining computation delay in exposure thread ); - - layers_times.push_back(layer_times); - estim_time += layer_times; } + + // We are done with tilt time, but we haven't added the exposure time yet. + layer_times += std::max(exp_time, init_exp_time - sliced_layer_cnt * delta_fade_time); + + // Collect values for this layer. + layers_info[sliced_layer_cnt] = std::make_tuple(layer_times, layer_area * SCALING_FACTOR * SCALING_FACTOR, is_fast_layer, models_volume, supports_volume); }; // sequential version for debugging: - // for(size_t i = 0; i < m_printer_input.size(); ++i) printlayerfn(i); + // for(size_t i = 0; i < printer_input.size(); ++i) printlayerfn(i); execution::for_each(ex_tbb, size_t(0), printer_input.size(), printlayerfn, execution::max_concurrency(ex_tbb)); - auto SCALING2 = SCALING_FACTOR * SCALING_FACTOR; - print_statistics.support_used_material = supports_volume * SCALING2; - print_statistics.objects_used_material = models_volume * SCALING2; + print_statistics.clear(); - // Estimated printing time - // A layers count o the highest object if (printer_input.size() == 0) print_statistics.estimated_print_time = NaNd; else { - print_statistics.estimated_print_time = estim_time; - print_statistics.layers_times = layers_times; + size_t i=0; + for (const auto& [time, area, is_fast, models_volume, supports_volume] : layers_info) { + print_statistics.fast_layers_count += int(is_fast); + print_statistics.slow_layers_count += int(! is_fast); + print_statistics.layers_areas.emplace_back(area); + print_statistics.estimated_print_time += time; + print_statistics.layers_times_running_total.emplace_back(time + (i==0 ? 0. : print_statistics.layers_times_running_total[i-1])); + print_statistics.objects_used_material += models_volume * SCALING_FACTOR * SCALING_FACTOR; + print_statistics.support_used_material += supports_volume * SCALING_FACTOR * SCALING_FACTOR; + ++i; + } + if (is_prusa_print) + // For our SLA printers, we add an error of the estimate: + print_statistics.estimated_print_time_tolerance = 0.03 * print_statistics.estimated_print_time; } - print_statistics.fast_layers_count = fast_layers; - print_statistics.slow_layers_count = slow_layers; - report_status(-2, "", SlicingStatus::RELOAD_SLA_PREVIEW); } diff --git a/src/slic3r/GUI/DoubleSliderForLayers.cpp b/src/slic3r/GUI/DoubleSliderForLayers.cpp index d27a5ac435..15fa59b462 100644 --- a/src/slic3r/GUI/DoubleSliderForLayers.cpp +++ b/src/slic3r/GUI/DoubleSliderForLayers.cpp @@ -117,8 +117,7 @@ void DSForLayers::SetLayersTimes(const std::vector& layers_times) { m_ticks.is_wipe_tower = false; m_layers_times = layers_times; - for (size_t i = 1; i < m_layers_times.size(); i++) - m_layers_times[i] += m_layers_times[i - 1]; + std::copy(layers_times.begin(), layers_times.end(), m_layers_times.begin()); } void DSForLayers::SetDrawMode(bool is_sla_print, bool is_sequential_print) diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 369a91960a..a4b2180551 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -1156,6 +1156,10 @@ void Choice::set_selection() field->SetSelection(m_opt.default_value->getInt()); break; } + case coEnums:{ + field->SetSelection(m_opt.default_value->getInts()[m_opt_idx]); + break; + } case coFloat: case coPercent: { double val = m_opt.default_value->getFloat(); @@ -1243,7 +1247,8 @@ void Choice::set_value(const boost::any& value, bool change_event) break; } - case coEnum: { + case coEnum: + case coEnums: { auto val = m_opt.enum_def->enum_to_index(boost::any_cast(value)); assert(val.has_value()); field->SetSelection(val.has_value() ? *val : 0); @@ -1308,7 +1313,7 @@ boost::any& Choice::get_value() if (m_opt_id == rp_option) return m_value = boost::any(ret_str); - if (m_opt.type == coEnum) + if (m_opt.type == coEnum || m_opt.type == coEnums) // Closed enum: The combo box item index returned by the field must be convertible to an enum value. m_value = m_opt.enum_def->index_to_enum(field->GetSelection()); else if (m_opt.gui_type == ConfigOptionDef::GUIType::f_enum_open || m_opt.gui_type == ConfigOptionDef::GUIType::i_enum_open) { diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 65090b6676..fff19f2d84 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -6250,6 +6250,40 @@ void GLCanvas3D::_render_camera_target() } #endif // ENABLE_SHOW_CAMERA_TARGET + + +static void render_sla_layer_legend(const SLAPrint& print, int layer_idx, int cnv_width) +{ + const std::vector& areas = print.print_statistics().layers_areas; + const std::vector& times = print.print_statistics().layers_times_running_total; + const double display_area = print.printer_config().display_height * print.printer_config().display_width; + if (layer_idx >= 0 && layer_idx < int(areas.size())) { + const double area = areas[layer_idx]; + const double time = times[layer_idx] - (layer_idx == 0 ? 0. : times[layer_idx-1]); + const double time_until_layer = times[layer_idx]; + + ImGuiWrapper& imgui = *wxGetApp().imgui(); + ImGuiPureWrap::set_next_window_pos(float(cnv_width) - imgui.get_style_scaling() * 5.f, 5.f, ImGuiCond_Always, 1.0f, 0.0f); + ImGui::SetNextWindowBgAlpha(0.6f); + + ImGuiPureWrap::begin(_u8L("Layer statistics"), ImGuiWindowFlags_NoNav | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoFocusOnAppearing); + ImGui::Text("%s", GUI::format(_u8L("Layer area: %1% mm²"), int(0.1 + std::round(area))).c_str()); + int area_percent_int = int(std::round(100. * area/display_area)); + ImGui::Text("%s", GUI::format(_u8L("Area fill: %1% %%"), area_percent_int == 0 ? "<1" : std::to_string(area_percent_int)).c_str()); + ImGui::Separator(); + ImGui::Text("%s", GUI::format(_u8L("Layer time: %1%"), get_time_dhms(time)).c_str()); + std::string buffer_str = _u8L("Time since start: %1%"); + ImGui::Text("%s", GUI::format(buffer_str, get_time_dhms(time_until_layer)).c_str()); + + // The dummy control below uses the assumption that the total time string will be the longest + // and forces the width of the window large enough so it does not resize depending on the current value. + ImGui::Dummy(ImVec2(ImGui::CalcTextSize(GUI::format(buffer_str, get_time_dhms(82799)).c_str()).x, 0.)); + ImGuiPureWrap::end(); + } +} + + + void GLCanvas3D::_render_sla_slices() { if (!m_use_clipping_planes || current_printer_technology() != ptSLA) @@ -6261,6 +6295,13 @@ void GLCanvas3D::_render_sla_slices() // nothing to render, return return; + if (print->finished()) { + double slider_width = 0.; + if (const Preview* preview = dynamic_cast(m_canvas->GetParent())) + slider_width = preview->get_layers_slider_width(); + render_sla_layer_legend(*print, m_layer_slider_index, get_canvas_size().get_width() - slider_width); + } + double clip_min_z = -m_clipping_planes[0].get_data()[3]; double clip_max_z = m_clipping_planes[1].get_data()[3]; for (unsigned int i = 0; i < (unsigned int)print_objects.size(); ++i) { diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 3975b02b08..783feb3a16 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -501,6 +501,7 @@ private: ClippingPlane m_camera_clipping_plane; bool m_use_clipping_planes; std::array m_sla_caps; + int m_layer_slider_index = -1; std::string m_sidebar_field; // when true renders an extra frame by not resetting m_dirty to false // see request_extra_frame() @@ -763,6 +764,8 @@ public: void bed_shape_changed(); + void set_layer_slider_index(int i) { m_layer_slider_index = i; } + void set_clipping_plane(unsigned int id, const ClippingPlane& plane) { if (id < 2) { m_clipping_planes[id] = plane; diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index ddc66e93dc..64afe001d1 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1383,7 +1383,7 @@ bool GUI_App::on_init_inner() mainframe->select_tab(size_t(0)); sidebar().obj_list()->init_objects(); // propagate model objects to object list -// update_mode(); // !!! do that later + update_mode(); // mode sizer doesn't exist anymore, so we came update mode here, before load_current_presets SetTopWindow(mainframe); plater_->init_notification_manager(); diff --git a/src/slic3r/GUI/GUI_Preview.cpp b/src/slic3r/GUI/GUI_Preview.cpp index c66763ede8..c36e780c4e 100644 --- a/src/slic3r/GUI/GUI_Preview.cpp +++ b/src/slic3r/GUI/GUI_Preview.cpp @@ -328,14 +328,14 @@ void Preview::render_sliders(GLCanvas3D& canvas) m_moves_slider->Render(canvas_width, canvas_height, extra_scale); } -float Preview::get_moves_slider_height() +float Preview::get_moves_slider_height() const { if (m_moves_slider && m_moves_slider->IsShown()) return m_moves_slider->GetHeight(); return 0.0f; } -float Preview::get_layers_slider_width() +float Preview::get_layers_slider_width() const { if (m_layers_slider && m_layers_slider->IsShown()) return m_layers_slider->GetWidth(); @@ -629,7 +629,7 @@ void Preview::update_layers_slider(const std::vector& layers_z, bool kee bool sequential_print = wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_bool("complete_objects"); m_layers_slider->SetDrawMode(sla_print_technology, sequential_print); if (sla_print_technology) - m_layers_slider->SetLayersTimes(plater->sla_print().print_statistics().layers_times); + m_layers_slider->SetLayersTimes(plater->sla_print().print_statistics().layers_times_running_total); else m_layers_slider->SetLayersTimes(m_canvas->get_gcode_layers_times_cache(), m_gcode_result->print_statistics.modes.front().time); @@ -1037,6 +1037,7 @@ void Preview::on_layers_slider_scroll_changed() else if (tech == ptSLA) { m_canvas->set_clipping_plane(0, ClippingPlane(Vec3d::UnitZ(), -m_layers_slider->GetLowerValue())); m_canvas->set_clipping_plane(1, ClippingPlane(-Vec3d::UnitZ(), m_layers_slider->GetHigherValue())); + m_canvas->set_layer_slider_index(m_layers_slider->GetHigherPos()); m_canvas->render(); } } diff --git a/src/slic3r/GUI/GUI_Preview.hpp b/src/slic3r/GUI/GUI_Preview.hpp index 9d8f85304d..35f4d2bbe2 100644 --- a/src/slic3r/GUI/GUI_Preview.hpp +++ b/src/slic3r/GUI/GUI_Preview.hpp @@ -136,8 +136,8 @@ public: void msw_rescale(); void render_sliders(GLCanvas3D& canvas); - float get_layers_slider_width(); - float get_moves_slider_height(); + float get_layers_slider_width() const; + float get_moves_slider_height() const; bool is_loaded() const { return m_loaded; } diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index 5577c98352..eed3551ee6 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -80,7 +80,8 @@ const t_field& OptionsGroup::build_field(const t_config_option_key& id, const Co m_fields.emplace(id, SpinCtrl::Create(this->ctrl_parent(), opt, id)); break; case coEnum: - m_fields.emplace(id, Choice::Create(this->ctrl_parent(), opt, id)); + case coEnums: + m_fields.emplace(id, Choice::Create(this->ctrl_parent(), opt, id)); break; case coPoints: m_fields.emplace(id, PointCtrl::Create(this->ctrl_parent(), opt, id)); @@ -239,6 +240,10 @@ void OptionsGroup::change_opt_value(DynamicPrintConfig& config, const t_config_o config.set_key_value(opt_key, opt); } break; + case coEnums: { + ConfigOptionEnumsGeneric* vec_new = new ConfigOptionEnumsGeneric(1, boost::any_cast(value));; + config.option(opt_key)->set_at(vec_new, opt_index, 0); + break; } case coPoints: { if (opt_key == "bed_shape") { config.option(opt_key)->values = boost::any_cast>(value); @@ -816,7 +821,7 @@ void ConfigOptionsGroup::Hide() void ConfigOptionsGroup::Show(const bool show) { - sizer->ShowItems(show); + if (sizer) sizer->ShowItems(show); #if 0//#ifdef __WXGTK__ m_panel->Show(show); m_grid_sizer->Show(show); @@ -1101,6 +1106,9 @@ boost::any ConfigOptionsGroup::get_config_value(const DynamicPrintConfig& config case coEnum: ret = config.option(opt_key)->getInt(); break; + case coEnums: + ret = config.option(opt_key)->getInts()[idx]; + break; case coPoints: if (opt_key == "bed_shape") ret = config.option(opt_key)->values; diff --git a/src/slic3r/GUI/Search.cpp b/src/slic3r/GUI/Search.cpp index d92f5cf2eb..d16e784c1b 100644 --- a/src/slic3r/GUI/Search.cpp +++ b/src/slic3r/GUI/Search.cpp @@ -99,8 +99,11 @@ void OptionsSearcher::append_options(DynamicPrintConfig* config, Preset::Type ty wxString suffix; wxString suffix_local; - if (gc.category == "Machine limits") { - suffix = id == 1 ? L("Stealth") : L("Normal"); + if (gc.category == "Machine limits" || gc.category == "Material printing profile") { + if (gc.category == "Machine limits") + suffix = id == 1 ? L("Stealth") : L("Normal"); + else + suffix = id == 1 ? L("Above") : L("Below"); suffix_local = " " + _(suffix); suffix = " " + suffix; } @@ -124,7 +127,7 @@ void OptionsSearcher::append_options(DynamicPrintConfig* config, Preset::Type ty int cnt = 0; - if ( type != Preset::TYPE_FILAMENT && type != Preset::TYPE_SLA_MATERIAL && !PresetCollection::is_independent_from_extruder_number_option(opt_key) ) + if ( type != Preset::TYPE_FILAMENT && !PresetCollection::is_independent_from_extruder_number_option(opt_key)) switch (config->option(opt_key)->type()) { case coInts: change_opt_key(opt_key, config, cnt); break; @@ -134,6 +137,8 @@ void OptionsSearcher::append_options(DynamicPrintConfig* config, Preset::Type ty case coPercents:change_opt_key(opt_key, config, cnt); break; case coPoints: change_opt_key(opt_key, config, cnt); break; case coFloatsOrPercents: change_opt_key(opt_key, config, cnt); break; + case coEnums: change_opt_key(opt_key, config, cnt); break; + default: break; } diff --git a/src/slic3r/GUI/Sidebar.cpp b/src/slic3r/GUI/Sidebar.cpp index 0340319bfb..658881ad8e 100644 --- a/src/slic3r/GUI/Sidebar.cpp +++ b/src/slic3r/GUI/Sidebar.cpp @@ -937,7 +937,13 @@ void Sidebar::update_sliced_info_sizer() } m_sliced_info->SetTextAndShow(siCost, str_total_cost, "Cost"); - wxString t_est = std::isnan(ps.estimated_print_time) ? "N/A" : from_u8(short_time_ui(get_time_dhms(float(ps.estimated_print_time)))); + wxString t_est = "N/A"; + if (! std::isnan(ps.estimated_print_time)) { + t_est = from_u8(short_time_ui(get_time_dhms(float(ps.estimated_print_time)))); + if (ps.estimated_print_time_tolerance > 0.) + t_est += from_u8(" \u00B1 ") + from_u8(short_time_ui(get_time_dhms(float(ps.estimated_print_time_tolerance)))); + } + m_sliced_info->SetTextAndShow(siEstimatedTime, t_est, _L("Estimated printing time") + ":"); m_plater->get_notification_manager()->set_slicing_complete_print_time(_u8L("Estimated printing time") + ": " + into_u8(t_est), m_plater->is_sidebar_collapsed()); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index c70b940605..657123fd3c 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -669,7 +669,7 @@ void Tab::init_options_list() m_options_list.clear(); for (const std::string& opt_key : m_config->keys()) - emplace_option(opt_key, m_type != Preset::TYPE_FILAMENT && m_type != Preset::TYPE_SLA_MATERIAL && !PresetCollection::is_independent_from_extruder_number_option(opt_key)); + emplace_option(opt_key, m_type != Preset::TYPE_FILAMENT && !PresetCollection::is_independent_from_extruder_number_option(opt_key)); } template @@ -692,6 +692,7 @@ void Tab::emplace_option(const std::string& opt_key, bool respect_vec_values/* = case coPercents:add_correct_opts_to_options_list(opt_key, m_options_list, this, m_opt_status_value); break; case coPoints: add_correct_opts_to_options_list(opt_key, m_options_list, this, m_opt_status_value); break; case coFloatsOrPercents: add_correct_opts_to_options_list(opt_key, m_options_list, this, m_opt_status_value); break; + case coEnums: add_correct_opts_to_options_list(opt_key, m_options_list, this, m_opt_status_value); break; default: m_options_list.emplace(opt_key, m_opt_status_value); break; } } @@ -906,6 +907,7 @@ void Tab::update_mode() m_mode = wxGetApp().get_mode(); update_visibility(); + update_sla_prusa_specific_visibility(); update_changed_tree_ui(); } @@ -2937,7 +2939,7 @@ void TabPrinter::build_sla() line.append_option(optgroup->get_option("slow_tilt_time")); line.append_option(optgroup->get_option("high_viscosity_tilt_time")); optgroup->append_line(line); - optgroup->append_single_option_line("area_fill"); +// optgroup->append_single_option_line("area_fill"); optgroup = page->new_optgroup(L("Corrections")); line = Line{ m_config->def()->get("relative_correction")->full_label, "" }; @@ -3022,6 +3024,29 @@ void TabPrinter::append_option_line(ConfigOptionsGroupShp optgroup, const std::s optgroup->append_line(line); } +// Legend for OptionsGroups column's name tooltip +static void create_legend(Slic3r::GUI::PageShp page, const std::vector>& columns, ConfigOptionMode mode, bool is_wider = false) +{ + auto optgroup = page->new_optgroup(""); + auto line = Line{ "", "" }; + + ConfigOptionDef def; + def.type = coString; + def.width = is_wider ? Field::def_width_wider() : Field::def_width(); + def.gui_type = ConfigOptionDef::GUIType::legend; + def.mode = mode; + + for (auto& [name, tooltip] : columns) { + def.tooltip = tooltip; + def.set_default_value(new ConfigOptionString{ into_u8(_(name)) }); + + auto option = Option(def, name + "_legend"); + line.append_option(option); + } + + optgroup->append_line(line); +} + PageShp TabPrinter::build_kinematics_page() { auto page = add_options_page(L("Machine limits"), "cog", true); @@ -3059,27 +3084,12 @@ PageShp TabPrinter::build_kinematics_page() }; if (m_use_silent_mode) { - // Legend for OptionsGroups - auto optgroup = page->new_optgroup(""); - auto line = Line{ "", "" }; + std::vector> legend_columns = { + {L("Normal"), L("Values in this column are for Normal mode")}, + {L("Stealth"), L("Values in this column are for Stealth mode")} + }; - ConfigOptionDef def; - def.type = coString; - def.width = Field::def_width(); - def.gui_type = ConfigOptionDef::GUIType::legend; - def.mode = comAdvanced; - def.tooltip = L("Values in this column are for Normal mode"); - def.set_default_value(new ConfigOptionString{ _(L("Normal")).ToUTF8().data() }); - - auto option = Option(def, "full_power_legend"); - line.append_option(option); - - def.tooltip = L("Values in this column are for Stealth mode"); - def.set_default_value(new ConfigOptionString{ _(L("Stealth")).ToUTF8().data() }); - option = Option(def, "silent_legend"); - line.append_option(option); - - optgroup->append_line(line); + create_legend(page, legend_columns, comAdvanced); } const std::vector axes{ "x", "y", "z", "e" }; @@ -3606,8 +3616,15 @@ void TabPrinter::update_fff() toggle_options(); } +bool Tab::is_prusa_printer() const +{ + std::string printer_model = m_preset_bundle->printers.get_edited_preset().config.opt_string("printer_model"); + return printer_model == "SL1" || printer_model == "SL1S" || printer_model == "M1"; +} + void TabPrinter::update_sla() -{ ; } +{ +} void Tab::update_ui_items_related_on_parent_preset(const Preset* selected_preset_parent) { @@ -3695,6 +3712,7 @@ void Tab::load_current_preset() m_opt_status_value = (m_presets->get_selected_preset_parent() ? osSystemValue : 0) | osInitValue; init_options_list(); update_visibility(); + update_sla_prusa_specific_visibility(); update_changed_ui(); } #if 0 @@ -4049,6 +4067,7 @@ void Tab::activate_selected_page(std::function throw_if_canceled) this->compatible_widget_reload(m_compatible_prints); } + update_sla_prusa_specific_visibility(); update_changed_ui(); update_description_lines(); toggle_options(); @@ -4965,6 +4984,17 @@ bool TabPrinter::apply_extruder_cnt_from_cache() return false; } +void TabPrinter::update_sla_prusa_specific_visibility() +{ + if (m_active_page && m_active_page->title() == "General") { + auto og_it = std::find_if(m_active_page->m_optgroups.begin(), m_active_page->m_optgroups.end(), [](const ConfigOptionsGroupShp og) { return og->title == "Tilt"; }); + if (og_it != m_active_page->m_optgroups.end()) { + og_it->get()->Show(m_mode == comExpert && !is_prusa_printer()); + Layout(); + } + } +} + bool Tab::validate_custom_gcodes() { if (m_type != Preset::TYPE_FILAMENT && @@ -5346,17 +5376,101 @@ void TabSLAMaterial::build() build_preset_description_line(optgroup.get()); page = add_options_page(L("Material printing profile"), "note"); + +#if 1 + optgroup = page->new_optgroup(L("Material printing profile")); + optgroup->append_single_option_line("material_print_speed"); + + optgroup = page->new_optgroup(L("Tilt")); + optgroup->append_single_option_line("area_fill"); + +#else optgroup = page->new_optgroup(L("Material printing profile")); option = optgroup->get_option("material_print_speed"); optgroup->append_single_option_line(option); + + optgroup->append_single_option_line("area_fill"); +#endif + + build_tilt_group(page); +} + +static void append_tilt_options_line(ConfigOptionsGroupShp optgroup, const std::string opt_key) +{ + auto option = optgroup->get_option(opt_key, 0); + auto line = Line{ option.opt.full_label, "" }; + option.opt.width = Field::def_width/*_wider*/(); + line.append_option(option); + + option = optgroup->get_option(opt_key, 1); + option.opt.width = Field::def_width/*_wider*/(); + line.append_option(option); + + optgroup->append_line(line); +} + +void TabSLAMaterial::build_tilt_group(Slic3r::GUI::PageShp page) +{ + // Legend + std::vector> legend_columns = { + // TRN: This is a label of a column of parameters in settings to be used when the area is below certain threshold. + {L("Below"), + L("Values in this column are applied when layer area is smaller than area_fill.")}, + // TRN: This is a label of a column of parameters in settings to be used when the area is above certain threshold. + {L("Above"), + L("Values in this column are applied when layer area is larger than area_fill.")}, + }; + create_legend(page, legend_columns, comExpert/*, true*/); + + // TRN: 'Profile' in this context denotes a group of parameters used to configure + // layer separation procedure for SLA printers. + auto optgroup = page->new_optgroup(L("Profile settings")); + optgroup->on_change = [this, optgroup](const t_config_option_key& key, boost::any value) + { + if (key.find_first_of("use_tilt") == 0) + toggle_tilt_options(key == "use_tilt#0"); + + update_dirty(); + update(); + }; + + for (const std::string& opt_key : tilt_options()) + append_tilt_options_line(optgroup, opt_key); +} + +std::vector disable_tilt_options = { + "tilt_down_initial_speed" + ,"tilt_down_offset_steps" + ,"tilt_down_offset_delay" + ,"tilt_down_finish_speed" + ,"tilt_down_cycles" + ,"tilt_down_delay" + ,"tilt_up_initial_speed" + ,"tilt_up_offset_steps" + ,"tilt_up_offset_delay" + ,"tilt_up_finish_speed" + ,"tilt_up_cycles" + ,"tilt_up_delay" +}; + +void TabSLAMaterial::toggle_tilt_options(bool is_above) +{ + if (m_active_page && m_active_page->title() == "Material printing profile") + { + int column_id = is_above ? 0 : 1; + auto optgroup = m_active_page->get_optgroup("Profile settings"); + bool use_tilt = boost::any_cast(optgroup->get_config_value(*m_config, "use_tilt", column_id)); + + for (const std::string& opt_key : disable_tilt_options) { + auto field = optgroup->get_fieldc(opt_key, column_id); + if (field != nullptr) + field->toggle(use_tilt); + } + } } void TabSLAMaterial::toggle_options() { - const Preset ¤t_printer = wxGetApp().preset_bundle->printers.get_edited_preset(); - std::string model = current_printer.config.opt_string("printer_model"); - m_config_manipulation.toggle_field("material_print_speed", model != "SL1"); - if (m_active_page->title() == "Material Overrides") update_material_overrides_page(); } @@ -5380,6 +5494,33 @@ void TabSLAMaterial::update() wxGetApp().mainframe->on_config_changed(m_config); } +void TabSLAMaterial::update_sla_prusa_specific_visibility() +{ + if (m_active_page && m_active_page->title() == "Material printing profile") { + for (auto& title : { "", "Profile settings" }) { + auto og_it = std::find_if(m_active_page->m_optgroups.begin(), m_active_page->m_optgroups.end(), + [title](const ConfigOptionsGroupShp og) { return og->title == title; }); + if (og_it != m_active_page->m_optgroups.end()) + og_it->get()->Show(m_mode >= comAdvanced && is_prusa_printer()); + } + + auto og_it = std::find_if(m_active_page->m_optgroups.begin(), m_active_page->m_optgroups.end(), + [](const ConfigOptionsGroupShp og) { return og->title == "Material printing profile"; }); + if (og_it != m_active_page->m_optgroups.end()) + og_it->get()->Show(m_mode >= comAdvanced && !is_prusa_printer()); + + Layout(); + } +} + +void TabSLAMaterial::clear_pages() +{ + Tab::clear_pages(); + + for (auto& over_opt : m_overrides_options) + over_opt.second = nullptr; +} + void TabSLAMaterial::msw_rescale() { for (const auto& over_opt : m_overrides_options) @@ -5465,10 +5606,6 @@ static std::vector get_override_opt_kyes_for_line(const std::string for (auto& prefix : { "", "branching" }) opt_keys.push_back(preprefix + prefix + key); } - else if (key == "relative_correction") { - for (auto& axis : { "x", "y", "z" }) - opt_keys.push_back(preprefix + key + "_" + char(axis[0])); - } else opt_keys.push_back(preprefix + key); @@ -5481,17 +5618,7 @@ void TabSLAMaterial::create_line_with_near_label_widget(ConfigOptionsGroupShp op add_options_into_line(optgroup, { {"", L("Default")}, {"branching", L("Branching")} }, key, "material_ow_"); else { const std::string opt_key = std::string("material_ow_") + key; - if (key == "relative_correction") { - Line line = Line{ m_preset_bundle->printers.get_edited_preset().config.def()->get("relative_correction")->full_label, "" }; - for (auto& axis : { "X", "Y", "Z" }) { - auto opt = optgroup->get_option(opt_key + "_" + char(std::tolower(axis[0]))); - opt.opt.label = axis; - line.append_option(opt); - } - optgroup->append_line(line); - } - else - optgroup->append_single_option_line(opt_key); + optgroup->append_single_option_line(opt_key); } Line* line = optgroup->get_last_line(); @@ -5537,7 +5664,7 @@ std::vector>> material_overrides "support_points_density_relative" }}, {"Corrections", { - "relative_correction", + "absolute_correction", "elefant_foot_compensation" }} }; diff --git a/src/slic3r/GUI/Tab.hpp b/src/slic3r/GUI/Tab.hpp index 639e75ffcd..277c72cb85 100644 --- a/src/slic3r/GUI/Tab.hpp +++ b/src/slic3r/GUI/Tab.hpp @@ -377,6 +377,7 @@ public: void update_mode(); void update_mode_markers(); void update_visibility(); + virtual void update_sla_prusa_specific_visibility() {} virtual void msw_rescale(); virtual void sys_color_changed(); Field* get_field(const t_config_option_key& opt_key, int opt_index = -1) const; @@ -406,11 +407,11 @@ public: static bool validate_custom_gcode(const wxString& title, const std::string& gcode); bool validate_custom_gcodes(); bool validate_custom_gcodes_was_shown{ false }; + bool is_prusa_printer() const; void edit_custom_gcode(const t_config_option_key& opt_key); virtual const std::string& get_custom_gcode(const t_config_option_key& opt_key); virtual void set_custom_gcode(const t_config_option_key& opt_key, const std::string& value); - protected: void create_line_with_widget(ConfigOptionsGroup* optgroup, const std::string& opt_key, const std::string& path, widget_t widget); wxSizer* compatible_widget_create(wxWindow* parent, PresetDependencies &deps); @@ -559,6 +560,7 @@ public: wxSizer* create_bed_shape_widget(wxWindow* parent); void cache_extruder_cnt(const DynamicPrintConfig* config = nullptr); bool apply_extruder_cnt_from_cache(); + void update_sla_prusa_specific_visibility() override; }; class TabSLAMaterial : public Tab @@ -575,11 +577,15 @@ public: ~TabSLAMaterial() {} void build() override; + void build_tilt_group(Slic3r::GUI::PageShp page); + void toggle_tilt_options(bool is_above); void toggle_options() override; void update() override; + void clear_pages() override; void msw_rescale() override; void sys_color_changed() override; bool supports_printer_technology(const PrinterTechnology tech) const override { return tech == ptSLA; } + void update_sla_prusa_specific_visibility() override; }; class TabSLAPrint : public Tab diff --git a/src/slic3r/GUI/UnsavedChangesDialog.cpp b/src/slic3r/GUI/UnsavedChangesDialog.cpp index 9c23ca5b6a..ce4a73e415 100644 --- a/src/slic3r/GUI/UnsavedChangesDialog.cpp +++ b/src/slic3r/GUI/UnsavedChangesDialog.cpp @@ -1223,6 +1223,14 @@ static wxString get_string_value(std::string opt_key, const DynamicPrintConfig& auto opt = config.option_def(opt_key)->enum_def->enum_to_label(config.option(opt_key)->getInt()); return opt.has_value() ? _(from_u8(*opt)) : _L("Undef"); } + case coEnums: { + auto values = config.option(opt_key)->getInts(); + if (opt_idx < values.size()) { + auto opt = config.option_def(opt_key)->enum_def->enum_to_label(values[opt_idx]); + return opt.has_value() ? _(from_u8(*opt)) : _L("Undef"); + } + return _L("Undef"); + } case coPoints: { if (opt_key == "bed_shape") { BedShape shape(*config.option(opt_key)); @@ -1313,7 +1321,7 @@ void UnsavedChangesDialog::update_tree(Preset::Type type, PresetCollection* pres m_tree->model->AddPreset(type, from_u8(presets->get_edited_preset().name), old_pt, from_u8(new_selected_preset)); // Collect dirty options. - const bool deep_compare = type != Preset::TYPE_FILAMENT && type != Preset::TYPE_SLA_MATERIAL; + const bool deep_compare = type != Preset::TYPE_FILAMENT; auto dirty_options = presets->current_dirty_options(deep_compare); // process changes of extruders count