Merge branch 'master' of https://github.com/prusa3d/PrusaSlicer into et_trafo_matrix_rebase
This commit is contained in:
commit
904e3a874e
@ -1,3 +1,5 @@
|
||||
min_slic3r_version = 2.5.0-alpha0
|
||||
0.1.5 Added Ender-3 S1 Pro
|
||||
min_slic3r_version = 2.4.1
|
||||
0.1.4 Added Ender-3 Pro. Added M25 support for some printers.
|
||||
min_slic3r_version = 2.4.0-rc
|
||||
|
@ -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.1.4
|
||||
config_version = 0.1.5
|
||||
# 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%
|
||||
@ -21,7 +21,7 @@ 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
|
||||
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:ENDER3BLTOUCH]
|
||||
name = Creality Ender-3 BLTouch
|
||||
@ -30,7 +30,7 @@ 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
|
||||
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:ENDER3PRO]
|
||||
name = Creality Ender-3 Pro
|
||||
@ -39,7 +39,7 @@ 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
|
||||
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
|
||||
@ -48,7 +48,7 @@ technology = FFF
|
||||
family = ENDER
|
||||
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
|
||||
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:ENDER3S1]
|
||||
name = Creality Ender-3 S1
|
||||
@ -57,7 +57,16 @@ technology = FFF
|
||||
family = ENDER
|
||||
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
|
||||
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:ENDER3S1PRO]
|
||||
name = Creality Ender-3 S1 Pro
|
||||
variants = 0.4
|
||||
technology = FFF
|
||||
family = ENDER
|
||||
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:ENDER3MAX]
|
||||
name = Creality Ender-3 Max
|
||||
@ -66,7 +75,7 @@ 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
|
||||
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:ENDER4]
|
||||
name = Creality Ender-4
|
||||
@ -75,7 +84,7 @@ technology = FFF
|
||||
family = ENDER
|
||||
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
|
||||
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:ENDER5]
|
||||
name = Creality Ender-5
|
||||
@ -84,7 +93,7 @@ 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
|
||||
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:ENDER5PLUS]
|
||||
name = Creality Ender-5 Plus
|
||||
@ -93,7 +102,7 @@ technology = FFF
|
||||
family = ENDER
|
||||
bed_model = ender5plus_bed.stl
|
||||
bed_texture = ender5plus.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
|
||||
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:ENDER6]
|
||||
name = Creality Ender-6
|
||||
@ -102,7 +111,7 @@ technology = FFF
|
||||
family = ENDER
|
||||
bed_model = ender6_bed.stl
|
||||
bed_texture = ender6.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
|
||||
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:ENDER7]
|
||||
name = Creality Ender-7
|
||||
@ -111,7 +120,7 @@ technology = FFF
|
||||
family = ENDER
|
||||
bed_model = ender7_bed.stl
|
||||
bed_texture = ender7.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
|
||||
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:ENDER2]
|
||||
name = Creality Ender-2
|
||||
@ -120,7 +129,7 @@ technology = FFF
|
||||
family = ENDER
|
||||
bed_model = ender2_bed.stl
|
||||
bed_texture = ender2.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
|
||||
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:ENDER2PRO]
|
||||
name = Creality Ender-2 Pro
|
||||
@ -129,7 +138,7 @@ technology = FFF
|
||||
family = ENDER
|
||||
bed_model = ender2pro_bed.stl
|
||||
bed_texture = ender2pro.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
|
||||
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:CR5PRO]
|
||||
name = Creality CR-5 Pro
|
||||
@ -138,7 +147,7 @@ technology = FFF
|
||||
family = CR
|
||||
bed_model = cr5pro_bed.stl
|
||||
bed_texture = cr5pro.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
|
||||
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:CR5PROH]
|
||||
name = Creality CR-5 Pro H
|
||||
@ -147,7 +156,7 @@ technology = FFF
|
||||
family = CR
|
||||
bed_model = cr5pro_bed.stl
|
||||
bed_texture = cr5pro.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
|
||||
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:CR6SE]
|
||||
name = Creality CR-6 SE
|
||||
@ -156,7 +165,7 @@ technology = FFF
|
||||
family = CR
|
||||
bed_model = cr6se_bed.stl
|
||||
bed_texture = cr6se.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
|
||||
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:CR6MAX]
|
||||
name = Creality CR-6 Max
|
||||
@ -165,7 +174,7 @@ technology = FFF
|
||||
family = CR
|
||||
bed_model = cr10s4_bed.stl
|
||||
bed_texture = cr10s4.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
|
||||
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:CR10SMART]
|
||||
name = Creality CR-10 SMART
|
||||
@ -174,7 +183,7 @@ technology = FFF
|
||||
family = CR
|
||||
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
|
||||
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:CR10MINI]
|
||||
name = Creality CR-10 Mini
|
||||
@ -183,7 +192,7 @@ technology = FFF
|
||||
family = CR
|
||||
bed_model = cr10mini_bed.stl
|
||||
bed_texture = cr10mini.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
|
||||
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:CR10MAX]
|
||||
name = Creality CR-10 Max
|
||||
@ -192,7 +201,7 @@ technology = FFF
|
||||
family = CR
|
||||
bed_model = cr10max_bed.stl
|
||||
bed_texture = cr10max.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
|
||||
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:CR10]
|
||||
name = Creality CR-10
|
||||
@ -201,7 +210,7 @@ technology = FFF
|
||||
family = CR
|
||||
bed_model = cr10_bed.stl
|
||||
bed_texture = cr10.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
|
||||
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:CR10V2]
|
||||
name = Creality CR-10 V2
|
||||
@ -210,7 +219,7 @@ technology = FFF
|
||||
family = CR
|
||||
bed_model = cr10v2_bed.stl
|
||||
bed_texture = cr10.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
|
||||
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:CR10V3]
|
||||
name = Creality CR-10 V3
|
||||
@ -219,7 +228,7 @@ technology = FFF
|
||||
family = CR
|
||||
bed_model = cr10v2_bed.stl
|
||||
bed_texture = cr10.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
|
||||
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:CR10S]
|
||||
name = Creality CR-10 S
|
||||
@ -228,7 +237,7 @@ technology = FFF
|
||||
family = CR
|
||||
bed_model = cr10_bed.stl
|
||||
bed_texture = cr10.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
|
||||
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:CR10SPRO]
|
||||
name = Creality CR-10 S Pro
|
||||
@ -237,7 +246,7 @@ technology = FFF
|
||||
family = CR
|
||||
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
|
||||
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:CR10SPROV2]
|
||||
name = Creality CR-10 S Pro V2
|
||||
@ -246,7 +255,7 @@ technology = FFF
|
||||
family = CR
|
||||
bed_model = cr10v2_bed.stl
|
||||
bed_texture = cr10.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
|
||||
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:CR10S4]
|
||||
name = Creality CR-10 S4
|
||||
@ -255,7 +264,7 @@ technology = FFF
|
||||
family = CR
|
||||
bed_model = cr10s4_bed.stl
|
||||
bed_texture = cr10s4.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
|
||||
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:CR10S5]
|
||||
name = Creality CR-10 S5
|
||||
@ -264,7 +273,7 @@ technology = FFF
|
||||
family = CR
|
||||
bed_model = cr10s5_bed.stl
|
||||
bed_texture = cr10s5.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
|
||||
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:CR20]
|
||||
name = Creality CR-20
|
||||
@ -273,7 +282,7 @@ technology = FFF
|
||||
family = CR
|
||||
bed_model = ender3_bed.stl
|
||||
bed_texture = cr20.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
|
||||
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:CR20PRO]
|
||||
name = Creality CR-20 Pro
|
||||
@ -282,7 +291,7 @@ technology = FFF
|
||||
family = CR
|
||||
bed_model = ender3_bed.stl
|
||||
bed_texture = cr20.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
|
||||
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:CR200B]
|
||||
name = Creality CR-200B
|
||||
@ -291,7 +300,7 @@ technology = FFF
|
||||
family = CR
|
||||
bed_model = cr200b_bed.stl
|
||||
bed_texture = cr200b.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
|
||||
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:CR8]
|
||||
name = Creality CR-8
|
||||
@ -300,7 +309,7 @@ technology = FFF
|
||||
family = CR
|
||||
bed_model = cr8_bed.stl
|
||||
bed_texture = cr8.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
|
||||
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:CRX]
|
||||
#name = Creality CR-X
|
||||
@ -309,7 +318,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @
|
||||
#family = CR-X
|
||||
#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
|
||||
#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:CRXPRO]
|
||||
#name = Creality CR-X Pro
|
||||
@ -318,7 +327,7 @@ default_materials = Generic PLA @CREALITY; Generic PETG @CREALITY; Generic ABS @
|
||||
#family = CR-X
|
||||
#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
|
||||
#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:SERMOOND1]
|
||||
name = Creality Sermoon-D1
|
||||
@ -327,7 +336,7 @@ technology = FFF
|
||||
family = SERMOON
|
||||
bed_model = sermoond1_bed.stl
|
||||
bed_texture = sermoond1.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
|
||||
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
|
||||
|
||||
# All presets starting with asterisk, for example *common*, are intermediate and they will
|
||||
# not make it into the user interface.
|
||||
@ -842,6 +851,17 @@ filament_cost = 27.44
|
||||
filament_density = 1.29
|
||||
filament_colour = #C7F935
|
||||
|
||||
[filament:Verbatim PLA @CREALITY]
|
||||
inherits = *PLA*
|
||||
filament_vendor = Verbatim
|
||||
temperature = 205
|
||||
bed_temperature = 60
|
||||
first_layer_temperature = 210
|
||||
first_layer_bed_temperature = 60
|
||||
filament_cost = 22.99
|
||||
filament_density = 1.24
|
||||
filament_colour = #001ca8
|
||||
|
||||
# Common printer preset
|
||||
[printer:*common*]
|
||||
printer_technology = FFF
|
||||
@ -989,6 +1009,13 @@ max_print_height = 270
|
||||
printer_model = ENDER3S1
|
||||
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_ENDER3S1
|
||||
|
||||
[printer:Creality Ender-3 S1 Pro]
|
||||
inherits = *common*; *pauseprint*; *spriteextruder*
|
||||
bed_shape = 5x0,215x0,215x220,5x220
|
||||
max_print_height = 270
|
||||
printer_model = ENDER3S1PRO
|
||||
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_ENDER3S1PRO
|
||||
|
||||
[printer:Creality Ender-3 Max]
|
||||
inherits = *common*; *pauseprint*
|
||||
retract_length = 6
|
||||
|
BIN
resources/profiles/Creality/ENDER3S1PRO_thumbnail.png
Normal file
BIN
resources/profiles/Creality/ENDER3S1PRO_thumbnail.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 43 KiB |
@ -1,4 +1,6 @@
|
||||
min_slic3r_version = 2.3.1-beta
|
||||
min_slic3r_version = 2.5.0-alpha0
|
||||
0.0.4 Improve Proton X profiles, Add Proton XE-750 printer
|
||||
min_slic3r_version = 2.4.1
|
||||
0.0.3 Set default filament profile.
|
||||
0.0.2 Improved start gcode, changed filename format
|
||||
0.0.1 Initial version
|
||||
|
@ -3,7 +3,7 @@
|
||||
[vendor]
|
||||
# Vendor name will be shown by the Config Wizard.
|
||||
name = INAT
|
||||
config_version = 0.0.3
|
||||
config_version = 0.0.4
|
||||
config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/INAT/
|
||||
|
||||
###
|
||||
@ -24,9 +24,16 @@ technology = FFF
|
||||
family = Proton
|
||||
default_materials = PLA @PROTON_X
|
||||
|
||||
[printer_model:PROTON_XE750]
|
||||
name = INAT Proton XE-750
|
||||
variants = 0.4
|
||||
technology = FFF
|
||||
family = Proton
|
||||
default_materials = PLA @PROTON_XE750
|
||||
|
||||
|
||||
###
|
||||
### QUALITY DEFINITIONS
|
||||
### COMMON QUALITY DEFINITIONS
|
||||
###
|
||||
|
||||
[print:*common*]
|
||||
@ -35,14 +42,15 @@ layer_height = 0.2
|
||||
first_layer_height = 0.2
|
||||
perimeters = 3
|
||||
spiral_vase = 0
|
||||
top_solid_layers = 4
|
||||
top_solid_layers = 5
|
||||
bottom_solid_layers = 3
|
||||
top_solid_min_thickness = 0.8
|
||||
top_solid_min_thickness = 1
|
||||
bottom_solid_min_thickness = 0.6
|
||||
extra_perimeters = 1
|
||||
ensure_vertical_shell_thickness = 1
|
||||
avoid_crossing_perimeters = 0
|
||||
thin_walls = 0
|
||||
thick_bridges = 0
|
||||
overhangs = 1
|
||||
seam_position = aligned
|
||||
external_perimeters_first = 0
|
||||
@ -76,7 +84,9 @@ support_material_auto = 1
|
||||
support_material_threshold = 0
|
||||
support_material_enforce_layers = 0
|
||||
raft_layers = 0
|
||||
support_material_contact_distance = 0.2
|
||||
support_material_style = grid
|
||||
support_material_contact_distance = 0.25
|
||||
support_material_bottom_contact_distance = 0.3
|
||||
support_material_pattern = rectilinear
|
||||
support_material_with_sheath = 0
|
||||
support_material_spacing = 5
|
||||
@ -92,8 +102,8 @@ perimeter_speed = 60
|
||||
small_perimeter_speed = 75%
|
||||
external_perimeter_speed = 50%
|
||||
infill_speed = 80
|
||||
solid_infill_speed = 100%
|
||||
top_solid_infill_speed = 30
|
||||
solid_infill_speed = 80%
|
||||
top_solid_infill_speed = 20
|
||||
support_material_speed = 80
|
||||
support_material_interface_speed = 100%
|
||||
bridge_speed = 60
|
||||
@ -126,7 +136,7 @@ infill_overlap = 25%
|
||||
bridge_flow_ratio = 1
|
||||
slice_closing_radius = 0.049
|
||||
resolution = 0
|
||||
xy_size_compensation = 0
|
||||
xy_size_compensation = -0.05
|
||||
elefant_foot_compensation = 0.3
|
||||
clip_multipart_objects = 0
|
||||
#output
|
||||
@ -138,47 +148,50 @@ gcode_label_objects = 0
|
||||
output_filename_format = {input_filename_base}_{filament_type[0]}.gcode
|
||||
|
||||
|
||||
[print:0.2mm Standard @PROTON_X]
|
||||
[print:*common 0.2mm Standard @INAT*]
|
||||
inherits = *common*
|
||||
|
||||
[print:0.2mm Strong @PROTON_X]
|
||||
[print:*common 0.2mm Strong @INAT*]
|
||||
inherits = *common*
|
||||
fill_density = 50%
|
||||
perimeters = 6
|
||||
|
||||
[print:0.2mm Advanced Material @PROTON_X]
|
||||
[print:*common 0.2mm Advanced Material @INAT*]
|
||||
inherits = *common*
|
||||
bottom_solid_layers = 5
|
||||
top_solid_layers = 6
|
||||
skirts = 0
|
||||
brim_width = 30
|
||||
brim_width = 20
|
||||
infill_speed = 60
|
||||
support_material_speed = 60
|
||||
travel_speed = 100
|
||||
first_layer_speed = 20
|
||||
elefant_foot_compensation = 0
|
||||
|
||||
[print:0.12mm Fine @PROTON_X]
|
||||
[print:*common 0.12mm Fine @INAT*]
|
||||
inherits = *common*
|
||||
layer_height = 0.12
|
||||
bottom_solid_layers = 7
|
||||
top_solid_layers = 7
|
||||
infill_every_layers = 2
|
||||
perimeter_speed = 50
|
||||
infill_speed = 50
|
||||
|
||||
[print:0.32mm Draft @PROTON_X]
|
||||
[print:*common 0.32mm Draft @INAT*]
|
||||
inherits = *common*
|
||||
layer_height = 0.32
|
||||
perimeter_speed = 80
|
||||
external_perimeter_speed = 75%
|
||||
infill_speed = 100
|
||||
top_solid_infill_speed = 60
|
||||
fill_density = 15%
|
||||
support_material_style = snug
|
||||
|
||||
###
|
||||
### PRINTER DEFINITIONS
|
||||
### COMMON PRINTER DEFINITIONS
|
||||
###
|
||||
|
||||
[printer:*common*]
|
||||
[printer:*proton_x_common*]
|
||||
printer_vendor = INAT s.r.o.
|
||||
default_filament_profile = "PLA @PROTON_X"
|
||||
#general
|
||||
@ -206,14 +219,14 @@ machine_max_feedrate_z = 10,10
|
||||
machine_max_feedrate_e = 100,100
|
||||
machine_max_acceleration_x = 500,500
|
||||
machine_max_acceleration_y = 500,500
|
||||
machine_max_acceleration_z = 100,100
|
||||
machine_max_acceleration_e = 2000,2000
|
||||
machine_max_acceleration_z = 200,200
|
||||
machine_max_acceleration_e = 8000,8000
|
||||
machine_max_acceleration_extruding = 1000,1000
|
||||
machine_max_acceleration_retracting = 1500,1500
|
||||
machine_max_acceleration_retracting = 8000,8000
|
||||
machine_max_jerk_x = 8,8
|
||||
machine_max_jerk_y = 8,8
|
||||
machine_max_jerk_z = 1,1
|
||||
machine_max_jerk_e = 2.5,2.5
|
||||
machine_max_jerk_z = 3,3
|
||||
machine_max_jerk_e = 10,10
|
||||
machine_min_extruding_rate = 5
|
||||
#extruder 1
|
||||
nozzle_diameter = 0.4
|
||||
@ -233,24 +246,65 @@ wipe = 1
|
||||
retract_before_wipe = 100%
|
||||
|
||||
|
||||
[printer:Proton X Rail]
|
||||
inherits = *common*
|
||||
printer_model = PROTON_X_RAIL
|
||||
printer_variant = 0.4
|
||||
default_print_profile = 0.2mm Standard @PROTON_X
|
||||
gcode_flavor = marlin
|
||||
machine_max_acceleration_y = 800,800
|
||||
|
||||
[printer:Proton X Rod]
|
||||
inherits = *common*
|
||||
printer_model = PROTON_X_ROD
|
||||
printer_variant = 0.4
|
||||
default_print_profile = 0.2mm Standard @PROTON_X
|
||||
[printer:*proton_xe750_common*]
|
||||
printer_vendor = INAT s.r.o.
|
||||
default_filament_profile = "PLA @PROTON_XE750"
|
||||
#general
|
||||
printer_technology = FFF
|
||||
bed_shape = 0x0,600x0,600x500,0x500
|
||||
max_print_height = 750
|
||||
z_offset = 0
|
||||
extruders_count = 2
|
||||
gcode_flavor = marlin
|
||||
silent_mode = 0
|
||||
remaining_times = 1
|
||||
use_relative_e_distances = 0
|
||||
use_firmware_retraction = 0
|
||||
use_volumetric_e = 0
|
||||
variable_layer_height = 1
|
||||
#gcodes
|
||||
start_gcode = G28 ;Home\nG0 Z10 F1000\nG29\nG0 X0 Y0 Z30 F6000\nM84 E\nM0\nG1 Z15.0 F6000 ;Move the platform down 15mm\n
|
||||
end_gcode = M400\nM104 S0\nM140 S0\nM107\n;Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X R5\nG0 Y300 F2000\nM84\nG4 S180\nM81 S30\n
|
||||
color_change_gcode = M600
|
||||
#limits
|
||||
machine_limits_usage = emit_to_gcode
|
||||
machine_max_feedrate_x = 200,200
|
||||
machine_max_feedrate_y = 200,200
|
||||
machine_max_feedrate_z = 10,10
|
||||
machine_max_feedrate_e = 100,100
|
||||
machine_max_acceleration_x = 1500,1500
|
||||
machine_max_acceleration_y = 1500,1500
|
||||
machine_max_acceleration_z = 500,500
|
||||
machine_max_acceleration_e = 20000,20000
|
||||
machine_max_acceleration_extruding = 2000,2000
|
||||
machine_max_acceleration_retracting = 8000,8000
|
||||
machine_max_jerk_x = 12,12
|
||||
machine_max_jerk_y = 12,12
|
||||
machine_max_jerk_z = 3,3
|
||||
machine_max_jerk_e = 20,20
|
||||
machine_min_extruding_rate = 5
|
||||
#extruder 1
|
||||
nozzle_diameter = 0.4,0.4
|
||||
min_layer_height = 0.05,0.05
|
||||
max_layer_height = 0.33,0.33
|
||||
extruder_offset = 0x0,0x0
|
||||
retract_length = 1.5,1.5
|
||||
retract_lift = 0.6,0.6
|
||||
retract_lift_above = 0,0
|
||||
retract_lift_below = 0,0
|
||||
retract_speed = 45,45
|
||||
deretract_speed = 0,0
|
||||
retract_restart_extra = 0,0
|
||||
retract_before_travel = 2,2
|
||||
retract_layer_change = 0,0
|
||||
wipe = 1,1
|
||||
retract_before_wipe = 100%,100%
|
||||
retract_length_toolchange = 37,37
|
||||
extruder_colour = #33CC33;#3399FF
|
||||
|
||||
|
||||
###
|
||||
### MATERIAL DEFINITIONS
|
||||
### COMMON MATERIAL DEFINITIONS
|
||||
###
|
||||
|
||||
[filament:*common*]
|
||||
@ -272,7 +326,7 @@ min_print_speed = 10
|
||||
filament_soluble = 0
|
||||
|
||||
|
||||
[filament:PLA @PROTON_X]
|
||||
[filament:*common PLA @INAT*]
|
||||
inherits = *common*
|
||||
temperature = 210
|
||||
bed_temperature = 60
|
||||
@ -281,11 +335,12 @@ first_layer_bed_temperature = 60
|
||||
filament_type = PLA
|
||||
filament_cost = 20
|
||||
filament_density = 1.25
|
||||
fan_always_on = 1
|
||||
min_fan_speed = 50
|
||||
max_fan_speed = 100
|
||||
|
||||
|
||||
[filament:PETG @PROTON_X]
|
||||
[filament:*common PETG @INAT*]
|
||||
inherits = *common*
|
||||
temperature = 240
|
||||
bed_temperature = 80
|
||||
@ -294,10 +349,11 @@ first_layer_bed_temperature = 80
|
||||
filament_type = PETG
|
||||
filament_cost = 25
|
||||
filament_density = 1.27
|
||||
min_fan_speed = 0
|
||||
fan_always_on = 1
|
||||
min_fan_speed = 25
|
||||
max_fan_speed = 50
|
||||
|
||||
[filament:ABS @PROTON_X]
|
||||
[filament:*common ABS @INAT*]
|
||||
inherits = *common*
|
||||
temperature = 235
|
||||
bed_temperature = 100
|
||||
@ -309,7 +365,7 @@ filament_density = 1.01
|
||||
cooling = 0
|
||||
bridge_fan_speed = 0
|
||||
|
||||
[filament:ASA @PROTON_X]
|
||||
[filament:*common ASA @INAT*]
|
||||
inherits = *common*
|
||||
temperature = 240
|
||||
bed_temperature = 110
|
||||
@ -320,7 +376,7 @@ filament_cost = 22
|
||||
filament_density = 1.07
|
||||
cooling = 0
|
||||
|
||||
[filament:TPE @PROTON_X]
|
||||
[filament:*common TPE @INAT*]
|
||||
inherits = *common*
|
||||
temperature = 220
|
||||
bed_temperature = 40
|
||||
@ -334,7 +390,7 @@ max_fan_speed = 50
|
||||
filament_retract_length = 0.8
|
||||
filament_retract_speed = 25
|
||||
|
||||
[filament:HIPS @PROTON_X]
|
||||
[filament:*common HIPS @INAT*]
|
||||
inherits = *common*
|
||||
temperature = 245
|
||||
bed_temperature = 100
|
||||
@ -347,7 +403,7 @@ min_fan_speed = 0
|
||||
max_fan_speed = 50
|
||||
filament_soluble = 1
|
||||
|
||||
[filament:Nylon @PROTON_X]
|
||||
[filament:*common Nylon @INAT*]
|
||||
inherits = *common*
|
||||
temperature = 235
|
||||
bed_temperature = 130
|
||||
@ -359,19 +415,19 @@ filament_density = 1.01
|
||||
cooling = 0
|
||||
bridge_fan_speed = 0
|
||||
|
||||
[filament:PC @PROTON_X]
|
||||
[filament:*common PC @INAT*]
|
||||
inherits = *common*
|
||||
temperature = 270
|
||||
bed_temperature = 130
|
||||
bed_temperature = 115
|
||||
first_layer_temperature = 270
|
||||
first_layer_bed_temperature = 130
|
||||
first_layer_bed_temperature = 115
|
||||
filament_type = PC
|
||||
filament_cost = 65
|
||||
filament_density = 1.19
|
||||
cooling = 0
|
||||
bridge_fan_speed = 0
|
||||
|
||||
[filament:CPE @PROTON_X]
|
||||
[filament:*common CPE @INAT*]
|
||||
inherits = *common*
|
||||
temperature = 280
|
||||
bed_temperature = 90
|
||||
@ -383,7 +439,7 @@ filament_density = 1.27
|
||||
cooling = 0
|
||||
bridge_fan_speed = 0
|
||||
|
||||
[filament:PEEK @PROTON_X]
|
||||
[filament:*common PEEK @INAT*]
|
||||
inherits = *common*
|
||||
temperature = 440
|
||||
bed_temperature = 150
|
||||
@ -395,7 +451,7 @@ filament_density = 1.3
|
||||
cooling = 0
|
||||
bridge_fan_speed = 0
|
||||
|
||||
[filament:PEI @PROTON_X]
|
||||
[filament:*common PEI @INAT*]
|
||||
inherits = *common*
|
||||
temperature = 400
|
||||
bed_temperature = 150
|
||||
@ -407,7 +463,7 @@ filament_density = 1.27
|
||||
cooling = 0
|
||||
bridge_fan_speed = 0
|
||||
|
||||
[filament:Polymaker PolyMide CoPA @PROTON_X]
|
||||
[filament:*common Polymaker PolyMide CoPA @INAT*]
|
||||
inherits = *common*
|
||||
filament_vendor = Polymaker
|
||||
temperature = 265
|
||||
@ -419,7 +475,7 @@ filament_cost = 93
|
||||
filament_density = 1.12
|
||||
cooling = 0
|
||||
|
||||
[filament:Polymaker PolyMide PA6-CF @PROTON_X]
|
||||
[filament:*common Polymaker PolyMide PA6-CF @INAT*]
|
||||
inherits = *common*
|
||||
filament_vendor = Polymaker
|
||||
temperature = 300
|
||||
@ -431,7 +487,7 @@ filament_cost = 95
|
||||
filament_density = 1.17
|
||||
cooling = 0
|
||||
|
||||
[filament:Polymaker PolyMide PA6-GF @PROTON_X]
|
||||
[filament:*common Polymaker PolyMide PA6-GF @INAT*]
|
||||
inherits = *common*
|
||||
filament_vendor = Polymaker
|
||||
temperature = 300
|
||||
@ -443,20 +499,21 @@ filament_cost = 95
|
||||
filament_density = 1.2
|
||||
cooling = 0
|
||||
|
||||
[filament:Devil Design PETG @PROTON_X]
|
||||
[filament:*common Devil Design PETG @INAT*]
|
||||
inherits = *common*
|
||||
filament_vendor = Devil Design
|
||||
temperature = 250
|
||||
temperature = 245
|
||||
bed_temperature = 80
|
||||
first_layer_temperature = 250
|
||||
first_layer_temperature = 245
|
||||
first_layer_bed_temperature = 80
|
||||
filament_type = PETG
|
||||
filament_cost = 22
|
||||
filament_density = 1.23
|
||||
min_fan_speed = 0
|
||||
fan_always_on = 1
|
||||
min_fan_speed = 25
|
||||
max_fan_speed = 50
|
||||
|
||||
[filament:Filament PM PETG FRJet @PROTON_X]
|
||||
[filament:*common Filament PM PETG FRJet @INAT*]
|
||||
inherits = *common*
|
||||
filament_vendor = Filament PM
|
||||
temperature = 250
|
||||
@ -467,3 +524,207 @@ filament_type = PETG
|
||||
filament_cost = 45.5
|
||||
filament_density = 1.27
|
||||
cooling = 0
|
||||
|
||||
|
||||
######
|
||||
###### PROTON X PRINTERS
|
||||
######
|
||||
|
||||
[printer:Proton X Rail]
|
||||
inherits = *proton_x_common*
|
||||
printer_model = PROTON_X_RAIL
|
||||
printer_variant = 0.4
|
||||
default_print_profile = 0.2mm Standard @PROTON_X
|
||||
gcode_flavor = marlin
|
||||
machine_max_acceleration_x = 800,800
|
||||
machine_max_acceleration_y = 800,800
|
||||
machine_max_jerk_x = 10,10
|
||||
machine_max_jerk_y = 10,10
|
||||
|
||||
[printer:Proton X Rod]
|
||||
inherits = *proton_x_common*
|
||||
printer_model = PROTON_X_ROD
|
||||
printer_variant = 0.4
|
||||
default_print_profile = 0.2mm Standard @PROTON_X
|
||||
gcode_flavor = marlin
|
||||
|
||||
[print:0.2mm Standard @PROTON_X]
|
||||
inherits = *common 0.2mm Standard @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
[print:0.2mm Strong @PROTON_X]
|
||||
inherits = *common 0.2mm Strong @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
[print:0.2mm Advanced Material @PROTON_X]
|
||||
inherits = *common 0.2mm Advanced Material @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
[print:0.12mm Fine @PROTON_X]
|
||||
inherits = *common 0.12mm Fine @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
[print:0.32mm Draft @PROTON_X]
|
||||
inherits = *common 0.32mm Draft @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
|
||||
|
||||
[filament:PLA @PROTON_X]
|
||||
inherits =*common PLA @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
[filament:PETG @PROTON_X]
|
||||
inherits =*common PETG @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
[filament:ABS @PROTON_X]
|
||||
inherits =*common ABS @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
[filament:ASA @PROTON_X]
|
||||
inherits =*common ASA @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
[filament:TPE @PROTON_X]
|
||||
inherits =*common TPE @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
[filament:HIPS @PROTON_X]
|
||||
inherits =*common HIPS @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
[filament:Nylon @PROTON_X]
|
||||
inherits =*common Nylon @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
[filament:PC @PROTON_X]
|
||||
inherits =*common PC @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
[filament:CPE @PROTON_X]
|
||||
inherits =*common CPE @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
[filament:PEEK @PROTON_X]
|
||||
inherits =*common PEEK @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
[filament:PEI @PROTON_X]
|
||||
inherits =*common PEI @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
[filament:Polymaker PolyMide CoPA @PROTON_X]
|
||||
inherits =*common Polymaker PolyMide CoPA @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
[filament:Polymaker PolyMide PA6-CF @PROTON_X]
|
||||
inherits =*common Polymaker PolyMide PA6-CF @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
[filament:Polymaker PolyMide PA6-GF @PROTON_X]
|
||||
inherits =*common Polymaker PolyMide PA6-GF @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
[filament:Devil Design PETG @PROTON_X]
|
||||
inherits =*common Devil Design PETG @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
[filament:Filament PM PETG FRJet @PROTON_X]
|
||||
inherits =*common Filament PM PETG FRJet @INAT*
|
||||
compatible_printers = "Proton X Rail";"Proton X Rod"
|
||||
|
||||
|
||||
|
||||
|
||||
######### #########
|
||||
######### Proton XE 750 #########
|
||||
######### #########
|
||||
|
||||
[printer:Proton XE-750]
|
||||
inherits = *proton_xe750_common*
|
||||
printer_model = PROTON_XE750
|
||||
printer_variant = 0.4
|
||||
default_print_profile = 0.2mm Standard @PROTON_XE750
|
||||
gcode_flavor = marlin
|
||||
|
||||
|
||||
[print:0.2mm Standard @PROTON_XE750]
|
||||
inherits = *common 0.2mm Standard @INAT*
|
||||
compatible_printers = "Proton XE-750"
|
||||
|
||||
[print:0.2mm Strong @PROTON_XE750]
|
||||
inherits = *common 0.2mm Strong @INAT*
|
||||
compatible_printers = "Proton XE-750"
|
||||
|
||||
[print:0.2mm Advanced Material @PROTON_XE750]
|
||||
inherits = *common 0.2mm Advanced Material @INAT*
|
||||
compatible_printers = "Proton XE-750"
|
||||
|
||||
[print:0.12mm Fine @PROTON_XE750]
|
||||
inherits = *common 0.12mm Fine @INAT*
|
||||
compatible_printers = "Proton XE-750"
|
||||
|
||||
[print:0.32mm Draft @PROTON_XE750]
|
||||
inherits = *common 0.32mm Draft @INAT*
|
||||
compatible_printers = "Proton XE-750"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[filament:*start_end_gcode @PROTON_XE750*]
|
||||
start_filament_gcode = "; Filament start gcode BEGIN\nM104 S[temperature[current_extruder]]\nG4 S20\n; Filament start gcode END\n"
|
||||
end_filament_gcode = "; Filament end gcode BEGIN\nG0 X-5 Y250 F10000\nM104 S{temperature[current_extruder] - 50}\n; Filament end gcode END\n"
|
||||
compatible_printers = "Proton XE-750"
|
||||
|
||||
|
||||
|
||||
[filament:PLA @PROTON_XE750]
|
||||
inherits =*common PLA @INAT*; *start_end_gcode @PROTON_XE750*
|
||||
|
||||
[filament:PETG @PROTON_XE750]
|
||||
inherits =*common PETG @INAT*; *start_end_gcode @PROTON_XE750*
|
||||
|
||||
[filament:ABS @PROTON_XE750]
|
||||
inherits =*common ABS @INAT*; *start_end_gcode @PROTON_XE750*
|
||||
|
||||
[filament:ASA @PROTON_XE750]
|
||||
inherits =*common ASA @INAT*; *start_end_gcode @PROTON_XE750*
|
||||
|
||||
[filament:TPE @PROTON_XE750]
|
||||
inherits =*common TPE @INAT*; *start_end_gcode @PROTON_XE750*
|
||||
|
||||
[filament:HIPS @PROTON_XE750]
|
||||
inherits =*common HIPS @INAT*; *start_end_gcode @PROTON_XE750*
|
||||
|
||||
[filament:Nylon @PROTON_XE750]
|
||||
inherits =*common Nylon @INAT*; *start_end_gcode @PROTON_XE750*
|
||||
|
||||
[filament:PC @PROTON_XE750]
|
||||
inherits =*common PC @INAT*; *start_end_gcode @PROTON_XE750*
|
||||
|
||||
[filament:CPE @PROTON_XE750]
|
||||
inherits =*common CPE @INAT*; *start_end_gcode @PROTON_XE750*
|
||||
|
||||
[filament:PEEK @PROTON_XE750]
|
||||
inherits =*common PEEK @INAT*; *start_end_gcode @PROTON_XE750*
|
||||
|
||||
[filament:PEI @PROTON_XE750]
|
||||
inherits =*common PEI @INAT*; *start_end_gcode @PROTON_XE750*
|
||||
|
||||
[filament:Polymaker PolyMide CoPA @PROTON_XE750]
|
||||
inherits =*common Polymaker PolyMide CoPA @INAT*; *start_end_gcode @PROTON_XE750*
|
||||
|
||||
[filament:Polymaker PolyMide PA6-CF @PROTON_XE750]
|
||||
inherits =*common Polymaker PolyMide PA6-CF @INAT*; *start_end_gcode @PROTON_XE750*
|
||||
|
||||
[filament:Polymaker PolyMide PA6-GF @PROTON_XE750]
|
||||
inherits =*common Polymaker PolyMide PA6-GF @INAT*; *start_end_gcode @PROTON_XE750*
|
||||
|
||||
[filament:Devil Design PETG @PROTON_XE750]
|
||||
inherits =*common Devil Design PETG @INAT*; *start_end_gcode @PROTON_XE750*
|
||||
|
||||
[filament:Filament PM PETG FRJet @PROTON_XE750]
|
||||
inherits =*common Filament PM PETG FRJet @INAT*; *start_end_gcode @PROTON_XE750*
|
||||
|
BIN
resources/profiles/INAT/PROTON_XE750_thumbnail.png
Normal file
BIN
resources/profiles/INAT/PROTON_XE750_thumbnail.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 36 KiB |
@ -1,11 +1,12 @@
|
||||
#ifndef ASTAR_HPP
|
||||
#define ASTAR_HPP
|
||||
|
||||
#include <cmath> // std::isinf() is here
|
||||
#include <unordered_map>
|
||||
|
||||
#include "libslic3r/Point.hpp"
|
||||
#include "libslic3r/MutablePriorityQueue.hpp"
|
||||
|
||||
#include <unordered_map>
|
||||
|
||||
namespace Slic3r { namespace astar {
|
||||
|
||||
// Input interface for the Astar algorithm. Specialize this struct for a
|
||||
@ -34,6 +35,8 @@ template<class T> struct TracerTraits_
|
||||
// Get the estimated distance heuristic from node 'n' to the destination.
|
||||
// This is referred to as the h value in AStar context.
|
||||
// If node 'n' is the goal, this function should return a negative value.
|
||||
// Note that this heuristic should be admissible (never bigger than the real
|
||||
// cost) in order for Astar to work.
|
||||
static float goal_heuristic(const T &tracer, const Node &n)
|
||||
{
|
||||
return tracer.goal_heuristic(n);
|
||||
@ -50,131 +53,132 @@ template<class T> struct TracerTraits_
|
||||
template<class T>
|
||||
using TracerNodeT = typename TracerTraits_<remove_cvref_t<T>>::Node;
|
||||
|
||||
namespace detail {
|
||||
// Helper functions dispatching calls through the TracerTraits_ interface
|
||||
constexpr size_t Unassigned = size_t(-1);
|
||||
|
||||
template<class T> using TracerTraits = TracerTraits_<remove_cvref_t<T>>;
|
||||
|
||||
template<class T, class Fn>
|
||||
void foreach_reachable(const T &tracer, const TracerNodeT<T> &from, Fn &&fn)
|
||||
template<class Tracer>
|
||||
struct QNode // Queue node. Keeps track of scores g, and h
|
||||
{
|
||||
TracerTraits<T>::foreach_reachable(tracer, from, fn);
|
||||
}
|
||||
TracerNodeT<Tracer> node; // The actual node itself
|
||||
size_t queue_id; // Position in the open queue or Unassigned if closed
|
||||
size_t parent; // unique id of the parent or Unassigned
|
||||
|
||||
template<class T>
|
||||
float trace_distance(const T &tracer, const TracerNodeT<T> &a, const TracerNodeT<T> &b)
|
||||
{
|
||||
return TracerTraits<T>::distance(tracer, a, b);
|
||||
}
|
||||
float g, h;
|
||||
float f() const { return g + h; }
|
||||
|
||||
template<class T>
|
||||
float goal_heuristic(const T &tracer, const TracerNodeT<T> &n)
|
||||
{
|
||||
return TracerTraits<T>::goal_heuristic(tracer, n);
|
||||
}
|
||||
|
||||
template<class T>
|
||||
size_t unique_id(const T &tracer, const TracerNodeT<T> &n)
|
||||
{
|
||||
return TracerTraits<T>::unique_id(tracer, n);
|
||||
}
|
||||
|
||||
} // namespace astar_detail
|
||||
QNode(TracerNodeT<Tracer> n = {},
|
||||
size_t p = Unassigned,
|
||||
float gval = std::numeric_limits<float>::infinity(),
|
||||
float hval = 0.f)
|
||||
: node{std::move(n)}, parent{p}, queue_id{Unassigned}, g{gval}, h{hval}
|
||||
{}
|
||||
};
|
||||
|
||||
// Run the AStar algorithm on a tracer implementation.
|
||||
// The 'tracer' argument encapsulates the domain (grid, point cloud, etc...)
|
||||
// The 'source' argument is the starting node.
|
||||
// The 'out' argument is the output iterator into which the output nodes are
|
||||
// written.
|
||||
// Note that no destination node is given. The tracer's goal_heuristic() method
|
||||
// should return a negative value if a node is a destination node.
|
||||
template<class Tracer, class It>
|
||||
bool search_route(const Tracer &tracer, const TracerNodeT<Tracer> &source, It out)
|
||||
// written. For performance reasons, the order is reverse, from the destination
|
||||
// to the source -- (destination included, source is not).
|
||||
// The 'cached_nodes' argument is an optional associative container to hold a
|
||||
// QNode entry for each visited node. Any compatible container can be used
|
||||
// (like std::map or maps with different allocators, even a sufficiently large
|
||||
// std::vector).
|
||||
//
|
||||
// Note that no destination node is given in the signature. The tracer's
|
||||
// goal_heuristic() method should return a negative value if a node is a
|
||||
// destination node.
|
||||
template<class Tracer,
|
||||
class It,
|
||||
class NodeMap = std::unordered_map<size_t, QNode<Tracer>>>
|
||||
bool search_route(const Tracer &tracer,
|
||||
const TracerNodeT<Tracer> &source,
|
||||
It out,
|
||||
NodeMap &&cached_nodes = {})
|
||||
{
|
||||
using namespace detail;
|
||||
using Node = TracerNodeT<Tracer>;
|
||||
using QNode = QNode<Tracer>;
|
||||
using TracerTraits = TracerTraits_<remove_cvref_t<Tracer>>;
|
||||
|
||||
using Node = TracerNodeT<Tracer>;
|
||||
enum class QueueType { Open, Closed, None };
|
||||
|
||||
struct QNode // Queue node. Keeps track of scores g, and h
|
||||
{
|
||||
Node node; // The actual node itself
|
||||
QueueType qtype = QueueType::None; // Which queue holds this node
|
||||
|
||||
float g = 0.f, h = 0.f;
|
||||
float f() const { return g + h; }
|
||||
};
|
||||
|
||||
// TODO: apply a linear memory allocator
|
||||
using QMap = std::unordered_map<size_t, QNode>;
|
||||
|
||||
// The traversed nodes are stored here encapsulated in QNodes
|
||||
QMap cached_nodes;
|
||||
|
||||
struct LessPred { // Comparison functor needed by MutablePriorityQueue
|
||||
QMap &m;
|
||||
struct LessPred { // Comparison functor needed by the priority queue
|
||||
NodeMap &m;
|
||||
bool operator ()(size_t node_a, size_t node_b) {
|
||||
auto ait = m.find(node_a);
|
||||
auto bit = m.find(node_b);
|
||||
assert (ait != m.end() && bit != m.end());
|
||||
|
||||
return ait->second.f() < bit->second.f();
|
||||
return m[node_a].f() < m[node_b].f();
|
||||
}
|
||||
};
|
||||
|
||||
auto qopen =
|
||||
make_mutable_priority_queue<size_t, false>([](size_t, size_t){},
|
||||
LessPred{cached_nodes});
|
||||
auto qopen = make_mutable_priority_queue<size_t, true>(
|
||||
[&cached_nodes](size_t el, size_t qidx) {
|
||||
cached_nodes[el].queue_id = qidx;
|
||||
},
|
||||
LessPred{cached_nodes});
|
||||
|
||||
auto qclosed =
|
||||
make_mutable_priority_queue<size_t, false>([](size_t, size_t){},
|
||||
LessPred{cached_nodes});
|
||||
QNode initial{source, /*parent = */ Unassigned, /*g = */0.f};
|
||||
size_t source_id = TracerTraits::unique_id(tracer, source);
|
||||
cached_nodes[source_id] = initial;
|
||||
qopen.push(source_id);
|
||||
|
||||
QNode initial{source, QueueType::Open};
|
||||
cached_nodes.insert({unique_id(tracer, source), initial});
|
||||
qopen.push(unique_id(tracer, source));
|
||||
size_t goal_id = TracerTraits::goal_heuristic(tracer, source) < 0.f ?
|
||||
source_id :
|
||||
Unassigned;
|
||||
|
||||
bool goal_reached = false;
|
||||
|
||||
while (!goal_reached && !qopen.empty()) {
|
||||
while (goal_id == Unassigned && !qopen.empty()) {
|
||||
size_t q_id = qopen.top();
|
||||
qopen.pop();
|
||||
QNode q = cached_nodes.at(q_id);
|
||||
QNode &q = cached_nodes[q_id];
|
||||
|
||||
foreach_reachable(tracer, q.node, [&](const Node &nd) {
|
||||
if (goal_reached) return goal_reached;
|
||||
// This should absolutely be initialized in the cache already
|
||||
assert(!std::isinf(q.g));
|
||||
|
||||
TracerTraits::foreach_reachable(tracer, q.node, [&](const Node &succ_nd) {
|
||||
if (goal_id != Unassigned)
|
||||
return true;
|
||||
|
||||
float h = TracerTraits::goal_heuristic(tracer, succ_nd);
|
||||
float dst = TracerTraits::distance(tracer, q.node, succ_nd);
|
||||
size_t succ_id = TracerTraits::unique_id(tracer, succ_nd);
|
||||
QNode qsucc_nd{succ_nd, q_id, q.g + dst, h};
|
||||
|
||||
float h = goal_heuristic(tracer, nd);
|
||||
if (h < 0.f) {
|
||||
goal_reached = true;
|
||||
goal_id = succ_id;
|
||||
cached_nodes[succ_id] = qsucc_nd;
|
||||
} else {
|
||||
float dst = trace_distance(tracer, q.node, nd);
|
||||
QNode qnd{nd, QueueType::None, q.g + dst, h};
|
||||
size_t qnd_id = unique_id(tracer, nd);
|
||||
// If succ_id is not in cache, it gets created with g = infinity
|
||||
QNode &prev_nd = cached_nodes[succ_id];
|
||||
|
||||
auto it = cached_nodes.find(qnd_id);
|
||||
if (qsucc_nd.g < prev_nd.g) {
|
||||
// new route is better, apply it:
|
||||
|
||||
if (it == cached_nodes.end() ||
|
||||
(it->second.qtype != QueueType::None && qnd.f() < it->second.f())) {
|
||||
qnd.qtype = QueueType::Open;
|
||||
cached_nodes.insert_or_assign(qnd_id, qnd);
|
||||
qopen.push(qnd_id);
|
||||
// Save the old queue id, it would be lost after the next line
|
||||
size_t queue_id = prev_nd.queue_id;
|
||||
|
||||
// The cache needs to be updated either way
|
||||
prev_nd = qsucc_nd;
|
||||
|
||||
if (queue_id == decltype(qopen)::invalid_id())
|
||||
// was in closed or unqueued, rescheduling
|
||||
qopen.push(succ_id);
|
||||
else // was in open, updating
|
||||
qopen.update(queue_id);
|
||||
}
|
||||
}
|
||||
|
||||
return goal_reached;
|
||||
return goal_id != Unassigned;
|
||||
});
|
||||
|
||||
q.qtype = QueueType::Closed;
|
||||
cached_nodes.insert_or_assign(q_id, q);
|
||||
qclosed.push(q_id);
|
||||
|
||||
// write the output
|
||||
*out = q.node;
|
||||
++out;
|
||||
}
|
||||
|
||||
return goal_reached;
|
||||
// Write the output, do not reverse. Clients can do so if they need to.
|
||||
if (goal_id != Unassigned) {
|
||||
const QNode *q = &cached_nodes[goal_id];
|
||||
while (q->parent != Unassigned) {
|
||||
assert(!std::isinf(q->g)); // Uninitialized nodes are NOT allowed
|
||||
|
||||
*out = q->node;
|
||||
++out;
|
||||
q = &cached_nodes[q->parent];
|
||||
}
|
||||
}
|
||||
|
||||
return goal_id != Unassigned;
|
||||
}
|
||||
|
||||
}} // namespace Slic3r::astar
|
||||
|
@ -230,8 +230,13 @@ static std::string appconfig_md5_hash_line(const std::string_view data)
|
||||
return "# MD5 checksum " + md5_digest_str + "\n";
|
||||
};
|
||||
|
||||
struct ConfigFileInfo {
|
||||
bool correct_checksum {false};
|
||||
bool contains_null {false};
|
||||
};
|
||||
|
||||
// Assume that the last line with the comment inside the config file contains a checksum and that the user didn't modify the config file.
|
||||
static bool verify_config_file_checksum(boost::nowide::ifstream &ifs)
|
||||
static ConfigFileInfo check_config_file_and_verify_checksum(boost::nowide::ifstream &ifs)
|
||||
{
|
||||
auto read_whole_config_file = [&ifs]() -> std::string {
|
||||
std::stringstream ss;
|
||||
@ -240,7 +245,8 @@ static bool verify_config_file_checksum(boost::nowide::ifstream &ifs)
|
||||
};
|
||||
|
||||
ifs.seekg(0, boost::nowide::ifstream::beg);
|
||||
std::string whole_config = read_whole_config_file();
|
||||
const std::string whole_config = read_whole_config_file();
|
||||
const bool contains_null = whole_config.find_first_of('\0') != std::string::npos;
|
||||
|
||||
// The checksum should be on the last line in the config file.
|
||||
if (size_t last_comment_pos = whole_config.find_last_of('#'); last_comment_pos != std::string::npos) {
|
||||
@ -249,9 +255,9 @@ static bool verify_config_file_checksum(boost::nowide::ifstream &ifs)
|
||||
// When the checksum isn't found, the checksum was not saved correctly, it was removed or it is an older config file without the checksum.
|
||||
// If the checksum is incorrect, then the file was either not saved correctly or modified.
|
||||
if (std::string_view(whole_config.c_str() + last_comment_pos, whole_config.size() - last_comment_pos) == appconfig_md5_hash_line({ whole_config.data(), last_comment_pos }))
|
||||
return true;
|
||||
return {true, contains_null};
|
||||
}
|
||||
return false;
|
||||
return {false, contains_null};
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -269,14 +275,25 @@ std::string AppConfig::load(const std::string &path)
|
||||
ifs.open(path);
|
||||
#ifdef WIN32
|
||||
// Verify the checksum of the config file without taking just for debugging purpose.
|
||||
if (!verify_config_file_checksum(ifs))
|
||||
BOOST_LOG_TRIVIAL(info) << "The configuration file " << path <<
|
||||
" has a wrong MD5 checksum or the checksum is missing. This may indicate a file corruption or a harmless user edit.";
|
||||
const ConfigFileInfo config_file_info = check_config_file_and_verify_checksum(ifs);
|
||||
if (!config_file_info.correct_checksum)
|
||||
BOOST_LOG_TRIVIAL(info)
|
||||
<< "The configuration file " << path
|
||||
<< " has a wrong MD5 checksum or the checksum is missing. This may indicate a file corruption or a harmless user edit.";
|
||||
|
||||
if (!config_file_info.correct_checksum && config_file_info.contains_null) {
|
||||
BOOST_LOG_TRIVIAL(info) << "The configuration file " + path + " is corrupted, because it is contains null characters.";
|
||||
throw Slic3r::CriticalException("The configuration file contains null characters.");
|
||||
}
|
||||
|
||||
ifs.seekg(0, boost::nowide::ifstream::beg);
|
||||
#endif
|
||||
pt::read_ini(ifs, tree);
|
||||
} catch (pt::ptree_error& ex) {
|
||||
try {
|
||||
pt::read_ini(ifs, tree);
|
||||
} catch (pt::ptree_error &ex) {
|
||||
throw Slic3r::CriticalException(ex.what());
|
||||
}
|
||||
} catch (Slic3r::CriticalException &ex) {
|
||||
#ifdef WIN32
|
||||
// The configuration file is corrupted, try replacing it with the backup configuration.
|
||||
ifs.close();
|
||||
@ -284,29 +301,29 @@ std::string AppConfig::load(const std::string &path)
|
||||
if (boost::filesystem::exists(backup_path)) {
|
||||
// Compute checksum of the configuration backup file and try to load configuration from it when the checksum is correct.
|
||||
boost::nowide::ifstream backup_ifs(backup_path);
|
||||
if (!verify_config_file_checksum(backup_ifs)) {
|
||||
BOOST_LOG_TRIVIAL(error) << format("Both \"%1%\" and \"%2%\" are corrupted. It isn't possible to restore configuration from the backup.", path, backup_path);
|
||||
if (const ConfigFileInfo config_file_info = check_config_file_and_verify_checksum(backup_ifs); !config_file_info.correct_checksum || config_file_info.contains_null) {
|
||||
BOOST_LOG_TRIVIAL(error) << format(R"(Both "%1%" and "%2%" are corrupted. It isn't possible to restore configuration from the backup.)", path, backup_path);
|
||||
backup_ifs.close();
|
||||
boost::filesystem::remove(backup_path);
|
||||
} else if (std::string error_message; copy_file(backup_path, path, error_message, false) != SUCCESS) {
|
||||
BOOST_LOG_TRIVIAL(error) << format("Configuration file \"%1%\" is corrupted. Failed to restore from backup \"%2%\": %3%", path, backup_path, error_message);
|
||||
BOOST_LOG_TRIVIAL(error) << format(R"(Configuration file "%1%" is corrupted. Failed to restore from backup "%2%": %3%)", path, backup_path, error_message);
|
||||
backup_ifs.close();
|
||||
boost::filesystem::remove(backup_path);
|
||||
} else {
|
||||
BOOST_LOG_TRIVIAL(info) << format("Configuration file \"%1%\" was corrupted. It has been succesfully restored from the backup \"%2%\".", path, backup_path);
|
||||
BOOST_LOG_TRIVIAL(info) << format(R"(Configuration file "%1%" was corrupted. It has been successfully restored from the backup "%2%".)", path, backup_path);
|
||||
// Try parse configuration file after restore from backup.
|
||||
try {
|
||||
ifs.open(path);
|
||||
pt::read_ini(ifs, tree);
|
||||
recovered = true;
|
||||
} catch (pt::ptree_error& ex) {
|
||||
BOOST_LOG_TRIVIAL(info) << format("Failed to parse configuration file \"%1%\" after it has been restored from backup: %2%", path, ex.what());
|
||||
BOOST_LOG_TRIVIAL(info) << format(R"(Failed to parse configuration file "%1%" after it has been restored from backup: %2%)", path, ex.what());
|
||||
}
|
||||
}
|
||||
} else
|
||||
#endif // WIN32
|
||||
BOOST_LOG_TRIVIAL(info) << format("Failed to parse configuration file \"%1%\": %2%", path, ex.what());
|
||||
if (! recovered) {
|
||||
BOOST_LOG_TRIVIAL(info) << format(R"(Failed to parse configuration file "%1%": %2%)", path, ex.what());
|
||||
if (!recovered) {
|
||||
// Report the initial error of parsing PrusaSlicer.ini.
|
||||
// Error while parsing config file. We'll customize the error message and rethrow to be displayed.
|
||||
// ! But to avoid the use of _utf8 (related to use of wxWidgets)
|
||||
|
@ -1,20 +1,25 @@
|
||||
#include "../Print.hpp"
|
||||
#include "../ShortestPath.hpp"
|
||||
|
||||
#include "FillLightning.hpp"
|
||||
#include "Lightning/Generator.hpp"
|
||||
#include "../Surface.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cmath>
|
||||
#include <algorithm>
|
||||
#include <numeric>
|
||||
|
||||
namespace Slic3r::FillLightning {
|
||||
|
||||
Polylines Filler::fill_surface(const Surface *surface, const FillParams ¶ms)
|
||||
void Filler::_fill_surface_single(
|
||||
const FillParams ¶ms,
|
||||
unsigned int thickness_layers,
|
||||
const std::pair<float, Point> &direction,
|
||||
ExPolygon expolygon,
|
||||
Polylines &polylines_out)
|
||||
{
|
||||
const Layer &layer = generator->getTreesForLayer(this->layer_id);
|
||||
return layer.convertToLines(to_polygons(surface->expolygon), generator->infilll_extrusion_width());
|
||||
const Layer &layer = generator->getTreesForLayer(this->layer_id);
|
||||
Polylines fill_lines = layer.convertToLines(to_polygons(expolygon), scaled<coord_t>(0.5 * this->spacing - this->overlap));
|
||||
|
||||
if (params.dont_connect() || fill_lines.size() <= 1) {
|
||||
append(polylines_out, chain_polylines(std::move(fill_lines)));
|
||||
} else
|
||||
connect_infill(std::move(fill_lines), expolygon, polylines_out, this->spacing, params);
|
||||
}
|
||||
|
||||
void GeneratorDeleter::operator()(Generator *p) {
|
||||
|
@ -24,8 +24,13 @@ public:
|
||||
Generator *generator { nullptr };
|
||||
protected:
|
||||
Fill* clone() const override { return new Filler(*this); }
|
||||
// Perform the fill.
|
||||
Polylines fill_surface(const Surface *surface, const FillParams ¶ms) override;
|
||||
|
||||
void _fill_surface_single(const FillParams ¶ms,
|
||||
unsigned int thickness_layers,
|
||||
const std::pair<float, Point> &direction,
|
||||
ExPolygon expolygon,
|
||||
Polylines &polylines_out) override;
|
||||
|
||||
// Let the G-code export reoder the infill lines.
|
||||
bool no_sort() const override { return false; }
|
||||
};
|
||||
|
@ -176,7 +176,7 @@ protected:
|
||||
const Point offset_loc = loc - m_grid_range.min;
|
||||
const size_t flat_idx = m_grid_size.x() * offset_loc.y() + offset_loc.x();
|
||||
assert(offset_loc.x() >= 0 && offset_loc.y() >= 0);
|
||||
assert(flat_idx < m_grid_size.y() * m_grid_size.x());
|
||||
assert(flat_idx < size_t(m_grid_size.y() * m_grid_size.x()));
|
||||
return flat_idx;
|
||||
}
|
||||
};
|
||||
|
@ -7,7 +7,6 @@
|
||||
#include "../../ClipperUtils.hpp"
|
||||
#include "../../Layer.hpp"
|
||||
#include "../../Print.hpp"
|
||||
#include "../../Surface.hpp"
|
||||
|
||||
/* Possible future tasks/optimizations,etc.:
|
||||
* - Improve connecting heuristic to favor connecting to shorter trees
|
||||
@ -54,8 +53,6 @@ Generator::Generator(const PrintObject &print_object, const std::function<void()
|
||||
void Generator::generateInitialInternalOverhangs(const PrintObject &print_object, const std::function<void()> &throw_on_cancel_callback)
|
||||
{
|
||||
m_overhang_per_layer.resize(print_object.layers().size());
|
||||
// FIXME: It can be adjusted to improve bonding between infill and perimeters.
|
||||
const float infill_wall_offset = 0;// m_infill_extrusion_width;
|
||||
|
||||
Polygons infill_area_above;
|
||||
//Iterate from top to bottom, to subtract the overhang areas above from the overhang areas on the layer below, to get only overhang in the top layer where it is overhanging.
|
||||
@ -65,7 +62,7 @@ void Generator::generateInitialInternalOverhangs(const PrintObject &print_object
|
||||
for (const LayerRegion* layerm : print_object.get_layer(layer_nr)->regions())
|
||||
for (const Surface& surface : layerm->fill_surfaces.surfaces)
|
||||
if (surface.surface_type == stInternal || surface.surface_type == stInternalVoid)
|
||||
append(infill_area_here, infill_wall_offset == 0 ? surface.expolygon : offset(surface.expolygon, infill_wall_offset));
|
||||
infill_area_here.emplace_back(surface.expolygon);
|
||||
|
||||
//Remove the part of the infill area that is already supported by the walls.
|
||||
Polygons overhang = diff(offset(infill_area_here, -float(m_wall_supporting_radius)), infill_area_above);
|
||||
@ -84,8 +81,6 @@ const Layer& Generator::getTreesForLayer(const size_t& layer_id) const
|
||||
void Generator::generateTrees(const PrintObject &print_object, const std::function<void()> &throw_on_cancel_callback)
|
||||
{
|
||||
m_lightning_layers.resize(print_object.layers().size());
|
||||
// FIXME: It can be adjusted to improve bonding between infill and perimeters.
|
||||
const coord_t infill_wall_offset = 0;// m_infill_extrusion_width;
|
||||
|
||||
std::vector<Polygons> infill_outlines(print_object.layers().size(), Polygons());
|
||||
|
||||
@ -95,7 +90,7 @@ void Generator::generateTrees(const PrintObject &print_object, const std::functi
|
||||
for (const LayerRegion *layerm : print_object.get_layer(layer_id)->regions())
|
||||
for (const Surface &surface : layerm->fill_surfaces.surfaces)
|
||||
if (surface.surface_type == stInternal || surface.surface_type == stInternalVoid)
|
||||
append(infill_outlines[layer_id], infill_wall_offset == 0 ? surface.expolygon : offset(surface.expolygon, infill_wall_offset));
|
||||
infill_outlines[layer_id].emplace_back(surface.expolygon);
|
||||
}
|
||||
|
||||
// For various operations its beneficial to quickly locate nearby features on the polygon:
|
||||
@ -125,7 +120,8 @@ void Generator::generateTrees(const PrintObject &print_object, const std::functi
|
||||
if (const BoundingBox &outlines_locator_bbox = outlines_locator.bbox(); outlines_locator_bbox.defined)
|
||||
below_outlines_bbox.merge(outlines_locator_bbox);
|
||||
|
||||
below_outlines_bbox.merge(get_extents(current_lightning_layer.tree_roots).inflated(SCALED_EPSILON));
|
||||
if (!current_lightning_layer.tree_roots.empty())
|
||||
below_outlines_bbox.merge(get_extents(current_lightning_layer.tree_roots).inflated(SCALED_EPSILON));
|
||||
|
||||
outlines_locator.set_bbox(below_outlines_bbox);
|
||||
outlines_locator.create(below_outlines, locator_cell_size);
|
||||
|
@ -433,15 +433,14 @@ static unsigned int moveInside(const Polygons& polygons, Point& from, int distan
|
||||
}
|
||||
#endif
|
||||
|
||||
// Returns 'added someting'.
|
||||
Polylines Layer::convertToLines(const Polygons& limit_to_outline, const coord_t line_width) const
|
||||
Polylines Layer::convertToLines(const Polygons& limit_to_outline, const coord_t line_overlap) const
|
||||
{
|
||||
if (tree_roots.empty())
|
||||
return {};
|
||||
|
||||
Polylines result_lines;
|
||||
for (const auto &tree : tree_roots)
|
||||
tree->convertToPolylines(result_lines, line_width);
|
||||
tree->convertToPolylines(result_lines, line_overlap);
|
||||
|
||||
return intersection_pl(result_lines, limit_to_outline);
|
||||
}
|
||||
|
@ -80,7 +80,7 @@ public:
|
||||
coord_t wall_supporting_radius
|
||||
);
|
||||
|
||||
Polylines convertToLines(const Polygons& limit_to_outline, coord_t line_width) const;
|
||||
Polylines convertToLines(const Polygons& limit_to_outline, coord_t line_overlap) const;
|
||||
|
||||
coord_t getWeightedDistance(const Point& boundary_loc, const Point& unsupported_location);
|
||||
|
||||
|
@ -347,12 +347,12 @@ coord_t Node::prune(const coord_t& pruning_distance)
|
||||
return max_distance_pruned;
|
||||
}
|
||||
|
||||
void Node::convertToPolylines(Polylines &output, const coord_t line_width) const
|
||||
void Node::convertToPolylines(Polylines &output, const coord_t line_overlap) const
|
||||
{
|
||||
Polylines result;
|
||||
result.emplace_back();
|
||||
convertToPolylines(0, result);
|
||||
removeJunctionOverlap(result, line_width);
|
||||
removeJunctionOverlap(result, line_overlap);
|
||||
append(output, std::move(result));
|
||||
}
|
||||
|
||||
@ -376,10 +376,10 @@ void Node::convertToPolylines(size_t long_line_idx, Polylines &output) const
|
||||
}
|
||||
}
|
||||
|
||||
void Node::removeJunctionOverlap(Polylines &result_lines, const coord_t line_width) const
|
||||
void Node::removeJunctionOverlap(Polylines &result_lines, const coord_t line_overlap) const
|
||||
{
|
||||
const coord_t reduction = line_width / 2; // TODO make configurable?
|
||||
size_t res_line_idx = 0;
|
||||
const coord_t reduction = line_overlap;
|
||||
size_t res_line_idx = 0;
|
||||
while (res_line_idx < result_lines.size()) {
|
||||
Polyline &polyline = result_lines[res_line_idx];
|
||||
if (polyline.size() <= 1) {
|
||||
|
@ -46,7 +46,7 @@ public:
|
||||
{
|
||||
struct EnableMakeShared : public Node
|
||||
{
|
||||
EnableMakeShared(Arg&&...arg) : Node(std::forward<Arg>(arg)...) {}
|
||||
explicit EnableMakeShared(Arg&&...arg) : Node(std::forward<Arg>(arg)...) {}
|
||||
};
|
||||
return std::make_shared<EnableMakeShared>(std::forward<Arg>(arg)...);
|
||||
}
|
||||
@ -179,16 +179,16 @@ public:
|
||||
*/
|
||||
bool hasOffspring(const NodeSPtr& to_be_checked) const;
|
||||
|
||||
protected:
|
||||
Node() = delete; // Don't allow empty contruction
|
||||
|
||||
protected:
|
||||
/*!
|
||||
* Construct a new node, either for insertion in a tree or as root.
|
||||
* \param p The physical location in the 2D layer that this node represents.
|
||||
* Connecting other nodes to this node indicates that a line segment should
|
||||
* be drawn between those two physical positions.
|
||||
*/
|
||||
Node(const Point& p, const std::optional<Point>& last_grounding_location = std::nullopt);
|
||||
explicit Node(const Point& p, const std::optional<Point>& last_grounding_location = std::nullopt);
|
||||
|
||||
/*!
|
||||
* Copy this node and its entire sub-tree.
|
||||
@ -239,7 +239,7 @@ public:
|
||||
*
|
||||
* \param output all branches in this tree connected into polylines
|
||||
*/
|
||||
void convertToPolylines(Polylines &output, coord_t line_width) const;
|
||||
void convertToPolylines(Polylines &output, coord_t line_overlap) const;
|
||||
|
||||
/*! If this was ever a direct child of the root, it'll have a previous grounding location.
|
||||
*
|
||||
@ -260,7 +260,7 @@ protected:
|
||||
*/
|
||||
void convertToPolylines(size_t long_line_idx, Polylines &output) const;
|
||||
|
||||
void removeJunctionOverlap(Polylines &polylines, coord_t line_width) const;
|
||||
void removeJunctionOverlap(Polylines &polylines, coord_t line_overlap) const;
|
||||
|
||||
bool m_is_root;
|
||||
Point m_p;
|
||||
|
@ -35,6 +35,8 @@
|
||||
#include "SVG.hpp"
|
||||
|
||||
#include <tbb/parallel_for.h>
|
||||
#include <tbb/task_scheduler_observer.h>
|
||||
#include <tbb/enumerable_thread_specific.h>
|
||||
|
||||
// Intel redesigned some TBB interface considerably when merging TBB with their oneAPI set of libraries, see GH #7332.
|
||||
// We are using quite an old TBB 2017 U7. Before we update our build servers, let's use the old API, which is deprecated in up to date TBB.
|
||||
@ -1488,6 +1490,32 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
|
||||
print.throw_if_canceled();
|
||||
}
|
||||
|
||||
// For unknown reasons and in sporadic cases when GCode export is processing, some participating thread
|
||||
// in tbb::parallel_pipeline has not set locales to "C", probably because this thread is newly spawned.
|
||||
// So in this class method on_scheduler_entry is called for every thread before it starts participating
|
||||
// in tbb::parallel_pipeline to ensure that locales are set correctly
|
||||
|
||||
// For tbb::parallel_pipeline, it seems that on_scheduler_entry is called for every layer and every filter.
|
||||
// We ensure using thread-local storage that locales will be set to "C" just once for any participating thread.
|
||||
class TBBLocalesSetter : public tbb::task_scheduler_observer
|
||||
{
|
||||
public:
|
||||
TBBLocalesSetter() { this->observe(true); }
|
||||
~TBBLocalesSetter() override { this->observe(false); };
|
||||
|
||||
void on_scheduler_entry(bool is_worker) override
|
||||
{
|
||||
if (bool &is_locales_sets = m_is_locales_sets.local(); !is_locales_sets) {
|
||||
// Set locales of the worker thread to "C".
|
||||
set_c_locales();
|
||||
is_locales_sets = true;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
tbb::enumerable_thread_specific<bool, tbb::cache_aligned_allocator<bool>, tbb::ets_key_usage_type::ets_key_per_instance> m_is_locales_sets{false};
|
||||
};
|
||||
|
||||
// Process all layers of all objects (non-sequential mode) with a parallel pipeline:
|
||||
// Generate G-code, run the filters (vase mode, cooling buffer), run the G-code analyser
|
||||
// and export G-code into file.
|
||||
@ -1531,6 +1559,10 @@ void GCode::process_layers(
|
||||
[&output_stream](std::string s) { output_stream.write(s); }
|
||||
);
|
||||
|
||||
// It registers a handler that sets locales to "C" before any TBB thread starts participating in tbb::parallel_pipeline.
|
||||
// Handler is unregistered when the destructor is called.
|
||||
TBBLocalesSetter locales_setter;
|
||||
|
||||
// The pipeline elements are joined using const references, thus no copying is performed.
|
||||
output_stream.find_replace_supress();
|
||||
if (m_spiral_vase && m_find_replace)
|
||||
@ -1584,6 +1616,10 @@ void GCode::process_layers(
|
||||
[&output_stream](std::string s) { output_stream.write(s); }
|
||||
);
|
||||
|
||||
// It registers a handler that sets locales to "C" before any TBB thread starts participating in tbb::parallel_pipeline.
|
||||
// Handler is unregistered when the destructor is called.
|
||||
TBBLocalesSetter locales_setter;
|
||||
|
||||
// The pipeline elements are joined using const references, thus no copying is performed.
|
||||
output_stream.find_replace_supress();
|
||||
if (m_spiral_vase && m_find_replace)
|
||||
|
@ -43,6 +43,25 @@ std::string float_to_string_decimal_point(double value, int precision = -1);
|
||||
//std::string float_to_string_decimal_point(float value, int precision = -1);
|
||||
double string_to_double_decimal_point(const std::string_view str, size_t* pos = nullptr);
|
||||
|
||||
// Set locales to "C".
|
||||
inline void set_c_locales()
|
||||
{
|
||||
#ifdef _WIN32
|
||||
_configthreadlocale(_ENABLE_PER_THREAD_LOCALE);
|
||||
std::setlocale(LC_ALL, "C");
|
||||
#else
|
||||
// We are leaking some memory here, because the newlocale() produced memory will never be released.
|
||||
// This is not a problem though, as there will be a maximum one worker thread created per physical thread.
|
||||
uselocale(newlocale(
|
||||
#ifdef __APPLE__
|
||||
LC_ALL_MASK
|
||||
#else // some Unix / Linux / BSD
|
||||
LC_ALL
|
||||
#endif
|
||||
, "C", nullptr));
|
||||
#endif
|
||||
}
|
||||
|
||||
} // namespace Slic3r
|
||||
|
||||
#endif // slic3r_LocalesUtils_hpp_
|
||||
|
@ -15,6 +15,7 @@
|
||||
|
||||
#include "Thread.hpp"
|
||||
#include "Utils.hpp"
|
||||
#include "LocalesUtils.hpp"
|
||||
|
||||
namespace Slic3r {
|
||||
|
||||
@ -234,21 +235,8 @@ void name_tbb_thread_pool_threads_set_locale()
|
||||
std::ostringstream name;
|
||||
name << "slic3r_tbb_" << range.begin();
|
||||
set_current_thread_name(name.str().c_str());
|
||||
// Set locales of the worker thread to "C".
|
||||
#ifdef _WIN32
|
||||
_configthreadlocale(_ENABLE_PER_THREAD_LOCALE);
|
||||
std::setlocale(LC_ALL, "C");
|
||||
#else
|
||||
// We are leaking some memory here, because the newlocale() produced memory will never be released.
|
||||
// This is not a problem though, as there will be a maximum one worker thread created per physical thread.
|
||||
uselocale(newlocale(
|
||||
#ifdef __APPLE__
|
||||
LC_ALL_MASK
|
||||
#else // some Unix / Linux / BSD
|
||||
LC_ALL
|
||||
#endif
|
||||
, "C", nullptr));
|
||||
#endif
|
||||
// Set locales of the worker thread to "C".
|
||||
set_c_locales();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -38,22 +38,18 @@ class PlaterWorker: public Worker {
|
||||
|
||||
void update_status(int st, const std::string &msg = "") override
|
||||
{
|
||||
wxWakeUpIdle();
|
||||
ctl.update_status(st, msg);
|
||||
|
||||
// If the worker is not using additional threads, the UI
|
||||
// is refreshed with this call. If the worker is running
|
||||
// in it's own thread, the yield should not have any
|
||||
// visible effects.
|
||||
wxYieldIfNeeded();
|
||||
wxWakeUpIdle();
|
||||
}
|
||||
|
||||
bool was_canceled() const override { return ctl.was_canceled(); }
|
||||
|
||||
std::future<void> call_on_main_thread(std::function<void()> fn) override
|
||||
{
|
||||
auto ftr = ctl.call_on_main_thread(std::move(fn));
|
||||
wxWakeUpIdle();
|
||||
return ctl.call_on_main_thread(std::move(fn));
|
||||
|
||||
return ftr;
|
||||
}
|
||||
|
||||
} wctl{c};
|
||||
|
@ -62,7 +62,15 @@ protected:
|
||||
|
||||
std::future<void> call_on_main_thread(std::function<void()> fn) override
|
||||
{
|
||||
return std::async(std::launch::deferred, [fn]{ fn(); });
|
||||
std::future<void> ftr = std::async(std::launch::deferred, [fn]{ fn(); });
|
||||
|
||||
// So, it seems that the destructor of std::future will not call the
|
||||
// packaged function. The future needs to be accessed at least ones
|
||||
// or waited upon. Calling wait() instead of get() will keep the
|
||||
// returned future's state valid.
|
||||
ftr.wait();
|
||||
|
||||
return ftr;
|
||||
}
|
||||
|
||||
public:
|
||||
|
@ -7,12 +7,42 @@
|
||||
|
||||
using namespace Slic3r;
|
||||
|
||||
struct PointGridTracer {
|
||||
TEST_CASE("Testing basic invariants of AStar", "[AStar]") {
|
||||
struct DummyTracer {
|
||||
using Node = int;
|
||||
|
||||
int goal = 0;
|
||||
|
||||
float distance(int a, int b) const { return a - b; }
|
||||
|
||||
float goal_heuristic(int n) const { return n == goal ? -1.f : 0.f; }
|
||||
|
||||
size_t unique_id(int n) const { return n; }
|
||||
|
||||
void foreach_reachable(int, std::function<bool(int)>) const {}
|
||||
};
|
||||
|
||||
std::vector<int> out;
|
||||
|
||||
SECTION("Output is empty when source is also the destination") {
|
||||
bool found = astar::search_route(DummyTracer{}, 0, std::back_inserter(out));
|
||||
REQUIRE(out.empty());
|
||||
REQUIRE(found);
|
||||
}
|
||||
|
||||
SECTION("Return false when there is no route to destination") {
|
||||
bool found = astar::search_route(DummyTracer{}, 1, std::back_inserter(out));
|
||||
REQUIRE(!found);
|
||||
REQUIRE(out.empty());
|
||||
}
|
||||
}
|
||||
|
||||
struct PointGridTracer3D {
|
||||
using Node = size_t;
|
||||
const PointGrid<float> &grid;
|
||||
size_t final;
|
||||
|
||||
PointGridTracer(const PointGrid<float> &g, size_t goal) :
|
||||
PointGridTracer3D(const PointGrid<float> &g, size_t goal) :
|
||||
grid{g}, final{goal} {}
|
||||
|
||||
template<class Fn>
|
||||
@ -49,14 +79,328 @@ struct PointGridTracer {
|
||||
size_t unique_id(size_t n) const { return n; }
|
||||
};
|
||||
|
||||
template<class Node, class Cmp = std::less<Node>>
|
||||
bool has_duplicates(const std::vector<Node> &res, Cmp cmp = {})
|
||||
{
|
||||
auto cpy = res;
|
||||
std::sort(cpy.begin(), cpy.end(), cmp);
|
||||
auto it = std::unique(cpy.begin(), cpy.end());
|
||||
return it != cpy.end();
|
||||
}
|
||||
|
||||
TEST_CASE("astar algorithm test over 3D point grid", "[AStar]") {
|
||||
auto vol = BoundingBox3Base<Vec3f>{{0.f, 0.f, 0.f}, {1.f, 1.f, 1.f}};
|
||||
|
||||
auto pgrid = point_grid(ex_seq, vol, {0.1f, 0.1f, 0.1f});
|
||||
|
||||
PointGridTracer pgt{pgrid, pgrid.point_count() - 1};
|
||||
size_t target = pgrid.point_count() - 1;
|
||||
|
||||
PointGridTracer3D pgt{pgrid, target};
|
||||
std::vector<size_t> out;
|
||||
bool found = astar::search_route(pgt, size_t(0), std::back_inserter(out));
|
||||
bool found = astar::search_route(pgt, 0, std::back_inserter(out));
|
||||
|
||||
REQUIRE(found);
|
||||
REQUIRE(!out.empty());
|
||||
REQUIRE(out.front() == target);
|
||||
|
||||
#ifndef NDEBUG
|
||||
std::cout << "Route taken: ";
|
||||
for (auto it = out.rbegin(); it != out.rend(); ++it) {
|
||||
std::cout << "(" << pgrid.get_coord(*it).transpose() << ") ";
|
||||
}
|
||||
std::cout << std::endl;
|
||||
#endif
|
||||
|
||||
REQUIRE(!has_duplicates(out)); // No duplicates in output
|
||||
}
|
||||
|
||||
enum CellValue {ON, OFF};
|
||||
|
||||
struct CellGridTracer2D_AllDirs {
|
||||
using Node = Vec2i;
|
||||
|
||||
static constexpr auto Cols = size_t(5);
|
||||
static constexpr auto Rows = size_t(8);
|
||||
static constexpr size_t GridSize = Cols * Rows;
|
||||
|
||||
const std::array<std::array<CellValue, Cols>, Rows> &grid;
|
||||
Vec2i goal;
|
||||
|
||||
CellGridTracer2D_AllDirs(const std::array<std::array<CellValue, Cols>, Rows> &g,
|
||||
const Vec2i &goal_)
|
||||
: grid{g}, goal{goal_}
|
||||
{}
|
||||
|
||||
template<class Fn>
|
||||
void foreach_reachable(const Vec2i &src, Fn &&fn) const
|
||||
{
|
||||
auto is_inside = [](const Vec2i& v) { return v.x() >= 0 && v.x() < Cols && v.y() >= 0 && v.y() < Rows; };
|
||||
if (Vec2i crd = src + Vec2i{0, 1}; is_inside(crd) && grid[crd.y()] [crd.x()] == ON) fn(crd);
|
||||
if (Vec2i crd = src + Vec2i{1, 0}; is_inside(crd) && grid[crd.y()] [crd.x()] == ON) fn(crd);
|
||||
if (Vec2i crd = src + Vec2i{1, 1}; is_inside(crd) && grid[crd.y()] [crd.x()] == ON) fn(crd);
|
||||
if (Vec2i crd = src + Vec2i{0, -1}; is_inside(crd) && grid[crd.y()] [crd.x()] == ON) fn(crd);
|
||||
if (Vec2i crd = src + Vec2i{-1, 0}; is_inside(crd) && grid[crd.y()] [crd.x()] == ON) fn(crd);
|
||||
if (Vec2i crd = src + Vec2i{-1, -1}; is_inside(crd) && grid[crd.y()] [crd.x()] == ON) fn(crd);
|
||||
if (Vec2i crd = src + Vec2i{1, -1}; is_inside(crd) && grid[crd.y()] [crd.x()] == ON) fn(crd);
|
||||
if (Vec2i crd = src + Vec2i{-1, 1}; is_inside(crd) && grid[crd.y()] [crd.x()] == ON) fn(crd);
|
||||
}
|
||||
|
||||
float distance(const Vec2i & a, const Vec2i & b) const { return (a - b).squaredNorm(); }
|
||||
|
||||
float goal_heuristic(const Vec2i & n) const { return n == goal ? -1.f : (n - goal).squaredNorm(); }
|
||||
|
||||
size_t unique_id(const Vec2i & n) const { return n.y() * Cols + n.x(); }
|
||||
};
|
||||
|
||||
struct CellGridTracer2D_Axis {
|
||||
using Node = Vec2i;
|
||||
|
||||
static constexpr auto Cols = size_t(5);
|
||||
static constexpr auto Rows = size_t(8);
|
||||
static constexpr size_t GridSize = Cols * Rows;
|
||||
|
||||
const std::array<std::array<CellValue, Cols>, Rows> &grid;
|
||||
Vec2i goal;
|
||||
|
||||
CellGridTracer2D_Axis(
|
||||
const std::array<std::array<CellValue, Cols>, Rows> &g,
|
||||
const Vec2i &goal_)
|
||||
: grid{g}, goal{goal_}
|
||||
{}
|
||||
|
||||
template<class Fn>
|
||||
void foreach_reachable(const Vec2i &src, Fn &&fn) const
|
||||
{
|
||||
auto is_inside = [](const Vec2i& v) { return v.x() >= 0 && v.x() < Cols && v.y() >= 0 && v.y() < Rows; };
|
||||
if (Vec2i crd = src + Vec2i{0, 1}; is_inside(crd) && grid[crd.y()] [crd.x()] == ON) fn(crd);
|
||||
if (Vec2i crd = src + Vec2i{0, -1}; is_inside(crd) && grid[crd.y()] [crd.x()] == ON) fn(crd);
|
||||
if (Vec2i crd = src + Vec2i{1, 0}; is_inside(crd) && grid[crd.y()] [crd.x()] == ON) fn(crd);
|
||||
if (Vec2i crd = src + Vec2i{-1, 0}; is_inside(crd) && grid[crd.y()] [crd.x()] == ON) fn(crd);
|
||||
}
|
||||
|
||||
float distance(const Vec2i & a, const Vec2i & b) const { return (a - b).squaredNorm(); }
|
||||
|
||||
float goal_heuristic(const Vec2i &n) const
|
||||
{
|
||||
int manhattan_dst = std::abs(n.x() - goal.x()) +
|
||||
std::abs(n.y() - goal.y());
|
||||
|
||||
return n == goal ? -1.f : manhattan_dst;
|
||||
}
|
||||
|
||||
size_t unique_id(const Vec2i & n) const { return n.y() * Cols + n.x(); }
|
||||
};
|
||||
|
||||
using TestClasses = std::tuple< CellGridTracer2D_AllDirs, CellGridTracer2D_Axis >;
|
||||
|
||||
TEMPLATE_LIST_TEST_CASE("Astar should avoid simple barrier", "[AStar]", TestClasses) {
|
||||
|
||||
std::array<std::array<CellValue, 5>, 8> grid = {{
|
||||
{ON , ON , ON , ON , ON},
|
||||
{ON , ON , ON , ON , ON},
|
||||
{ON , ON , ON , ON , ON},
|
||||
{ON , ON , ON , ON , ON},
|
||||
{ON , ON , ON , ON , ON},
|
||||
{ON , OFF, OFF, OFF, ON},
|
||||
{ON , ON , ON , ON , ON},
|
||||
{ON , ON , ON , ON , ON}
|
||||
}};
|
||||
|
||||
Vec2i dst = {2, 0};
|
||||
TestType cgt{grid, dst};
|
||||
|
||||
std::vector<Vec2i> out;
|
||||
bool found = astar::search_route(cgt, {2, 7}, std::back_inserter(out));
|
||||
|
||||
REQUIRE(found);
|
||||
REQUIRE(!out.empty());
|
||||
REQUIRE(out.front() == dst);
|
||||
REQUIRE(!has_duplicates(out, [](const Vec2i &a, const Vec2i &b) {
|
||||
return a.x() == b.x() ? a.y() < b.y() : a.x() < b.x();
|
||||
}));
|
||||
|
||||
#ifndef NDEBUG
|
||||
std::cout << "Route taken: ";
|
||||
for (auto it = out.rbegin(); it != out.rend(); ++it) {
|
||||
std::cout << "(" << it->transpose() << ") ";
|
||||
}
|
||||
std::cout << std::endl;
|
||||
#endif
|
||||
}
|
||||
|
||||
TEMPLATE_LIST_TEST_CASE("Astar should manage to avoid arbitrary barriers", "[AStar]", TestClasses) {
|
||||
|
||||
std::array<std::array<CellValue, 5>, 8> grid = {{
|
||||
{ON , ON , ON , ON , ON},
|
||||
{ON , ON , ON , OFF, ON},
|
||||
{OFF, OFF, ON , OFF, ON},
|
||||
{ON , ON , ON , OFF, ON},
|
||||
{ON , OFF, ON , OFF, ON},
|
||||
{ON , OFF, ON , ON , ON},
|
||||
{ON , OFF, ON , OFF, ON},
|
||||
{ON , ON , ON , ON , ON}
|
||||
}};
|
||||
|
||||
Vec2i dst = {0, 0};
|
||||
TestType cgt{grid, dst};
|
||||
|
||||
std::vector<Vec2i> out;
|
||||
bool found = astar::search_route(cgt, {0, 7}, std::back_inserter(out));
|
||||
|
||||
REQUIRE(found);
|
||||
REQUIRE(!out.empty());
|
||||
REQUIRE(out.front() == dst);
|
||||
REQUIRE(!has_duplicates(out, [](const Vec2i &a, const Vec2i &b) {
|
||||
return a.x() == b.x() ? a.y() < b.y() : a.x() < b.x();
|
||||
}));
|
||||
|
||||
#ifndef NDEBUG
|
||||
std::cout << "Route taken: ";
|
||||
for (auto it = out.rbegin(); it != out.rend(); ++it) {
|
||||
std::cout << "(" << it->transpose() << ") ";
|
||||
}
|
||||
std::cout << std::endl;
|
||||
#endif
|
||||
}
|
||||
|
||||
TEMPLATE_LIST_TEST_CASE("Astar should find the way out of a labyrinth", "[AStar]", TestClasses) {
|
||||
|
||||
std::array<std::array<CellValue, 5>, 8> grid = {{
|
||||
{ON , ON , ON , ON , ON },
|
||||
{ON , OFF, OFF, OFF, OFF},
|
||||
{ON , ON , ON , ON , ON },
|
||||
{OFF, OFF, OFF, OFF, ON },
|
||||
{ON , ON , ON , ON , ON },
|
||||
{ON , OFF, OFF, OFF, OFF},
|
||||
{ON , ON , ON , ON , ON },
|
||||
{OFF, OFF, OFF, OFF, ON }
|
||||
}};
|
||||
|
||||
Vec2i dst = {4, 0};
|
||||
TestType cgt{grid, dst};
|
||||
|
||||
std::vector<Vec2i> out;
|
||||
bool found = astar::search_route(cgt, {4, 7}, std::back_inserter(out));
|
||||
|
||||
REQUIRE(found);
|
||||
REQUIRE(!out.empty());
|
||||
REQUIRE(out.front() == dst);
|
||||
REQUIRE(!has_duplicates(out, [](const Vec2i &a, const Vec2i &b) {
|
||||
return a.x() == b.x() ? a.y() < b.y() : a.x() < b.x();
|
||||
}));
|
||||
|
||||
#ifndef NDEBUG
|
||||
std::cout << "Route taken: ";
|
||||
for (auto it = out.rbegin(); it != out.rend(); ++it) {
|
||||
std::cout << "(" << it->transpose() << ") ";
|
||||
}
|
||||
std::cout << std::endl;
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST_CASE("Zero heuristic function should result in dijsktra's algo", "[AStar]")
|
||||
{
|
||||
struct GraphTracer {
|
||||
using Node = size_t;
|
||||
using QNode = astar::QNode<GraphTracer>;
|
||||
|
||||
struct Edge
|
||||
{
|
||||
size_t to_id = size_t(-1);
|
||||
float cost = 0.f;
|
||||
bool operator <(const Edge &e) const { return to_id < e.to_id; }
|
||||
};
|
||||
|
||||
struct ENode: public QNode {
|
||||
std::vector<Edge> edges;
|
||||
|
||||
ENode(size_t node_id, std::initializer_list<Edge> edgelist)
|
||||
: QNode{node_id}, edges(edgelist)
|
||||
{}
|
||||
|
||||
ENode &operator=(const QNode &q)
|
||||
{
|
||||
assert(node == q.node);
|
||||
g = q.g;
|
||||
h = q.h;
|
||||
parent = q.parent;
|
||||
queue_id = q.queue_id;
|
||||
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
// Example graph from
|
||||
// https://www.geeksforgeeks.org/dijkstras-shortest-path-algorithm-greedy-algo-7/?ref=lbp
|
||||
std::vector<ENode> nodes = {
|
||||
{0, {{1, 4.f}, {7, 8.f}}},
|
||||
{1, {{0, 4.f}, {2, 8.f}, {7, 11.f}}},
|
||||
{2, {{1, 8.f}, {3, 7.f}, {5, 4.f}, {8, 2.f}}},
|
||||
{3, {{2, 7.f}, {4, 9.f}, {5, 14.f}}},
|
||||
{4, {{3, 9.f}, {5, 10.f}}},
|
||||
{5, {{2, 4.f}, {3, 14.f}, {4, 10.f}, {6, 2.f}}},
|
||||
{6, {{5, 2.f}, {7, 1.f}, {8, 6.f}}},
|
||||
{7, {{0, 8.f}, {1, 11.f}, {6, 1.f}, {8, 7.f}}},
|
||||
{8, {{2, 2.f}, {6, 6.f}, {7, 7.f}}}
|
||||
};
|
||||
|
||||
float distance(size_t a, size_t b) const {
|
||||
float ret = std::numeric_limits<float>::infinity();
|
||||
if (a < nodes.size()) {
|
||||
auto it = std::lower_bound(nodes[a].edges.begin(),
|
||||
nodes[a].edges.end(),
|
||||
Edge{b, 0.f});
|
||||
|
||||
if (it != nodes[a].edges.end()) {
|
||||
ret = it->cost;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
float goal_heuristic(size_t) const { return 0.f; }
|
||||
|
||||
size_t unique_id(size_t n) const { return n; }
|
||||
|
||||
void foreach_reachable(size_t n, std::function<bool(int)> fn) const
|
||||
{
|
||||
if (n < nodes.size()) {
|
||||
for (const Edge &e : nodes[n].edges)
|
||||
fn(e.to_id);
|
||||
}
|
||||
}
|
||||
} graph;
|
||||
|
||||
std::vector<size_t> out;
|
||||
|
||||
// 'graph.nodes' is able to be a node cache (it simulates an associative container)
|
||||
bool found = astar::search_route(graph, size_t(0), std::back_inserter(out), graph.nodes);
|
||||
|
||||
// But should not crash or loop infinitely.
|
||||
REQUIRE(!found);
|
||||
|
||||
// Without a destination, there is no output. But the algorithm should halt.
|
||||
REQUIRE(out.empty());
|
||||
|
||||
// Source node should have it's parent unset
|
||||
REQUIRE(graph.nodes[0].parent == astar::Unassigned);
|
||||
|
||||
// All other nodes should have their parents set
|
||||
for (size_t i = 1; i < graph.nodes.size(); ++i)
|
||||
REQUIRE(graph.nodes[i].parent != astar::Unassigned);
|
||||
|
||||
std::array<float, 9> ref_distances = {0.f, 4.f, 12.f, 19.f, 21.f,
|
||||
11.f, 9.f, 8.f, 14.f};
|
||||
|
||||
// Try to trace each node back to the source node. Each of them should
|
||||
// arrive to the source within less hops than the full number of nodes.
|
||||
for (size_t i = 0, k = 0; i < graph.nodes.size(); ++i, k = 0) {
|
||||
GraphTracer::QNode *q = &graph.nodes[i];
|
||||
REQUIRE(q->g == Approx(ref_distances[i]));
|
||||
while (k++ < graph.nodes.size() && q->parent != astar::Unassigned)
|
||||
q = &graph.nodes[q->parent];
|
||||
|
||||
REQUIRE(q->parent == astar::Unassigned);
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,8 @@ add_executable(${_TEST_NAME}_tests
|
||||
slic3r_jobs_tests.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(${_TEST_NAME}_tests test_common libslic3r_gui libslic3r)
|
||||
# mold linker for successful linking needs also to link TBB library and link it before libslic3r.
|
||||
target_link_libraries(${_TEST_NAME}_tests test_common TBB::tbb libslic3r_gui libslic3r)
|
||||
if (MSVC)
|
||||
target_link_libraries(${_TEST_NAME}_tests Setupapi.lib)
|
||||
endif ()
|
||||
|
Loading…
Reference in New Issue
Block a user