diff --git a/doc/How to build - Linux et al.md b/doc/How to build - Linux et al.md index 0f4a6f7790..b9e0516fae 100644 --- a/doc/How to build - Linux et al.md +++ b/doc/How to build - Linux et al.md @@ -40,6 +40,7 @@ git clone https://www.github.com/prusa3d/PrusaSlicer cd PrusaSlicer ``` This will download the source code into a new directory and `cd` into it. You can now optionally select a tag/branch/commit to build using `git checkout`. Otherwise, `master` branch will be built. +The path to the build directory must not contain spaces - this scenario is not supported by the build scripts. #### 2. Building dependencies diff --git a/resources/profiles/LNL3D.idx b/resources/profiles/LNL3D.idx index edc4cac538..986df87978 100644 --- a/resources/profiles/LNL3D.idx +++ b/resources/profiles/LNL3D.idx @@ -1,3 +1,4 @@ min_slic3r_version = 2.6.0 +0.0.3 Added new printer profile. 0.0.2 Updated initial layer heights. -0.0.1 Initial version +0.0.1 Initial version. diff --git a/resources/profiles/LNL3D.ini b/resources/profiles/LNL3D.ini index 595fe33eab..77f00ecc88 100644 --- a/resources/profiles/LNL3D.ini +++ b/resources/profiles/LNL3D.ini @@ -10,7 +10,7 @@ name = LNL3D # 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.0.2 +config_version = 0.0.3 # Where to get the updates from? config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/LNL3D/ @@ -24,10 +24,10 @@ config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/Prus # Printer model name will be shown by the installation wizard. [printer_model:LNL3D_D3] -name = LNL3D D3 V2 +name = LNL3D D3 variants = 0.4; 0.2; 0.6; 0.8 technology = FFF -family = LNL3D +family = LNL3D Small Printer bed_model = LNL3D_D3_bed.stl bed_texture = LNL3D_D3_texture.svg default_materials = Generic PLA @LNL3D; Generic PETG @LNL3D; Generic TPU @LNL3D; @@ -36,16 +36,25 @@ default_materials = Generic PLA @LNL3D; Generic PETG @LNL3D; Generic TPU @LNL3D; name = LNL3D D3 Vulcan variants = 0.4; 0.2; 0.6; 0.8 technology = FFF -family = LNL3D +family = LNL3D Small Printer bed_model = LNL3D_D3_VULCAN_bed.stl bed_texture = LNL3D_D3_VULCAN_texture.svg default_materials = Generic PLA @LNL3D; Generic PETG @LNL3D; Generic TPU @LNL3D; +[printer_model:LNL3D_D3_V2] +name = LNL3D D3 V2 +variants = 0.4; 0.2; 0.6; 0.8 +technology = FFF +family = LNL3D Small Printer +bed_model = LNL3D_D3_V2_bed.stl +bed_texture = LNL3D_D3_V2_texture.svg +default_materials = Generic PLA @LNL3D; Generic PETG @LNL3D; Generic TPU @LNL3D; + [printer_model:LNL3D_D5] name = LNL3D D5 variants = 0.4; 0.2; 0.6; 0.8 technology = FFF -family = LNL3D +family = LNL3D Big Printer bed_model = LNL3D_D5_bed.stl bed_texture = LNL3D_D5_texture.svg default_materials = Generic PLA @LNL3D; Generic PETG @LNL3D; Generic TPU @LNL3D; @@ -54,7 +63,7 @@ default_materials = Generic PLA @LNL3D; Generic PETG @LNL3D; Generic TPU @LNL3D; name = LNL3D D6 variants = 0.4; 0.2; 0.6; 0.8 technology = FFF -family = LNL3D +family = LNL3D Big Printer bed_model = LNL3D_D6_bed.stl bed_texture = LNL3D_D6_texture.svg default_materials = Generic PLA @LNL3D; Generic PETG @LNL3D; Generic TPU @LNL3D; @@ -85,8 +94,8 @@ external_fill_pattern = rectilinear external_perimeters_first = 0 external_perimeter_speed = 25 extra_perimeters = 0 -extruder_clearance_height = 25 -extruder_clearance_radius = 55 +extruder_clearance_height = 5 +extruder_clearance_radius = 36 fill_angle = 45 fill_density = 15% fill_pattern = grid @@ -150,7 +159,7 @@ support_material_with_sheath = 0 support_material_xy_spacing = 60% thin_walls = 0 top_solid_infill_speed = 30 -travel_speed = 150 +travel_speed = 120 wipe_tower = 0 wipe_tower_bridging = 10 wipe_tower_rotation_angle = 0 @@ -172,7 +181,7 @@ support_material_speed = 40 support_material_interface_speed = 100% bridge_speed = 25 ironing_speed = 15 -travel_speed = 150 +travel_speed = 120 travel_speed_z = 0 first_layer_speed = 20 first_layer_speed_over_raft = 30 @@ -338,400 +347,400 @@ support_material_extrusion_width = 0.81 [print:0.06 mm ULTRADETAIL (0.2 mm nozzle) @LNL3D] inherits = *0.06mm*; *0.2nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 and printer_notes=~/.*PRINTER_HAS_ULTRADETAIL.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 and printer_notes=~/.*PRINTER_HAS_ULTRADETAIL.*/ [print:0.06 mm ULTRADETAIL (0.4 mm nozzle) @LNL3D] inherits = *0.06mm*; *0.4nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 and printer_notes=~/.*PRINTER_HAS_ULTRADETAIL.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 and printer_notes=~/.*PRINTER_HAS_ULTRADETAIL.*/ [print:0.08 mm SUPERDETAIL (0.2 mm nozzle) @LNL3D] inherits = *0.08mm*; *0.2nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 [print:0.08 mm SUPERDETAIL (0.4 mm nozzle) @LNL3D] inherits = *0.08mm*; *0.4nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 [print:0.08 mm SUPERDETAIL (0.6 mm nozzle) @LNL3D] inherits = *0.08mm*; *0.6nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 [print:0.08 mm SUPERDETAIL (0.8 mm nozzle) @LNL3D] inherits = *0.08mm*; *0.8nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 [print:0.10 mm HIGHDETAIL (0.2 mm nozzle) @LNL3D] inherits = *0.10mm*; *0.2nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 [print:0.10 mm HIGHDETAIL (0.4 mm nozzle) @LNL3D] inherits = *0.10mm*; *0.4nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 [print:0.10 mm HIGHDETAIL (0.6 mm nozzle) @LNL3D] inherits = *0.10mm*; *0.6nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 [print:0.10 mm HIGHDETAIL (0.8 mm nozzle) @LNL3D] inherits = *0.10mm*; *0.8nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 [print:0.12 mm DETAIL (0.2 mm nozzle) @LNL3D] inherits = *0.12mm*; *0.2nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 [print:0.12 mm DETAIL (0.4 mm nozzle) @LNL3D] inherits = *0.12mm*; *0.4nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 [print:0.12 mm DETAIL (0.6 mm nozzle) @LNL3D] inherits = *0.12mm*; *0.6nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 [print:0.12 mm DETAIL (0.8 mm nozzle) @LNL3D] inherits = *0.12mm*; *0.8nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 [print:0.16 mm OPTIMAL (0.2 mm nozzle) @LNL3D] inherits = *0.16mm*; *0.2nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 [print:0.16 mm OPTIMAL (0.4 mm nozzle) @LNL3D] inherits = *0.16mm*; *0.4nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 [print:0.16 mm OPTIMAL (0.6 mm nozzle) @LNL3D] inherits = *0.16mm*; *0.6nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 [print:0.16 mm OPTIMAL (0.8 mm nozzle) @LNL3D] inherits = *0.16mm*; *0.8nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 [print:0.16 mm OPTIMAL SPEED (0.2 mm nozzle) @LNL3D] inherits = *0.16mm*; *0.2nozzle*; *speed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 [print:0.16 mm OPTIMAL SPEED (0.4 mm nozzle) @LNL3D] inherits = *0.16mm*; *0.4nozzle*; *speed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 [print:0.16 mm OPTIMAL SPEED (0.6 mm nozzle) @LNL3D] inherits = *0.16mm*; *0.6nozzle*; *speed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 [print:0.16 mm OPTIMAL SPEED (0.8 mm nozzle) @LNL3D] inherits = *0.16mm*; *0.8nozzle*; *speed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 [print:0.16 mm OPTIMAL HIGHSPEED (0.2 mm nozzle) @LNL3D] inherits = *0.16mm*; *0.2nozzle*; *highspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ [print:0.16 mm OPTIMAL HIGHSPEED (0.4 mm nozzle) @LNL3D] inherits = *0.16mm*; *0.4nozzle*; *highspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ [print:0.16 mm OPTIMAL HIGHSPEED (0.6 mm nozzle) @LNL3D] inherits = *0.16mm*; *0.6nozzle*; *highspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ [print:0.16 mm OPTIMAL HIGHSPEED (0.8 mm nozzle) @LNL3D] inherits = *0.16mm*; *0.8nozzle*; *highspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ [print:0.16 mm OPTIMAL SUPERSPEED (0.2 mm nozzle) @LNL3D] inherits = *0.16mm*; *0.2nozzle*; *superspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ [print:0.16 mm OPTIMAL SUPERSPEED (0.4 mm nozzle) @LNL3D] inherits = *0.16mm*; *0.4nozzle*; *superspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ [print:0.16 mm OPTIMAL SUPERSPEED (0.6 mm nozzle) @LNL3D] inherits = *0.16mm*; *0.6nozzle*; *superspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ [print:0.16 mm OPTIMAL SUPERSPEED (0.8 mm nozzle) @LNL3D] inherits = *0.16mm*; *0.8nozzle*; *superspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ [print:0.20 mm NORMAL (0.2 mm nozzle) @LNL3D] inherits = *0.20mm*; *0.2nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 [print:0.20 mm NORMAL (0.4 mm nozzle) @LNL3D] inherits = *0.20mm*; *0.4nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 [print:0.20 mm NORMAL (0.6 mm nozzle) @LNL3D] inherits = *0.20mm*; *0.6nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 [print:0.20 mm NORMAL (0.8 mm nozzle) @LNL3D] inherits = *0.20mm*; *0.8nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 [print:0.20 mm NORMAL SPEED (0.2 mm nozzle) @LNL3D] inherits = *0.20mm*; *0.2nozzle*; *speed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 [print:0.20 mm NORMAL SPEED (0.4 mm nozzle) @LNL3D] inherits = *0.20mm*; *0.4nozzle*; *speed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 [print:0.20 mm NORMAL SPEED (0.6 mm nozzle) @LNL3D] inherits = *0.20mm*; *0.6nozzle*; *speed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 [print:0.20 mm NORMAL SPEED (0.8 mm nozzle) @LNL3D] inherits = *0.20mm*; *0.8nozzle*; *speed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 [print:0.20 mm NORMAL HIGHSPEED (0.2 mm nozzle) @LNL3D] inherits = *0.20mm*; *0.2nozzle*; *highspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ [print:0.20 mm NORMAL HIGHSPEED (0.4 mm nozzle) @LNL3D] inherits = *0.20mm*; *0.4nozzle*; *highspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ [print:0.20 mm NORMAL HIGHSPEED (0.6 mm nozzle) @LNL3D] inherits = *0.20mm*; *0.6nozzle*; *highspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ [print:0.20 mm NORMAL HIGHSPEED (0.8 mm nozzle) @LNL3D] inherits = *0.20mm*; *0.8nozzle*; *highspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ [print:0.20 mm NORMAL SUPERSPEED (0.2 mm nozzle) @LNL3D] inherits = *0.20mm*; *0.2nozzle*; *superspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.2 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ [print:0.20 mm NORMAL SUPERSPEED (0.4 mm nozzle) @LNL3D] inherits = *0.20mm*; *0.4nozzle*; *superspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ [print:0.20 mm NORMAL SUPERSPEED (0.6 mm nozzle) @LNL3D] inherits = *0.20mm*; *0.6nozzle*; *superspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ [print:0.20 mm NORMAL SUPERSPEED (0.8 mm nozzle) @LNL3D] inherits = *0.20mm*; *0.8nozzle*; *superspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ [print:0.24 mm DRAFT (0.4 mm nozzle) @LNL3D] inherits = *0.24mm*; *0.4nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 [print:0.24 mm DRAFT (0.6 mm nozzle) @LNL3D] inherits = *0.24mm*; *0.6nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 [print:0.24 mm DRAFT (0.8 mm nozzle) @LNL3D] inherits = *0.24mm*; *0.8nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 [print:0.24 mm DRAFT SPEED (0.4 mm nozzle) @LNL3D] inherits = *0.24mm*; *0.4nozzle*; *speed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 [print:0.24 mm DRAFT SPEED (0.6 mm nozzle) @LNL3D] inherits = *0.24mm*; *0.6nozzle*; *speed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 [print:0.24 mm DRAFT SPEED (0.8 mm nozzle) @LNL3D] inherits = *0.24mm*; *0.8nozzle*; *speed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 [print:0.24 mm DRAFT HIGHSPEED (0.4 mm nozzle) @LNL3D] inherits = *0.24mm*; *0.4nozzle*; *highspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ [print:0.24 mm DRAFT HIGHSPEED (0.6 mm nozzle) @LNL3D] inherits = *0.24mm*; *0.6nozzle*; *highspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ [print:0.24 mm DRAFT HIGHSPEED (0.8 mm nozzle) @LNL3D] inherits = *0.24mm*; *0.8nozzle*; *highspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ [print:0.24 mm DRAFT SUPERSPEED (0.4 mm nozzle) @LNL3D] inherits = *0.24mm*; *0.4nozzle*; *superspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ [print:0.24 mm DRAFT SUPERSPEED (0.6 mm nozzle) @LNL3D] inherits = *0.24mm*; *0.6nozzle*; *superspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ [print:0.24 mm DRAFT SUPERSPEED (0.8 mm nozzle) @LNL3D] inherits = *0.24mm*; *0.8nozzle*; *superspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ [print:0.28 mm SUPERDRAFT (0.4 mm nozzle) @LNL3D] inherits = *0.28mm*; *0.4nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 [print:0.28 mm SUPERDRAFT (0.6 mm nozzle) @LNL3D] inherits = *0.28mm*; *0.6nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 [print:0.28 mm SUPERDRAFT (0.8 mm nozzle) @LNL3D] inherits = *0.28mm*; *0.8nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 [print:0.28 mm SUPERDRAFT SPEED (0.4 mm nozzle) @LNL3D] inherits = *0.28mm*; *0.4nozzle*; *speed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 [print:0.28 mm SUPERDRAFT SPEED (0.6 mm nozzle) @LNL3D] inherits = *0.28mm*; *0.6nozzle*; *speed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 [print:0.28 mm SUPERDRAFT SPEED (0.8 mm nozzle) @LNL3D] inherits = *0.28mm*; *0.8nozzle*; *speed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 [print:0.28 mm SUPERDRAFT HIGHSPEED (0.4 mm nozzle) @LNL3D] inherits = *0.28mm*; *0.4nozzle*; *highspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ [print:0.28 mm SUPERDRAFT HIGHSPEED (0.6 mm nozzle) @LNL3D] inherits = *0.28mm*; *0.6nozzle*; *highspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ [print:0.28 mm SUPERDRAFT HIGHSPEED (0.8 mm nozzle) @LNL3D] inherits = *0.28mm*; *0.8nozzle*; *highspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ [print:0.28 mm SUPERDRAFT SUPERSPEED (0.4 mm nozzle) @LNL3D] inherits = *0.28mm*; *0.4nozzle*; *superspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.4 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ [print:0.28 mm SUPERDRAFT SUPERSPEED (0.6 mm nozzle) @LNL3D] inherits = *0.28mm*; *0.6nozzle*; *superspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ [print:0.28 mm SUPERDRAFT SUPERSPEED (0.8 mm nozzle) @LNL3D] inherits = *0.28mm*; *0.8nozzle*; *superspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ [print:0.36 mm CHUNKY (0.6 mm nozzle) @LNL3D] inherits = *0.36mm*; *0.6nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 [print:0.36 mm CHUNKY (0.8 mm nozzle) @LNL3D] inherits = *0.36mm*; *0.8nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 [print:0.36 mm CHUNKY SPEED (0.6 mm nozzle) @LNL3D] inherits = *0.36mm*; *0.6nozzle*; *speed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 [print:0.36 mm CHUNKY SPEED (0.8 mm nozzle) @LNL3D] inherits = *0.36mm*; *0.8nozzle*; *speed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 [print:0.36 mm CHUNKY HIGHSPEED (0.6 mm nozzle) @LNL3D] inherits = *0.36mm*; *0.6nozzle*; *highspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ [print:0.36 mm CHUNKY HIGHSPEED (0.8 mm nozzle) @LNL3D] inherits = *0.36mm*; *0.8nozzle*; *highspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ [print:0.36 mm CHUNKY SUPERSPEED (0.6 mm nozzle) @LNL3D] inherits = *0.36mm*; *0.6nozzle*; *superspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ [print:0.36 mm CHUNKY SUPERSPEED (0.8 mm nozzle) @LNL3D] inherits = *0.36mm*; *0.8nozzle*; *superspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ [print:0.44 mm SUPERCHUNKY (0.6 mm nozzle) @LNL3D] inherits = *0.44mm*; *0.6nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 [print:0.44 mm SUPERCHUNKY (0.8 mm nozzle) @LNL3D] inherits = *0.44mm*; *0.8nozzle* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 [print:0.44 mm SUPERCHUNKY SPEED (0.6 mm nozzle) @LNL3D] inherits = *0.44mm*; *0.6nozzle*; *speed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 [print:0.44 mm SUPERCHUNKY SPEED (0.8 mm nozzle) @LNL3D] inherits = *0.44mm*; *0.8nozzle*; *speed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 [print:0.44 mm SUPERCHUNKY HIGHSPEED (0.6 mm nozzle) @LNL3D] inherits = *0.44mm*; *0.6nozzle*; *highspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ [print:0.44 mm SUPERCHUNKY HIGHSPEED (0.8 mm nozzle) @LNL3D] inherits = *0.44mm*; *0.8nozzle*; *highspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_HIGHSPEED.*/ [print:0.44 mm SUPERCHUNKY SUPERSPEED (0.6 mm nozzle) @LNL3D] inherits = *0.44mm*; *0.6nozzle*; *superspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.6 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ [print:0.44 mm SUPERCHUNKY SUPERSPEED (0.8 mm nozzle) @LNL3D] inherits = *0.44mm*; *0.8nozzle*; *superspeed* -compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ +compatible_printers_condition = printer_model=~/(LNL3D_D3|LNL3D_D3_VULCAN|LNL3D_D3_V2|LNL3D_D5|LNL3D_D6).*/ and nozzle_diameter[0]==0.8 and printer_notes=~/.*PRINTER_HAS_SUPERSPEED.*/ @@ -857,7 +866,7 @@ machine_max_jerk_y = 8 machine_max_jerk_z = 0.4 machine_min_extruding_rate = 0 machine_min_travel_rate = 0 -machine_limits_usage = emit_to_gcode +machine_limits_usage = time_estimate_only layer_gcode = ;AFTER_LAYER_CHANGE\n;{layer_z} printer_notes = printer_settings_id = @@ -882,7 +891,7 @@ wipe = 1,1 z_offset = 0 printer_model = default_filament_profile = "Generic PLA @LNL3D" -start_gcode = G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;move to min endstops\nG92 E0 ;reset extruder\nG1 E15 F1500 ;move extruder 15mm\nG1 Z15.0 F3000 ;move the header up 15mm\nM117 printing... ;LCD message +start_gcode = G21 ; Metric values\nG90 ; Absolute positioning\nM82 ; Set extruder to absolute mode\nM107 ; Start with the fan off\nG28 ; Move to min endstops\nG92 E0 ; Reset extruder\nG1 E15 F1500 ; Move extruder 15mm\nG1 Z15.0 F3000 ; Move the header up 15mm\nM117 Final warmup ; LCD message\nM140 S[first_layer_bed_temperature] ; Set bed temp\nM190 S{first_layer_bed_temperature[0] - 5} ; Wait for bed temp-5\nM104 S[first_layer_temperature] ; Heat extruder rest of the way after heatbed\nM109 S[first_layer_temperature] ; Wait for extruder temp\nG1 X40 Y5 Z4 F5000.0 ; Move to position to prevent hitting clamps or bed\nG1 X50 Y5 Z0.3 F5000.0 ; Move to start position\nG1 X110 Y5 Z0.3 F1500.0 E15 ; First purge line\nG1 X70 Y5 Z0.3 F1500.0 E8 ; Second pass\nM117 Printing... ; LCD message\n end_gcode = M104 T0 S0 ;left extruder heater off\nM104 T1 S0 ;right extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning @@ -928,16 +937,16 @@ bed_shape = 0x0,300x0,300x300,0x300 max_print_height = 350 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_LNL3D\nPRINTER_MODEL_LNL3D_D3\nPRINTER_HAS_ULTRADETAIL\nPRINTER_HAS_HIGHSPEED\nPRINTER_HAS_SUPERSPEED -[printer:LNL3D D3 V2 (0.2 mm nozzle)] +[printer:LNL3D D3 (0.2 mm nozzle)] inherits = *LNL3D_D3*; *0.2nozzle* -[printer:LNL3D D3 V2 (0.4 mm nozzle)] +[printer:LNL3D D3 (0.4 mm nozzle)] inherits = *LNL3D_D3*; *0.4nozzle* -[printer:LNL3D D3 V2 (0.6 mm nozzle)] +[printer:LNL3D D3 (0.6 mm nozzle)] inherits = *LNL3D_D3*; *0.6nozzle* -[printer:LNL3D D3 V2 (0.8 mm nozzle)] +[printer:LNL3D D3 (0.8 mm nozzle)] inherits = *LNL3D_D3*; *0.8nozzle* @@ -963,6 +972,28 @@ inherits = *LNL3D_D3_VULCAN*; *0.8nozzle* +[printer:*LNL3D_D3_V2*] +inherits = *common* +printer_model = LNL3D_D3_V2 +bed_shape = 0x0,300x0,300x300,0x300 +max_print_height = 350 +gcode_flavor = marlin2 +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_LNL3D\nPRINTER_MODEL_LNL3D_D3_V2\nPRINTER_HAS_ULTRADETAIL\nPRINTER_HAS_HIGHSPEED\nPRINTER_HAS_SUPERSPEED + +[printer:LNL3D D3 V2 (0.2 mm nozzle)] +inherits = *LNL3D_D3_V2*; *0.2nozzle* + +[printer:LNL3D D3 V2 (0.4 mm nozzle)] +inherits = *LNL3D_D3_V2*; *0.4nozzle* + +[printer:LNL3D D3 V2 (0.6 mm nozzle)] +inherits = *LNL3D_D3_V2*; *0.6nozzle* + +[printer:LNL3D D3 V2 (0.8 mm nozzle)] +inherits = *LNL3D_D3_V2*; *0.8nozzle* + + + [printer:*LNL3D_D5*] inherits = *common* printer_model = LNL3D_D5 diff --git a/resources/profiles/LNL3D/LNL3D_D3_V2_bed.stl b/resources/profiles/LNL3D/LNL3D_D3_V2_bed.stl new file mode 100644 index 0000000000..bf2af53f4c Binary files /dev/null and b/resources/profiles/LNL3D/LNL3D_D3_V2_bed.stl differ diff --git a/resources/profiles/LNL3D/LNL3D_D3_V2_texture.svg b/resources/profiles/LNL3D/LNL3D_D3_V2_texture.svg new file mode 100644 index 0000000000..d6f3facd79 --- /dev/null +++ b/resources/profiles/LNL3D/LNL3D_D3_V2_texture.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/profiles/LNL3D/LNL3D_D3_V2_thumbnail.png b/resources/profiles/LNL3D/LNL3D_D3_V2_thumbnail.png new file mode 100644 index 0000000000..21302f277e Binary files /dev/null and b/resources/profiles/LNL3D/LNL3D_D3_V2_thumbnail.png differ diff --git a/src/libslic3r/CutUtils.cpp b/src/libslic3r/CutUtils.cpp index 2a97f8b229..081b86c209 100644 --- a/src/libslic3r/CutUtils.cpp +++ b/src/libslic3r/CutUtils.cpp @@ -464,6 +464,12 @@ const ModelObjectPtrs& Cut::perform_by_contour(std::vector parts, int dowe // Just add Upper and Lower objects to cut_object_ptrs post_process(upper, lower, cut_object_ptrs); + + // Now merge all model parts together: + merge_solid_parts_inside_object(cut_object_ptrs); + + // replace initial objects in model with cut object + finalize(cut_object_ptrs); } else if (volumes.size() > cut_parts_cnt) { // Means that object is cut with connectors @@ -490,17 +496,18 @@ const ModelObjectPtrs& Cut::perform_by_contour(std::vector parts, int dowe // Add Upper and Lower objects to cut_object_ptrs post_process(upper, lower, cut_object_ptrs); - // Add Dowel-connectors as separate objects to cut_object_ptrs + // Now merge all model parts together: + merge_solid_parts_inside_object(cut_object_ptrs); + + // replace initial objects in model with cut object + finalize(cut_object_ptrs); + + // Add Dowel-connectors as separate objects to model if (cut_connectors_obj.size() >= 3) for (size_t id = 2; id < cut_connectors_obj.size(); id++) - cut_object_ptrs.push_back(cut_connectors_obj[id]); + m_model.add_object(*cut_connectors_obj[id]); } - // Now merge all model parts together: - merge_solid_parts_inside_object(cut_object_ptrs); - - finalize(cut_object_ptrs); - return m_model.objects; } diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 3a8b8842fa..a9a7ee2a93 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1463,13 +1463,13 @@ void GCodeGenerator::process_layers( const auto smooth_path_interpolator = tbb::make_filter>(slic3r_tbb_filtermode::serial_in_order, [this, &print, &layers_to_print, &layer_to_print_idx, &interpolation_params](tbb::flow_control &fc) -> std::pair { if (layer_to_print_idx >= layers_to_print.size()) { - if ((!m_pressure_equalizer && layer_to_print_idx == layers_to_print.size()) || (m_pressure_equalizer && layer_to_print_idx == (layers_to_print.size() + 1))) { + if (layer_to_print_idx == layers_to_print.size() + (m_pressure_equalizer ? 1 : 0)) { fc.stop(); return {}; } else { // Pressure equalizer need insert empty input. Because it returns one layer back. // Insert NOP (no operation) layer; - return { ++ layer_to_print_idx, {} }; + return { layer_to_print_idx ++, {} }; } } else { print.throw_if_canceled(); @@ -1561,13 +1561,13 @@ void GCodeGenerator::process_layers( const auto smooth_path_interpolator = tbb::make_filter> (slic3r_tbb_filtermode::serial_in_order, [this, &print, &layers_to_print, &layer_to_print_idx, interpolation_params](tbb::flow_control &fc) -> std::pair { if (layer_to_print_idx >= layers_to_print.size()) { - if ((!m_pressure_equalizer && layer_to_print_idx == layers_to_print.size()) || (m_pressure_equalizer && layer_to_print_idx == (layers_to_print.size() + 1))) { + if (layer_to_print_idx == layers_to_print.size() + (m_pressure_equalizer ? 1 : 0)) { fc.stop(); return {}; } else { // Pressure equalizer need insert empty input. Because it returns one layer back. // Insert NOP (no operation) layer; - return { ++ layer_to_print_idx, {} }; + return { layer_to_print_idx ++, {} }; } } else { print.throw_if_canceled(); diff --git a/src/libslic3r/Geometry/ArcWelder.cpp b/src/libslic3r/Geometry/ArcWelder.cpp index 9730a36eec..4b02a31dce 100644 --- a/src/libslic3r/Geometry/ArcWelder.cpp +++ b/src/libslic3r/Geometry/ArcWelder.cpp @@ -34,6 +34,7 @@ #include #include #include +#include namespace Slic3r { namespace Geometry { namespace ArcWelder { @@ -309,7 +310,7 @@ static std::optional try_create_circle(const Points::const_iterator begi if (circle) { // Fit the arc between the end points by least squares. // Optimize over all points along the path and the centers of the segments. - std::vector fpts; + boost::container::small_vector fpts; Vec2d first_point = begin->cast(); Vec2d last_point = std::prev(end)->cast(); Vec2d prev_point = first_point; diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 0ff2f103c3..1cd114d14d 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -1324,9 +1324,9 @@ inline t_config_option_keys deep_diff(const ConfigBase &config_this, const Confi // Ignore this field, it is not presented to the user, therefore showing a "modified" flag for this parameter does not help. // Also the length of this field may differ, which may lead to a crash if the block below is used. } else if (opt_key == "thumbnails") { - // "thumbnails" can not containes a extentions in old config but are valid and use PNG extention by default + // "thumbnails" can not contain extensions in old config but they are valid and use PNG extension by default // So, check if "thumbnails" is really changed - // We will compare full thumnails instead of exactly config values + // We will compare full thumbnails instead of exactly config values auto [thumbnails, er] = GCodeThumbnails::make_and_check_thumbnail_list(config_this); auto [thumbnails_new, er_new] = GCodeThumbnails::make_and_check_thumbnail_list(config_other); if (thumbnails != thumbnails_new || er != er_new) @@ -1343,6 +1343,12 @@ inline t_config_option_keys deep_diff(const ConfigBase &config_this, const Confi case coFloatsOrPercents: add_correct_opts_to_diff(opt_key, diff, config_other, config_this); break; default: diff.emplace_back(opt_key); break; } + // "nozzle_diameter" is a vector option which contain info about diameter for each nozzle + // But in the same time size of this vector indicates about count of extruders, + // So, we need to add it to the diff if its size is changed. + if (opt_key == "nozzle_diameter" && + static_cast(this_opt)->size() != static_cast(other_opt)->size()) + diff.emplace_back(opt_key); } } } diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index ac6f85e186..2f425248a1 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -408,6 +408,11 @@ void PresetBundle::update_system_maps() this->sla_materials.update_map_system_profile_renamed(); this->printers .update_map_system_profile_renamed(); + update_alias_maps(); +} + +void PresetBundle::update_alias_maps() +{ this->prints .update_map_alias_to_profile_name(); this->sla_prints .update_map_alias_to_profile_name(); this->filaments .update_map_alias_to_profile_name(); @@ -1116,6 +1121,8 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool else this->physical_printers.unselect_printer(); } + + update_alias_maps(); } // Load the active configuration of a config bundle from a boost property_tree. This is a private method called from load_config_file. @@ -1194,6 +1201,7 @@ ConfigSubstitutions PresetBundle::load_config_file_config_bundle( this->extruders_filaments[i].select_filament(load_one(this->filaments, tmp_bundle.filaments, tmp_bundle.extruders_filaments[i].get_selected_preset_name(), false)); this->update_compatible(PresetSelectCompatibleType::Never); + update_alias_maps(); sort_remove_duplicates(config_substitutions); return config_substitutions; @@ -1683,6 +1691,8 @@ std::pair PresetBundle::load_configbundle( this->update_compatible(PresetSelectCompatibleType::Never); } + update_alias_maps(); + return std::make_pair(std::move(substitutions), presets_loaded + ph_printers_loaded); } diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index 52042b5292..9c39ad36d2 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -179,6 +179,8 @@ private: std::vector merge_presets(PresetBundle &&other); // Update renamed_from and alias maps of system profiles. void update_system_maps(); + // Update alias maps + void update_alias_maps(); // Set the is_visible flag for filaments and sla materials, // apply defaults based on enabled printers when no filaments/materials are installed. diff --git a/src/slic3r/GUI/Jobs/ThreadSafeQueue.hpp b/src/slic3r/GUI/Jobs/ThreadSafeQueue.hpp index 14714b2eac..94c63a0fd5 100644 --- a/src/slic3r/GUI/Jobs/ThreadSafeQueue.hpp +++ b/src/slic3r/GUI/Jobs/ThreadSafeQueue.hpp @@ -118,7 +118,8 @@ public: void clear() { std::lock_guard lk{m_mutex}; - while (!m_queue.empty()) m_queue.pop(); + while (!m_queue.empty()) + m_queue.pop(); } }; diff --git a/src/slic3r/GUI/PhysicalPrinterDialog.cpp b/src/slic3r/GUI/PhysicalPrinterDialog.cpp index 9b2c56f0e7..90ce1a998b 100644 --- a/src/slic3r/GUI/PhysicalPrinterDialog.cpp +++ b/src/slic3r/GUI/PhysicalPrinterDialog.cpp @@ -558,10 +558,13 @@ void PhysicalPrinterDialog::update_host_type(bool printer_change) || boost::starts_with(model, "XL") ); }; - // allowed models are: all MK3/S and MK2.5/S + // allowed models are: all MK3/S and MK2.5/S. + // Since 2.6.2 also MINI, which makes list of supported printers same for both services. + // Lets keep these 2 functions separated for now. auto model_supports_prusaconnect = [](const std::string& model) { return model.size() >= 2 && ((boost::starts_with(model, "MK") && model[2] > '2' && model[2] <= '9') + || boost::starts_with(model, "MINI") || boost::starts_with(model, "MK2.5") || boost::starts_with(model, "XL") ); diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 88743a69d2..ecb1d152eb 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -609,6 +609,7 @@ void PreferencesDialog::build() activate_options_tab(m_optgroup_render); #endif // ENABLE_ENVIRONMENT_MAP + } #ifdef _WIN32 // Add "Dark Mode" tab @@ -638,7 +639,6 @@ void PreferencesDialog::build() activate_options_tab(m_optgroup_dark_mode); #endif //_WIN32 - } // update alignment of the controls for all tabs update_ctrls_alignment(); diff --git a/tests/slic3rutils/CMakeLists.txt b/tests/slic3rutils/CMakeLists.txt index ac506e9756..f207916f67 100644 --- a/tests/slic3rutils/CMakeLists.txt +++ b/tests/slic3rutils/CMakeLists.txt @@ -18,6 +18,6 @@ if (WIN32) endif() # catch_discover_tests(${_TEST_NAME}_tests TEST_PREFIX "${_TEST_NAME}: ") -set(_catch_args "exclude:[NotWorking]") +set(_catch_args "exclude:[NotWorking];-s") list(APPEND _catch_args "${CATCH_EXTRA_ARGS}") add_test(${_TEST_NAME}_tests ${_TEST_NAME}_tests ${_catch_args}) diff --git a/tests/slic3rutils/slic3r_jobs_tests.cpp b/tests/slic3rutils/slic3r_jobs_tests.cpp index b0d01d2edd..5dc1b8e05b 100644 --- a/tests/slic3rutils/slic3r_jobs_tests.cpp +++ b/tests/slic3rutils/slic3r_jobs_tests.cpp @@ -20,6 +20,14 @@ struct Progress: Slic3r::ProgressIndicator { using TestClasses = std::tuple< Slic3r::GUI::UIThreadWorker, Slic3r::GUI::BoostThreadWorker >; +TEMPLATE_LIST_TEST_CASE("Empty worker should not block when queried for idle", "[Jobs]", TestClasses) { + TestType worker{std::make_unique()}; + + worker.wait_for_idle(); + + REQUIRE(worker.is_idle()); +} + TEMPLATE_LIST_TEST_CASE("Empty worker should not do anything", "[Jobs]", TestClasses) { TestType worker{std::make_unique()}; @@ -51,6 +59,10 @@ TEMPLATE_LIST_TEST_CASE("State should not be idle while running a job", "[Jobs]" worker.wait_for_idle(); + // To avoid stalling the job, in case the wait_for_idle is called before + // the job goes into blocking wait + worker.process_events(); + REQUIRE(worker.is_idle()); } @@ -67,12 +79,13 @@ TEMPLATE_LIST_TEST_CASE("Status messages should be received by the main thread d }); worker.wait_for_idle(); + worker.process_events(); REQUIRE(pri->pr == 100); REQUIRE(pri->statustxt == "Running"); } -TEMPLATE_LIST_TEST_CASE("Cancellation should be recognized be the worker", "[Jobs]", TestClasses) { +TEMPLATE_LIST_TEST_CASE("Cancellation should be recognized by the worker", "[Jobs]", TestClasses) { using namespace Slic3r; using namespace Slic3r::GUI; @@ -85,7 +98,8 @@ TEMPLATE_LIST_TEST_CASE("Cancellation should be recognized be the worker", "[Job for (int s = 0; s <= 100; ++s) { std::this_thread::sleep_for(std::chrono::milliseconds(10)); ctl.update_status(s, "Running"); - if (ctl.was_canceled()) break; + if (ctl.was_canceled()) + break; } }, [](bool cancelled, std::exception_ptr &) { // finalize @@ -96,6 +110,7 @@ TEMPLATE_LIST_TEST_CASE("Cancellation should be recognized be the worker", "[Job worker.cancel(); worker.wait_for_current_job(); + worker.process_events(); REQUIRE(pri->pr != 100); } @@ -133,6 +148,7 @@ TEMPLATE_LIST_TEST_CASE("cancel_all should remove all pending jobs", "[Jobs]", T // during the first job's execution. std::this_thread::sleep_for(std::chrono::milliseconds(500)); worker.cancel_all(); + worker.process_events(); REQUIRE(jobres[0] == true); REQUIRE(jobres[1] == false); @@ -161,5 +177,7 @@ TEMPLATE_LIST_TEST_CASE("Exception should be properly forwarded to finalize()", }); worker.wait_for_idle(); + worker.process_events(); + REQUIRE(worker.is_idle()); }