Merge branch 'master' of https://github.com/prusa3d/PrusaSlicer into et_wipe_moves
This commit is contained in:
commit
f68cf49f3d
29 changed files with 5731 additions and 4062 deletions
BIN
PrusaSlicer.mo
Normal file
BIN
PrusaSlicer.mo
Normal file
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load diff
|
@ -1,4 +1,5 @@
|
||||||
min_slic3r_version = 2.3.0-alpha2
|
min_slic3r_version = 2.3.0-alpha2
|
||||||
|
0.0.7 Updated start g-code for Creality printers
|
||||||
0.0.6 Added filament profiles, adjusted temperatures, updated start g-code for some models.
|
0.0.6 Added filament profiles, adjusted temperatures, updated start g-code for some models.
|
||||||
0.0.5 Added 0.08mm SUPERDETAIL and 0.28mm SUPERDRAFT print profiles. Updated OPTIMAL print profile.
|
0.0.5 Added 0.08mm SUPERDETAIL and 0.28mm SUPERDRAFT print profiles. Updated OPTIMAL print profile.
|
||||||
0.0.4 Added initial CR-10 profile, end g-code improvements.
|
0.0.4 Added initial CR-10 profile, end g-code improvements.
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
name = Creality
|
name = Creality
|
||||||
# Configuration version of this file. Config file will only be installed, if the config_version differs.
|
# Configuration version of this file. Config file will only be installed, if the config_version differs.
|
||||||
# This means, the server may force the PrusaSlicer configuration to be downgraded.
|
# This means, the server may force the PrusaSlicer configuration to be downgraded.
|
||||||
config_version = 0.0.6
|
config_version = 0.0.7
|
||||||
# Where to get the updates from?
|
# Where to get the updates from?
|
||||||
config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/Creality/
|
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%
|
# changelog_url = https://files.prusa3d.com/?latest=slicer-profiles&lng=%1%
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
min_slic3r_version = 2.3.0-alpha4
|
||||||
|
1.2.0-alpha0 Added filament spool weights
|
||||||
min_slic3r_version = 2.2.0-alpha3
|
min_slic3r_version = 2.2.0-alpha3
|
||||||
1.1.10 Updated firmware version.
|
1.1.10 Updated firmware version.
|
||||||
1.1.9 Updated K values in filament profiles (linear advance). Added new filament profiles and SLA materials.
|
1.1.9 Updated K values in filament profiles (linear advance). Added new filament profiles and SLA materials.
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
name = Prusa Research
|
name = Prusa Research
|
||||||
# Configuration version of this file. Config file will only be installed, if the config_version differs.
|
# Configuration version of this file. Config file will only be installed, if the config_version differs.
|
||||||
# This means, the server may force the PrusaSlicer configuration to be downgraded.
|
# This means, the server may force the PrusaSlicer configuration to be downgraded.
|
||||||
config_version = 1.1.10
|
config_version = 1.2.0-alpha0
|
||||||
# Where to get the updates from?
|
# Where to get the updates from?
|
||||||
config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/PrusaResearch/
|
config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/PrusaResearch/
|
||||||
changelog_url = https://files.prusa3d.com/?latest=slicer-profiles&lng=%1%
|
changelog_url = https://files.prusa3d.com/?latest=slicer-profiles&lng=%1%
|
||||||
|
@ -1807,12 +1807,14 @@ inherits = *PLA*
|
||||||
filament_vendor = Fillamentum
|
filament_vendor = Fillamentum
|
||||||
filament_cost = 21.99
|
filament_cost = 21.99
|
||||||
filament_density = 1.24
|
filament_density = 1.24
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:Fillamentum ABS]
|
[filament:Fillamentum ABS]
|
||||||
inherits = *ABSC*
|
inherits = *ABSC*
|
||||||
filament_vendor = Fillamentum
|
filament_vendor = Fillamentum
|
||||||
filament_cost = 32.4
|
filament_cost = 32.4
|
||||||
filament_density = 1.04
|
filament_density = 1.04
|
||||||
|
filament_spool_weight = 230
|
||||||
first_layer_temperature = 240
|
first_layer_temperature = 240
|
||||||
temperature = 240
|
temperature = 240
|
||||||
|
|
||||||
|
@ -1821,6 +1823,7 @@ inherits = *ABS*
|
||||||
filament_vendor = Fillamentum
|
filament_vendor = Fillamentum
|
||||||
filament_cost = 38.7
|
filament_cost = 38.7
|
||||||
filament_density = 1.07
|
filament_density = 1.07
|
||||||
|
filament_spool_weight = 230
|
||||||
fan_always_on = 1
|
fan_always_on = 1
|
||||||
cooling = 1
|
cooling = 1
|
||||||
min_fan_speed = 20
|
min_fan_speed = 20
|
||||||
|
@ -1836,6 +1839,7 @@ inherits = *ABS*
|
||||||
filament_vendor = Prusa Polymers
|
filament_vendor = Prusa Polymers
|
||||||
filament_cost = 35.28
|
filament_cost = 35.28
|
||||||
filament_density = 1.07
|
filament_density = 1.07
|
||||||
|
filament_spool_weight = 201
|
||||||
fan_always_on = 1
|
fan_always_on = 1
|
||||||
first_layer_temperature = 260
|
first_layer_temperature = 260
|
||||||
first_layer_bed_temperature = 105
|
first_layer_bed_temperature = 105
|
||||||
|
@ -1857,6 +1861,7 @@ inherits = *ABS*
|
||||||
filament_vendor = Prusa Polymers
|
filament_vendor = Prusa Polymers
|
||||||
filament_cost = 49.99
|
filament_cost = 49.99
|
||||||
filament_density = 1.22
|
filament_density = 1.22
|
||||||
|
filament_spool_weight = 201
|
||||||
fan_always_on = 0
|
fan_always_on = 0
|
||||||
first_layer_temperature = 275
|
first_layer_temperature = 275
|
||||||
first_layer_bed_temperature = 110
|
first_layer_bed_temperature = 110
|
||||||
|
@ -1883,6 +1888,7 @@ inherits = *ABS*
|
||||||
filament_vendor = Prusa Polymers
|
filament_vendor = Prusa Polymers
|
||||||
filament_cost = 49.99
|
filament_cost = 49.99
|
||||||
filament_density = 1.22
|
filament_density = 1.22
|
||||||
|
filament_spool_weight = 201
|
||||||
fan_always_on = 0
|
fan_always_on = 0
|
||||||
first_layer_temperature = 275
|
first_layer_temperature = 275
|
||||||
first_layer_bed_temperature = 105
|
first_layer_bed_temperature = 105
|
||||||
|
@ -1916,6 +1922,7 @@ inherits = *PET*
|
||||||
filament_vendor = Fillamentum
|
filament_vendor = Fillamentum
|
||||||
filament_cost = 34.99
|
filament_cost = 34.99
|
||||||
filament_density = 1.25
|
filament_density = 1.25
|
||||||
|
filament_spool_weight = 230
|
||||||
filament_type = CPE
|
filament_type = CPE
|
||||||
first_layer_bed_temperature = 90
|
first_layer_bed_temperature = 90
|
||||||
first_layer_temperature = 275
|
first_layer_temperature = 275
|
||||||
|
@ -1931,6 +1938,7 @@ compatible_printers_condition = nozzle_diameter[0]>0.35 and ! (printer_notes=~/.
|
||||||
extrusion_multiplier = 1.1
|
extrusion_multiplier = 1.1
|
||||||
filament_cost = 68
|
filament_cost = 68
|
||||||
filament_density = 1.15
|
filament_density = 1.15
|
||||||
|
filament_spool_weight = 230
|
||||||
filament_colour = #804040
|
filament_colour = #804040
|
||||||
filament_max_volumetric_speed = 10
|
filament_max_volumetric_speed = 10
|
||||||
first_layer_temperature = 190
|
first_layer_temperature = 190
|
||||||
|
@ -1969,12 +1977,14 @@ inherits = *ABSC*
|
||||||
filament_vendor = Hatchbox
|
filament_vendor = Hatchbox
|
||||||
filament_cost = 27.82
|
filament_cost = 27.82
|
||||||
filament_density = 1.04
|
filament_density = 1.04
|
||||||
|
filament_spool_weight = 225
|
||||||
|
|
||||||
[filament:Plasty Mladec ABS]
|
[filament:Plasty Mladec ABS]
|
||||||
inherits = *ABSC*
|
inherits = *ABSC*
|
||||||
filament_vendor = Plasty Mladec
|
filament_vendor = Plasty Mladec
|
||||||
filament_cost = 27.82
|
filament_cost = 27.82
|
||||||
filament_density = 1.08
|
filament_density = 1.08
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:Verbatim ABS]
|
[filament:Verbatim ABS]
|
||||||
inherits = *ABSC*
|
inherits = *ABSC*
|
||||||
|
@ -1995,6 +2005,7 @@ inherits = *PET*
|
||||||
filament_vendor = Plasty Mladec
|
filament_vendor = Plasty Mladec
|
||||||
filament_cost = 27.82
|
filament_cost = 27.82
|
||||||
filament_density = 1.27
|
filament_density = 1.27
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:Generic PLA]
|
[filament:Generic PLA]
|
||||||
inherits = *PLA*
|
inherits = *PLA*
|
||||||
|
@ -2039,6 +2050,7 @@ inherits = *FLEX*
|
||||||
filament_vendor = Fillamentum
|
filament_vendor = Fillamentum
|
||||||
filament_cost = 33.99
|
filament_cost = 33.99
|
||||||
filament_density = 1.20
|
filament_density = 1.20
|
||||||
|
filament_spool_weight = 230
|
||||||
filament_max_volumetric_speed = 1.2
|
filament_max_volumetric_speed = 1.2
|
||||||
filament_retract_length = 0
|
filament_retract_length = 0
|
||||||
filament_retract_speed = nil
|
filament_retract_speed = nil
|
||||||
|
@ -2136,6 +2148,7 @@ inherits = *ABSC*
|
||||||
filament_vendor = Made for Prusa
|
filament_vendor = Made for Prusa
|
||||||
filament_cost = 22.99
|
filament_cost = 22.99
|
||||||
filament_density = 1.08
|
filament_density = 1.08
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:*ABS MMU2*]
|
[filament:*ABS MMU2*]
|
||||||
inherits = Prusa ABS
|
inherits = Prusa ABS
|
||||||
|
@ -2185,6 +2198,7 @@ inherits = *ABS MMU2*
|
||||||
filament_vendor = Prusa Polymers
|
filament_vendor = Prusa Polymers
|
||||||
filament_cost = 35.28
|
filament_cost = 35.28
|
||||||
filament_density = 1.07
|
filament_density = 1.07
|
||||||
|
filament_spool_weight = 201
|
||||||
fan_always_on = 1
|
fan_always_on = 1
|
||||||
first_layer_temperature = 260
|
first_layer_temperature = 260
|
||||||
first_layer_bed_temperature = 105
|
first_layer_bed_temperature = 105
|
||||||
|
@ -2209,6 +2223,7 @@ inherits = *ABS MMU2*
|
||||||
filament_vendor = Prusa Polymers
|
filament_vendor = Prusa Polymers
|
||||||
filament_cost = 49.99
|
filament_cost = 49.99
|
||||||
filament_density = 1.22
|
filament_density = 1.22
|
||||||
|
filament_spool_weight = 201
|
||||||
fan_always_on = 0
|
fan_always_on = 0
|
||||||
fan_below_layer_time = 30
|
fan_below_layer_time = 30
|
||||||
first_layer_temperature = 265
|
first_layer_temperature = 265
|
||||||
|
@ -2237,17 +2252,20 @@ start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and no
|
||||||
inherits = *ABS MMU2*
|
inherits = *ABS MMU2*
|
||||||
filament_vendor = Made for Prusa
|
filament_vendor = Made for Prusa
|
||||||
filament_cost = 22.99
|
filament_cost = 22.99
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:Plasty Mladec ABS @MMU2]
|
[filament:Plasty Mladec ABS @MMU2]
|
||||||
inherits = *ABS MMU2*
|
inherits = *ABS MMU2*
|
||||||
filament_vendor = Plasty Mladec
|
filament_vendor = Plasty Mladec
|
||||||
filament_density = 1.08
|
filament_density = 1.08
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:Prusa HIPS]
|
[filament:Prusa HIPS]
|
||||||
inherits = *ABS*
|
inherits = *ABS*
|
||||||
filament_vendor = Made for Prusa
|
filament_vendor = Made for Prusa
|
||||||
filament_cost = 27.3
|
filament_cost = 27.3
|
||||||
filament_density = 1.04
|
filament_density = 1.04
|
||||||
|
filament_spool_weight = 230
|
||||||
bridge_fan_speed = 50
|
bridge_fan_speed = 50
|
||||||
cooling = 1
|
cooling = 1
|
||||||
extrusion_multiplier = 1
|
extrusion_multiplier = 1
|
||||||
|
@ -2287,6 +2305,7 @@ renamed_from = "Prusa PET"
|
||||||
filament_vendor = Made for Prusa
|
filament_vendor = Made for Prusa
|
||||||
filament_cost = 22.99
|
filament_cost = 22.99
|
||||||
filament_density = 1.27
|
filament_density = 1.27
|
||||||
|
filament_spool_weight = 230
|
||||||
compatible_printers_condition = nozzle_diameter[0]!=0.6 and printer_model!="MK2SMM" and printer_model!="MINI" and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material)
|
compatible_printers_condition = nozzle_diameter[0]!=0.6 and printer_model!="MK2SMM" and printer_model!="MINI" and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material)
|
||||||
|
|
||||||
[filament:Verbatim PETG]
|
[filament:Verbatim PETG]
|
||||||
|
@ -2310,6 +2329,7 @@ first_layer_temperature = 240
|
||||||
temperature = 250
|
temperature = 250
|
||||||
filament_cost = 29.99
|
filament_cost = 29.99
|
||||||
filament_density = 1.27
|
filament_density = 1.27
|
||||||
|
filament_spool_weight = 201
|
||||||
filament_type = PETG
|
filament_type = PETG
|
||||||
compatible_printers_condition = nozzle_diameter[0]!=0.6 and printer_model!="MK2SMM" and printer_model!="MINI" and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material)
|
compatible_printers_condition = nozzle_diameter[0]!=0.6 and printer_model!="MK2SMM" and printer_model!="MINI" and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material)
|
||||||
|
|
||||||
|
@ -2319,6 +2339,7 @@ renamed_from = "Prusa PET 0.6 nozzle"; "Prusa PETG 0.6 nozzle"
|
||||||
filament_vendor = Made for Prusa
|
filament_vendor = Made for Prusa
|
||||||
filament_cost = 22.99
|
filament_cost = 22.99
|
||||||
filament_density = 1.27
|
filament_density = 1.27
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:Prusament PETG @0.6 nozzle]
|
[filament:Prusament PETG @0.6 nozzle]
|
||||||
inherits = *PET06*
|
inherits = *PET06*
|
||||||
|
@ -2327,6 +2348,7 @@ first_layer_temperature = 240
|
||||||
temperature = 250
|
temperature = 250
|
||||||
filament_cost = 29.99
|
filament_cost = 29.99
|
||||||
filament_density = 1.27
|
filament_density = 1.27
|
||||||
|
filament_spool_weight = 201
|
||||||
filament_type = PETG
|
filament_type = PETG
|
||||||
|
|
||||||
[filament:Plasty Mladec PETG @0.6 nozzle]
|
[filament:Plasty Mladec PETG @0.6 nozzle]
|
||||||
|
@ -2336,6 +2358,7 @@ first_layer_temperature = 230
|
||||||
temperature = 240
|
temperature = 240
|
||||||
filament_cost = 27.92
|
filament_cost = 27.92
|
||||||
filament_density = 1.27
|
filament_density = 1.27
|
||||||
|
filament_spool_weight = 230
|
||||||
filament_type = PETG
|
filament_type = PETG
|
||||||
|
|
||||||
[filament:Devil Design PETG @0.6 nozzle]
|
[filament:Devil Design PETG @0.6 nozzle]
|
||||||
|
@ -2398,12 +2421,14 @@ filament_vendor = Generic
|
||||||
[filament:Plasty Mladec PETG @MMU2]
|
[filament:Plasty Mladec PETG @MMU2]
|
||||||
inherits = *PET MMU2*
|
inherits = *PET MMU2*
|
||||||
filament_vendor = Plasty Mladec
|
filament_vendor = Plasty Mladec
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:Prusa PETG @MMU2]
|
[filament:Prusa PETG @MMU2]
|
||||||
inherits = *PET MMU2*
|
inherits = *PET MMU2*
|
||||||
renamed_from = "Prusa PET MMU2"; "Prusa PETG MMU2"
|
renamed_from = "Prusa PET MMU2"; "Prusa PETG MMU2"
|
||||||
filament_vendor = Made for Prusa
|
filament_vendor = Made for Prusa
|
||||||
filament_cost = 22.99
|
filament_cost = 22.99
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:Prusament PETG @MMU2]
|
[filament:Prusament PETG @MMU2]
|
||||||
inherits = *PET MMU2*
|
inherits = *PET MMU2*
|
||||||
|
@ -2411,6 +2436,7 @@ filament_type = PETG
|
||||||
filament_vendor = Prusa Polymers
|
filament_vendor = Prusa Polymers
|
||||||
filament_cost = 29.99
|
filament_cost = 29.99
|
||||||
filament_density = 1.27
|
filament_density = 1.27
|
||||||
|
filament_spool_weight = 201
|
||||||
|
|
||||||
[filament:Generic PETG @MMU2 0.6 nozzle]
|
[filament:Generic PETG @MMU2 0.6 nozzle]
|
||||||
inherits = *PET MMU2 06*
|
inherits = *PET MMU2 06*
|
||||||
|
@ -2421,6 +2447,7 @@ filament_vendor = Generic
|
||||||
inherits = *PET MMU2 06*
|
inherits = *PET MMU2 06*
|
||||||
renamed_from = "Prusa PET MMU2 0.6 nozzle"; "Prusa PETG MMU2 0.6 nozzle"
|
renamed_from = "Prusa PET MMU2 0.6 nozzle"; "Prusa PETG MMU2 0.6 nozzle"
|
||||||
filament_vendor = Made for Prusa
|
filament_vendor = Made for Prusa
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:Prusament PETG @MMU2 0.6 nozzle]
|
[filament:Prusament PETG @MMU2 0.6 nozzle]
|
||||||
inherits = *PET MMU2 06*
|
inherits = *PET MMU2 06*
|
||||||
|
@ -2428,17 +2455,20 @@ filament_type = PETG
|
||||||
filament_vendor = Prusa Polymers
|
filament_vendor = Prusa Polymers
|
||||||
filament_cost = 29.99
|
filament_cost = 29.99
|
||||||
filament_density = 1.27
|
filament_density = 1.27
|
||||||
|
filament_spool_weight = 201
|
||||||
|
|
||||||
[filament:Plasty Mladec PETG @MMU2 0.6 nozzle]
|
[filament:Plasty Mladec PETG @MMU2 0.6 nozzle]
|
||||||
inherits = *PET MMU2 06*
|
inherits = *PET MMU2 06*
|
||||||
filament_type = PETG
|
filament_type = PETG
|
||||||
filament_vendor = Plasty Mladec
|
filament_vendor = Plasty Mladec
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:Prusa PLA]
|
[filament:Prusa PLA]
|
||||||
inherits = *PLA*
|
inherits = *PLA*
|
||||||
filament_vendor = Made for Prusa
|
filament_vendor = Made for Prusa
|
||||||
filament_cost = 20.99
|
filament_cost = 20.99
|
||||||
filament_density = 1.24
|
filament_density = 1.24
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:Fiberlogy PLA]
|
[filament:Fiberlogy PLA]
|
||||||
inherits = *PLA*
|
inherits = *PLA*
|
||||||
|
@ -2451,6 +2481,7 @@ inherits = *PLA*
|
||||||
filament_vendor = Plasty Mladec
|
filament_vendor = Plasty Mladec
|
||||||
filament_cost = 25.4
|
filament_cost = 25.4
|
||||||
filament_density = 1.24
|
filament_density = 1.24
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:AmazonBasics PLA]
|
[filament:AmazonBasics PLA]
|
||||||
inherits = *PLA*
|
inherits = *PLA*
|
||||||
|
@ -2463,6 +2494,7 @@ inherits = *PLA*
|
||||||
filament_vendor = Hatchbox
|
filament_vendor = Hatchbox
|
||||||
filament_cost = 25.4
|
filament_cost = 25.4
|
||||||
filament_density = 1.24
|
filament_density = 1.24
|
||||||
|
filament_spool_weight = 225
|
||||||
|
|
||||||
[filament:Esun PLA]
|
[filament:Esun PLA]
|
||||||
inherits = *PLA*
|
inherits = *PLA*
|
||||||
|
@ -2494,6 +2526,7 @@ filament_vendor = Prusa Polymers
|
||||||
temperature = 215
|
temperature = 215
|
||||||
filament_cost = 24.99
|
filament_cost = 24.99
|
||||||
filament_density = 1.24
|
filament_density = 1.24
|
||||||
|
filament_spool_weight = 201
|
||||||
filament_notes = "Affordable filament for everyday printing in premium quality manufactured in-house by Josef Prusa"
|
filament_notes = "Affordable filament for everyday printing in premium quality manufactured in-house by Josef Prusa"
|
||||||
|
|
||||||
[filament:*PLA MMU2*]
|
[filament:*PLA MMU2*]
|
||||||
|
@ -2520,18 +2553,21 @@ filament_vendor = Generic
|
||||||
inherits = *PLA MMU2*
|
inherits = *PLA MMU2*
|
||||||
filament_vendor = Made for Prusa
|
filament_vendor = Made for Prusa
|
||||||
filament_cost = 20.99
|
filament_cost = 20.99
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:Prusament PLA @MMU2]
|
[filament:Prusament PLA @MMU2]
|
||||||
inherits = *PLA MMU2*
|
inherits = *PLA MMU2*
|
||||||
filament_vendor = Prusa Polymers
|
filament_vendor = Prusa Polymers
|
||||||
filament_cost = 24.99
|
filament_cost = 24.99
|
||||||
filament_density = 1.24
|
filament_density = 1.24
|
||||||
|
filament_spool_weight = 201
|
||||||
|
|
||||||
[filament:Fillamentum PLA @MMU2]
|
[filament:Fillamentum PLA @MMU2]
|
||||||
inherits = *PLA MMU2*
|
inherits = *PLA MMU2*
|
||||||
filament_vendor = Fillamentum
|
filament_vendor = Fillamentum
|
||||||
filament_cost = 21.99
|
filament_cost = 21.99
|
||||||
filament_density = 1.24
|
filament_density = 1.24
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:SemiFlex or Flexfill 98A]
|
[filament:SemiFlex or Flexfill 98A]
|
||||||
inherits = *FLEX*
|
inherits = *FLEX*
|
||||||
|
@ -2545,6 +2581,7 @@ inherits = *FLEX*
|
||||||
filament_vendor = Fillamentum
|
filament_vendor = Fillamentum
|
||||||
filament_cost = 33.99
|
filament_cost = 33.99
|
||||||
filament_density = 1.23
|
filament_density = 1.23
|
||||||
|
filament_spool_weight = 230
|
||||||
filament_max_volumetric_speed = 1.35
|
filament_max_volumetric_speed = 1.35
|
||||||
fan_always_on = 1
|
fan_always_on = 1
|
||||||
cooling = 0
|
cooling = 0
|
||||||
|
@ -2579,6 +2616,7 @@ inherits = *common*
|
||||||
filament_vendor = Fillamentum
|
filament_vendor = Fillamentum
|
||||||
filament_cost = 56.99
|
filament_cost = 56.99
|
||||||
filament_density = 1.01
|
filament_density = 1.01
|
||||||
|
filament_spool_weight = 230
|
||||||
bed_temperature = 90
|
bed_temperature = 90
|
||||||
bridge_fan_speed = 30
|
bridge_fan_speed = 30
|
||||||
cooling = 1
|
cooling = 1
|
||||||
|
@ -2790,6 +2828,7 @@ inherits = *PETMMU1*
|
||||||
filament_vendor = Fillamentum
|
filament_vendor = Fillamentum
|
||||||
filament_cost = 34.99
|
filament_cost = 34.99
|
||||||
filament_density = 1.25
|
filament_density = 1.25
|
||||||
|
filament_spool_weight = 230
|
||||||
filament_type = CPE
|
filament_type = CPE
|
||||||
first_layer_bed_temperature = 90
|
first_layer_bed_temperature = 90
|
||||||
first_layer_temperature = 275
|
first_layer_temperature = 275
|
||||||
|
@ -2819,6 +2858,7 @@ inherits = *PETMMU1*
|
||||||
filament_vendor = Plasty Mladec
|
filament_vendor = Plasty Mladec
|
||||||
filament_cost = 27.82
|
filament_cost = 27.82
|
||||||
filament_density = 1.27
|
filament_density = 1.27
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:Verbatim PETG @MMU1]
|
[filament:Verbatim PETG @MMU1]
|
||||||
inherits = *PETMMU1*
|
inherits = *PETMMU1*
|
||||||
|
@ -2838,6 +2878,7 @@ renamed_from = "Prusa PET MMU1"; "Prusa PETG MMU1"
|
||||||
filament_vendor = Made for Prusa
|
filament_vendor = Made for Prusa
|
||||||
filament_cost = 22.99
|
filament_cost = 22.99
|
||||||
filament_density = 1.27
|
filament_density = 1.27
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:Prusament PETG @MMU1]
|
[filament:Prusament PETG @MMU1]
|
||||||
inherits = *PETMMU1*
|
inherits = *PETMMU1*
|
||||||
|
@ -2846,6 +2887,7 @@ first_layer_temperature = 240
|
||||||
temperature = 250
|
temperature = 250
|
||||||
filament_cost = 29.99
|
filament_cost = 29.99
|
||||||
filament_density = 1.27
|
filament_density = 1.27
|
||||||
|
filament_spool_weight = 201
|
||||||
filament_type = PETG
|
filament_type = PETG
|
||||||
|
|
||||||
[filament:Taulman T-Glase @MMU1]
|
[filament:Taulman T-Glase @MMU1]
|
||||||
|
@ -2910,6 +2952,7 @@ inherits = Generic PETG; *PETMINI*
|
||||||
filament_vendor = Plasty Mladec
|
filament_vendor = Plasty Mladec
|
||||||
filament_cost = 27.82
|
filament_cost = 27.82
|
||||||
filament_density = 1.27
|
filament_density = 1.27
|
||||||
|
filament_spool_weight = 230
|
||||||
compatible_printers_condition = printer_model=="MINI" and nozzle_diameter[0]!=0.6
|
compatible_printers_condition = printer_model=="MINI" and nozzle_diameter[0]!=0.6
|
||||||
|
|
||||||
[filament:Verbatim PETG @MINI]
|
[filament:Verbatim PETG @MINI]
|
||||||
|
@ -2979,6 +3022,7 @@ inherits = Generic ABS; *ABSMINI*
|
||||||
filament_vendor = Hatchbox
|
filament_vendor = Hatchbox
|
||||||
filament_cost = 27.82
|
filament_cost = 27.82
|
||||||
filament_density = 1.08
|
filament_density = 1.08
|
||||||
|
filament_spool_weight = 225
|
||||||
fan_always_on = 0
|
fan_always_on = 0
|
||||||
cooling = 1
|
cooling = 1
|
||||||
min_fan_speed = 15
|
min_fan_speed = 15
|
||||||
|
@ -2993,6 +3037,7 @@ inherits = Generic ABS; *ABSMINI*
|
||||||
filament_vendor = Plasty Mladec
|
filament_vendor = Plasty Mladec
|
||||||
filament_cost = 27.82
|
filament_cost = 27.82
|
||||||
filament_density = 1.08
|
filament_density = 1.08
|
||||||
|
filament_spool_weight = 230
|
||||||
fan_always_on = 0
|
fan_always_on = 0
|
||||||
cooling = 1
|
cooling = 1
|
||||||
min_fan_speed = 15
|
min_fan_speed = 15
|
||||||
|
@ -3022,6 +3067,7 @@ filament_vendor = Prusa Polymers
|
||||||
first_layer_temperature = 240
|
first_layer_temperature = 240
|
||||||
temperature = 250
|
temperature = 250
|
||||||
filament_density = 1.27
|
filament_density = 1.27
|
||||||
|
filament_spool_weight = 201
|
||||||
filament_cost = 29.99
|
filament_cost = 29.99
|
||||||
compatible_printers_condition = printer_model=="MINI" and nozzle_diameter[0]!=0.6
|
compatible_printers_condition = printer_model=="MINI" and nozzle_diameter[0]!=0.6
|
||||||
|
|
||||||
|
@ -3044,6 +3090,7 @@ inherits = Prusament PETG; *PETMINI06*
|
||||||
first_layer_temperature = 240
|
first_layer_temperature = 240
|
||||||
temperature = 250
|
temperature = 250
|
||||||
filament_density = 1.27
|
filament_density = 1.27
|
||||||
|
filament_spool_weight = 201
|
||||||
filament_cost = 29.99
|
filament_cost = 29.99
|
||||||
|
|
||||||
[filament:Generic PETG @0.6 nozzle MINI]
|
[filament:Generic PETG @0.6 nozzle MINI]
|
||||||
|
@ -3063,6 +3110,7 @@ filament_density = 1.23
|
||||||
[filament:Plasty Mladec PETG @0.6 nozzle MINI]
|
[filament:Plasty Mladec PETG @0.6 nozzle MINI]
|
||||||
inherits = Generic PETG; *PETMINI06*
|
inherits = Generic PETG; *PETMINI06*
|
||||||
filament_vendor = Plasty Mladec
|
filament_vendor = Plasty Mladec
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:Verbatim PETG @0.6 nozzle MINI]
|
[filament:Verbatim PETG @0.6 nozzle MINI]
|
||||||
inherits = Generic PETG; *PETMINI06*
|
inherits = Generic PETG; *PETMINI06*
|
||||||
|
@ -3090,6 +3138,7 @@ filament_type = ASA
|
||||||
filament_colour = #FFF2EC
|
filament_colour = #FFF2EC
|
||||||
filament_cost = 35.28
|
filament_cost = 35.28
|
||||||
filament_density = 1.07
|
filament_density = 1.07
|
||||||
|
filament_spool_weight = 201
|
||||||
|
|
||||||
[filament:Fillamentum Flexfill 98A @MINI]
|
[filament:Fillamentum Flexfill 98A @MINI]
|
||||||
inherits = SemiFlex or Flexfill 98A; *FLEXMINI*
|
inherits = SemiFlex or Flexfill 98A; *FLEXMINI*
|
||||||
|
@ -3098,6 +3147,7 @@ first_layer_temperature = 240
|
||||||
temperature = 240
|
temperature = 240
|
||||||
filament_max_volumetric_speed = 1.35
|
filament_max_volumetric_speed = 1.35
|
||||||
filament_cost = 33.99
|
filament_cost = 33.99
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:Generic FLEX @MINI]
|
[filament:Generic FLEX @MINI]
|
||||||
inherits = SemiFlex or Flexfill 98A; *FLEXMINI*
|
inherits = SemiFlex or Flexfill 98A; *FLEXMINI*
|
||||||
|
@ -3173,6 +3223,7 @@ filament_retract_lift = 0
|
||||||
filament_retract_before_travel = 7
|
filament_retract_before_travel = 7
|
||||||
filament_wipe = 0
|
filament_wipe = 0
|
||||||
filament_density = 1.20
|
filament_density = 1.20
|
||||||
|
filament_spool_weight = 230
|
||||||
filament_cost = 33.95
|
filament_cost = 33.95
|
||||||
bridge_fan_speed = 70
|
bridge_fan_speed = 70
|
||||||
fan_always_on = 1
|
fan_always_on = 1
|
||||||
|
@ -3193,6 +3244,7 @@ temperature = 265
|
||||||
filament_type = CPE
|
filament_type = CPE
|
||||||
filament_cost = 34.99
|
filament_cost = 34.99
|
||||||
filament_density = 1.25
|
filament_density = 1.25
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:ColorFabb nGen @MINI]
|
[filament:ColorFabb nGen @MINI]
|
||||||
inherits = ColorFabb nGen; *PETMINI*
|
inherits = ColorFabb nGen; *PETMINI*
|
||||||
|
@ -3208,6 +3260,7 @@ filament_cost = 28.80
|
||||||
inherits = Fillamentum ABS; *ABSMINI*
|
inherits = Fillamentum ABS; *ABSMINI*
|
||||||
filament_cost = 32.4
|
filament_cost = 32.4
|
||||||
filament_density = 1.04
|
filament_density = 1.04
|
||||||
|
filament_spool_weight = 230
|
||||||
fan_always_on = 0
|
fan_always_on = 0
|
||||||
cooling = 1
|
cooling = 1
|
||||||
min_fan_speed = 15
|
min_fan_speed = 15
|
||||||
|
@ -3234,6 +3287,7 @@ filament_type = ASA
|
||||||
filament_colour = #FFF2EC
|
filament_colour = #FFF2EC
|
||||||
filament_cost = 38.7
|
filament_cost = 38.7
|
||||||
filament_density = 1.07
|
filament_density = 1.07
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[filament:Polymaker PC-Max @MINI]
|
[filament:Polymaker PC-Max @MINI]
|
||||||
inherits = Polymaker PC-Max; *ABSMINI*
|
inherits = Polymaker PC-Max; *ABSMINI*
|
||||||
|
@ -3253,6 +3307,7 @@ inherits = *ABSMINI*
|
||||||
filament_vendor = Prusa Polymers
|
filament_vendor = Prusa Polymers
|
||||||
filament_cost = 49.99
|
filament_cost = 49.99
|
||||||
filament_density = 1.22
|
filament_density = 1.22
|
||||||
|
filament_spool_weight = 201
|
||||||
fan_always_on = 0
|
fan_always_on = 0
|
||||||
first_layer_temperature = 275
|
first_layer_temperature = 275
|
||||||
first_layer_bed_temperature = 100
|
first_layer_bed_temperature = 100
|
||||||
|
@ -3281,6 +3336,7 @@ inherits = *ABSMINI*
|
||||||
filament_vendor = Made for Prusa
|
filament_vendor = Made for Prusa
|
||||||
filament_cost = 22.99
|
filament_cost = 22.99
|
||||||
filament_density = 1.08
|
filament_density = 1.08
|
||||||
|
filament_spool_weight = 230
|
||||||
fan_always_on = 0
|
fan_always_on = 0
|
||||||
cooling = 1
|
cooling = 1
|
||||||
min_fan_speed = 15
|
min_fan_speed = 15
|
||||||
|
@ -3374,6 +3430,7 @@ renamed_from = "Prusa PET MINI"; "Prusa PETG MINI"
|
||||||
filament_vendor = Made for Prusa
|
filament_vendor = Made for Prusa
|
||||||
filament_cost = 22.99
|
filament_cost = 22.99
|
||||||
filament_density = 1.27
|
filament_density = 1.27
|
||||||
|
filament_spool_weight = 230
|
||||||
compatible_printers_condition = printer_model=="MINI" and nozzle_diameter[0]!=0.6
|
compatible_printers_condition = printer_model=="MINI" and nozzle_diameter[0]!=0.6
|
||||||
|
|
||||||
[filament:Prusa PETG @0.6 nozzle MINI]
|
[filament:Prusa PETG @0.6 nozzle MINI]
|
||||||
|
@ -3382,6 +3439,7 @@ renamed_from = "Prusa PET 0.6 nozzle MINI"; "Prusa PETG 0.6 nozzle MINI"
|
||||||
filament_vendor = Made for Prusa
|
filament_vendor = Made for Prusa
|
||||||
filament_cost = 22.99
|
filament_cost = 22.99
|
||||||
filament_density = 1.27
|
filament_density = 1.27
|
||||||
|
filament_spool_weight = 230
|
||||||
|
|
||||||
[sla_print:*common*]
|
[sla_print:*common*]
|
||||||
compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_SL1.*/
|
compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_SL1.*/
|
||||||
|
@ -3409,6 +3467,7 @@ support_pillar_diameter = 1
|
||||||
support_pillar_connection_mode = zigzag
|
support_pillar_connection_mode = zigzag
|
||||||
support_pillar_widening_factor = 0
|
support_pillar_widening_factor = 0
|
||||||
supports_enable = 1
|
supports_enable = 1
|
||||||
|
support_small_pillar_diameter_percent = 60%
|
||||||
|
|
||||||
[sla_print:0.025 UltraDetail]
|
[sla_print:0.025 UltraDetail]
|
||||||
inherits = *common*
|
inherits = *common*
|
||||||
|
|
|
@ -84,10 +84,14 @@ public:
|
||||||
template<typename VISITOR> void visit_cells_intersecting_line(Slic3r::Point p1, Slic3r::Point p2, VISITOR &visitor) const
|
template<typename VISITOR> void visit_cells_intersecting_line(Slic3r::Point p1, Slic3r::Point p2, VISITOR &visitor) const
|
||||||
{
|
{
|
||||||
// End points of the line segment.
|
// End points of the line segment.
|
||||||
p1(0) -= m_bbox.min(0);
|
assert(m_bbox.contains(p1));
|
||||||
p1(1) -= m_bbox.min(1);
|
assert(m_bbox.contains(p2));
|
||||||
p2(0) -= m_bbox.min(0);
|
p1 -= m_bbox.min;
|
||||||
p2(1) -= m_bbox.min(1);
|
p2 -= m_bbox.min;
|
||||||
|
assert(p1.x() >= 0 && p1.x() < m_cols * m_resolution);
|
||||||
|
assert(p1.y() >= 0 && p1.y() < m_rows * m_resolution);
|
||||||
|
assert(p2.x() >= 0 && p2.x() < m_cols * m_resolution);
|
||||||
|
assert(p2.y() >= 0 && p2.y() < m_rows * m_resolution);
|
||||||
// Get the cells of the end points.
|
// Get the cells of the end points.
|
||||||
coord_t ix = p1(0) / m_resolution;
|
coord_t ix = p1(0) / m_resolution;
|
||||||
coord_t iy = p1(1) / m_resolution;
|
coord_t iy = p1(1) / m_resolution;
|
||||||
|
@ -115,18 +119,22 @@ public:
|
||||||
ey -= ex;
|
ey -= ex;
|
||||||
ex = int64_t(dy) * m_resolution;
|
ex = int64_t(dy) * m_resolution;
|
||||||
ix += 1;
|
ix += 1;
|
||||||
|
assert(ix <= ixb);
|
||||||
}
|
}
|
||||||
else if (ex == ey) {
|
else if (ex == ey) {
|
||||||
ex = int64_t(dy) * m_resolution;
|
ex = int64_t(dy) * m_resolution;
|
||||||
ey = int64_t(dx) * m_resolution;
|
ey = int64_t(dx) * m_resolution;
|
||||||
ix += 1;
|
ix += 1;
|
||||||
iy += 1;
|
iy += 1;
|
||||||
|
assert(ix <= ixb);
|
||||||
|
assert(iy <= iyb);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
assert(ex > ey);
|
assert(ex > ey);
|
||||||
ex -= ey;
|
ex -= ey;
|
||||||
ey = int64_t(dx) * m_resolution;
|
ey = int64_t(dx) * m_resolution;
|
||||||
iy += 1;
|
iy += 1;
|
||||||
|
assert(iy <= iyb);
|
||||||
}
|
}
|
||||||
if (! visitor(iy, ix))
|
if (! visitor(iy, ix))
|
||||||
return;
|
return;
|
||||||
|
@ -141,11 +149,13 @@ public:
|
||||||
ey -= ex;
|
ey -= ex;
|
||||||
ex = int64_t(dy) * m_resolution;
|
ex = int64_t(dy) * m_resolution;
|
||||||
ix += 1;
|
ix += 1;
|
||||||
|
assert(ix <= ixb);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ex -= ey;
|
ex -= ey;
|
||||||
ey = int64_t(dx) * m_resolution;
|
ey = int64_t(dx) * m_resolution;
|
||||||
iy -= 1;
|
iy -= 1;
|
||||||
|
assert(iy >= iyb);
|
||||||
}
|
}
|
||||||
if (! visitor(iy, ix))
|
if (! visitor(iy, ix))
|
||||||
return;
|
return;
|
||||||
|
@ -163,12 +173,14 @@ public:
|
||||||
ey -= ex;
|
ey -= ex;
|
||||||
ex = int64_t(dy) * m_resolution;
|
ex = int64_t(dy) * m_resolution;
|
||||||
ix -= 1;
|
ix -= 1;
|
||||||
|
assert(ix >= ixb);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
assert(ex >= ey);
|
assert(ex >= ey);
|
||||||
ex -= ey;
|
ex -= ey;
|
||||||
ey = int64_t(dx) * m_resolution;
|
ey = int64_t(dx) * m_resolution;
|
||||||
iy += 1;
|
iy += 1;
|
||||||
|
assert(iy <= iyb);
|
||||||
}
|
}
|
||||||
if (! visitor(iy, ix))
|
if (! visitor(iy, ix))
|
||||||
return;
|
return;
|
||||||
|
@ -183,6 +195,7 @@ public:
|
||||||
ey -= ex;
|
ey -= ex;
|
||||||
ex = int64_t(dy) * m_resolution;
|
ex = int64_t(dy) * m_resolution;
|
||||||
ix -= 1;
|
ix -= 1;
|
||||||
|
assert(ix >= ixb);
|
||||||
}
|
}
|
||||||
else if (ex == ey) {
|
else if (ex == ey) {
|
||||||
// The lower edge of a grid cell belongs to the cell.
|
// The lower edge of a grid cell belongs to the cell.
|
||||||
|
@ -191,10 +204,12 @@ public:
|
||||||
if (dx > 0) {
|
if (dx > 0) {
|
||||||
ex = int64_t(dy) * m_resolution;
|
ex = int64_t(dy) * m_resolution;
|
||||||
ix -= 1;
|
ix -= 1;
|
||||||
|
assert(ix >= ixb);
|
||||||
}
|
}
|
||||||
if (dy > 0) {
|
if (dy > 0) {
|
||||||
ey = int64_t(dx) * m_resolution;
|
ey = int64_t(dx) * m_resolution;
|
||||||
iy -= 1;
|
iy -= 1;
|
||||||
|
assert(iy >= iyb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -202,6 +217,7 @@ public:
|
||||||
ex -= ey;
|
ex -= ey;
|
||||||
ey = int64_t(dx) * m_resolution;
|
ey = int64_t(dx) * m_resolution;
|
||||||
iy -= 1;
|
iy -= 1;
|
||||||
|
assert(iy >= iyb);
|
||||||
}
|
}
|
||||||
if (! visitor(iy, ix))
|
if (! visitor(iy, ix))
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <numeric>
|
||||||
|
|
||||||
#include "../ClipperUtils.hpp"
|
#include "../ClipperUtils.hpp"
|
||||||
#include "../EdgeGrid.hpp"
|
#include "../EdgeGrid.hpp"
|
||||||
|
@ -28,6 +29,7 @@ Fill* Fill::new_from_type(const InfillPattern type)
|
||||||
case ip3DHoneycomb: return new Fill3DHoneycomb();
|
case ip3DHoneycomb: return new Fill3DHoneycomb();
|
||||||
case ipGyroid: return new FillGyroid();
|
case ipGyroid: return new FillGyroid();
|
||||||
case ipRectilinear: return new FillRectilinear();
|
case ipRectilinear: return new FillRectilinear();
|
||||||
|
case ipAlignedRectilinear: return new FillAlignedRectilinear();
|
||||||
case ipMonotonic: return new FillMonotonic();
|
case ipMonotonic: return new FillMonotonic();
|
||||||
case ipLine: return new FillLine();
|
case ipLine: return new FillLine();
|
||||||
case ipGrid: return new FillGrid();
|
case ipGrid: return new FillGrid();
|
||||||
|
@ -840,7 +842,7 @@ void mark_boundary_segments_touching_infill(
|
||||||
|
|
||||||
EdgeGrid::Grid grid;
|
EdgeGrid::Grid grid;
|
||||||
// Make sure that the the grid is big enough for queries against the thick segment.
|
// Make sure that the the grid is big enough for queries against the thick segment.
|
||||||
grid.set_bbox(boundary_bbox.inflated(distance_colliding + SCALED_EPSILON));
|
grid.set_bbox(boundary_bbox.inflated(distance_colliding * 1.43));
|
||||||
// Inflate the bounding box by a thick line width.
|
// Inflate the bounding box by a thick line width.
|
||||||
grid.create(boundary, std::max(clip_distance, distance_colliding) + scale_(10.));
|
grid.create(boundary, std::max(clip_distance, distance_colliding) + scale_(10.));
|
||||||
|
|
||||||
|
@ -960,9 +962,6 @@ void mark_boundary_segments_touching_infill(
|
||||||
#endif // INFILL_DEBUG_OUTPUT
|
#endif // INFILL_DEBUG_OUTPUT
|
||||||
} visitor(grid, boundary, boundary_parameters, boundary_intersections, distance_colliding);
|
} visitor(grid, boundary, boundary_parameters, boundary_intersections, distance_colliding);
|
||||||
|
|
||||||
BoundingBoxf bboxf(boundary_bbox.min.cast<double>(), boundary_bbox.max.cast<double>());
|
|
||||||
bboxf.offset(- SCALED_EPSILON);
|
|
||||||
|
|
||||||
for (const Polyline &polyline : infill) {
|
for (const Polyline &polyline : infill) {
|
||||||
#ifdef INFILL_DEBUG_OUTPUT
|
#ifdef INFILL_DEBUG_OUTPUT
|
||||||
++ iStep;
|
++ iStep;
|
||||||
|
@ -1018,11 +1017,13 @@ void mark_boundary_segments_touching_infill(
|
||||||
Vec2d vperp = perp(v);
|
Vec2d vperp = perp(v);
|
||||||
Vec2d a = pt1 - v - vperp;
|
Vec2d a = pt1 - v - vperp;
|
||||||
Vec2d b = pt2 + v - vperp;
|
Vec2d b = pt2 + v - vperp;
|
||||||
if (Geometry::liang_barsky_line_clipping(a, b, bboxf))
|
assert(grid.bbox().contains(a.cast<coord_t>()));
|
||||||
|
assert(grid.bbox().contains(b.cast<coord_t>()));
|
||||||
grid.visit_cells_intersecting_line(a.cast<coord_t>(), b.cast<coord_t>(), visitor);
|
grid.visit_cells_intersecting_line(a.cast<coord_t>(), b.cast<coord_t>(), visitor);
|
||||||
a = pt1 - v + vperp;
|
a = pt1 - v + vperp;
|
||||||
b = pt2 + v + vperp;
|
b = pt2 + v + vperp;
|
||||||
if (Geometry::liang_barsky_line_clipping(a, b, bboxf))
|
assert(grid.bbox().contains(a.cast<coord_t>()));
|
||||||
|
assert(grid.bbox().contains(b.cast<coord_t>()));
|
||||||
grid.visit_cells_intersecting_line(a.cast<coord_t>(), b.cast<coord_t>(), visitor);
|
grid.visit_cells_intersecting_line(a.cast<coord_t>(), b.cast<coord_t>(), visitor);
|
||||||
#endif
|
#endif
|
||||||
#ifdef INFILL_DEBUG_OUTPUT
|
#ifdef INFILL_DEBUG_OUTPUT
|
||||||
|
|
|
@ -29,6 +29,17 @@ protected:
|
||||||
bool fill_surface_by_multilines(const Surface *surface, FillParams params, const std::initializer_list<SweepParams> &sweep_params, Polylines &polylines_out);
|
bool fill_surface_by_multilines(const Surface *surface, FillParams params, const std::initializer_list<SweepParams> &sweep_params, Polylines &polylines_out);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class FillAlignedRectilinear : public FillRectilinear
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Fill* clone() const override { return new FillAlignedRectilinear(*this); };
|
||||||
|
~FillAlignedRectilinear() override = default;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// Always generate infill at the same angle.
|
||||||
|
virtual float _layer_angle(size_t idx) const { return 0.f; }
|
||||||
|
};
|
||||||
|
|
||||||
class FillMonotonic : public FillRectilinear
|
class FillMonotonic : public FillRectilinear
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -399,13 +399,11 @@ void GCodeProcessor::TimeProcessor::post_process(const std::string& filename)
|
||||||
};
|
};
|
||||||
|
|
||||||
// check for temporary lines
|
// check for temporary lines
|
||||||
auto is_temporary_decoration = [](const std::string& gcode_line) {
|
auto is_temporary_decoration = [](const std::string_view gcode_line) {
|
||||||
// remove trailing '\n'
|
// remove trailing '\n'
|
||||||
std::string line = gcode_line.substr(0, gcode_line.length() - 1);
|
assert(! gcode_line.empty());
|
||||||
if (line == ";" + Layer_Change_Tag)
|
assert(gcode_line.back() == '\n');
|
||||||
return true;
|
return gcode_line.substr(0, gcode_line.length() - 1) == ";" + Layer_Change_Tag;
|
||||||
else
|
|
||||||
return false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Iterators for the normal and silent cached time estimate entry recently processed, used by process_line_G1.
|
// Iterators for the normal and silent cached time estimate entry recently processed, used by process_line_G1.
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#include "Line.hpp"
|
#include "Line.hpp"
|
||||||
#include "MultiPoint.hpp"
|
#include "MultiPoint.hpp"
|
||||||
#include "Int128.hpp"
|
#include "Int128.hpp"
|
||||||
|
#include "BoundingBox.hpp"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
|
|
|
@ -439,7 +439,7 @@ const std::vector<std::string>& Preset::filament_options()
|
||||||
{
|
{
|
||||||
static std::vector<std::string> s_opts {
|
static std::vector<std::string> s_opts {
|
||||||
"filament_colour", "filament_diameter", "filament_type", "filament_soluble", "filament_notes", "filament_max_volumetric_speed",
|
"filament_colour", "filament_diameter", "filament_type", "filament_soluble", "filament_notes", "filament_max_volumetric_speed",
|
||||||
"extrusion_multiplier", "filament_density", "filament_cost", "filament_loading_speed", "filament_loading_speed_start", "filament_load_time",
|
"extrusion_multiplier", "filament_density", "filament_cost", "filament_spool_weight", "filament_loading_speed", "filament_loading_speed_start", "filament_load_time",
|
||||||
"filament_unloading_speed", "filament_unloading_speed_start", "filament_unload_time", "filament_toolchange_delay", "filament_cooling_moves",
|
"filament_unloading_speed", "filament_unloading_speed_start", "filament_unload_time", "filament_toolchange_delay", "filament_cooling_moves",
|
||||||
"filament_cooling_initial_speed", "filament_cooling_final_speed", "filament_ramming_parameters", "filament_minimal_purge_on_wipe_tower",
|
"filament_cooling_initial_speed", "filament_cooling_final_speed", "filament_ramming_parameters", "filament_minimal_purge_on_wipe_tower",
|
||||||
"temperature", "first_layer_temperature", "bed_temperature", "first_layer_bed_temperature", "fan_always_on", "cooling", "min_fan_speed",
|
"temperature", "first_layer_temperature", "bed_temperature", "first_layer_bed_temperature", "fan_always_on", "cooling", "min_fan_speed",
|
||||||
|
|
|
@ -98,6 +98,7 @@ bool Print::invalidate_state_by_config_options(const std::vector<t_config_option
|
||||||
"filament_density",
|
"filament_density",
|
||||||
"filament_notes",
|
"filament_notes",
|
||||||
"filament_cost",
|
"filament_cost",
|
||||||
|
"filament_spool_weight",
|
||||||
"first_layer_acceleration",
|
"first_layer_acceleration",
|
||||||
"first_layer_bed_temperature",
|
"first_layer_bed_temperature",
|
||||||
"first_layer_speed",
|
"first_layer_speed",
|
||||||
|
|
|
@ -460,12 +460,14 @@ void PrintConfigDef::init_fff_params()
|
||||||
def->enum_keys_map = &ConfigOptionEnum<InfillPattern>::get_enum_values();
|
def->enum_keys_map = &ConfigOptionEnum<InfillPattern>::get_enum_values();
|
||||||
def->enum_values.push_back("rectilinear");
|
def->enum_values.push_back("rectilinear");
|
||||||
def->enum_values.push_back("monotonic");
|
def->enum_values.push_back("monotonic");
|
||||||
|
def->enum_values.push_back("alignedrectilinear");
|
||||||
def->enum_values.push_back("concentric");
|
def->enum_values.push_back("concentric");
|
||||||
def->enum_values.push_back("hilbertcurve");
|
def->enum_values.push_back("hilbertcurve");
|
||||||
def->enum_values.push_back("archimedeanchords");
|
def->enum_values.push_back("archimedeanchords");
|
||||||
def->enum_values.push_back("octagramspiral");
|
def->enum_values.push_back("octagramspiral");
|
||||||
def->enum_labels.push_back(L("Rectilinear"));
|
def->enum_labels.push_back(L("Rectilinear"));
|
||||||
def->enum_labels.push_back(L("Monotonic"));
|
def->enum_labels.push_back(L("Monotonic"));
|
||||||
|
def->enum_labels.push_back(L("Aligned Rectilinear"));
|
||||||
def->enum_labels.push_back(L("Concentric"));
|
def->enum_labels.push_back(L("Concentric"));
|
||||||
def->enum_labels.push_back(L("Hilbert Curve"));
|
def->enum_labels.push_back(L("Hilbert Curve"));
|
||||||
def->enum_labels.push_back(L("Archimedean Chords"));
|
def->enum_labels.push_back(L("Archimedean Chords"));
|
||||||
|
@ -483,7 +485,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
def->enum_values = def_top_fill_pattern->enum_values;
|
def->enum_values = def_top_fill_pattern->enum_values;
|
||||||
def->enum_labels = def_top_fill_pattern->enum_labels;
|
def->enum_labels = def_top_fill_pattern->enum_labels;
|
||||||
def->aliases = def_top_fill_pattern->aliases;
|
def->aliases = def_top_fill_pattern->aliases;
|
||||||
def->set_default_value(new ConfigOptionEnum<InfillPattern>(ipRectilinear));
|
def->set_default_value(new ConfigOptionEnum<InfillPattern>(ipMonotonic));
|
||||||
|
|
||||||
def = this->add("external_perimeter_extrusion_width", coFloatOrPercent);
|
def = this->add("external_perimeter_extrusion_width", coFloatOrPercent);
|
||||||
def->label = L("External perimeters");
|
def->label = L("External perimeters");
|
||||||
|
@ -806,6 +808,16 @@ void PrintConfigDef::init_fff_params()
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
def->set_default_value(new ConfigOptionFloats { 0. });
|
def->set_default_value(new ConfigOptionFloats { 0. });
|
||||||
|
|
||||||
|
def = this->add("filament_spool_weight", coFloats);
|
||||||
|
def->label = L("Spool weight");
|
||||||
|
def->tooltip = L("Enter weight of the empty filament spool. "
|
||||||
|
"One may weigh a partially consumed filament spool before printing and one may compare the measured weight "
|
||||||
|
"with the calculated weight of the filament with the spool to find out whether the amount "
|
||||||
|
"of filament on the spool is sufficient to finish the print.");
|
||||||
|
def->sidetext = L("g");
|
||||||
|
def->min = 0;
|
||||||
|
def->set_default_value(new ConfigOptionFloats { 0. });
|
||||||
|
|
||||||
def = this->add("filament_settings_id", coStrings);
|
def = this->add("filament_settings_id", coStrings);
|
||||||
def->set_default_value(new ConfigOptionStrings { "" });
|
def->set_default_value(new ConfigOptionStrings { "" });
|
||||||
def->cli = ConfigOptionDef::nocli;
|
def->cli = ConfigOptionDef::nocli;
|
||||||
|
@ -871,6 +883,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
def->tooltip = L("Fill pattern for general low-density infill.");
|
def->tooltip = L("Fill pattern for general low-density infill.");
|
||||||
def->enum_keys_map = &ConfigOptionEnum<InfillPattern>::get_enum_values();
|
def->enum_keys_map = &ConfigOptionEnum<InfillPattern>::get_enum_values();
|
||||||
def->enum_values.push_back("rectilinear");
|
def->enum_values.push_back("rectilinear");
|
||||||
|
def->enum_values.push_back("alignedrectilinear");
|
||||||
def->enum_values.push_back("grid");
|
def->enum_values.push_back("grid");
|
||||||
def->enum_values.push_back("triangles");
|
def->enum_values.push_back("triangles");
|
||||||
def->enum_values.push_back("stars");
|
def->enum_values.push_back("stars");
|
||||||
|
@ -886,6 +899,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
def->enum_values.push_back("adaptivecubic");
|
def->enum_values.push_back("adaptivecubic");
|
||||||
def->enum_values.push_back("supportcubic");
|
def->enum_values.push_back("supportcubic");
|
||||||
def->enum_labels.push_back(L("Rectilinear"));
|
def->enum_labels.push_back(L("Rectilinear"));
|
||||||
|
def->enum_labels.push_back(L("Aligned Rectilinear"));
|
||||||
def->enum_labels.push_back(L("Grid"));
|
def->enum_labels.push_back(L("Grid"));
|
||||||
def->enum_labels.push_back(L("Triangles"));
|
def->enum_labels.push_back(L("Triangles"));
|
||||||
def->enum_labels.push_back(L("Stars"));
|
def->enum_labels.push_back(L("Stars"));
|
||||||
|
@ -1541,7 +1555,6 @@ void PrintConfigDef::init_fff_params()
|
||||||
def = this->add("perimeter_acceleration", coFloat);
|
def = this->add("perimeter_acceleration", coFloat);
|
||||||
def->label = L("Perimeters");
|
def->label = L("Perimeters");
|
||||||
def->tooltip = L("This is the acceleration your printer will use for perimeters. "
|
def->tooltip = L("This is the acceleration your printer will use for perimeters. "
|
||||||
"A high value like 9000 usually gives good results if your hardware is up to the job. "
|
|
||||||
"Set zero to disable acceleration control for perimeters.");
|
"Set zero to disable acceleration control for perimeters.");
|
||||||
def->sidetext = L("mm/s²");
|
def->sidetext = L("mm/s²");
|
||||||
def->mode = comExpert;
|
def->mode = comExpert;
|
||||||
|
|
|
@ -44,7 +44,7 @@ enum AuthorizationType {
|
||||||
};
|
};
|
||||||
|
|
||||||
enum InfillPattern : int {
|
enum InfillPattern : int {
|
||||||
ipRectilinear, ipMonotonic, ipGrid, ipTriangles, ipStars, ipCubic, ipLine, ipConcentric, ipHoneycomb, ip3DHoneycomb,
|
ipRectilinear, ipMonotonic, ipAlignedRectilinear, ipGrid, ipTriangles, ipStars, ipCubic, ipLine, ipConcentric, ipHoneycomb, ip3DHoneycomb,
|
||||||
ipGyroid, ipHilbertCurve, ipArchimedeanChords, ipOctagramSpiral, ipAdaptiveCubic, ipSupportCubic, ipCount,
|
ipGyroid, ipHilbertCurve, ipArchimedeanChords, ipOctagramSpiral, ipAdaptiveCubic, ipSupportCubic, ipCount,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -145,6 +145,7 @@ template<> inline const t_config_enum_values& ConfigOptionEnum<InfillPattern>::g
|
||||||
if (keys_map.empty()) {
|
if (keys_map.empty()) {
|
||||||
keys_map["rectilinear"] = ipRectilinear;
|
keys_map["rectilinear"] = ipRectilinear;
|
||||||
keys_map["monotonic"] = ipMonotonic;
|
keys_map["monotonic"] = ipMonotonic;
|
||||||
|
keys_map["alignedrectilinear"] = ipAlignedRectilinear;
|
||||||
keys_map["grid"] = ipGrid;
|
keys_map["grid"] = ipGrid;
|
||||||
keys_map["triangles"] = ipTriangles;
|
keys_map["triangles"] = ipTriangles;
|
||||||
keys_map["stars"] = ipStars;
|
keys_map["stars"] = ipStars;
|
||||||
|
@ -683,6 +684,7 @@ public:
|
||||||
ConfigOptionStrings filament_type;
|
ConfigOptionStrings filament_type;
|
||||||
ConfigOptionBools filament_soluble;
|
ConfigOptionBools filament_soluble;
|
||||||
ConfigOptionFloats filament_cost;
|
ConfigOptionFloats filament_cost;
|
||||||
|
ConfigOptionFloats filament_spool_weight;
|
||||||
ConfigOptionFloats filament_max_volumetric_speed;
|
ConfigOptionFloats filament_max_volumetric_speed;
|
||||||
ConfigOptionFloats filament_loading_speed;
|
ConfigOptionFloats filament_loading_speed;
|
||||||
ConfigOptionFloats filament_loading_speed_start;
|
ConfigOptionFloats filament_loading_speed_start;
|
||||||
|
@ -759,6 +761,7 @@ protected:
|
||||||
OPT_PTR(filament_type);
|
OPT_PTR(filament_type);
|
||||||
OPT_PTR(filament_soluble);
|
OPT_PTR(filament_soluble);
|
||||||
OPT_PTR(filament_cost);
|
OPT_PTR(filament_cost);
|
||||||
|
OPT_PTR(filament_spool_weight);
|
||||||
OPT_PTR(filament_max_volumetric_speed);
|
OPT_PTR(filament_max_volumetric_speed);
|
||||||
OPT_PTR(filament_loading_speed);
|
OPT_PTR(filament_loading_speed);
|
||||||
OPT_PTR(filament_loading_speed_start);
|
OPT_PTR(filament_loading_speed_start);
|
||||||
|
|
|
@ -1,11 +1,6 @@
|
||||||
#include "libslic3r/libslic3r.h"
|
#include "libslic3r/libslic3r.h"
|
||||||
#if ENABLE_GCODE_VIEWER
|
|
||||||
#include "DoubleSlider.hpp"
|
#include "DoubleSlider.hpp"
|
||||||
#include "libslic3r/GCode.hpp"
|
#include "libslic3r/GCode.hpp"
|
||||||
#else
|
|
||||||
#include "wxExtensions.hpp"
|
|
||||||
#include "libslic3r/GCode/PreviewData.hpp"
|
|
||||||
#endif // ENABLE_GCODE_VIEWER
|
|
||||||
#include "GUI.hpp"
|
#include "GUI.hpp"
|
||||||
#include "GUI_App.hpp"
|
#include "GUI_App.hpp"
|
||||||
#include "Plater.hpp"
|
#include "Plater.hpp"
|
||||||
|
@ -137,14 +132,13 @@ Control::Control( wxWindow *parent,
|
||||||
m_line_pens = { &DARK_GREY_PEN, &GREY_PEN, &LIGHT_GREY_PEN };
|
m_line_pens = { &DARK_GREY_PEN, &GREY_PEN, &LIGHT_GREY_PEN };
|
||||||
m_segm_pens = { &DARK_ORANGE_PEN, &ORANGE_PEN, &LIGHT_ORANGE_PEN };
|
m_segm_pens = { &DARK_ORANGE_PEN, &ORANGE_PEN, &LIGHT_ORANGE_PEN };
|
||||||
|
|
||||||
const wxFont& font = GetFont();
|
m_font = GetFont();
|
||||||
m_font = is_osx ? font.Smaller().Smaller() : font.Smaller();
|
this->SetMinSize(get_min_size());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Control::msw_rescale()
|
void Control::msw_rescale()
|
||||||
{
|
{
|
||||||
const wxFont& font = GUI::wxGetApp().normal_font();
|
m_font = GUI::wxGetApp().normal_font();
|
||||||
m_font = is_osx ? font.Smaller().Smaller() : font.Smaller();
|
|
||||||
|
|
||||||
m_bmp_thumb_higher.msw_rescale();
|
m_bmp_thumb_higher.msw_rescale();
|
||||||
m_bmp_thumb_lower .msw_rescale();
|
m_bmp_thumb_lower .msw_rescale();
|
||||||
|
@ -182,8 +176,7 @@ int Control::GetActiveValue() const
|
||||||
|
|
||||||
wxSize Control::get_min_size() const
|
wxSize Control::get_min_size() const
|
||||||
{
|
{
|
||||||
const int min_side = GUI::wxGetApp().em_unit() * ( is_horizontal() ? (is_osx ? 8 : 6) : 10 );
|
const int min_side = GUI::wxGetApp().em_unit() * ( is_horizontal() ? 5 : 11 );
|
||||||
|
|
||||||
return wxSize(min_side, min_side);
|
return wxSize(min_side, min_side);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -713,7 +706,7 @@ void Control::draw_tick_text(wxDC& dc, const wxPoint& pos, int tick, LabelType l
|
||||||
text_pos = wxPoint(xx, pos.y - m_thumb_size.x / 2 - text_height - 1);
|
text_pos = wxPoint(xx, pos.y - m_thumb_size.x / 2 - text_height - 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
text_pos = wxPoint(pos.x - text_width - 1 - m_thumb_size.x, pos.y - 0.5 * text_height + 1);
|
text_pos = wxPoint(std::max(2, pos.x - text_width - 1 - m_thumb_size.x), pos.y - 0.5 * text_height + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (label_type == ltEstimatedTime)
|
if (label_type == ltEstimatedTime)
|
||||||
|
|
|
@ -2743,7 +2743,9 @@ void GCodeViewer::render_legend() const
|
||||||
}
|
}
|
||||||
if (!m_settings_ids.filament.empty()) {
|
if (!m_settings_ids.filament.empty()) {
|
||||||
for (unsigned char i : m_extruder_ids) {
|
for (unsigned char i : m_extruder_ids) {
|
||||||
imgui.text(_u8L("Filament") + " " + std::to_string(i + 1) + ":");
|
std::string txt = _u8L("Filament");
|
||||||
|
txt += (m_extruder_ids.size() == 1) ? ":" : " " + std::to_string(i + 1);
|
||||||
|
imgui.text(txt);
|
||||||
ImGui::SameLine(offset);
|
ImGui::SameLine(offset);
|
||||||
imgui.text(m_settings_ids.filament[i]);
|
imgui.text(m_settings_ids.filament[i]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1091,7 +1091,7 @@ wxDEFINE_EVENT(EVT_GLCANVAS_RELOAD_FROM_DISK, SimpleEvent);
|
||||||
|
|
||||||
const double GLCanvas3D::DefaultCameraZoomToBoxMarginFactor = 1.25;
|
const double GLCanvas3D::DefaultCameraZoomToBoxMarginFactor = 1.25;
|
||||||
|
|
||||||
GLCanvas3D::ArrangeSettings load_arrange_settings()
|
static GLCanvas3D::ArrangeSettings load_arrange_settings()
|
||||||
{
|
{
|
||||||
GLCanvas3D::ArrangeSettings settings;
|
GLCanvas3D::ArrangeSettings settings;
|
||||||
|
|
||||||
|
@ -2392,7 +2392,7 @@ void GLCanvas3D::on_char(wxKeyEvent& evt)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (keyCode == WXK_ESCAPE && (_deactivate_undo_redo_toolbar_items() || _deactivate_search_toolbar_item()))
|
if (keyCode == WXK_ESCAPE && (_deactivate_undo_redo_toolbar_items() || _deactivate_search_toolbar_item() || _deactivate_arrange_menu()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (m_gizmos.on_char(evt))
|
if (m_gizmos.on_char(evt))
|
||||||
|
@ -3083,7 +3083,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt)
|
||||||
m_dirty = true;
|
m_dirty = true;
|
||||||
}
|
}
|
||||||
else if (evt.LeftDown() || evt.RightDown() || evt.MiddleDown()) {
|
else if (evt.LeftDown() || evt.RightDown() || evt.MiddleDown()) {
|
||||||
if (_deactivate_undo_redo_toolbar_items() || _deactivate_search_toolbar_item())
|
if (_deactivate_undo_redo_toolbar_items() || _deactivate_search_toolbar_item() || _deactivate_arrange_menu())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// If user pressed left or right button we first check whether this happened
|
// If user pressed left or right button we first check whether this happened
|
||||||
|
@ -3868,11 +3868,12 @@ bool GLCanvas3D::_render_search_list(float pos_x) const
|
||||||
return action_taken;
|
return action_taken;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLCanvas3D:: _render_arrange_popup()
|
bool GLCanvas3D::_render_arrange_menu(float pos_x)
|
||||||
{
|
{
|
||||||
ImGuiWrapper *imgui = wxGetApp().imgui();
|
ImGuiWrapper *imgui = wxGetApp().imgui();
|
||||||
|
|
||||||
float x = 0.5f * (float)get_canvas_size().get_width();
|
auto canvas_w = float(get_canvas_size().get_width());
|
||||||
|
const float x = pos_x * float(wxGetApp().plater()->get_camera().get_zoom()) + 0.5f * canvas_w;
|
||||||
imgui->set_next_window_pos(x, m_main_toolbar.get_height(), ImGuiCond_Always, 0.5f, 0.0f);
|
imgui->set_next_window_pos(x, m_main_toolbar.get_height(), ImGuiCond_Always, 0.5f, 0.0f);
|
||||||
|
|
||||||
imgui->begin(_(L("Arrange options")), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse);
|
imgui->begin(_(L("Arrange options")), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse);
|
||||||
|
@ -3880,17 +3881,39 @@ void GLCanvas3D:: _render_arrange_popup()
|
||||||
|
|
||||||
auto &appcfg = wxGetApp().app_config;
|
auto &appcfg = wxGetApp().app_config;
|
||||||
|
|
||||||
|
bool settings_changed = false;
|
||||||
|
|
||||||
if (imgui->slider_float(_(L("Gap size")), &settings.distance, 0.f, 100.f)) {
|
if (imgui->slider_float(_(L("Gap size")), &settings.distance, 0.f, 100.f)) {
|
||||||
m_arrange_settings.distance = settings.distance;
|
m_arrange_settings.distance = settings.distance;
|
||||||
appcfg->set("arrange", "min_object_distance", std::to_string(settings.distance));
|
settings_changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (imgui->checkbox(_(L("Enable rotations")), settings.enable_rotation)) {
|
if (imgui->checkbox(_(L("Enable rotations")), settings.enable_rotation)) {
|
||||||
m_arrange_settings.enable_rotation = settings.enable_rotation;
|
m_arrange_settings.enable_rotation = settings.enable_rotation;
|
||||||
appcfg->set("arrange", "enable_rotation", "1");
|
settings_changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::Separator();
|
||||||
|
|
||||||
|
if (imgui->button(_(L("Reset")))) {
|
||||||
|
m_arrange_settings = ArrangeSettings{};
|
||||||
|
settings_changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings_changed) {
|
||||||
|
appcfg->set("arrange", "min_object_distance", std::to_string(m_arrange_settings.distance));
|
||||||
|
appcfg->set("arrange", "enable_rotation", m_arrange_settings.enable_rotation? "1" : "0");
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::SameLine();
|
||||||
|
|
||||||
|
if (imgui->button(_(L("Arrange")))) {
|
||||||
|
wxGetApp().plater()->arrange();
|
||||||
}
|
}
|
||||||
|
|
||||||
imgui->end();
|
imgui->end();
|
||||||
|
|
||||||
|
return settings_changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ENABLE_THUMBNAIL_GENERATOR_DEBUG_OUTPUT 0
|
#define ENABLE_THUMBNAIL_GENERATOR_DEBUG_OUTPUT 0
|
||||||
|
@ -4305,7 +4328,7 @@ bool GLCanvas3D::_init_main_toolbar()
|
||||||
|
|
||||||
item.name = "arrange";
|
item.name = "arrange";
|
||||||
item.icon_filename = "arrange.svg";
|
item.icon_filename = "arrange.svg";
|
||||||
item.tooltip = _utf8(L("Arrange")) + " [A]\n" + _utf8(L("Arrange selection")) + " [Shift+A]";
|
item.tooltip = _utf8(L("Arrange")) + " [A]\n" + _utf8(L("Arrange selection")) + " [Shift+A]\n" + _utf8(L("Click right mouse button to show arrangement options"));
|
||||||
item.sprite_id = 3;
|
item.sprite_id = 3;
|
||||||
item.left.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_ARRANGE)); };
|
item.left.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_ARRANGE)); };
|
||||||
item.enabling_callback = []()->bool { return wxGetApp().plater()->can_arrange(); };
|
item.enabling_callback = []()->bool { return wxGetApp().plater()->can_arrange(); };
|
||||||
|
@ -4313,7 +4336,7 @@ bool GLCanvas3D::_init_main_toolbar()
|
||||||
item.right.render_callback = [this](float left, float right, float, float) {
|
item.right.render_callback = [this](float left, float right, float, float) {
|
||||||
if (m_canvas != nullptr)
|
if (m_canvas != nullptr)
|
||||||
{
|
{
|
||||||
_render_arrange_popup();
|
_render_arrange_menu(0.5f * (left + right));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if (!m_main_toolbar.add_item(item))
|
if (!m_main_toolbar.add_item(item))
|
||||||
|
@ -6246,6 +6269,16 @@ bool GLCanvas3D::is_search_pressed() const
|
||||||
return m_main_toolbar.is_item_pressed("search");
|
return m_main_toolbar.is_item_pressed("search");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool GLCanvas3D::_deactivate_arrange_menu()
|
||||||
|
{
|
||||||
|
if (m_main_toolbar.is_item_pressed("arrange")) {
|
||||||
|
m_main_toolbar.force_right_action(m_main_toolbar.get_item_id("arrange"), *this);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool GLCanvas3D::_deactivate_search_toolbar_item()
|
bool GLCanvas3D::_deactivate_search_toolbar_item()
|
||||||
{
|
{
|
||||||
if (is_search_pressed())
|
if (is_search_pressed())
|
||||||
|
|
|
@ -728,7 +728,7 @@ private:
|
||||||
void _render_selection_sidebar_hints() const;
|
void _render_selection_sidebar_hints() const;
|
||||||
bool _render_undo_redo_stack(const bool is_undo, float pos_x) const;
|
bool _render_undo_redo_stack(const bool is_undo, float pos_x) const;
|
||||||
bool _render_search_list(float pos_x) const;
|
bool _render_search_list(float pos_x) const;
|
||||||
void _render_arrange_popup();
|
bool _render_arrange_menu(float pos_x);
|
||||||
void _render_thumbnail_internal(ThumbnailData& thumbnail_data, bool printable_only, bool parts_only, bool show_bed, bool transparent_background) const;
|
void _render_thumbnail_internal(ThumbnailData& thumbnail_data, bool printable_only, bool parts_only, bool show_bed, bool transparent_background) const;
|
||||||
// render thumbnail using an off-screen framebuffer
|
// render thumbnail using an off-screen framebuffer
|
||||||
void _render_thumbnail_framebuffer(ThumbnailData& thumbnail_data, unsigned int w, unsigned int h, bool printable_only, bool parts_only, bool show_bed, bool transparent_background) const;
|
void _render_thumbnail_framebuffer(ThumbnailData& thumbnail_data, unsigned int w, unsigned int h, bool printable_only, bool parts_only, bool show_bed, bool transparent_background) const;
|
||||||
|
@ -780,6 +780,7 @@ private:
|
||||||
bool _deactivate_search_toolbar_item();
|
bool _deactivate_search_toolbar_item();
|
||||||
bool _activate_search_toolbar_item();
|
bool _activate_search_toolbar_item();
|
||||||
bool _deactivate_collapse_toolbar_items();
|
bool _deactivate_collapse_toolbar_items();
|
||||||
|
bool _deactivate_arrange_menu();
|
||||||
|
|
||||||
float get_overlay_window_width() { return LayersEditing::get_overlay_window_width(); }
|
float get_overlay_window_width() { return LayersEditing::get_overlay_window_width(); }
|
||||||
|
|
||||||
|
|
|
@ -283,7 +283,7 @@ bool Preview::init(wxWindow* parent, Model* model)
|
||||||
wxBoxSizer* right_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer* right_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
right_sizer->Add(m_layers_slider_sizer, 1, wxEXPAND, 0);
|
right_sizer->Add(m_layers_slider_sizer, 1, wxEXPAND, 0);
|
||||||
|
|
||||||
m_moves_slider = new DoubleSlider::Control(m_bottom_toolbar_panel, wxID_ANY, 0, 0, 0, 100, wxDefaultPosition, wxSize(-1, 3 * GetTextExtent("m").y), wxSL_HORIZONTAL);
|
m_moves_slider = new DoubleSlider::Control(m_bottom_toolbar_panel, wxID_ANY, 0, 0, 0, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL);
|
||||||
m_moves_slider->SetDrawMode(DoubleSlider::dmSequentialGCodeView);
|
m_moves_slider->SetDrawMode(DoubleSlider::dmSequentialGCodeView);
|
||||||
|
|
||||||
wxBoxSizer* bottom_toolbar_sizer = new wxBoxSizer(wxHORIZONTAL);
|
wxBoxSizer* bottom_toolbar_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
@ -692,7 +692,7 @@ void Preview::update_layers_slider(const std::vector<double>& layers_z, bool kee
|
||||||
if (sla_print_technology)
|
if (sla_print_technology)
|
||||||
m_layers_slider->SetLayersTimes(plater->sla_print().print_statistics().layers_times);
|
m_layers_slider->SetLayersTimes(plater->sla_print().print_statistics().layers_times);
|
||||||
else
|
else
|
||||||
m_layers_slider->SetLayersTimes(m_gcode_result->time_statistics.modes[0].layers_times);
|
m_layers_slider->SetLayersTimes(m_gcode_result->time_statistics.modes.front().layers_times);
|
||||||
|
|
||||||
m_layers_slider_sizer->Show((size_t)0);
|
m_layers_slider_sizer->Show((size_t)0);
|
||||||
Layout();
|
Layout();
|
||||||
|
|
|
@ -259,14 +259,13 @@ bool instance_check(int argc, char** argv, bool app_config_single_instance)
|
||||||
std::hash<std::string>{}(boost::filesystem::system_complete(argv[0]).string());
|
std::hash<std::string>{}(boost::filesystem::system_complete(argv[0]).string());
|
||||||
#else
|
#else
|
||||||
std::hash<std::string>{}(boost::filesystem::canonical(boost::filesystem::system_complete(argv[0]), ec).string());
|
std::hash<std::string>{}(boost::filesystem::canonical(boost::filesystem::system_complete(argv[0]), ec).string());
|
||||||
if(ec.value() > 0) { // canonical was not able to find execitable (can happen with appimage on some systems)
|
if (ec.value() > 0) { // canonical was not able to find the executable (can happen with appimage on some systems. Does it fail on Fuse file systems?)
|
||||||
ec.clear();
|
ec.clear();
|
||||||
// Compose path with boost canonical of folder and filename
|
// Compose path with boost canonical of folder and filename
|
||||||
hashed_path = std::hash<std::string>{}(boost::filesystem::canonical(boost::filesystem::system_complete(argv[0]).parent_path(), ec).string() + "/" + boost::filesystem::system_complete(argv[0]).filename().string());
|
hashed_path = std::hash<std::string>{}(boost::filesystem::canonical(boost::filesystem::system_complete(argv[0]).parent_path(), ec).string() + "/" + boost::filesystem::system_complete(argv[0]).filename().string());
|
||||||
if(ec.value() > 0) {
|
if (ec.value() > 0) {
|
||||||
// Still not valid, process without canonical
|
// Still not valid, process without canonical
|
||||||
hashed_path = std::hash<std::string>{}(boost::filesystem::system_complete(argv[0]).string());
|
hashed_path = std::hash<std::string>{}(boost::filesystem::system_complete(argv[0]).string());
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // win32
|
#endif // win32
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include <boost/algorithm/string/split.hpp>
|
#include <boost/algorithm/string/split.hpp>
|
||||||
#include "libslic3r/Utils.hpp"
|
#include "libslic3r/Utils.hpp"
|
||||||
#include "I18N.hpp"
|
#include "I18N.hpp"
|
||||||
|
#include "format.hpp"
|
||||||
|
|
||||||
namespace Slic3r { namespace GUI {
|
namespace Slic3r { namespace GUI {
|
||||||
|
|
||||||
|
@ -174,7 +175,15 @@ wxPoint OG_CustomCtrl::get_pos(const Line& line, Field* field_in/* = nullptr*/)
|
||||||
label += ":";
|
label += ":";
|
||||||
|
|
||||||
wxCoord label_w, label_h;
|
wxCoord label_w, label_h;
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
// when we use 2 monitors with different DPIs, GetTextExtent() return value for the primary display
|
||||||
|
// so, use dc.GetMultiLineTextExtent on Windows
|
||||||
|
wxPaintDC dc(this);
|
||||||
|
dc.SetFont(m_font);
|
||||||
|
dc.GetMultiLineTextExtent(label, &label_w, &label_h);
|
||||||
|
#else
|
||||||
GetTextExtent(label, &label_w, &label_h, 0, 0, &m_font);
|
GetTextExtent(label, &label_w, &label_h, 0, 0, &m_font);
|
||||||
|
#endif //__WXMSW__
|
||||||
h_pos += label_w + 1 + m_h_gap;
|
h_pos += label_w + 1 + m_h_gap;
|
||||||
}
|
}
|
||||||
h_pos += (opt.opt.gui_type == "legend" ? 1 : 3) * blinking_button_width;
|
h_pos += (opt.opt.gui_type == "legend" ? 1 : 3) * blinking_button_width;
|
||||||
|
@ -231,10 +240,14 @@ void OG_CustomCtrl::OnMotion(wxMouseEvent& event)
|
||||||
|
|
||||||
wxString language = wxGetApp().app_config->get("translation_language");
|
wxString language = wxGetApp().app_config->get("translation_language");
|
||||||
|
|
||||||
|
bool suppress_hyperlinks = get_app_config()->get("suppress_hyperlinks") == "1";
|
||||||
|
|
||||||
for (CtrlLine& line : ctrl_lines) {
|
for (CtrlLine& line : ctrl_lines) {
|
||||||
line.is_focused = is_point_in_rect(pos, line.rect_label);
|
line.is_focused = is_point_in_rect(pos, line.rect_label);
|
||||||
if (line.is_focused) {
|
if (line.is_focused) {
|
||||||
tooltip = get_url(line.og_line.label_path);
|
if (!suppress_hyperlinks && !line.og_line.label_path.empty())
|
||||||
|
tooltip = get_url(line.og_line.label_path) +"\n\n";
|
||||||
|
tooltip += line.og_line.label_tooltip;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -464,6 +477,7 @@ void OG_CustomCtrl::CtrlLine::render(wxDC& dc, wxCoord v_pos)
|
||||||
{
|
{
|
||||||
Field* field = ctrl->opt_group->get_field(og_line.get_options().front().opt_id);
|
Field* field = ctrl->opt_group->get_field(og_line.get_options().front().opt_id);
|
||||||
|
|
||||||
|
bool suppress_hyperlinks = get_app_config()->get("suppress_hyperlinks") == "1";
|
||||||
if (draw_just_act_buttons) {
|
if (draw_just_act_buttons) {
|
||||||
if (field)
|
if (field)
|
||||||
draw_act_bmps(dc, wxPoint(0, v_pos), field->undo_to_sys_bitmap()->bmp(), field->undo_bitmap()->bmp(), field->blink());
|
draw_act_bmps(dc, wxPoint(0, v_pos), field->undo_to_sys_bitmap()->bmp(), field->undo_bitmap()->bmp(), field->blink());
|
||||||
|
@ -481,7 +495,7 @@ void OG_CustomCtrl::CtrlLine::render(wxDC& dc, wxCoord v_pos)
|
||||||
bool is_url_string = false;
|
bool is_url_string = false;
|
||||||
if (ctrl->opt_group->label_width != 0 && !label.IsEmpty()) {
|
if (ctrl->opt_group->label_width != 0 && !label.IsEmpty()) {
|
||||||
const wxColour* text_clr = (option_set.size() == 1 && field ? field->label_color() : og_line.full_Label_color);
|
const wxColour* text_clr = (option_set.size() == 1 && field ? field->label_color() : og_line.full_Label_color);
|
||||||
is_url_string = !og_line.label_path.IsEmpty();
|
is_url_string = !suppress_hyperlinks && !og_line.label_path.IsEmpty();
|
||||||
h_pos = draw_text(dc, wxPoint(h_pos, v_pos), label + ":", text_clr, ctrl->opt_group->label_width * ctrl->m_em_unit, is_url_string);
|
h_pos = draw_text(dc, wxPoint(h_pos, v_pos), label + ":", text_clr, ctrl->opt_group->label_width * ctrl->m_em_unit, is_url_string);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -521,7 +535,7 @@ void OG_CustomCtrl::CtrlLine::render(wxDC& dc, wxCoord v_pos)
|
||||||
if (is_url_string)
|
if (is_url_string)
|
||||||
is_url_string = false;
|
is_url_string = false;
|
||||||
else if(opt == option_set.front())
|
else if(opt == option_set.front())
|
||||||
is_url_string = !og_line.label_path.IsEmpty();
|
is_url_string = !suppress_hyperlinks && !og_line.label_path.IsEmpty();
|
||||||
h_pos = draw_text(dc, wxPoint(h_pos, v_pos), label, field ? field->label_color() : nullptr, ctrl->opt_group->sublabel_width * ctrl->m_em_unit, is_url_string);
|
h_pos = draw_text(dc, wxPoint(h_pos, v_pos), label, field ? field->label_color() : nullptr, ctrl->opt_group->sublabel_width * ctrl->m_em_unit, is_url_string);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -598,7 +612,7 @@ wxCoord OG_CustomCtrl::CtrlLine::draw_text(wxDC& dc, wxPoint pos, const wxStr
|
||||||
dc.GetMultiLineTextExtent(out_text, &text_width, &text_height);
|
dc.GetMultiLineTextExtent(out_text, &text_width, &text_height);
|
||||||
|
|
||||||
pos.y = pos.y + lround((height - text_height) / 2);
|
pos.y = pos.y + lround((height - text_height) / 2);
|
||||||
if (width > 0 && is_url)
|
if (width > 0)
|
||||||
rect_label = wxRect(pos, wxSize(text_width, text_height));
|
rect_label = wxRect(pos, wxSize(text_width, text_height));
|
||||||
|
|
||||||
wxColour old_clr = dc.GetTextForeground();
|
wxColour old_clr = dc.GetTextForeground();
|
||||||
|
@ -660,7 +674,19 @@ wxCoord OG_CustomCtrl::CtrlLine::draw_act_bmps(wxDC& dc, wxPoint pos, const wxBi
|
||||||
|
|
||||||
bool OG_CustomCtrl::CtrlLine::launch_browser() const
|
bool OG_CustomCtrl::CtrlLine::launch_browser() const
|
||||||
{
|
{
|
||||||
return is_focused && !og_line.label_path.IsEmpty() && wxLaunchDefaultBrowser(get_url(og_line.label_path));
|
if (get_app_config()->get("suppress_hyperlinks").empty()) {
|
||||||
|
wxString preferences_item = _L("Suppress to open hyperlink in browser");
|
||||||
|
wxString msg =
|
||||||
|
_L("PrusaSlicer will remember your action.") + "\n" +
|
||||||
|
_L("You will not be asked about it again on label hovering.") + "\n\n" +
|
||||||
|
format_wxstr(_L("Visit \"Preferences\" and check \"%1%\"\nto changes your choise."), preferences_item) + "\n\n" +
|
||||||
|
_L("Should we suppress to use hyperlinks in PrusaSlicer?");
|
||||||
|
|
||||||
|
wxMessageDialog dialog(nullptr, msg, _L("PrusaSlicer: Don't ask me again"), wxYES | wxNO | wxICON_INFORMATION);
|
||||||
|
get_app_config()->set("suppress_hyperlinks", dialog.ShowModal() == wxID_YES ? "1" : "0");
|
||||||
|
}
|
||||||
|
|
||||||
|
return get_app_config()->get("suppress_hyperlinks") == "0" && is_focused && !og_line.label_path.IsEmpty() && wxLaunchDefaultBrowser(get_url(og_line.label_path));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1156,7 +1156,43 @@ void Sidebar::update_sliced_info_sizer()
|
||||||
new_label = imperial_units ? _L("Used Filament (in³)") : _L("Used Filament (mm³)");
|
new_label = imperial_units ? _L("Used Filament (in³)") : _L("Used Filament (mm³)");
|
||||||
info_text = wxString::Format("%.2f", imperial_units ? ps.total_extruded_volume * koef : ps.total_extruded_volume);
|
info_text = wxString::Format("%.2f", imperial_units ? ps.total_extruded_volume * koef : ps.total_extruded_volume);
|
||||||
p->sliced_info->SetTextAndShow(siFilament_mm3, info_text, new_label);
|
p->sliced_info->SetTextAndShow(siFilament_mm3, info_text, new_label);
|
||||||
p->sliced_info->SetTextAndShow(siFilament_g, ps.total_weight == 0.0 ? "N/A" : wxString::Format("%.2f", ps.total_weight));
|
|
||||||
|
if (ps.total_weight == 0.0)
|
||||||
|
p->sliced_info->SetTextAndShow(siFilament_g, "N/A");
|
||||||
|
else {
|
||||||
|
new_label = _L("Used Filament (g)");
|
||||||
|
info_text = wxString::Format("%.2f", ps.total_weight);
|
||||||
|
|
||||||
|
const std::vector<std::string>& filament_presets = wxGetApp().preset_bundle->filament_presets;
|
||||||
|
const PresetCollection& filaments = wxGetApp().preset_bundle->filaments;
|
||||||
|
|
||||||
|
if (ps.filament_stats.size() > 1)
|
||||||
|
new_label += ":";
|
||||||
|
|
||||||
|
for (auto filament : ps.filament_stats) {
|
||||||
|
const Preset* filament_preset = filaments.find_preset(filament_presets[filament.first], false);
|
||||||
|
if (filament_preset) {
|
||||||
|
double filament_weight;
|
||||||
|
if (ps.filament_stats.size() == 1)
|
||||||
|
filament_weight = ps.total_weight;
|
||||||
|
else {
|
||||||
|
double filament_density = filament_preset->config.opt_float("filament_density", 0);
|
||||||
|
filament_weight = filament.second * filament_density * 2.4052f * 0.001; // assumes 1.75mm filament diameter;
|
||||||
|
|
||||||
|
new_label += "\n - " + format_wxstr(_L("Filament at extruder %1%"), filament.first + 1);
|
||||||
|
info_text += wxString::Format("\n%.2f", filament_weight);
|
||||||
|
}
|
||||||
|
|
||||||
|
double spool_weight = filament_preset->config.opt_float("filament_spool_weight", 0);
|
||||||
|
if (spool_weight != 0.0) {
|
||||||
|
new_label += "\n " + _L("(weight with spool)");
|
||||||
|
info_text += wxString::Format(" (%.2f)\n", filament_weight + spool_weight);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
p->sliced_info->SetTextAndShow(siFilament_g, info_text, new_label);
|
||||||
|
}
|
||||||
|
|
||||||
new_label = _L("Cost");
|
new_label = _L("Cost");
|
||||||
if (is_wipe_tower)
|
if (is_wipe_tower)
|
||||||
|
|
|
@ -235,6 +235,14 @@ void PreferencesDialog::build()
|
||||||
option = Option(def, "seq_top_layer_only");
|
option = Option(def, "seq_top_layer_only");
|
||||||
m_optgroup_gui->append_single_option_line(option);
|
m_optgroup_gui->append_single_option_line(option);
|
||||||
|
|
||||||
|
def.label = L("Suppress to open hyperlink in browser");
|
||||||
|
def.type = coBool;
|
||||||
|
def.tooltip = L("If enabled, the descriptions of configuration parameters in settings tabs woldn't work as hyperlinks. "
|
||||||
|
"If disabled, the descriptions of configuration parameters in settings tabs will work as hyperlinks.");
|
||||||
|
def.set_default_value(new ConfigOptionBool{ app_config->get("suppress_hyperlinks") == "1" });
|
||||||
|
option = Option(def, "suppress_hyperlinks");
|
||||||
|
m_optgroup_gui->append_single_option_line(option);
|
||||||
|
|
||||||
m_optgroup_gui->activate();
|
m_optgroup_gui->activate();
|
||||||
|
|
||||||
if (is_editor) {
|
if (is_editor) {
|
||||||
|
|
|
@ -1785,6 +1785,19 @@ void TabFilament::build()
|
||||||
optgroup->append_single_option_line("extrusion_multiplier");
|
optgroup->append_single_option_line("extrusion_multiplier");
|
||||||
optgroup->append_single_option_line("filament_density");
|
optgroup->append_single_option_line("filament_density");
|
||||||
optgroup->append_single_option_line("filament_cost");
|
optgroup->append_single_option_line("filament_cost");
|
||||||
|
optgroup->append_single_option_line("filament_spool_weight");
|
||||||
|
|
||||||
|
optgroup->m_on_change = [this, optgroup](t_config_option_key opt_key, boost::any value)
|
||||||
|
{
|
||||||
|
update_dirty();
|
||||||
|
if (opt_key == "filament_spool_weight") {
|
||||||
|
// Change of this option influences for an update of "Sliced Info"
|
||||||
|
wxGetApp().sidebar().update_sliced_info_sizer();
|
||||||
|
wxGetApp().sidebar().Layout();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
on_value_change(opt_key, value);
|
||||||
|
};
|
||||||
|
|
||||||
// optgroup = page->new_optgroup(_(L("Temperature")) + wxString(" °C", wxConvUTF8));
|
// optgroup = page->new_optgroup(_(L("Temperature")) + wxString(" °C", wxConvUTF8));
|
||||||
optgroup = page->new_optgroup(L("Temperature"));
|
optgroup = page->new_optgroup(L("Temperature"));
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
set(SLIC3R_APP_NAME "PrusaSlicer")
|
set(SLIC3R_APP_NAME "PrusaSlicer")
|
||||||
set(SLIC3R_APP_KEY "PrusaSlicer")
|
set(SLIC3R_APP_KEY "PrusaSlicer")
|
||||||
set(SLIC3R_VERSION "2.3.0-alpha3")
|
set(SLIC3R_VERSION "2.3.0-alpha4")
|
||||||
set(SLIC3R_BUILD_ID "PrusaSlicer-${SLIC3R_VERSION}+UNKNOWN")
|
set(SLIC3R_BUILD_ID "PrusaSlicer-${SLIC3R_VERSION}+UNKNOWN")
|
||||||
set(SLIC3R_RC_VERSION "2,3,0,0")
|
set(SLIC3R_RC_VERSION "2,3,0,0")
|
||||||
set(SLIC3R_RC_VERSION_DOTS "2.3.0.0")
|
set(SLIC3R_RC_VERSION_DOTS "2.3.0.0")
|
||||||
|
|
|
@ -8,15 +8,12 @@ REGISTER_CLASS(ExPolygonCollection, "ExPolygon::Collection");
|
||||||
REGISTER_CLASS(ExtrusionMultiPath, "ExtrusionMultiPath");
|
REGISTER_CLASS(ExtrusionMultiPath, "ExtrusionMultiPath");
|
||||||
REGISTER_CLASS(ExtrusionPath, "ExtrusionPath");
|
REGISTER_CLASS(ExtrusionPath, "ExtrusionPath");
|
||||||
REGISTER_CLASS(ExtrusionLoop, "ExtrusionLoop");
|
REGISTER_CLASS(ExtrusionLoop, "ExtrusionLoop");
|
||||||
// there is no ExtrusionLoop::Collection or ExtrusionEntity::Collection
|
|
||||||
REGISTER_CLASS(ExtrusionEntityCollection, "ExtrusionPath::Collection");
|
REGISTER_CLASS(ExtrusionEntityCollection, "ExtrusionPath::Collection");
|
||||||
REGISTER_CLASS(ExtrusionSimulator, "ExtrusionSimulator");
|
REGISTER_CLASS(ExtrusionSimulator, "ExtrusionSimulator");
|
||||||
REGISTER_CLASS(Filler, "Filler");
|
REGISTER_CLASS(Filler, "Filler");
|
||||||
REGISTER_CLASS(Flow, "Flow");
|
REGISTER_CLASS(Flow, "Flow");
|
||||||
REGISTER_CLASS(CoolingBuffer, "GCode::CoolingBuffer");
|
REGISTER_CLASS(CoolingBuffer, "GCode::CoolingBuffer");
|
||||||
REGISTER_CLASS(GCode, "GCode");
|
REGISTER_CLASS(GCode, "GCode");
|
||||||
//REGISTER_CLASS(GCodePreviewData, "GCode::PreviewData");
|
|
||||||
// REGISTER_CLASS(GCodeSender, "GCode::Sender");
|
|
||||||
REGISTER_CLASS(Layer, "Layer");
|
REGISTER_CLASS(Layer, "Layer");
|
||||||
REGISTER_CLASS(SupportLayer, "Layer::Support");
|
REGISTER_CLASS(SupportLayer, "Layer::Support");
|
||||||
REGISTER_CLASS(LayerRegion, "Layer::Region");
|
REGISTER_CLASS(LayerRegion, "Layer::Region");
|
||||||
|
|
|
@ -25,14 +25,6 @@
|
||||||
croak("%s\n", e.what());
|
croak("%s\n", e.what());
|
||||||
}
|
}
|
||||||
%};
|
%};
|
||||||
// void do_export_w_preview(Print *print, const char *path, GCodePreviewData *preview_data)
|
|
||||||
// %code%{
|
|
||||||
// try {
|
|
||||||
// THIS->do_export(print, path, preview_data);
|
|
||||||
// } catch (std::exception& e) {
|
|
||||||
// croak("%s\n", e.what());
|
|
||||||
// }
|
|
||||||
// %};
|
|
||||||
|
|
||||||
Ref<Vec2d> origin()
|
Ref<Vec2d> origin()
|
||||||
%code{% RETVAL = &(THIS->origin()); %};
|
%code{% RETVAL = &(THIS->origin()); %};
|
||||||
|
@ -58,27 +50,3 @@
|
||||||
Ref<StaticPrintConfig> config()
|
Ref<StaticPrintConfig> config()
|
||||||
%code{% RETVAL = const_cast<StaticPrintConfig*>(static_cast<const StaticPrintConfig*>(static_cast<const PrintObjectConfig*>(&THIS->config()))); %};
|
%code{% RETVAL = const_cast<StaticPrintConfig*>(static_cast<const StaticPrintConfig*>(static_cast<const PrintObjectConfig*>(&THIS->config()))); %};
|
||||||
};
|
};
|
||||||
|
|
||||||
//%name{Slic3r::GCode::PreviewData} class GCodePreviewData {
|
|
||||||
// GCodePreviewData();
|
|
||||||
// ~GCodePreviewData();
|
|
||||||
// void reset();
|
|
||||||
// bool empty() const;
|
|
||||||
// void set_type(int type)
|
|
||||||
// %code%{
|
|
||||||
// if ((0 <= type) && (type < GCodePreviewData::Extrusion::Num_View_Types))
|
|
||||||
// THIS->extrusion.view_type = (GCodePreviewData::Extrusion::EViewType)type;
|
|
||||||
// %};
|
|
||||||
// int type() %code%{ RETVAL = (int)THIS->extrusion.view_type; %};
|
|
||||||
// void set_extrusion_flags(int flags)
|
|
||||||
// %code%{ THIS->extrusion.role_flags = (unsigned int)flags; %};
|
|
||||||
// void set_travel_visible(bool visible)
|
|
||||||
// %code%{ THIS->travel.is_visible = visible; %};
|
|
||||||
// void set_retractions_visible(bool visible)
|
|
||||||
// %code%{ THIS->retraction.is_visible = visible; %};
|
|
||||||
// void set_unretractions_visible(bool visible)
|
|
||||||
// %code%{ THIS->unretraction.is_visible = visible; %};
|
|
||||||
// void set_shells_visible(bool visible)
|
|
||||||
// %code%{ THIS->shell.is_visible = visible; %};
|
|
||||||
// void set_extrusion_paths_colors(std::vector<std::string> colors);
|
|
||||||
//};
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue