Merge branch 'master_250'
This commit is contained in:
commit
d7a34f7e40
36 changed files with 1226 additions and 826 deletions
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-08-12 10:25+0200\n"
|
||||
"PO-Revision-Date: 2022-07-22 21:49+0800\n"
|
||||
"PO-Revision-Date: 2022-08-22 12:37+0800\n"
|
||||
"Last-Translator: Bral@qq.com\n"
|
||||
"Language-Team: \n"
|
||||
"Language: zh_CN\n"
|
||||
|
@ -3291,11 +3291,11 @@ msgstr ""
|
|||
|
||||
#: src/slic3r/GUI/GUI_App.cpp:980
|
||||
msgid "Import"
|
||||
msgstr "进口"
|
||||
msgstr "导入"
|
||||
|
||||
#: src/slic3r/GUI/GUI_App.cpp:981
|
||||
msgid "Don't import"
|
||||
msgstr "不要进口"
|
||||
msgstr "不要导入"
|
||||
|
||||
#: src/slic3r/GUI/GUI_App.cpp:989
|
||||
msgid "Continue and import newer configuration?"
|
||||
|
@ -13639,6 +13639,8 @@ msgid ""
|
|||
"perimeters with variable extrusion width. This setting also affects the "
|
||||
"Concentric infill."
|
||||
msgstr ""
|
||||
"经典轮廓生成器产生具有恒定挤出宽度的轮廓,并且对于非常薄的区域使用间隙填充。 "
|
||||
"Arachne 引擎产生具有可变挤出宽度的轮廓。这个设置也会影响回环填充。"
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:3074
|
||||
msgid "Classic"
|
||||
|
@ -13659,6 +13661,8 @@ msgid ""
|
|||
"perimeter segments. If expressed as a percentage (for example 100%), it will "
|
||||
"be computed based on the nozzle diameter."
|
||||
msgstr ""
|
||||
"当随着零件变薄而在不同数量的轮廓之间过渡时,会分配出一定的空间来分割或连接轮"
|
||||
"廓段。如果用百分比表示(例如 100%),它将根据喷嘴直径计算出来。"
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:3091
|
||||
msgid "Perimeter transitioning filter margin"
|
||||
|
@ -13721,6 +13725,9 @@ msgid ""
|
|||
"a percentage (for example 25%), it will be computed based on the nozzle "
|
||||
"diameter."
|
||||
msgstr ""
|
||||
"薄型特征的最小厚度。比这个值薄的模型特征将不被打印,而比最小特征尺寸厚的特征"
|
||||
"将被加宽到最小轮廓的宽度。如果以百分比表示(例如 25%),它将根据喷嘴直径计"
|
||||
"算。"
|
||||
|
||||
#: src/libslic3r/PrintConfig.cpp:3140
|
||||
msgid "Minimum perimeter width"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
min_slic3r_version = 2.5.0-alpha0
|
||||
0.2.1 Added Ender 3 Neo and Ender 3 S1 Plus. Various updates.
|
||||
0.2.0 Added alternative nozzle support
|
||||
0.1.5 Added Ender-3 S1 Pro
|
||||
min_slic3r_version = 2.4.1
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
name = Creality
|
||||
# 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 = 0.2.0
|
||||
config_version = 0.2.1
|
||||
# Where to get the updates from?
|
||||
config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/Creality/
|
||||
# changelog_url = https://files.prusa3d.com/?latest=slicer-profiles&lng=%1%
|
||||
|
@ -41,6 +41,15 @@ bed_model = ender3_bed.stl
|
|||
bed_texture = ender3.svg
|
||||
default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Creality PLA @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY; AzureFilm PLA @CREALITY; Devil Design PLA @CREALITY; Devil Design PLA Matt @CREALITY; Devil Design PLA Galaxy @CREALITY; Extrudr PLA NX2 @CREALITY; Real Filament PLA @CREALITY; Velleman PLA @CREALITY; 3DJAKE ecoPLA @CREALITY; 3DJAKE ecoPLA Matt @CREALITY; 3DJAKE ecoPLA Tough @CREALITY; 123-3D Jupiter PLA @CREALITY; Verbatim PLA @CREALITY
|
||||
|
||||
[printer_model:ENDER3NEO]
|
||||
name = Creality Ender-3 Neo
|
||||
variants = 0.4; 0.3; 0.5; 0.6
|
||||
technology = FFF
|
||||
family = ENDER
|
||||
bed_model = ender3_bed.stl
|
||||
bed_texture = ender3.svg
|
||||
default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Creality PLA @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY; AzureFilm PLA @CREALITY; Devil Design PLA @CREALITY; Devil Design PLA Matt @CREALITY; Devil Design PLA Galaxy @CREALITY; Extrudr PLA NX2 @CREALITY; Real Filament PLA @CREALITY; Velleman PLA @CREALITY; 3DJAKE ecoPLA @CREALITY; 3DJAKE ecoPLA Matt @CREALITY; 3DJAKE ecoPLA Tough @CREALITY; 123-3D Jupiter PLA @CREALITY; Verbatim PLA @CREALITY
|
||||
|
||||
[printer_model:ENDER3V2]
|
||||
name = Creality Ender-3 V2
|
||||
variants = 0.4; 0.3; 0.5; 0.6
|
||||
|
@ -77,6 +86,15 @@ bed_model = ender3v2_bed.stl
|
|||
bed_texture = ender3v2.svg
|
||||
default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Creality PLA @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY; AzureFilm PLA @CREALITY; Devil Design PLA @CREALITY; Devil Design PLA Matt @CREALITY; Devil Design PLA Galaxy @CREALITY; Extrudr PLA NX2 @CREALITY; Real Filament PLA @CREALITY; Velleman PLA @CREALITY; 3DJAKE ecoPLA @CREALITY; 3DJAKE ecoPLA Matt @CREALITY; 3DJAKE ecoPLA Tough @CREALITY; 123-3D Jupiter PLA @CREALITY; Verbatim PLA @CREALITY
|
||||
|
||||
[printer_model:ENDER3S1PLUS]
|
||||
name = Creality Ender-3 S1 Plus
|
||||
variants = 0.4; 0.3; 0.5; 0.6
|
||||
technology = FFF
|
||||
family = ENDER
|
||||
bed_model = cr10v2_bed.stl
|
||||
bed_texture = cr10spro.svg
|
||||
default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @CREALITY; Creality PLA @CREALITY; Prusament PLA @CREALITY; Prusament PETG @CREALITY; AzureFilm PLA @CREALITY; Devil Design PLA @CREALITY; Devil Design PLA Matt @CREALITY; Devil Design PLA Galaxy @CREALITY; Extrudr PLA NX2 @CREALITY; Real Filament PLA @CREALITY; Velleman PLA @CREALITY; 3DJAKE ecoPLA @CREALITY; 3DJAKE ecoPLA Matt @CREALITY; 3DJAKE ecoPLA Tough @CREALITY; 123-3D Jupiter PLA @CREALITY; Verbatim PLA @CREALITY
|
||||
|
||||
[printer_model:ENDER3MAX]
|
||||
name = Creality Ender-3 Max
|
||||
variants = 0.4; 0.3; 0.5; 0.6
|
||||
|
@ -531,11 +549,11 @@ support_material_spacing = 1
|
|||
first_layer_height = 0.2
|
||||
extrusion_width = 0.33
|
||||
external_perimeter_extrusion_width = 0.31
|
||||
first_layer_extrusion_width = 0.33
|
||||
first_layer_extrusion_width = 0.31
|
||||
infill_extrusion_width = 0.33
|
||||
perimeter_extrusion_width = 0.33
|
||||
solid_infill_extrusion_width = 0.33
|
||||
top_infill_extrusion_width = 0.33
|
||||
top_infill_extrusion_width = 0.30
|
||||
support_material_extrusion_width = 0.27
|
||||
|
||||
[print:*0.4nozzle*]
|
||||
|
@ -545,11 +563,11 @@ support_material_spacing = 1
|
|||
first_layer_height = 0.2
|
||||
extrusion_width = 0.44
|
||||
external_perimeter_extrusion_width = 0.42
|
||||
first_layer_extrusion_width = 0.44
|
||||
first_layer_extrusion_width = 0.42
|
||||
infill_extrusion_width = 0.44
|
||||
perimeter_extrusion_width = 0.44
|
||||
solid_infill_extrusion_width = 0.44
|
||||
top_infill_extrusion_width = 0.44
|
||||
top_infill_extrusion_width = 0.40
|
||||
support_material_extrusion_width = 0.36
|
||||
|
||||
[print:*0.5nozzle*]
|
||||
|
@ -559,11 +577,11 @@ support_material_spacing = 1.1
|
|||
first_layer_height = 0.2
|
||||
extrusion_width = 0.55
|
||||
external_perimeter_extrusion_width = 0.52
|
||||
first_layer_extrusion_width = 0.55
|
||||
first_layer_extrusion_width = 0.52
|
||||
infill_extrusion_width = 0.55
|
||||
perimeter_extrusion_width = 0.55
|
||||
solid_infill_extrusion_width = 0.55
|
||||
top_infill_extrusion_width = 0.55
|
||||
top_infill_extrusion_width = 0.50
|
||||
support_material_extrusion_width = 0.45
|
||||
|
||||
[print:*0.6nozzle*]
|
||||
|
@ -573,11 +591,11 @@ support_material_spacing = 1.2
|
|||
first_layer_height = 0.3
|
||||
extrusion_width = 0.66
|
||||
external_perimeter_extrusion_width = 0.63
|
||||
first_layer_extrusion_width = 0.66
|
||||
first_layer_extrusion_width = 0.63
|
||||
infill_extrusion_width = 0.66
|
||||
perimeter_extrusion_width = 0.66
|
||||
solid_infill_extrusion_width = 0.66
|
||||
top_infill_extrusion_width = 0.66
|
||||
top_infill_extrusion_width = 0.60
|
||||
support_material_extrusion_width = 0.54
|
||||
|
||||
|
||||
|
@ -1268,6 +1286,25 @@ inherits = *ENDER3PRO*; *0.6nozzle*
|
|||
|
||||
|
||||
|
||||
[printer:*ENDER3NEO*]
|
||||
inherits = *ENDER3*; *fastabl*
|
||||
printer_model = ENDER3NEO
|
||||
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_CREALITY\nPRINTER_MODEL_ENDER3NEO\nPRINTER_HAS_BOWDEN
|
||||
|
||||
[printer:Creality Ender-3 Neo (0.3 mm nozzle)]
|
||||
inherits = *ENDER3NEO*; *0.3nozzle*
|
||||
|
||||
[printer:Creality Ender-3 Neo (0.4 mm nozzle)]
|
||||
inherits = *ENDER3NEO*; *0.4nozzle*
|
||||
|
||||
[printer:Creality Ender-3 Neo (0.5 mm nozzle)]
|
||||
inherits = *ENDER3NEO*; *0.5nozzle*
|
||||
|
||||
[printer:Creality Ender-3 Neo (0.6 mm nozzle)]
|
||||
inherits = *ENDER3NEO*; *0.6nozzle*
|
||||
|
||||
|
||||
|
||||
[printer:*ENDER3V2*]
|
||||
inherits = *common*; *bowden*; *pauseprint*
|
||||
bed_shape = 5x0,215x0,215x220,5x220
|
||||
|
@ -1312,7 +1349,7 @@ inherits = *ENDER3V2NEO*; *0.6nozzle*
|
|||
|
||||
|
||||
[printer:*ENDER3S1*]
|
||||
inherits = *common*; *bowden*; *spriteextruder*; *pauseprint*
|
||||
inherits = *common*; *fastabl*; *spriteextruder*; *pauseprint*
|
||||
bed_shape = 5x0,215x0,215x220,5x220
|
||||
max_print_height = 270
|
||||
printer_model = ENDER3S1
|
||||
|
@ -1334,7 +1371,7 @@ inherits = *ENDER3S1*; *0.6nozzle*
|
|||
|
||||
|
||||
[printer:*ENDER3S1PRO*]
|
||||
inherits = *common*; *bowden*; *spriteextruder*; *pauseprint*
|
||||
inherits = *common*; *fastabl*; *spriteextruder*; *pauseprint*
|
||||
bed_shape = 5x0,215x0,215x220,5x220
|
||||
max_print_height = 270
|
||||
printer_model = ENDER3S1PRO
|
||||
|
@ -1355,6 +1392,26 @@ inherits = *ENDER3S1PRO*; *0.6nozzle*
|
|||
|
||||
|
||||
|
||||
[printer:*ENDER3S1PLUS*]
|
||||
inherits = *common*; *slowabl*; *spriteextruder*; *pauseprint*
|
||||
bed_shape = 5x5,295x5,295x295,5x295
|
||||
max_print_height = 300
|
||||
printer_model = ENDER3S1PLUS
|
||||
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_CREALITY\nPRINTER_MODEL_ENDER3S1PLUS
|
||||
|
||||
[printer:Creality Ender-3 S1 Plus (0.3 mm nozzle)]
|
||||
inherits = *ENDER3S1PLUS*; *0.3nozzle*
|
||||
|
||||
[printer:Creality Ender-3 S1 Plus (0.4 mm nozzle)]
|
||||
inherits = *ENDER3S1PLUS*; *0.4nozzle*
|
||||
|
||||
[printer:Creality Ender-3 S1 Plus (0.5 mm nozzle)]
|
||||
inherits = *ENDER3S1PLUS*; *0.5nozzle*
|
||||
|
||||
[printer:Creality Ender-3 S1 Plus (0.6 mm nozzle)]
|
||||
inherits = *ENDER3S1PLUS*; *0.6nozzle*
|
||||
|
||||
|
||||
|
||||
[printer:*ENDER3MAX*]
|
||||
inherits = *common*; *bowdenlong*; *pauseprint*
|
||||
|
@ -1669,7 +1726,7 @@ inherits = *CR10SMART*; *0.6nozzle*
|
|||
|
||||
|
||||
[printer:*CR10SMARTPRO*]
|
||||
inherits = *common*; *bowdenlong*; *slowabl*; *spriteextruder*
|
||||
inherits = *common*; *slowabl*; *spriteextruder*
|
||||
bed_shape = 5x5,295x5,295x295,5x295
|
||||
max_print_height = 400
|
||||
printer_model = CR10SMARTPRO
|
||||
|
|
BIN
resources/profiles/Creality/ENDER3NEO_thumbnail.png
Normal file
BIN
resources/profiles/Creality/ENDER3NEO_thumbnail.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
BIN
resources/profiles/Creality/ENDER3S1PLUS_thumbnail.png
Normal file
BIN
resources/profiles/Creality/ENDER3S1PLUS_thumbnail.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 29 KiB |
|
@ -1,6 +1,10 @@
|
|||
min_slic3r_version = 2.5.0-alpha0
|
||||
1.5.1 Renamed filament type "NYLON" to "PA". Updated Adura X profile. Updated PETG fan settings for Prusa MINI (removed fan ramp up).
|
||||
1.5.0 Updated arachne parameters. Added profiles for Jessie filaments.
|
||||
1.5.0-alpha1 Added filament profile for Prusament PA11 Carbon Fiber. Added profiles for multiple 3D-Fuel filaments.
|
||||
1.5.0-alpha0 Added parameters for Arachne perimeter generator. Changed default seam position. Updated output filename format.
|
||||
min_slic3r_version = 2.4.0-rc
|
||||
1.4.7 Added filament profile for Prusament PA11 Carbon Fiber. Added profiles for multiple 3D-Fuel filaments.
|
||||
1.4.6 Added SLA materials. Updated filament profiles.
|
||||
1.4.5 Added MMU2/S profiles for 0.25mm nozzle. Updated FW version. Enabled g-code thumbnails for MK3 family printers. Updated end g-code.
|
||||
1.4.4 Added multiple Fiberlogy filament profiles. Updated Extrudr filament profiles.
|
||||
|
|
|
@ -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.5.0-alpha0
|
||||
config_version = 1.5.1
|
||||
# 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%
|
||||
|
@ -30,7 +30,7 @@ technology = FFF
|
|||
family = MK3
|
||||
bed_model = mk3_bed.stl
|
||||
bed_texture = mk3.svg
|
||||
default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA; Prusament PC Blend; Prusament PC Blend Carbon Fiber; Prusament PVB
|
||||
default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA; Prusament PC Blend; Prusament PC Blend Carbon Fiber; Prusament PVB; Prusament PA11 Carbon Fiber
|
||||
|
||||
[printer_model:MK3]
|
||||
name = Original Prusa i3 MK3
|
||||
|
@ -39,7 +39,7 @@ technology = FFF
|
|||
family = MK3
|
||||
bed_model = mk3_bed.stl
|
||||
bed_texture = mk3.svg
|
||||
default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA; Prusament PC Blend; Prusament PC Blend Carbon Fiber; Prusament PVB
|
||||
default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA; Prusament PC Blend; Prusament PC Blend Carbon Fiber; Prusament PVB; Prusament PA11 Carbon Fiber
|
||||
|
||||
[printer_model:MK3SMMU2S]
|
||||
name = Original Prusa i3 MK3S && MK3S+ MMU2S
|
||||
|
@ -66,7 +66,7 @@ technology = FFF
|
|||
family = MK2.5
|
||||
bed_model = mk3_bed.stl
|
||||
bed_texture = mk3.svg
|
||||
default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA; Prusament PC Blend; Prusament PC Blend Carbon Fiber; Prusament PVB
|
||||
default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA; Prusament PC Blend; Prusament PC Blend Carbon Fiber; Prusament PVB; Prusament PA11 Carbon Fiber @MK2
|
||||
|
||||
[printer_model:MK2.5]
|
||||
name = Original Prusa i3 MK2.5
|
||||
|
@ -75,7 +75,7 @@ technology = FFF
|
|||
family = MK2.5
|
||||
bed_model = mk3_bed.stl
|
||||
bed_texture = mk3.svg
|
||||
default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA; Prusament PC Blend; Prusament PC Blend Carbon Fiber; Prusament PVB
|
||||
default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA; Prusament PC Blend; Prusament PC Blend Carbon Fiber; Prusament PVB; Prusament PA11 Carbon Fiber @MK2
|
||||
|
||||
[printer_model:MK2.5SMMU2S]
|
||||
name = Original Prusa i3 MK2.5S MMU2S
|
||||
|
@ -102,7 +102,7 @@ technology = FFF
|
|||
family = MK2
|
||||
bed_model = mk2_bed.stl
|
||||
bed_texture = mk2.svg
|
||||
default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA; Prusament PC Blend; Prusament PC Blend Carbon Fiber; Prusament PVB
|
||||
default_materials = Generic PLA; Generic ABS; Generic PETG; Prusament PLA; Prusament PETG; Prusament ASA; Prusament PC Blend; Prusament PC Blend Carbon Fiber; Prusament PVB; Prusament PA11 Carbon Fiber @MK2
|
||||
|
||||
[printer_model:MK2SMM]
|
||||
name = Original Prusa i3 MK2S MMU1
|
||||
|
@ -243,14 +243,11 @@ bottom_solid_min_thickness = 0.5
|
|||
gcode_label_objects = 1
|
||||
infill_anchor = 2.5
|
||||
infill_anchor_max = 12
|
||||
wall_add_middle_threshold = 75%
|
||||
wall_split_middle_threshold = 50%
|
||||
wall_transition_angle = 10
|
||||
wall_transition_filter_deviation = 25%
|
||||
wall_transition_length = 0.4
|
||||
wall_distribution_count = 1
|
||||
min_bead_width = 85%
|
||||
min_feature_size = 0.1
|
||||
|
||||
[print:*MK3*]
|
||||
fill_pattern = grid
|
||||
|
@ -297,14 +294,11 @@ thick_bridges = 0
|
|||
bridge_flow_ratio = 1
|
||||
bridge_speed = 20
|
||||
wipe_tower_bridging = 6
|
||||
wall_add_middle_threshold = 85%
|
||||
wall_split_middle_threshold = 70%
|
||||
wall_transition_angle = 10
|
||||
wall_transition_filter_deviation = 25%
|
||||
wall_transition_length = 0.25
|
||||
wall_distribution_count = 1
|
||||
min_bead_width = 85%
|
||||
min_feature_size = 0.0625
|
||||
|
||||
[print:*0.25nozzleMK3*]
|
||||
inherits = *0.25nozzle*
|
||||
|
@ -353,14 +347,11 @@ bottom_solid_min_thickness = 0.6
|
|||
thick_bridges = 1
|
||||
bridge_flow_ratio = 0.95
|
||||
bridge_speed = 25
|
||||
wall_add_middle_threshold = 85%
|
||||
wall_split_middle_threshold = 70%
|
||||
wall_transition_angle = 10
|
||||
wall_transition_filter_deviation = 25%
|
||||
wall_transition_length = 0.6
|
||||
wall_distribution_count = 1
|
||||
min_bead_width = 85%
|
||||
min_feature_size = 0.15
|
||||
|
||||
[print:*0.6nozzleMK3*]
|
||||
inherits = *0.6nozzle*
|
||||
|
@ -422,14 +413,11 @@ bottom_solid_min_thickness = 0.8
|
|||
single_extruder_multi_material_priming = 0
|
||||
thick_bridges = 1
|
||||
overhangs = 0
|
||||
wall_add_middle_threshold = 85%
|
||||
wall_split_middle_threshold = 70%
|
||||
wall_transition_angle = 10
|
||||
wall_transition_filter_deviation = 25%
|
||||
wall_transition_length = 0.8
|
||||
wall_distribution_count = 1
|
||||
min_bead_width = 85%
|
||||
min_feature_size = 0.2
|
||||
|
||||
[print:*soluble_support*]
|
||||
overhangs = 1
|
||||
|
@ -926,6 +914,7 @@ top_solid_infill_speed = 40
|
|||
fill_pattern = gyroid
|
||||
fill_density = 15%
|
||||
perimeters = 3
|
||||
wipe_tower_bridging = 5
|
||||
|
||||
[print:0.15mm QUALITY @MK3]
|
||||
inherits = *0.15mm*; *MK3*
|
||||
|
@ -1620,9 +1609,9 @@ filament_retract_lift = 0.2
|
|||
compatible_printers_condition = printer_model=="MK2SMM"
|
||||
|
||||
[filament:*PETMINI*]
|
||||
# inherits = *PET*
|
||||
full_fan_speed_layer = 0
|
||||
filament_retract_length = nil
|
||||
filament_retract_speed = 40
|
||||
filament_retract_speed = 45
|
||||
filament_deretract_speed = 25
|
||||
filament_retract_lift = nil
|
||||
filament_retract_before_travel = 1
|
||||
|
@ -1631,9 +1620,9 @@ compatible_printers_condition = printer_model=="MINI"
|
|||
start_filament_gcode = "M900 K{if nozzle_diameter[0]==0.6}0.12{elsif nozzle_diameter[0]==0.8}0.06{else}0.2{endif} ; Filament gcode"
|
||||
|
||||
[filament:*PETMINI06*]
|
||||
# inherits = *PET*
|
||||
full_fan_speed_layer = 0
|
||||
filament_retract_length = nil
|
||||
filament_retract_speed = 40
|
||||
filament_retract_speed = 45
|
||||
filament_deretract_speed = 25
|
||||
filament_retract_lift = nil
|
||||
filament_retract_before_travel = 1
|
||||
|
@ -1642,7 +1631,6 @@ start_filament_gcode = "M900 K0.12 ; Filament gcode"
|
|||
filament_max_volumetric_speed = 13
|
||||
|
||||
[filament:*ABSMINI*]
|
||||
# inherits = *ABS*
|
||||
bed_temperature = 100
|
||||
first_layer_bed_temperature = 100
|
||||
filament_retract_length = 2.7
|
||||
|
@ -2057,6 +2045,28 @@ disable_fan_first_layers = 6
|
|||
compatible_printers_condition = nozzle_diameter[0]>=0.4 and nozzle_diameter[0]!=0.8 and printer_notes=~/.*PRINTER_MODEL_MK(2|2.5).*/ and ! (printer_notes=~/.*PRINTER_MODEL_MK2.5.*/ and single_extruder_multi_material)
|
||||
start_filament_gcode = "M900 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.02{elsif nozzle_diameter[0]==0.6}0.04{else}0.07{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 K24{elsif nozzle_diameter[0]==0.8};{else}M900 K45{endif} ; Filament gcode LA 1.0"
|
||||
|
||||
[filament:Prusament PA11 Carbon Fiber]
|
||||
inherits = Prusament PC Blend Carbon Fiber
|
||||
filament_cost = 151.24
|
||||
filament_density = 1.11
|
||||
filament_type = PA
|
||||
filament_max_volumetric_speed = 6.5
|
||||
extrusion_multiplier = 1.05
|
||||
first_layer_temperature = 275
|
||||
temperature = 285
|
||||
first_layer_bed_temperature = 90
|
||||
bed_temperature = 115
|
||||
fan_below_layer_time = 10
|
||||
compatible_printers_condition = printer_notes!~/.*PRINTER_MODEL_MK(2|2.5).*/ and nozzle_diameter[0]>=0.4 and nozzle_diameter[0]!=0.8 and printer_model!="MINI" and ! single_extruder_multi_material
|
||||
|
||||
[filament:Prusament PA11 Carbon Fiber @MK2]
|
||||
inherits = Prusament PA11 Carbon Fiber
|
||||
first_layer_bed_temperature = 90
|
||||
bed_temperature = 110
|
||||
disable_fan_first_layers = 6
|
||||
compatible_printers_condition = nozzle_diameter[0]>=0.4 and nozzle_diameter[0]!=0.8 and printer_notes=~/.*PRINTER_MODEL_MK(2|2.5).*/ and ! (printer_notes=~/.*PRINTER_MODEL_MK2.5.*/ and single_extruder_multi_material)
|
||||
start_filament_gcode = "M900 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.02{elsif nozzle_diameter[0]==0.6}0.04{else}0.07{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 K24{elsif nozzle_diameter[0]==0.8};{else}M900 K45{endif} ; Filament gcode LA 1.0"
|
||||
|
||||
[filament:Fillamentum CPE]
|
||||
inherits = *PET*
|
||||
filament_vendor = Fillamentum
|
||||
|
@ -2376,10 +2386,10 @@ inherits = *PET*
|
|||
filament_vendor = addnorth
|
||||
filament_cost = 29.99
|
||||
filament_density = 1.27
|
||||
filament_type = NYLON
|
||||
filament_type = PA
|
||||
extrusion_multiplier = 0.98
|
||||
bed_temperature = 60
|
||||
first_layer_bed_temperature = 60
|
||||
bed_temperature = 115
|
||||
first_layer_bed_temperature = 105
|
||||
first_layer_temperature = 265
|
||||
temperature = 270
|
||||
fan_always_on = 0
|
||||
|
@ -2396,7 +2406,7 @@ filament_retract_lift = 0.4
|
|||
filament_max_volumetric_speed = 4
|
||||
start_filament_gcode = "M900 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.02{elsif nozzle_diameter[0]==0.6}0.04{else}0.08{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 K24{elsif nozzle_diameter[0]==0.8};{else}M900 K45{endif} ; Filament gcode LA 1.0"
|
||||
filament_spool_weight = 0
|
||||
compatible_printers_condition = nozzle_diameter[0]>=0.4 and printer_model!="MINI" and printer_model!="MK2SMM" and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material)
|
||||
compatible_printers_condition = printer_notes!~/.*PRINTER_MODEL_MK(2|2.5).*/ and nozzle_diameter[0]>=0.4 and printer_model!="MINI" and printer_model!="MK2SMM" and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material)
|
||||
|
||||
[filament:addnorth Adura X @MINI]
|
||||
inherits = addnorth Adura X
|
||||
|
@ -2404,14 +2414,24 @@ filament_retract_length = nil
|
|||
filament_retract_lift = nil
|
||||
filament_retract_speed = 40
|
||||
filament_deretract_speed = 25
|
||||
bed_temperature = 60
|
||||
first_layer_bed_temperature = 60
|
||||
compatible_printers_condition = nozzle_diameter[0]>=0.4 and printer_model=="MINI"
|
||||
|
||||
[filament:addnorth Adura X @MMU1]
|
||||
inherits = addnorth Adura X
|
||||
filament_retract_length = nil
|
||||
filament_retract_lift = nil
|
||||
bed_temperature = 60
|
||||
first_layer_bed_temperature = 60
|
||||
compatible_printers_condition = nozzle_diameter[0]>=0.4 and printer_model=="MK2SMM"
|
||||
|
||||
[filament:addnorth Adura X @MK2]
|
||||
inherits = addnorth Adura X
|
||||
bed_temperature = 110
|
||||
first_layer_bed_temperature = 105
|
||||
compatible_printers_condition = nozzle_diameter[0]>=0.4 and printer_notes=~/.*PRINTER_MODEL_MK(2|2.5).*/ and ! (printer_notes=~/.*PRINTER_MODEL_MK2.5.*/ and single_extruder_multi_material)
|
||||
|
||||
[filament:addnorth E-PLA]
|
||||
inherits = *PLA*
|
||||
filament_vendor = addnorth
|
||||
|
@ -2684,6 +2704,75 @@ filament_cost = 25.4
|
|||
filament_density = 1.24
|
||||
compatible_printers_condition = nozzle_diameter[0]!=0.8 and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material)
|
||||
|
||||
[filament:3D-Fuel Standard PLA]
|
||||
inherits = *PLA*
|
||||
filament_vendor = 3D-Fuel
|
||||
filament_cost = 22.14
|
||||
filament_density = 1.24
|
||||
filament_max_volumetric_speed = 10
|
||||
first_layer_temperature = 210
|
||||
temperature = 200
|
||||
|
||||
[filament:3D-Fuel EasiPrint PLA]
|
||||
inherits = 3D-Fuel Standard PLA
|
||||
filament_cost = 30.44
|
||||
|
||||
[filament:3D-Fuel Pro PLA]
|
||||
inherits = *PLA*
|
||||
filament_vendor = 3D-Fuel
|
||||
filament_cost = 26.57
|
||||
filament_density = 1.22
|
||||
filament_max_volumetric_speed = 12
|
||||
first_layer_temperature = 220
|
||||
temperature = 215
|
||||
filament_retract_lift = 0
|
||||
|
||||
[filament:3D-Fuel Buzzed]
|
||||
inherits = 3D-Fuel Standard PLA
|
||||
filament_cost = 44.27
|
||||
filament_retract_lift = 0
|
||||
first_layer_temperature = 210
|
||||
temperature = 195
|
||||
filament_max_volumetric_speed = 8
|
||||
|
||||
[filament:3D-Fuel Wound up]
|
||||
inherits = 3D-Fuel Buzzed
|
||||
filament_cost = 44.27
|
||||
filament_retract_lift = nil
|
||||
first_layer_temperature = 215
|
||||
temperature = 210
|
||||
filament_max_volumetric_speed = 8
|
||||
|
||||
[filament:3D-Fuel Workday ABS]
|
||||
inherits = *ABSC*
|
||||
filament_vendor = 3D-Fuel
|
||||
filament_cost = 23.25
|
||||
filament_density = 1.04
|
||||
|
||||
[filament:3D-Fuel Workday ABS @MINI]
|
||||
inherits = 3D-Fuel Workday ABS; *ABSMINI*
|
||||
|
||||
[filament:Jessie PLA]
|
||||
inherits = *PLA*
|
||||
filament_vendor = Printed Solid
|
||||
filament_cost = 21
|
||||
filament_density = 1.24
|
||||
filament_max_volumetric_speed = 12
|
||||
|
||||
[filament:Jessie PETG]
|
||||
inherits = *PET*
|
||||
filament_vendor = Printed Solid
|
||||
filament_cost = 22
|
||||
filament_density = 1.27
|
||||
first_layer_temperature = 240
|
||||
first_layer_bed_temperature = 85
|
||||
temperature = 245
|
||||
bed_temperature = 90
|
||||
filament_max_volumetric_speed = 7
|
||||
|
||||
[filament:Jessie PETG @MINI]
|
||||
inherits = Jessie PETG; *PETMINI*
|
||||
|
||||
[filament:Devil Design PLA]
|
||||
inherits = *PLA*
|
||||
filament_vendor = Devil Design
|
||||
|
@ -2941,7 +3030,7 @@ bed_temperature = 115
|
|||
fan_always_on = 0
|
||||
cooling = 0
|
||||
bridge_fan_speed = 25
|
||||
filament_type = NYLON
|
||||
filament_type = PA
|
||||
filament_max_volumetric_speed = 8
|
||||
compatible_printers_condition = printer_notes!~/.*PRINTER_MODEL_MK(2|2.5).*/ and printer_model!="MINI" and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material)
|
||||
|
||||
|
@ -4085,7 +4174,7 @@ filament_cost = 27.65
|
|||
|
||||
[filament:Fiberlogy Nylon PA12]
|
||||
inherits = Fiberlogy ASA
|
||||
filament_type = NYLON
|
||||
filament_type = PA
|
||||
filament_density = 1.01
|
||||
filament_cost = 48
|
||||
first_layer_bed_temperature = 105
|
||||
|
@ -4318,7 +4407,7 @@ inherits = *common*
|
|||
filament_vendor = Taulman
|
||||
filament_cost = 40
|
||||
filament_density = 1.13
|
||||
bed_temperature = 90
|
||||
bed_temperature = 110
|
||||
bridge_fan_speed = 40
|
||||
cooling = 0
|
||||
disable_fan_first_layers = 3
|
||||
|
@ -4327,13 +4416,22 @@ fan_below_layer_time = 20
|
|||
filament_colour = #DEE0E6
|
||||
filament_max_volumetric_speed = 7
|
||||
filament_soluble = 0
|
||||
filament_type = NYLON
|
||||
first_layer_bed_temperature = 60
|
||||
first_layer_temperature = 240
|
||||
filament_type = PA
|
||||
first_layer_bed_temperature = 90
|
||||
first_layer_temperature = 260
|
||||
temperature = 260
|
||||
max_fan_speed = 0
|
||||
min_fan_speed = 0
|
||||
start_filament_gcode = "M900 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.02{elsif nozzle_diameter[0]==0.6}0.04{else}0.08{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 K24{elsif nozzle_diameter[0]==0.8};{else}M900 K45{endif} ; Filament gcode LA 1.0"
|
||||
compatible_printers_condition = printer_model!="MINI" and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material)
|
||||
|
||||
[filament:Taulman Bridge @MINI]
|
||||
inherits = Taulman Bridge
|
||||
bed_temperature = 90
|
||||
first_layer_bed_temperature = 60
|
||||
first_layer_temperature = 240
|
||||
temperature = 250
|
||||
compatible_printers_condition = printer_model=="MINI"
|
||||
|
||||
[filament:Fillamentum Nylon FX256]
|
||||
inherits = *common*
|
||||
|
@ -4352,7 +4450,7 @@ slowdown_below_layer_time = 20
|
|||
filament_colour = #DEE0E6
|
||||
filament_max_volumetric_speed = 6
|
||||
filament_soluble = 0
|
||||
filament_type = NYLON
|
||||
filament_type = PA
|
||||
first_layer_bed_temperature = 90
|
||||
first_layer_temperature = 250
|
||||
max_fan_speed = 0
|
||||
|
@ -4365,10 +4463,10 @@ inherits = *common*
|
|||
filament_vendor = Fiberthree
|
||||
filament_cost = 200.84
|
||||
filament_density = 1.2
|
||||
bed_temperature = 70
|
||||
first_layer_bed_temperature = 75
|
||||
first_layer_temperature = 270
|
||||
temperature = 270
|
||||
bed_temperature = 90
|
||||
first_layer_bed_temperature = 90
|
||||
first_layer_temperature = 285
|
||||
temperature = 285
|
||||
bridge_fan_speed = 30
|
||||
cooling = 1
|
||||
disable_fan_first_layers = 3
|
||||
|
@ -4379,7 +4477,7 @@ slowdown_below_layer_time = 10
|
|||
filament_colour = #DEE0E6
|
||||
filament_max_volumetric_speed = 5
|
||||
filament_soluble = 0
|
||||
filament_type = NYLON
|
||||
filament_type = PA
|
||||
max_fan_speed = 20
|
||||
min_fan_speed = 20
|
||||
start_filament_gcode = "M900 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.04{else}0.05{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 K18{elsif nozzle_diameter[0]==0.8};{else}M900 K30{endif} ; Filament gcode LA 1.0"
|
||||
|
@ -4395,10 +4493,10 @@ inherits = *common*
|
|||
filament_vendor = Fiberthree
|
||||
filament_cost = 208.1
|
||||
filament_density = 1.25
|
||||
bed_temperature = 70
|
||||
first_layer_bed_temperature = 75
|
||||
first_layer_temperature = 275
|
||||
temperature = 275
|
||||
bed_temperature = 90
|
||||
first_layer_bed_temperature = 90
|
||||
first_layer_temperature = 285
|
||||
temperature = 285
|
||||
bridge_fan_speed = 30
|
||||
cooling = 1
|
||||
disable_fan_first_layers = 3
|
||||
|
@ -4409,7 +4507,7 @@ slowdown_below_layer_time = 10
|
|||
filament_colour = #DEE0E6
|
||||
filament_max_volumetric_speed = 5
|
||||
filament_soluble = 0
|
||||
filament_type = NYLON
|
||||
filament_type = PA
|
||||
max_fan_speed = 0
|
||||
min_fan_speed = 0
|
||||
start_filament_gcode = "M900 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.04{else}0.05{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 K18{elsif nozzle_diameter[0]==0.8};{else}M900 K30{endif} ; Filament gcode LA 1.0"
|
||||
|
@ -4695,6 +4793,10 @@ compatible_printers_condition = printer_model=="MINI" and nozzle_diameter[0]!=0.
|
|||
[filament:Fiberthree F3 PA Pure Pro @MINI]
|
||||
inherits = Fiberthree F3 PA Pure Pro
|
||||
filament_max_volumetric_speed = 4
|
||||
first_layer_temperature = 280
|
||||
temperature = 280
|
||||
first_layer_bed_temperature = 75
|
||||
bed_temperature = 70
|
||||
filament_retract_length = nil
|
||||
filament_retract_speed = nil
|
||||
filament_retract_lift = nil
|
||||
|
@ -4704,6 +4806,10 @@ compatible_printers_condition = printer_model=="MINI"
|
|||
|
||||
[filament:Fiberthree F3 PA-CF Pro @MINI]
|
||||
inherits = Fiberthree F3 PA-CF Pro
|
||||
first_layer_temperature = 280
|
||||
temperature = 280
|
||||
first_layer_bed_temperature = 75
|
||||
bed_temperature = 70
|
||||
filament_max_volumetric_speed = 4
|
||||
filament_retract_length = nil
|
||||
filament_retract_speed = nil
|
||||
|
@ -5083,6 +5189,16 @@ filament_max_volumetric_speed = 13
|
|||
filament_retract_lift = 0.25
|
||||
compatible_printers_condition = printer_notes!~/.*PRINTER_MODEL_MK(2|2.5).*/ and nozzle_diameter[0]==0.8 and printer_model!="MINI" and ! single_extruder_multi_material
|
||||
|
||||
[filament:Prusament PA11 Carbon Fiber @0.8 nozzle]
|
||||
inherits = Prusament PA11 Carbon Fiber
|
||||
filament_max_volumetric_speed = 11
|
||||
compatible_printers_condition = printer_notes!~/.*PRINTER_MODEL_MK(2|2.5).*/ and nozzle_diameter[0]==0.8 and printer_model!="MINI" and ! single_extruder_multi_material
|
||||
|
||||
[filament:Prusament PA11 Carbon Fiber @0.8 nozzle MK2]
|
||||
inherits = Prusament PA11 Carbon Fiber @MK2
|
||||
filament_max_volumetric_speed = 11
|
||||
compatible_printers_condition = nozzle_diameter[0]==0.8 and printer_model!="MK2SMM" and printer_notes=~/.*PRINTER_MODEL_MK(2|2.5).*/ and ! (printer_notes=~/.*PRINTER_MODEL_MK2.5.*/ and single_extruder_multi_material)
|
||||
|
||||
[filament:Prusament PC Blend @0.8 nozzle MK2]
|
||||
inherits = Prusament PC Blend @MK2
|
||||
filament_max_volumetric_speed = 13
|
||||
|
@ -8839,7 +8955,7 @@ inherits = Original Prusa i3 MK2S
|
|||
printer_model = MK2.5
|
||||
remaining_times = 1
|
||||
machine_max_jerk_e = 4.5
|
||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0
|
||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n{if filament_settings_id[initial_tool]=~/.*Prusament PA11.*/}\nG1 Z0.3 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E9 F1000 ; intro line\n{else}\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\n{endif}\nG92 E0
|
||||
|
||||
[printer:Original Prusa i3 MK2.5 0.25 nozzle]
|
||||
inherits = Original Prusa i3 MK2S 0.25 nozzle
|
||||
|
@ -8853,7 +8969,8 @@ inherits = Original Prusa i3 MK2S 0.6 nozzle
|
|||
printer_model = MK2.5
|
||||
remaining_times = 1
|
||||
machine_max_jerk_e = 4.5
|
||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0
|
||||
deretract_speed = 25
|
||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n{if filament_settings_id[initial_tool]=~/.*Prusament PA11.*/}\nG1 Z0.3 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E9 F1000 ; intro line\n{else}\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\n{endif}\nG92 E0
|
||||
|
||||
[printer:Original Prusa i3 MK2.5 0.8 nozzle]
|
||||
inherits = Original Prusa i3 MK2S 0.6 nozzle
|
||||
|
@ -8862,10 +8979,13 @@ nozzle_diameter = 0.8
|
|||
printer_variant = 0.8
|
||||
max_layer_height = 0.6
|
||||
min_layer_height = 0.2
|
||||
retract_length = 1
|
||||
retract_length = 0.7
|
||||
retract_speed = 35
|
||||
deretract_speed = 20
|
||||
retract_lift = 0.25
|
||||
remaining_times = 1
|
||||
machine_max_jerk_e = 4.5
|
||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0
|
||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n{if filament_settings_id[initial_tool]=~/.*Prusament PA11.*/}\nG1 Z0.3 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E9 F1000 ; intro line\n{else}\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\n{endif}\nG92 E0
|
||||
default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
||||
default_filament_profile = Prusament PLA @0.8 nozzle
|
||||
color_change_gcode = M600\nG1 E0.6 F1500 ; prime after color change
|
||||
|
@ -8939,7 +9059,10 @@ max_layer_height = 0.6
|
|||
min_layer_height = 0.2
|
||||
nozzle_diameter = 0.8
|
||||
printer_variant = 0.8
|
||||
retract_length = 1
|
||||
retract_length = 0.7
|
||||
retract_speed = 35
|
||||
deretract_speed = 20
|
||||
retract_lift = 0.25
|
||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n
|
||||
default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
||||
default_filament_profile = Prusament PLA @0.8 nozzle
|
||||
|
@ -8952,6 +9075,7 @@ max_layer_height = 0.35
|
|||
min_layer_height = 0.1
|
||||
nozzle_diameter = 0.6
|
||||
printer_variant = 0.6
|
||||
deretract_speed = 25
|
||||
default_print_profile = 0.20mm NORMAL @0.6 nozzle
|
||||
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
||||
|
||||
|
@ -8985,6 +9109,7 @@ nozzle_diameter = 0.6,0.6,0.6,0.6,0.6
|
|||
max_layer_height = 0.40
|
||||
min_layer_height = 0.15
|
||||
printer_variant = 0.6
|
||||
deretract_speed = 25
|
||||
default_print_profile = 0.20mm NORMAL @0.6 nozzle
|
||||
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
||||
|
||||
|
@ -8994,6 +9119,7 @@ nozzle_diameter = 0.6,0.6,0.6,0.6,0.6
|
|||
max_layer_height = 0.40
|
||||
min_layer_height = 0.15
|
||||
printer_variant = 0.6
|
||||
deretract_speed = 25
|
||||
default_print_profile = 0.20mm NORMAL @0.6 nozzle
|
||||
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
||||
|
||||
|
@ -9067,7 +9193,7 @@ remaining_times = 1
|
|||
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK3\n
|
||||
retract_lift_below = 209
|
||||
max_print_height = 210
|
||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0\nM221 S{if layer_height<0.075}100{else}95{endif}\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
|
||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n{if filament_settings_id[initial_tool]=~/.*Prusament PA11.*/}\nG1 Z0.3 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E9 F1000 ; intro line\n{else}\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\n{endif}\nG92 E0\nM221 S{if layer_height<0.075}100{else}95{endif}\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
|
||||
printer_model = MK3
|
||||
default_print_profile = 0.15mm QUALITY @MK3
|
||||
thumbnails = 160x120
|
||||
|
@ -9089,7 +9215,8 @@ nozzle_diameter = 0.6
|
|||
max_layer_height = 0.40
|
||||
min_layer_height = 0.15
|
||||
printer_variant = 0.6
|
||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0\nM221 S{if layer_height<0.075}100{else}95{endif}
|
||||
deretract_speed = 25
|
||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n{if filament_settings_id[initial_tool]=~/.*Prusament PA11.*/}\nG1 Z0.3 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E9 F1000 ; intro line\n{else}\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\n{endif}\nG92 E0\nM221 S{if layer_height<0.075}100{else}95{endif}
|
||||
default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3
|
||||
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
||||
|
||||
|
@ -9099,8 +9226,11 @@ nozzle_diameter = 0.8
|
|||
max_layer_height = 0.6
|
||||
min_layer_height = 0.2
|
||||
printer_variant = 0.8
|
||||
retract_length = 1
|
||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\nG92 E0\nM221 S95
|
||||
retract_length = 0.7
|
||||
retract_speed = 35
|
||||
deretract_speed = 20
|
||||
retract_lift = 0.25
|
||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n{if filament_settings_id[initial_tool]=~/.*Prusament PA11.*/}\nG1 Z0.3 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E9 F1000 ; intro line\n{else}\nG1 Z0.2 F720\nG1 Y-3 F1000 ; go outside print area\nG92 E0\nG1 X60 E9 F1000 ; intro line\nG1 X100 E12.5 F1000 ; intro line\n{endif}\nG92 E0\nM221 S95
|
||||
default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
||||
default_filament_profile = Prusament PLA @0.8 nozzle
|
||||
color_change_gcode = M600\nG1 E0.6 F1500 ; prime after color change
|
||||
|
@ -9182,6 +9312,7 @@ nozzle_diameter = 0.6
|
|||
max_layer_height = 0.40
|
||||
min_layer_height = 0.15
|
||||
printer_variant = 0.6
|
||||
deretract_speed = 25
|
||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
|
||||
default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3
|
||||
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
||||
|
@ -9193,7 +9324,10 @@ nozzle_diameter = 0.8
|
|||
max_layer_height = 0.6
|
||||
min_layer_height = 0.2
|
||||
printer_variant = 0.8
|
||||
retract_length = 1
|
||||
retract_length = 0.7
|
||||
retract_speed = 35
|
||||
deretract_speed = 20
|
||||
retract_lift = 0.25
|
||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
|
||||
default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
||||
default_filament_profile = Prusament PLA @0.8 nozzle
|
||||
|
@ -9235,6 +9369,7 @@ nozzle_diameter = 0.6
|
|||
max_layer_height = 0.40
|
||||
min_layer_height = 0.15
|
||||
printer_variant = 0.6
|
||||
deretract_speed = 25
|
||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
|
||||
default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3
|
||||
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
||||
|
@ -9246,7 +9381,10 @@ nozzle_diameter = 0.8
|
|||
max_layer_height = 0.6
|
||||
min_layer_height = 0.2
|
||||
printer_variant = 0.8
|
||||
retract_length = 1
|
||||
retract_length = 0.7
|
||||
retract_speed = 35
|
||||
deretract_speed = 20
|
||||
retract_lift = 0.25
|
||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nTx\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nTc\n; purge line\nG1 X55 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
|
||||
default_print_profile = 0.40mm QUALITY @0.8 nozzle
|
||||
default_filament_profile = Prusament PLA @0.8 nozzle
|
||||
|
@ -9283,6 +9421,7 @@ nozzle_diameter = 0.6,0.6,0.6,0.6,0.6
|
|||
max_layer_height = 0.40
|
||||
min_layer_height = 0.15
|
||||
printer_variant = 0.6
|
||||
deretract_speed = 25
|
||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E29 F1073\nG1 X5 E29 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
|
||||
default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3
|
||||
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
||||
|
@ -9293,6 +9432,7 @@ nozzle_diameter = 0.6,0.6,0.6,0.6,0.6
|
|||
max_layer_height = 0.40
|
||||
min_layer_height = 0.15
|
||||
printer_variant = 0.6
|
||||
deretract_speed = 25
|
||||
start_gcode = M862.3 P \"[printer_model]\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.11.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\n\n; Send the filament type to the MMU2.0 unit.\n; E stands for extruder number, F stands for filament type (0: default; 1:flex; 2: PVA)\nM403 E0 F{"" + ((filament_type[0]=="FLEX") ? 1 : ((filament_type[0]=="PVA") ? 2 : 0))}\nM403 E1 F{"" + ((filament_type[1]=="FLEX") ? 1 : ((filament_type[1]=="PVA") ? 2 : 0))}\nM403 E2 F{"" + ((filament_type[2]=="FLEX") ? 1 : ((filament_type[2]=="PVA") ? 2 : 0))}\nM403 E3 F{"" + ((filament_type[3]=="FLEX") ? 1 : ((filament_type[3]=="PVA") ? 2 : 0))}\nM403 E4 F{"" + ((filament_type[4]=="FLEX") ? 1 : ((filament_type[4]=="PVA") ? 2 : 0))}\n\n{if not has_single_extruder_multi_material_priming}\n;go outside print area\nG1 Y-3 F1000\nG1 Z0.4 F1000\n; select extruder\nT[initial_tool]\n; initial load\nG1 X55 E32 F1073\nG1 X5 E32 F1800\nG1 X55 E8 F2000\nG1 Z0.3 F1000\nG92 E0\nG1 X240 E25 F2200\nG1 Y-2 F1000\nG1 X55 E25 F1400\nG1 Z0.2 F1000\nG1 X5 E4 F1000\nG92 E0\n{endif}\n\nM221 S{if layer_height<0.075}100{else}95{endif}\nG92 E0
|
||||
default_print_profile = 0.30mm QUALITY @0.6 nozzle MK3
|
||||
color_change_gcode = M600\nG1 E0.5 F1500 ; prime after color change
|
||||
|
@ -9424,8 +9564,10 @@ max_layer_height = 0.55
|
|||
min_layer_height = 0.2
|
||||
default_print_profile = 0.40mm QUALITY @0.8 nozzle MINI
|
||||
default_filament_profile = Prusament PLA @0.8 nozzle
|
||||
retract_length = 3.5
|
||||
retract_length = 3
|
||||
retract_before_travel = 1.5
|
||||
retract_speed = 45
|
||||
deretract_speed = 20
|
||||
|
||||
[printer:Original Prusa SL1]
|
||||
printer_technology = SLA
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
min_slic3r_version = 2.4.0-alpha0
|
||||
1.0.1 Speed improvements, start gcode changes, added HIPS filament.
|
||||
1.0.0 Initial version
|
||||
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
# Print profiles for the gCreate printers.
|
||||
#
|
||||
# GTL Modified 210706 (at gCreate Shop)
|
||||
#
|
||||
# GTL Modified 220825 (at gCreate Shop)
|
||||
# Speed improvements, start/end gCode changes
|
||||
|
||||
[vendor]
|
||||
# Vendor name will be shown by the Config Wizard.
|
||||
name = gCreate
|
||||
# Configuration version of this file. Config file will only be installed, if the config_version differs.
|
||||
# This means, the server may force the PrusaSlicer configuration to be downgraded.
|
||||
config_version = 1.0.0
|
||||
config_version = 1.0.1
|
||||
# Where to get the updates from?
|
||||
config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/gCreate/
|
||||
# changelog_url = https://files.prusa3d.com/?latest=slicer-profiles&lng=%1%
|
||||
|
@ -548,6 +548,7 @@ compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_GCREATE.*/
|
|||
# Common filament preset across all PLA filaments
|
||||
[filament:*PLA*]
|
||||
inherits = *common*
|
||||
extrusion_multiplier = 0.94
|
||||
bed_temperature = 60
|
||||
fan_below_layer_time = 15
|
||||
filament_colour = #FF3232
|
||||
|
@ -749,11 +750,20 @@ filament_vendor = ProtoPasta
|
|||
temperature = 250
|
||||
bed_temperature = 70
|
||||
|
||||
[filament:Generic HIPS @GCREATE]
|
||||
inherits = *PET*
|
||||
filament_vendor = Generic
|
||||
filament_density = 1.04
|
||||
temperature = 230
|
||||
first_layer_temperature = 235
|
||||
bed_temperature = 100
|
||||
first_layer_bed_temperature = 100
|
||||
filament_type = HIPS
|
||||
|
||||
[filament:Generic TPU 90A @GCREATE]
|
||||
inherits = *TPU90A*
|
||||
filament_vendor = Generic
|
||||
|
||||
|
||||
[filament:Generic CF PETG @GCREATE]
|
||||
inherits = *CFPETG*
|
||||
filament_vendor = Generic
|
||||
|
@ -770,8 +780,6 @@ filament_vendor = Generic
|
|||
inherits = *WOODFILLPLA*
|
||||
filament_vendor = ColorFabb
|
||||
|
||||
|
||||
|
||||
[filament:Generic PVA @GCREATE - PLA and PVA Support]
|
||||
bed_temperature = 0
|
||||
bridge_fan_speed = 75
|
||||
|
@ -830,8 +838,8 @@ machine_max_feedrate_x = 500
|
|||
machine_max_feedrate_y = 500
|
||||
machine_max_feedrate_z = 10
|
||||
machine_max_jerk_e = 2.5
|
||||
machine_max_jerk_x = 3
|
||||
machine_max_jerk_y = 3
|
||||
machine_max_jerk_x = 10
|
||||
machine_max_jerk_y = 10
|
||||
machine_max_jerk_z = 0.4
|
||||
machine_min_extruding_rate = 0
|
||||
machine_min_travel_rate = 0
|
||||
|
@ -893,7 +901,7 @@ retract_speed = 70
|
|||
deretract_speed = 40
|
||||
retract_before_wipe = 70%
|
||||
default_print_profile = 0.20mm - Standard Layers @GCREATE
|
||||
start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 ; home all\nG92 E0.0
|
||||
start_gcode = M420 Z20\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 ; home all\nG92 E0.0
|
||||
end_gcode = M104 S0 T0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+5, max_print_height)} F600{endif} ; Move print head up\nG1 X5 Y170 F3000 ; present print\n{if layer_z < max_print_height-10}G1 Z{z_offset+min(layer_z+70, max_print_height-10)} F600{endif} ; Move print head up\nM84 X Y E ; disable motors
|
||||
|
||||
#[printer:*abl*]
|
||||
|
@ -906,6 +914,7 @@ printer_model = GMAX2PRO
|
|||
max_layer_height = 0.7
|
||||
min_layer_height = 0.08
|
||||
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_GCREATE\nPRINTER_MODEL_GMAX2PRO
|
||||
start_gcode = G90\nG28\nM420 Z20\nG1 Z5 F5000
|
||||
bed_shape = 0x0,457x0,457x457,0x457
|
||||
max_print_height = 610
|
||||
|
||||
|
@ -929,7 +938,7 @@ printer_model = GMAX2DUAL2IN1
|
|||
max_layer_height = 0.7
|
||||
min_layer_height = 0.08
|
||||
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_GCREATE\nPRINTER_MODEL_GMAX2DUAL2IN1
|
||||
start_gcode = G90 ;\n G28 ;\n G1 Z5 F5000
|
||||
start_gcode = G90\nG28\nM420 Z20\nG1 Z5 F5000
|
||||
bed_shape = 0x0,457x0,457x457,0x457
|
||||
max_print_height = 610
|
||||
default_print_profile = 0.20mm - Standard Layers @GCREATE
|
||||
|
@ -951,7 +960,7 @@ printer_model = GMAX2DUAL
|
|||
max_layer_height = 0.7
|
||||
min_layer_height = 0.08
|
||||
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_GCREATE\nPRINTER_MODEL_GMAX2DUAL
|
||||
start_gcode = G90\nG28\nG1 Z5 F5000\nM218 T1 X20 Y0 ; Set second extruder offset
|
||||
start_gcode = G90\nG28\nM420 Z20\nG1 Z5 F5000\nM218 T1 X20 Y0 ; Set second extruder offset
|
||||
end_gcode = M104 S0 T0 ; turn off temperature\nM104 S0 T1 ; turn off 2nd extruder\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+5, max_print_height)} F600{endif} ; Move print head up\nG1 X5 Y170 F3000 ; present print\n{if layer_z < max_print_height-10}G1 Z{z_offset+min(layer_z+70, max_print_height-10)} F600{endif} ; Move print head up\nM84 X Y E ; disable motors
|
||||
bed_shape = 0x0,457x0,457x457,0x457
|
||||
max_print_height = 610
|
||||
|
|
|
@ -451,8 +451,23 @@ SkeletalTrapezoidation::SkeletalTrapezoidation(const Polygons& polys, const Bead
|
|||
constructFromPolygons(polys);
|
||||
}
|
||||
|
||||
static bool has_finite_edge_with_non_finite_vertex(const Geometry::VoronoiDiagram &voronoi_diagram)
|
||||
{
|
||||
for (const VoronoiUtils::vd_t::edge_type &edge : voronoi_diagram.edges()) {
|
||||
if (edge.is_finite()) {
|
||||
assert(edge.vertex0() != nullptr && edge.vertex1() != nullptr);
|
||||
if (edge.vertex0() == nullptr || edge.vertex1() == nullptr || !VoronoiUtils::is_finite(*edge.vertex0()) ||
|
||||
!VoronoiUtils::is_finite(*edge.vertex1()))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool detect_missing_voronoi_vertex(const Geometry::VoronoiDiagram &voronoi_diagram, const std::vector<SkeletalTrapezoidation::Segment> &segments) {
|
||||
if (has_finite_edge_with_non_finite_vertex(voronoi_diagram))
|
||||
return true;
|
||||
|
||||
for (VoronoiUtils::vd_t::cell_type cell : voronoi_diagram.cells()) {
|
||||
if (!cell.incident_edge())
|
||||
continue; // There is no spoon
|
||||
|
@ -471,7 +486,8 @@ static bool detect_missing_voronoi_vertex(const Geometry::VoronoiDiagram &vorono
|
|||
VoronoiUtils::vd_t::edge_type *ending_vd_edge = nullptr;
|
||||
VoronoiUtils::vd_t::edge_type *edge = cell.incident_edge();
|
||||
do {
|
||||
if (edge->is_infinite()) continue;
|
||||
if (edge->is_infinite() || edge->vertex0() == nullptr || edge->vertex1() == nullptr || !VoronoiUtils::is_finite(*edge->vertex0()) || !VoronoiUtils::is_finite(*edge->vertex1()))
|
||||
continue;
|
||||
|
||||
Vec2i64 v0 = VoronoiUtils::p(edge->vertex0());
|
||||
Vec2i64 v1 = VoronoiUtils::p(edge->vertex1());
|
||||
|
@ -509,29 +525,36 @@ static bool has_missing_twin_edge(const SkeletalTrapezoidationGraph &graph)
|
|||
inline static std::unordered_map<Point, Point, PointHash> try_to_fix_degenerated_voronoi_diagram_by_rotation(
|
||||
Geometry::VoronoiDiagram &voronoi_diagram,
|
||||
const Polygons &polys,
|
||||
Polygons &polys_copy,
|
||||
Polygons &polys_rotated,
|
||||
std::vector<SkeletalTrapezoidation::Segment> &segments,
|
||||
const double fix_angle)
|
||||
{
|
||||
std::unordered_map<Point, Point, PointHash> vertex_mapping;
|
||||
for (Polygon &poly : polys_copy)
|
||||
for (Polygon &poly : polys_rotated)
|
||||
poly.rotate(fix_angle);
|
||||
|
||||
assert(polys_copy.size() == polys.size());
|
||||
assert(polys_rotated.size() == polys.size());
|
||||
for (size_t poly_idx = 0; poly_idx < polys.size(); ++poly_idx) {
|
||||
assert(polys_copy[poly_idx].size() == polys[poly_idx].size());
|
||||
assert(polys_rotated[poly_idx].size() == polys[poly_idx].size());
|
||||
for (size_t point_idx = 0; point_idx < polys[poly_idx].size(); ++point_idx)
|
||||
vertex_mapping.insert({polys[poly_idx][point_idx], polys_copy[poly_idx][point_idx]});
|
||||
vertex_mapping.insert({polys_rotated[poly_idx][point_idx], polys[poly_idx][point_idx]});
|
||||
}
|
||||
|
||||
segments.clear();
|
||||
for (size_t poly_idx = 0; poly_idx < polys_copy.size(); poly_idx++)
|
||||
for (size_t point_idx = 0; point_idx < polys_copy[poly_idx].size(); point_idx++)
|
||||
segments.emplace_back(&polys_copy, poly_idx, point_idx);
|
||||
for (size_t poly_idx = 0; poly_idx < polys_rotated.size(); poly_idx++)
|
||||
for (size_t point_idx = 0; point_idx < polys_rotated[poly_idx].size(); point_idx++)
|
||||
segments.emplace_back(&polys_rotated, poly_idx, point_idx);
|
||||
|
||||
voronoi_diagram.clear();
|
||||
construct_voronoi(segments.begin(), segments.end(), &voronoi_diagram);
|
||||
|
||||
#ifdef ARACHNE_DEBUG_VORONOI
|
||||
{
|
||||
static int iRun = 0;
|
||||
dump_voronoi_to_svg(debug_out_path("arachne_voronoi-diagram-rotated-%d.svg", iRun++).c_str(), voronoi_diagram, to_points(polys), to_lines(polys));
|
||||
}
|
||||
#endif
|
||||
|
||||
assert(Geometry::VoronoiUtilsCgal::is_voronoi_diagram_planar_intersection(voronoi_diagram));
|
||||
|
||||
return vertex_mapping;
|
||||
|
@ -591,10 +614,6 @@ void SkeletalTrapezoidation::constructFromPolygons(const Polygons& polys)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef ARACHNE_DEBUG
|
||||
assert(Geometry::VoronoiUtilsCgal::is_voronoi_diagram_planar_intersection(voronoi_diagram));
|
||||
#endif
|
||||
|
||||
// Try to detect cases when some Voronoi vertex is missing and when
|
||||
// the Voronoi diagram is not planar.
|
||||
// When any Voronoi vertex is missing, or the Voronoi diagram is not
|
||||
|
@ -715,6 +734,10 @@ process_voronoi_diagram:
|
|||
if (degenerated_voronoi_diagram)
|
||||
rotate_back_skeletal_trapezoidation_graph_after_fix(this->graph, fix_angle, vertex_mapping);
|
||||
|
||||
#ifdef ARACHNE_DEBUG
|
||||
assert(Geometry::VoronoiUtilsCgal::is_voronoi_diagram_planar_intersection(voronoi_diagram));
|
||||
#endif
|
||||
|
||||
separatePointyQuadEndNodes();
|
||||
|
||||
graph.collapseSmallEdges();
|
||||
|
|
|
@ -268,13 +268,13 @@ void extrusion_paths_append(ExtrusionPaths &dst, const ClipperLib_Z::Paths &extr
|
|||
{
|
||||
for (const ClipperLib_Z::Path &extrusion_path : extrusion_paths) {
|
||||
ThickPolyline thick_polyline = Arachne::to_thick_polyline(extrusion_path);
|
||||
Slic3r::append(dst, thick_polyline_to_extrusion_paths(thick_polyline, role, flow, scaled<float>(0.05), float(SCALED_EPSILON)));
|
||||
Slic3r::append(dst, thick_polyline_to_multi_path(thick_polyline, role, flow, scaled<float>(0.05), float(SCALED_EPSILON)).paths);
|
||||
}
|
||||
}
|
||||
|
||||
void extrusion_paths_append(ExtrusionPaths &dst, const Arachne::ExtrusionLine &extrusion, const ExtrusionRole role, const Flow &flow)
|
||||
{
|
||||
ThickPolyline thick_polyline = Arachne::to_thick_polyline(extrusion);
|
||||
Slic3r::append(dst, thick_polyline_to_extrusion_paths(thick_polyline, role, flow, scaled<float>(0.05), float(SCALED_EPSILON)));
|
||||
Slic3r::append(dst, thick_polyline_to_multi_path(thick_polyline, role, flow, scaled<float>(0.05), float(SCALED_EPSILON)).paths);
|
||||
}
|
||||
} // namespace Slic3r
|
|
@ -15,6 +15,7 @@ Vec2i64 VoronoiUtils::p(const vd_t::vertex_type *node)
|
|||
{
|
||||
const double x = node->x();
|
||||
const double y = node->y();
|
||||
assert(std::isfinite(x) && std::isfinite(y));
|
||||
assert(x <= double(std::numeric_limits<int64_t>::max()) && x >= std::numeric_limits<int64_t>::lowest());
|
||||
assert(y <= double(std::numeric_limits<int64_t>::max()) && y >= std::numeric_limits<int64_t>::lowest());
|
||||
return {int64_t(x + 0.5 - (x < 0)), int64_t(y + 0.5 - (y < 0))}; // Round to the nearest integer coordinates.
|
||||
|
|
|
@ -35,6 +35,11 @@ public:
|
|||
* The \p approximate_step_size is measured parallel to the \p source_segment, not along the parabola.
|
||||
*/
|
||||
static std::vector<Point> discretizeParabola(const Point &source_point, const Segment &source_segment, Point start, Point end, coord_t approximate_step_size, float transitioning_angle);
|
||||
|
||||
static inline bool is_finite(const VoronoiUtils::vd_t::vertex_type &vertex)
|
||||
{
|
||||
return std::isfinite(vertex.x()) && std::isfinite(vertex.y());
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace Slic3r::Arachne
|
||||
|
|
|
@ -427,14 +427,13 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive:
|
|||
for (const ThickPolyline &thick_polyline : thick_polylines) {
|
||||
Flow new_flow = surface_fill.params.flow.with_spacing(float(f->spacing));
|
||||
|
||||
ExtrusionPaths paths = thick_polyline_to_extrusion_paths(thick_polyline, surface_fill.params.extrusion_role, new_flow, scaled<float>(0.05), 0);
|
||||
ExtrusionMultiPath multi_path = thick_polyline_to_multi_path(thick_polyline, surface_fill.params.extrusion_role, new_flow, scaled<float>(0.05), float(SCALED_EPSILON));
|
||||
// Append paths to collection.
|
||||
if (!paths.empty()) {
|
||||
if (paths.front().first_point() == paths.back().last_point())
|
||||
eec->entities.emplace_back(new ExtrusionLoop(std::move(paths)));
|
||||
if (!multi_path.empty()) {
|
||||
if (multi_path.paths.front().first_point() == multi_path.paths.back().last_point())
|
||||
eec->entities.emplace_back(new ExtrusionLoop(std::move(multi_path.paths)));
|
||||
else
|
||||
for (ExtrusionPath &path : paths)
|
||||
eec->entities.emplace_back(new ExtrusionPath(std::move(path)));
|
||||
eec->entities.emplace_back(new ExtrusionMultiPath(std::move(multi_path)));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -106,6 +106,7 @@ void FillConcentric::_fill_surface_single(const FillParams ¶ms,
|
|||
thick_polyline.points.emplace_back(thick_polyline.points.front());
|
||||
}
|
||||
thick_polylines_out.emplace_back(std::move(thick_polyline));
|
||||
last_pos = thick_polylines_out.back().last_point();
|
||||
}
|
||||
|
||||
// clip the paths to prevent the extruder from getting exactly on the first point of the loop
|
||||
|
|
|
@ -64,11 +64,11 @@ LoadStepFn get_load_step_fn()
|
|||
load_step_fn = reinterpret_cast<LoadStepFn>(dlsym(plugin_ptr, fn_name));
|
||||
if (!load_step_fn) {
|
||||
dlclose(plugin_ptr);
|
||||
throw Slic3r::RuntimeError(std::string("Cannot load function from OCCTWrapper.dll: ") + fn_name
|
||||
throw Slic3r::RuntimeError(std::string("Cannot load function from OCCTWrapper.so: ") + fn_name
|
||||
+ "\n\n" + dlerror());
|
||||
}
|
||||
} else {
|
||||
throw Slic3r::RuntimeError(std::string("Cannot load OCCTWrapper.dll:\n\n") + dlerror());
|
||||
throw Slic3r::RuntimeError(std::string("Cannot load OCCTWrapper.so:\n\n") + dlerror());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -2629,6 +2629,12 @@ std::string GCode::extrude_loop(ExtrusionLoop loop, const std::string_view descr
|
|||
// thus empty path segments will not be produced by G-code export.
|
||||
loop.split_at(last_pos, false, scaled<double>(0.0015));
|
||||
|
||||
for (auto it = std::next(loop.paths.begin()); it != loop.paths.end(); ++it) {
|
||||
assert(it->polyline.points.size() >= 2);
|
||||
assert(std::prev(it)->polyline.last_point() == it->polyline.first_point());
|
||||
}
|
||||
assert(loop.paths.front().first_point() == loop.paths.back().last_point());
|
||||
|
||||
// clip the path to avoid the extruder to get exactly on the first point of the loop;
|
||||
// if polyline was shorter than the clipping distance we'd get a null polyline, so
|
||||
// we discard it in that case
|
||||
|
@ -2655,8 +2661,21 @@ std::string GCode::extrude_loop(ExtrusionLoop loop, const std::string_view descr
|
|||
// reset acceleration
|
||||
gcode += m_writer.set_acceleration((unsigned int)(m_config.default_acceleration.value + 0.5));
|
||||
|
||||
if (m_wipe.enable)
|
||||
m_wipe.path = paths.front().polyline; // TODO: don't limit wipe to last path
|
||||
if (m_wipe.enable) {
|
||||
m_wipe.path = paths.front().polyline;
|
||||
|
||||
for (auto it = std::next(paths.begin()); it != paths.end(); ++it) {
|
||||
if (is_bridge(it->role()))
|
||||
break; // Don't perform a wipe on bridges.
|
||||
|
||||
assert(it->polyline.points.size() >= 2);
|
||||
assert(m_wipe.path.points.back() == it->polyline.first_point());
|
||||
if (m_wipe.path.points.back() != it->polyline.first_point())
|
||||
break; // ExtrusionLoop is interrupted in some place.
|
||||
|
||||
m_wipe.path.points.insert(m_wipe.path.points.end(), it->polyline.points.begin() + 1, it->polyline.points.end());
|
||||
}
|
||||
}
|
||||
|
||||
// make a little move inwards before leaving loop
|
||||
if (paths.back().role() == erExternalPerimeter && m_layer != NULL && m_config.perimeters.value > 1 && paths.front().size() >= 2 && paths.back().polyline.points.size() >= 3) {
|
||||
|
@ -2699,6 +2718,10 @@ std::string GCode::extrude_loop(ExtrusionLoop loop, const std::string_view descr
|
|||
|
||||
std::string GCode::extrude_multi_path(ExtrusionMultiPath multipath, const std::string_view description, double speed)
|
||||
{
|
||||
for (auto it = std::next(multipath.paths.begin()); it != multipath.paths.end(); ++it) {
|
||||
assert(it->polyline.points.size() >= 2);
|
||||
assert(std::prev(it)->polyline.last_point() == it->polyline.first_point());
|
||||
}
|
||||
// extrude along the path
|
||||
std::string gcode;
|
||||
for (ExtrusionPath path : multipath.paths) {
|
||||
|
@ -2706,8 +2729,20 @@ std::string GCode::extrude_multi_path(ExtrusionMultiPath multipath, const std::s
|
|||
gcode += this->_extrude(path, description, speed);
|
||||
}
|
||||
if (m_wipe.enable) {
|
||||
m_wipe.path = std::move(multipath.paths.back().polyline); // TODO: don't limit wipe to last path
|
||||
m_wipe.path = std::move(multipath.paths.back().polyline);
|
||||
m_wipe.path.reverse();
|
||||
|
||||
for (auto it = std::next(multipath.paths.rbegin()); it != multipath.paths.rend(); ++it) {
|
||||
if (is_bridge(it->role()))
|
||||
break; // Do not perform a wipe on bridges.
|
||||
|
||||
assert(it->polyline.points.size() >= 2);
|
||||
assert(m_wipe.path.points.back() == it->polyline.last_point());
|
||||
if (m_wipe.path.points.back() != it->polyline.last_point())
|
||||
break; // ExtrusionMultiPath is interrupted in some place.
|
||||
|
||||
m_wipe.path.points.insert(m_wipe.path.points.end(), it->polyline.points.rbegin() + 1, it->polyline.points.rend());
|
||||
}
|
||||
}
|
||||
// reset acceleration
|
||||
gcode += m_writer.set_acceleration((unsigned int)floor(m_config.default_acceleration.value + 0.5));
|
||||
|
|
|
@ -153,7 +153,7 @@ static int run_script(const std::string &script, const std::string &gcode, std::
|
|||
{
|
||||
// Try to obtain user's default shell
|
||||
const char *shell = ::getenv("SHELL");
|
||||
if (shell == nullptr) { shell = "sh"; }
|
||||
if (shell == nullptr) { shell = "/bin/sh"; }
|
||||
|
||||
// Quote and escape the gcode path argument
|
||||
std::string command { script };
|
||||
|
|
|
@ -669,17 +669,32 @@ inline void PressureEqualizer::push_to_output(const char *text, const size_t len
|
|||
output_buffer[output_buffer_length] = 0;
|
||||
}
|
||||
|
||||
inline bool PressureEqualizer::is_just_feedrate_provided(const GCodeLine &line)
|
||||
inline bool is_just_line_with_extrude_set_speed_tag(const std::string &line)
|
||||
{
|
||||
return line.pos_provided[4] && !line.pos_provided[0] && !line.pos_provided[1] && !line.pos_provided[2] && !line.pos_provided[3];
|
||||
if (line.empty() && !boost::starts_with(line, "G1 ") && !boost::ends_with(line, EXTRUDE_SET_SPEED_TAG))
|
||||
return false;
|
||||
|
||||
const char *p_line = line.data() + 3;
|
||||
const char *const line_end = line.data() + line.length() - 1;
|
||||
while (!is_eol(*p_line)) {
|
||||
if (toupper(*p_line++) == 'F')
|
||||
break;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
parse_float(p_line, line_end - p_line);
|
||||
eatws(p_line);
|
||||
p_line += EXTRUDE_SET_SPEED_TAG.length();
|
||||
return p_line <= line_end && is_eol(*p_line);
|
||||
}
|
||||
|
||||
void PressureEqualizer::push_line_to_output(const size_t line_idx, const float new_feedrate, const char *comment)
|
||||
{
|
||||
const GCodeLine &line = this->m_gcode_lines[line_idx];
|
||||
if (line_idx > 0) {
|
||||
const GCodeLine &prev_line = this->m_gcode_lines[line_idx - 1];
|
||||
if (prev_line.extrude_set_speed_tag && this->is_just_feedrate_provided(prev_line))
|
||||
if (line_idx > 0 && output_buffer_length > 0) {
|
||||
const std::string prev_line_str = std::string(output_buffer.begin() + int(this->output_buffer_prev_length),
|
||||
output_buffer.begin() + int(this->output_buffer_length) + 1);
|
||||
if (is_just_line_with_extrude_set_speed_tag(prev_line_str))
|
||||
this->output_buffer_length = this->output_buffer_prev_length; // Remove the last line because it only sets the speed for an empty block of g-code lines, so it is useless.
|
||||
else
|
||||
push_to_output(EXTRUDE_END_TAG.data(), EXTRUDE_END_TAG.length(), true);
|
||||
|
|
|
@ -193,8 +193,6 @@ private:
|
|||
// Push a G-code line to the output.
|
||||
void push_line_to_output(size_t line_idx, float new_feedrate, const char *comment);
|
||||
|
||||
inline bool is_just_feedrate_provided(const GCodeLine &line);
|
||||
|
||||
public:
|
||||
std::queue<LayerResult*> m_layer_results;
|
||||
|
||||
|
|
|
@ -455,6 +455,7 @@ void process_perimeter_polygon(const Polygon &orig_polygon, float z_coord, const
|
|||
}
|
||||
Polygon polygon = orig_polygon;
|
||||
bool was_clockwise = polygon.make_counter_clockwise();
|
||||
float angle_arm_len = region != nullptr ? region->flow(FlowRole::frExternalPerimeter).nozzle_diameter() : 0.5f;
|
||||
|
||||
std::vector<float> lengths { };
|
||||
for (size_t point_idx = 0; point_idx < polygon.size() - 1; ++point_idx) {
|
||||
|
@ -462,7 +463,7 @@ void process_perimeter_polygon(const Polygon &orig_polygon, float z_coord, const
|
|||
}
|
||||
lengths.push_back(std::max((unscale(polygon[0]) - unscale(polygon[polygon.size() - 1])).norm(), 0.1));
|
||||
std::vector<float> polygon_angles = calculate_polygon_angles_at_vertices(polygon, lengths,
|
||||
SeamPlacer::polygon_local_angles_arm_distance);
|
||||
angle_arm_len);
|
||||
|
||||
result.perimeters.push_back( { });
|
||||
Perimeter &perimeter = result.perimeters.back();
|
||||
|
@ -949,6 +950,10 @@ void pick_random_seam_point(const std::vector<SeamCandidate> &perimeter_points,
|
|||
};
|
||||
std::vector<Viable> viables;
|
||||
|
||||
const Vec3f pseudornd_seed = perimeter_points[viable_example_index].position;
|
||||
float rand = std::abs(sin(pseudornd_seed.dot(Vec3f(12.9898f,78.233f, 133.3333f))) * 43758.5453f);
|
||||
rand = rand - (int) rand;
|
||||
|
||||
for (size_t index = start_index; index < end_index; ++index) {
|
||||
if (comparator.are_similar(perimeter_points[index], perimeter_points[viable_example_index])) {
|
||||
// index ok, push info into viables
|
||||
|
@ -976,7 +981,7 @@ void pick_random_seam_point(const std::vector<SeamCandidate> &perimeter_points,
|
|||
float len_sum = std::accumulate(viables.begin(), viables.end(), 0.0f, [](const float acc, const Viable &v) {
|
||||
return acc + v.edge_length;
|
||||
});
|
||||
float picked_len = len_sum * (rand() / (float(RAND_MAX) + 1));
|
||||
float picked_len = len_sum * rand;
|
||||
|
||||
size_t point_idx = 0;
|
||||
while (picked_len - viables[point_idx].edge_length > 0) {
|
||||
|
@ -997,11 +1002,7 @@ class PerimeterDistancer {
|
|||
|
||||
public:
|
||||
PerimeterDistancer(const Layer *layer) {
|
||||
static const float eps = float(scale_(layer->object()->config().slice_closing_radius.value));
|
||||
// merge with offset
|
||||
ExPolygons merged = layer->merged(eps);
|
||||
// ofsset back
|
||||
ExPolygons layer_outline = offset_ex(merged, -eps);
|
||||
ExPolygons layer_outline = layer->lslices;
|
||||
for (const ExPolygon &island : layer_outline) {
|
||||
assert(island.contour.is_counter_clockwise());
|
||||
for (const auto &line : island.contour.lines()) {
|
||||
|
@ -1017,8 +1018,8 @@ public:
|
|||
tree = AABBTreeLines::build_aabb_tree_over_indexed_lines(lines);
|
||||
}
|
||||
|
||||
float distance_from_perimeter(const Point &point) const {
|
||||
Vec2d p = unscale(point);
|
||||
float distance_from_perimeter(const Vec2f &point) const {
|
||||
Vec2d p = point.cast<double>();
|
||||
size_t hit_idx_out { };
|
||||
Vec2d hit_point_out = Vec2d::Zero();
|
||||
auto distance = AABBTreeLines::squared_distance_to_indexed_lines(lines, tree, p, hit_idx_out, hit_point_out);
|
||||
|
@ -1110,20 +1111,19 @@ void SeamPlacer::calculate_overhangs_and_layer_embedding(const PrintObject *po)
|
|||
std::unique_ptr<PerimeterDistancer> current_layer_distancer = std::make_unique<PerimeterDistancer>(po->layers()[layer_idx]);
|
||||
|
||||
for (SeamCandidate &perimeter_point : layers[layer_idx].points) {
|
||||
Point point = Point::new_scale(Vec2f { perimeter_point.position.head<2>() });
|
||||
Vec2f point = Vec2f { perimeter_point.position.head<2>() };
|
||||
if (prev_layer_distancer.get() != nullptr) {
|
||||
perimeter_point.overhang = (prev_layer_distancer->distance_from_perimeter(point)
|
||||
+ 0.5f * perimeter_point.perimeter.flow_width
|
||||
perimeter_point.overhang = prev_layer_distancer->distance_from_perimeter(point)
|
||||
+ 0.6f * perimeter_point.perimeter.flow_width
|
||||
- tan(SeamPlacer::overhang_angle_threshold)
|
||||
* po->layers()[layer_idx]->height)
|
||||
/ (3.0f * perimeter_point.perimeter.flow_width);
|
||||
//NOTE disables the feature to place seams on slowly decreasing areas. Remove the following line to enable.
|
||||
perimeter_point.overhang = perimeter_point.overhang < 0.0f ? 0.0f : perimeter_point.overhang;
|
||||
* po->layers()[layer_idx]->height;
|
||||
perimeter_point.overhang =
|
||||
perimeter_point.overhang < 0.0f ? 0.0f : perimeter_point.overhang;
|
||||
}
|
||||
|
||||
if (should_compute_layer_embedding) { // search for embedded perimeter points (points hidden inside the print ,e.g. multimaterial join, best position for seam)
|
||||
perimeter_point.embedded_distance = current_layer_distancer->distance_from_perimeter(point)
|
||||
+ 0.5f * perimeter_point.perimeter.flow_width;
|
||||
+ 0.6f * perimeter_point.perimeter.flow_width;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1381,7 +1381,7 @@ void SeamPlacer::align_seam_points(const PrintObject *po, const SeamPlacerImpl::
|
|||
observations[index] = current.position.head<2>();
|
||||
observation_points[index] = current.position.z();
|
||||
weights[index] = angle_weight(current.local_ccw_angle);
|
||||
float sign = layer_angle > 2.0 * std::abs(current.local_ccw_angle) ? -1.0f : 1.0f;
|
||||
float sign = layer_angle > 2.0 * std::abs(current.local_ccw_angle) ? -0.8f : 1.0f;
|
||||
if (current.type == EnforcedBlockedSeamPoint::Enforced) {
|
||||
sign = 1.0f;
|
||||
weights[index] += 3.0f;
|
||||
|
@ -1399,10 +1399,10 @@ void SeamPlacer::align_seam_points(const PrintObject *po, const SeamPlacerImpl::
|
|||
// Perimeter structure of the point; also set flag aligned to true
|
||||
for (size_t index = 0; index < seam_string.size(); ++index) {
|
||||
const auto &pair = seam_string[index];
|
||||
float t = std::min(1.0f, std::abs(layers[pair.first].points[pair.second].local_ccw_angle)
|
||||
/ SeamPlacer::sharp_angle_snapping_threshold);
|
||||
float t = std::min(1.0f, std::pow(std::abs(layers[pair.first].points[pair.second].local_ccw_angle)
|
||||
/ SeamPlacer::sharp_angle_snapping_threshold, 3.0f));
|
||||
if (layers[pair.first].points[pair.second].type == EnforcedBlockedSeamPoint::Enforced){
|
||||
t = std::max(0.7f, t);
|
||||
t = std::max(0.4f, t);
|
||||
}
|
||||
|
||||
Vec3f current_pos = layers[pair.first].points[pair.second].position;
|
||||
|
@ -1533,16 +1533,40 @@ void SeamPlacer::place_seam(const Layer *layer, ExtrusionLoop &loop, bool extern
|
|||
const size_t layer_index = layer->id() - po->slicing_parameters().raft_layers();
|
||||
const double unscaled_z = layer->slice_z;
|
||||
|
||||
auto get_next_loop_point = [&loop](ExtrusionLoop::ClosestPathPoint current) {
|
||||
current.segment_idx += 1;
|
||||
if (current.segment_idx >= loop.paths[current.path_idx].polyline.points.size()) {
|
||||
current.path_idx = next_idx_modulo(current.path_idx, loop.paths.size());
|
||||
current.segment_idx = 0;
|
||||
}
|
||||
current.foot_pt = loop.paths[current.path_idx].polyline.points[current.segment_idx];
|
||||
return current;
|
||||
};
|
||||
|
||||
const PrintObjectSeamData::LayerSeams &layer_perimeters =
|
||||
m_seam_per_object.find(layer->object())->second.layers[layer_index];
|
||||
|
||||
// Find the closest perimeter in the SeamPlacer to the first point of this loop.
|
||||
size_t closest_perimeter_point_index;
|
||||
{
|
||||
const Point &fp = loop.first_point();
|
||||
Vec2f unscaled_p = unscaled<float>(fp);
|
||||
closest_perimeter_point_index = find_closest_point(*layer_perimeters.points_tree.get(),
|
||||
to_3d(unscaled_p, float(unscaled_z)));
|
||||
// Find the closest perimeter in the SeamPlacer to this loop.
|
||||
// Repeat search until two consecutive points of the loop are found, that result in the same closest_perimeter
|
||||
// This is beacuse with arachne, T-Junctions may exist and sometimes the wrong perimeter was chosen
|
||||
size_t closest_perimeter_point_index = 0;
|
||||
{ // local space for the closest_perimeter_point_index
|
||||
Perimeter *closest_perimeter = nullptr;
|
||||
ExtrusionLoop::ClosestPathPoint closest_point{0,0,loop.paths[0].polyline.points[0]};
|
||||
size_t points_count = std::accumulate(loop.paths.begin(), loop.paths.end(), 0, [](size_t acc,const ExtrusionPath& p) {
|
||||
return acc + p.polyline.points.size();
|
||||
});
|
||||
for (size_t _ = 0; _ < points_count; ++_) {
|
||||
Vec2f unscaled_p = unscaled<float>(closest_point.foot_pt);
|
||||
closest_perimeter_point_index = find_closest_point(*layer_perimeters.points_tree.get(),
|
||||
to_3d(unscaled_p, float(unscaled_z)));
|
||||
if (closest_perimeter != &layer_perimeters.points[closest_perimeter_point_index].perimeter) {
|
||||
closest_perimeter = &layer_perimeters.points[closest_perimeter_point_index].perimeter;
|
||||
closest_point = get_next_loop_point(closest_point);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Vec3f seam_position;
|
||||
|
|
|
@ -113,12 +113,10 @@ public:
|
|||
//square of number of rays per sample point
|
||||
static constexpr size_t sqr_rays_per_sample_point = 5;
|
||||
|
||||
// arm length used during angles computation
|
||||
static constexpr float polygon_local_angles_arm_distance = 0.3f;
|
||||
// snapping angle - angles larger than this value will be snapped to during seam painting
|
||||
static constexpr float sharp_angle_snapping_threshold = 55.0f * float(PI) / 180.0f;
|
||||
// overhang angle for seam placement that still yields good results, in degrees, measured from vertical direction
|
||||
static constexpr float overhang_angle_threshold = 45.0f * float(PI) / 180.0f;
|
||||
static constexpr float overhang_angle_threshold = 50.0f * float(PI) / 180.0f;
|
||||
|
||||
// determines angle importance compared to visibility ( neutral value is 1.0f. )
|
||||
static constexpr float angle_importance_aligned = 0.6f;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include <CGAL/Surface_sweep_2_algorithms.h>
|
||||
|
||||
#include "libslic3r/Geometry/Voronoi.hpp"
|
||||
#include "libslic3r/Arachne/utils/VoronoiUtils.hpp"
|
||||
|
||||
#include "VoronoiUtilsCgal.hpp"
|
||||
|
||||
|
@ -28,7 +29,8 @@ bool VoronoiUtilsCgal::is_voronoi_diagram_planar_intersection(const VD &voronoi_
|
|||
if (edge.color() != 0)
|
||||
continue;
|
||||
|
||||
if (edge.is_finite() && edge.is_linear()) {
|
||||
if (edge.is_finite() && edge.is_linear() && edge.vertex0() != nullptr && edge.vertex1() != nullptr &&
|
||||
Arachne::VoronoiUtils::is_finite(*edge.vertex0()) && Arachne::VoronoiUtils::is_finite(*edge.vertex1())) {
|
||||
segments.emplace_back(to_cgal_point(*edge.vertex0()), to_cgal_point(*edge.vertex1()));
|
||||
edge.color(1);
|
||||
assert(edge.twin() != nullptr);
|
||||
|
@ -73,7 +75,8 @@ bool VoronoiUtilsCgal::is_voronoi_diagram_planar_angle(const VoronoiDiagram &vor
|
|||
|
||||
do {
|
||||
// FIXME Lukas H.: Also process parabolic segments.
|
||||
if (edge->is_finite() && edge->is_linear())
|
||||
if (edge->is_finite() && edge->is_linear() && edge->vertex0() != nullptr && edge->vertex1() != nullptr &&
|
||||
Arachne::VoronoiUtils::is_finite(*edge->vertex0()) && Arachne::VoronoiUtils::is_finite(*edge->vertex1()))
|
||||
edges.emplace_back(edge);
|
||||
|
||||
edge = edge->rot_next();
|
||||
|
|
|
@ -101,7 +101,7 @@ void LayerRegion::make_perimeters(const SurfaceCollection &slices, SurfaceCollec
|
|||
g.overhang_flow = this->bridging_flow(frPerimeter);
|
||||
g.solid_infill_flow = this->flow(frSolidInfill);
|
||||
|
||||
if (this->layer()->object()->config().perimeter_generator.value == PerimeterGeneratorType::Arachne)
|
||||
if (this->layer()->object()->config().perimeter_generator.value == PerimeterGeneratorType::Arachne && !spiral_vase)
|
||||
g.process_arachne();
|
||||
else
|
||||
g.process_classic();
|
||||
|
@ -386,10 +386,12 @@ void LayerRegion::prepare_fill_surfaces()
|
|||
bool spiral_vase = this->layer()->object()->print()->config().spiral_vase;
|
||||
|
||||
// if no solid layers are requested, turn top/bottom surfaces to internal
|
||||
// For Lightning infill, infill_only_where_needed is ignored because both
|
||||
// do a similar thing, and their combination doesn't make much sense.
|
||||
if (! spiral_vase && this->region().config().top_solid_layers == 0) {
|
||||
for (Surface &surface : this->fill_surfaces.surfaces)
|
||||
if (surface.is_top())
|
||||
surface.surface_type = this->layer()->object()->config().infill_only_where_needed ? stInternalVoid : stInternal;
|
||||
surface.surface_type = this->layer()->object()->config().infill_only_where_needed && this->region().config().fill_pattern != ipLightning ? stInternalVoid : stInternal;
|
||||
}
|
||||
if (this->region().config().bottom_solid_layers == 0) {
|
||||
for (Surface &surface : this->fill_surfaces.surfaces)
|
||||
|
|
|
@ -21,12 +21,12 @@
|
|||
|
||||
namespace Slic3r {
|
||||
|
||||
ExtrusionPaths thick_polyline_to_extrusion_paths(const ThickPolyline &thick_polyline, ExtrusionRole role, const Flow &flow, const float tolerance, const float merge_tolerance)
|
||||
ExtrusionMultiPath thick_polyline_to_multi_path(const ThickPolyline &thick_polyline, ExtrusionRole role, const Flow &flow, const float tolerance, const float merge_tolerance)
|
||||
{
|
||||
ExtrusionPaths paths;
|
||||
ExtrusionPath path(role);
|
||||
ThickLines lines = thick_polyline.thicklines();
|
||||
|
||||
ExtrusionMultiPath multi_path;
|
||||
ExtrusionPath path(role);
|
||||
ThickLines lines = thick_polyline.thicklines();
|
||||
|
||||
for (int i = 0; i < (int)lines.size(); ++i) {
|
||||
const ThickLine& line = lines[i];
|
||||
assert(line.a_width >= SCALED_EPSILON && line.b_width >= SCALED_EPSILON);
|
||||
|
@ -38,8 +38,8 @@ ExtrusionPaths thick_polyline_to_extrusion_paths(const ThickPolyline &thick_poly
|
|||
path.polyline.points.back() = line.b; // If the variable path is non-empty, connect this tiny line to it.
|
||||
else if (i + 1 < (int)lines.size()) // If there is at least one following line, connect this tiny line to it.
|
||||
lines[i + 1].a = line.a;
|
||||
else if (!paths.empty())
|
||||
paths.back().polyline.points.back() = line.b; // Connect this tiny line to the last finished path.
|
||||
else if (!multi_path.paths.empty())
|
||||
multi_path.paths.back().polyline.points.back() = line.b; // Connect this tiny line to the last finished path.
|
||||
|
||||
// If any of the above isn't satisfied, then remove this tiny line.
|
||||
continue;
|
||||
|
@ -103,40 +103,38 @@ ExtrusionPaths thick_polyline_to_extrusion_paths(const ThickPolyline &thick_poly
|
|||
path.polyline.append(line.b);
|
||||
} else {
|
||||
// we need to initialize a new line
|
||||
paths.emplace_back(std::move(path));
|
||||
multi_path.paths.emplace_back(std::move(path));
|
||||
path = ExtrusionPath(role);
|
||||
-- i;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (path.polyline.is_valid())
|
||||
paths.emplace_back(std::move(path));
|
||||
return paths;
|
||||
multi_path.paths.emplace_back(std::move(path));
|
||||
return multi_path;
|
||||
}
|
||||
|
||||
static void variable_width(const ThickPolylines& polylines, ExtrusionRole role, const Flow &flow, std::vector<ExtrusionEntity*> &out)
|
||||
static void variable_width(const ThickPolylines &polylines, ExtrusionRole role, const Flow &flow, std::vector<ExtrusionEntity *> &out)
|
||||
{
|
||||
// This value determines granularity of adaptive width, as G-code does not allow
|
||||
// variable extrusion within a single move; this value shall only affect the amount
|
||||
// of segments, and any pruning shall be performed before we apply this tolerance.
|
||||
const auto tolerance = float(scale_(0.05));
|
||||
for (const ThickPolyline &p : polylines) {
|
||||
ExtrusionPaths paths = thick_polyline_to_extrusion_paths(p, role, flow, tolerance, tolerance);
|
||||
// Append paths to collection.
|
||||
if (!paths.empty()) {
|
||||
for (auto it = std::next(paths.begin()); it != paths.end(); ++it) {
|
||||
// This value determines granularity of adaptive width, as G-code does not allow
|
||||
// variable extrusion within a single move; this value shall only affect the amount
|
||||
// of segments, and any pruning shall be performed before we apply this tolerance.
|
||||
const auto tolerance = float(scale_(0.05));
|
||||
for (const ThickPolyline &p : polylines) {
|
||||
ExtrusionMultiPath multi_path = thick_polyline_to_multi_path(p, role, flow, tolerance, tolerance);
|
||||
// Append paths to collection.
|
||||
if (!multi_path.paths.empty()) {
|
||||
for (auto it = std::next(multi_path.paths.begin()); it != multi_path.paths.end(); ++it) {
|
||||
assert(it->polyline.points.size() >= 2);
|
||||
assert(std::prev(it)->polyline.last_point() == it->polyline.first_point());
|
||||
}
|
||||
|
||||
if (paths.front().first_point() == paths.back().last_point()) {
|
||||
out.emplace_back(new ExtrusionLoop(std::move(paths)));
|
||||
} else {
|
||||
for (ExtrusionPath &path : paths)
|
||||
out.emplace_back(new ExtrusionPath(std::move(path)));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (multi_path.paths.front().first_point() == multi_path.paths.back().last_point())
|
||||
out.emplace_back(new ExtrusionLoop(std::move(multi_path.paths)));
|
||||
else
|
||||
out.emplace_back(new ExtrusionMultiPath(std::move(multi_path)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Hierarchy of perimeters.
|
||||
|
@ -534,10 +532,35 @@ static ExtrusionEntityCollection traverse_extrusions(const PerimeterGenerator &p
|
|||
else
|
||||
extrusion_loop.make_clockwise();
|
||||
|
||||
for (auto it = std::next(extrusion_loop.paths.begin()); it != extrusion_loop.paths.end(); ++it) {
|
||||
assert(it->polyline.points.size() >= 2);
|
||||
assert(std::prev(it)->polyline.last_point() == it->polyline.first_point());
|
||||
}
|
||||
assert(extrusion_loop.paths.front().first_point() == extrusion_loop.paths.back().last_point());
|
||||
|
||||
extrusion_coll.append(std::move(extrusion_loop));
|
||||
} else
|
||||
for (ExtrusionPath &path : paths)
|
||||
extrusion_coll.append(ExtrusionPath(std::move(path)));
|
||||
} else {
|
||||
// Because we are processing one ExtrusionLine all ExtrusionPaths should form one connected path.
|
||||
// But there is possibility that due to numerical issue there is poss
|
||||
assert([&paths = std::as_const(paths)]() -> bool {
|
||||
for (auto it = std::next(paths.begin()); it != paths.end(); ++it)
|
||||
if (std::prev(it)->polyline.last_point() != it->polyline.first_point())
|
||||
return false;
|
||||
return true;
|
||||
}());
|
||||
ExtrusionMultiPath multi_path;
|
||||
multi_path.paths.emplace_back(std::move(paths.front()));
|
||||
|
||||
for (auto it_path = std::next(paths.begin()); it_path != paths.end(); ++it_path) {
|
||||
if (multi_path.paths.back().last_point() != it_path->first_point()) {
|
||||
extrusion_coll.append(ExtrusionMultiPath(std::move(multi_path)));
|
||||
multi_path = ExtrusionMultiPath();
|
||||
}
|
||||
multi_path.paths.emplace_back(std::move(*it_path));
|
||||
}
|
||||
|
||||
extrusion_coll.append(ExtrusionMultiPath(std::move(multi_path)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ private:
|
|||
Polygons m_lower_slices_polygons;
|
||||
};
|
||||
|
||||
ExtrusionPaths thick_polyline_to_extrusion_paths(const ThickPolyline &thick_polyline, ExtrusionRole role, const Flow &flow, float tolerance, float merge_tolerance);
|
||||
ExtrusionMultiPath thick_polyline_to_multi_path(const ThickPolyline &thick_polyline, ExtrusionRole role, const Flow &flow, float tolerance, float merge_tolerance);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -1051,6 +1051,7 @@ void PrintConfigDef::init_fff_params()
|
|||
def->enum_values.push_back("HIPS");
|
||||
def->enum_values.push_back("EDGE");
|
||||
def->enum_values.push_back("NGEN");
|
||||
def->enum_values.push_back("PA");
|
||||
def->enum_values.push_back("NYLON");
|
||||
def->enum_values.push_back("PVA");
|
||||
def->enum_values.push_back("PC");
|
||||
|
|
|
@ -626,12 +626,21 @@ bool PrintObject::invalidate_state_by_config_options(
|
|||
|| opt_key == "bottom_fill_pattern"
|
||||
|| opt_key == "external_fill_link_max_length"
|
||||
|| opt_key == "fill_angle"
|
||||
|| opt_key == "fill_pattern"
|
||||
|| opt_key == "infill_anchor"
|
||||
|| opt_key == "infill_anchor_max"
|
||||
|| opt_key == "top_infill_extrusion_width"
|
||||
|| opt_key == "first_layer_extrusion_width") {
|
||||
steps.emplace_back(posInfill);
|
||||
} else if (opt_key == "fill_pattern") {
|
||||
steps.emplace_back(posInfill);
|
||||
|
||||
const auto *old_fill_pattern = old_config.option<ConfigOptionEnum<InfillPattern>>(opt_key);
|
||||
const auto *new_fill_pattern = new_config.option<ConfigOptionEnum<InfillPattern>>(opt_key);
|
||||
assert(old_fill_pattern && new_fill_pattern);
|
||||
// We need to recalculate infill surfaces when infill_only_where_needed is enabled, and we are switching from
|
||||
// the Lightning infill to another infill or vice versa.
|
||||
if (m_config.infill_only_where_needed && (new_fill_pattern->value == ipLightning || old_fill_pattern->value == ipLightning))
|
||||
steps.emplace_back(posPrepareInfill);
|
||||
} else if (opt_key == "fill_density") {
|
||||
// One likely wants to reslice only when switching between zero infill to simulate boolean difference (subtracting volumes),
|
||||
// normal infill and 100% (solid) infill.
|
||||
|
@ -1727,7 +1736,14 @@ bool PrintObject::update_layer_height_profile(const ModelObject &model_object, c
|
|||
// fill_surfaces but we only turn them into VOID surfaces, thus preserving the boundaries.
|
||||
void PrintObject::clip_fill_surfaces()
|
||||
{
|
||||
if (! m_config.infill_only_where_needed.value)
|
||||
bool has_lightning_infill = false;
|
||||
for (size_t region_id = 0; region_id < this->num_printing_regions(); ++region_id)
|
||||
if (const PrintRegionConfig &config = this->printing_region(region_id).config(); config.fill_density > 0 && config.fill_pattern == ipLightning)
|
||||
has_lightning_infill = true;
|
||||
|
||||
// For Lightning infill, infill_only_where_needed is ignored because both
|
||||
// do a similar thing, and their combination doesn't make much sense.
|
||||
if (! m_config.infill_only_where_needed.value || has_lightning_infill)
|
||||
return;
|
||||
bool has_infill = false;
|
||||
for (size_t i = 0; i < this->num_printing_regions(); ++ i)
|
||||
|
|
|
@ -603,7 +603,7 @@ bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, boo
|
|||
else
|
||||
glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data()));
|
||||
|
||||
if (use_mipmaps) {
|
||||
if (use_mipmaps && OpenGLManager::use_manually_generated_mipmaps()) {
|
||||
// we manually generate mipmaps because glGenerateMipmap() function is not reliable on all graphics cards
|
||||
int lod_w = m_width;
|
||||
int lod_h = m_height;
|
||||
|
@ -632,8 +632,9 @@ bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, boo
|
|||
glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, level));
|
||||
glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR));
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else if (use_mipmaps && !OpenGLManager::use_manually_generated_mipmaps()) {
|
||||
glGenerateMipmap(GL_TEXTURE_2D);
|
||||
} else {
|
||||
glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR));
|
||||
glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0));
|
||||
}
|
||||
|
|
|
@ -896,6 +896,7 @@ static boost::optional<Semver> parse_semver_from_ini(std::string path)
|
|||
void GUI_App::init_app_config()
|
||||
{
|
||||
// Profiles for the alpha are stored into the PrusaSlicer-alpha directory to not mix with the current release.
|
||||
|
||||
// SetAppName(SLIC3R_APP_KEY);
|
||||
SetAppName(SLIC3R_APP_KEY "-alpha");
|
||||
// SetAppName(SLIC3R_APP_KEY "-beta");
|
||||
|
|
|
@ -319,7 +319,7 @@ static void generate_thumbnail_from_model(const std::string& filename)
|
|||
|
||||
fs::path out_path = fs::path(filename);
|
||||
out_path.replace_extension("png");
|
||||
image.SaveFile(out_path.string(), wxBITMAP_TYPE_PNG);
|
||||
image.SaveFile(from_u8(out_path.string()), wxBITMAP_TYPE_PNG);
|
||||
}
|
||||
|
||||
void GalleryDialog::load_label_icon_list()
|
||||
|
@ -366,8 +366,6 @@ void GalleryDialog::load_label_icon_list()
|
|||
m_image_list = new wxImageList(px_cnt, px_cnt);
|
||||
#endif
|
||||
|
||||
std::string ext = ".png";
|
||||
|
||||
for (const auto& item : list_items) {
|
||||
fs::path model_path = fs::path((item.is_system ? m_sys_dir_path : m_cust_dir_path) + item.name);
|
||||
std::string model_name = model_path.string();
|
||||
|
|
|
@ -254,6 +254,7 @@ std::vector<std::string> OpenGLManager::GLInfo::get_extensions_list() const
|
|||
|
||||
OpenGLManager::GLInfo OpenGLManager::s_gl_info;
|
||||
bool OpenGLManager::s_compressed_textures_supported = false;
|
||||
bool OpenGLManager::m_use_manually_generated_mipmaps = true;
|
||||
OpenGLManager::EMultisampleState OpenGLManager::s_multisample = OpenGLManager::EMultisampleState::Unknown;
|
||||
OpenGLManager::EFramebufferType OpenGLManager::s_framebuffers_type = OpenGLManager::EFramebufferType::Unknown;
|
||||
|
||||
|
@ -411,6 +412,34 @@ bool OpenGLManager::init_gl()
|
|||
}
|
||||
#endif // ENABLE_OPENGL_DEBUG_OPTION
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
// Since AMD driver version 22.7.1, there is probably some bug in the driver that causes the issue with the missing
|
||||
// texture of the bed. It seems that this issue only triggers when mipmaps are generated manually
|
||||
// (combined with a texture compression) and when mipmaps are generated through OpenGL glGenerateMipmap is working.
|
||||
// So, for newer drivers than 22.6.1, the last working driver version, we use mipmaps generated through OpenGL.
|
||||
if (const auto gl_info = OpenGLManager::get_gl_info(); boost::contains(gl_info.get_vendor(), "ATI Technologies Inc.")) {
|
||||
// WHQL drivers seem to have one more version number at the end besides non-WHQL drivers.
|
||||
// WHQL: 4.6.14800 Compatibility Profile Context 22.6.1 30.0.21023.1015
|
||||
// Non-WHQL: 4.6.0 Compatibility Profile Context 22.8.1.220810
|
||||
std::regex version_rgx(R"(Compatibility\sProfile\sContext\s(\d+)\.(\d+)\.(\d+))");
|
||||
if (std::smatch matches; std::regex_search(gl_info.get_version(), matches, version_rgx) && matches.size() == 4) {
|
||||
int version_major = std::stoi(matches[1].str());
|
||||
int version_minor = std::stoi(matches[2].str());
|
||||
int version_patch = std::stoi(matches[3].str());
|
||||
BOOST_LOG_TRIVIAL(debug) << "Found AMD driver version: " << version_major << "." << version_minor << "." << version_patch;
|
||||
|
||||
if (version_major > 22 || (version_major == 22 && version_minor > 6) || (version_major == 22 && version_minor == 6 && version_patch > 1)) {
|
||||
m_use_manually_generated_mipmaps = false;
|
||||
BOOST_LOG_TRIVIAL(debug) << "Mipmapping through OpenGL was enabled.";
|
||||
}
|
||||
} else {
|
||||
BOOST_LOG_TRIVIAL(error) << "Not recognized format of version.";
|
||||
}
|
||||
} else {
|
||||
BOOST_LOG_TRIVIAL(error) << "Unable to parse version of AMD driver.";
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
@ -108,6 +108,7 @@ private:
|
|||
static EMultisampleState s_multisample;
|
||||
static EFramebufferType s_framebuffers_type;
|
||||
|
||||
static bool m_use_manually_generated_mipmaps;
|
||||
public:
|
||||
OpenGLManager() = default;
|
||||
~OpenGLManager();
|
||||
|
@ -132,6 +133,7 @@ public:
|
|||
static EFramebufferType get_framebuffers_type() { return s_framebuffers_type; }
|
||||
static wxGLCanvas* create_wxglcanvas(wxWindow& parent);
|
||||
static const GLInfo& get_gl_info() { return s_gl_info; }
|
||||
static bool use_manually_generated_mipmaps() { return m_use_manually_generated_mipmaps; }
|
||||
|
||||
private:
|
||||
#if ENABLE_GL_CORE_PROFILE || ENABLE_OPENGL_ES
|
||||
|
|
Loading…
Reference in a new issue