Merge branch 'master' into fs_import_svg

This commit is contained in:
Filip Sykala - NTB T15p 2023-10-23 16:51:20 +02:00
commit e7ece23d01
49 changed files with 71133 additions and 53007 deletions

View File

@ -1 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg id="a" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path id="b" d="m8.54,4.31c-.53-.19-.81-.69-.73-1.32.08-.62.55-1.01,1.21-1.01.46,0,.82.21,1,.58.1.2.1.22.1.55,0,.43-.07.61-.31.87-.24.26-.46.35-.84.36-.21,0-.33,0-.43-.04Z" style="fill:#ed6b21; isolation:isolate; opacity:1;"/><path id="c" d="m6.82,13.97c-.51-.14-.74-.4-.77-.86-.02-.28-.04-.15.57-3.12.22-1.07.44-2.13.48-2.34.13-.71.07-.77-.77-.81-.21-.01-.38-.03-.39-.04s0-.09.02-.18c.04-.18,0-.16.69-.31.62-.14,1.09-.19,1.63-.2.67,0,.9.07,1.13.36.09.11.09.13.09.41,0,.25-.06.57-.39,2.17-.78,3.74-.79,3.82-.68,3.99.03.04.08.1.12.13.12.08.47.14.8.14h.3s-.02.18-.02.18c-.01.1-.04.19-.05.2-.05.03-.88.2-1.24.26-.45.07-1.31.09-1.51.03h0Z" style="fill:#ed6b21; isolation:isolate; opacity:1;"/><polyline points="14.5 3.5 14.5 1.5 12.5 1.5" style="fill:none; stroke:808080; stroke-linecap:round; stroke-miterlimit:10;"/><polyline points="3.5 1.5 1.5 1.5 1.5 3.5" style="fill:none; stroke:#808080; stroke-linecap:round; stroke-miterlimit:10;"/><polyline points="1.5 12.5 1.5 14.5 3.5 14.5" style="fill:none; stroke:#808080; stroke-linecap:round; stroke-miterlimit:10;"/><polyline points="12.5 14.5 14.5 14.5 14.5 12.5" style="fill:none; stroke:#808080; stroke-linecap:round; stroke-miterlimit:10;"/></svg>
<?xml version="1.0" encoding="UTF-8"?><svg id="a" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path id="b" d="m8.54,4.31c-.53-.19-.81-.69-.73-1.32.08-.62.55-1.01,1.21-1.01.46,0,.82.21,1,.58.1.2.1.22.1.55,0,.43-.07.61-.31.87-.24.26-.46.35-.84.36-.21,0-.33,0-.43-.04Z" style="fill:#ed6b21; isolation:isolate; opacity:1;"/><path id="c" d="m6.82,13.97c-.51-.14-.74-.4-.77-.86-.02-.28-.04-.15.57-3.12.22-1.07.44-2.13.48-2.34.13-.71.07-.77-.77-.81-.21-.01-.38-.03-.39-.04s0-.09.02-.18c.04-.18,0-.16.69-.31.62-.14,1.09-.19,1.63-.2.67,0,.9.07,1.13.36.09.11.09.13.09.41,0,.25-.06.57-.39,2.17-.78,3.74-.79,3.82-.68,3.99.03.04.08.1.12.13.12.08.47.14.8.14h.3s-.02.18-.02.18c-.01.1-.04.19-.05.2-.05.03-.88.2-1.24.26-.45.07-1.31.09-1.51.03h0Z" style="fill:#ed6b21; isolation:isolate; opacity:1;"/><polyline points="14.5 3.5 14.5 1.5 12.5 1.5" style="fill:none; stroke:#808080; stroke-linecap:round; stroke-miterlimit:10;"/><polyline points="3.5 1.5 1.5 1.5 1.5 3.5" style="fill:none; stroke:#808080; stroke-linecap:round; stroke-miterlimit:10;"/><polyline points="1.5 12.5 1.5 14.5 3.5 14.5" style="fill:none; stroke:#808080; stroke-linecap:round; stroke-miterlimit:10;"/><polyline points="12.5 14.5 14.5 14.5 14.5 12.5" style="fill:none; stroke:#808080; stroke-linecap:round; stroke-miterlimit:10;"/></svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -1 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg id="a" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><rect x="1" y="7" width="2" height="6" rx="1" ry="1" style="fill:#ed6b21;"/><rect x="5" y="2" width="2" height="11" rx="1" ry="1" style="fill:#ed6b21;"/><rect x="9" y="3" width="2" height="10" rx="1" ry="1" style="fill:#ed6b21;"/><rect x="13" y="5" width="2" height="8" rx="1" ry="1" style="fill:#ed6b21;"/></svg>
<?xml version="1.0" encoding="UTF-8"?><svg id="a" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><rect x="1" y="7" width="2" height="6" rx="1" ry="1" style="fill:#808080;"/><rect x="5" y="2" width="2" height="11" rx="1" ry="1" style="fill:#808080;"/><rect x="9" y="3" width="2" height="10" rx="1" ry="1" style="fill:#808080;"/><rect x="13" y="5" width="2" height="8" rx="1" ry="1" style="fill:#808080;"/></svg>

Before

Width:  |  Height:  |  Size: 418 B

After

Width:  |  Height:  |  Size: 418 B

View File

@ -1 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg id="a" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><polyline points="4.5 2.5 2.5 2.5 2.5 13.5 4.5 13.5" style="fill:none; stroke:808080; stroke-linecap:round; stroke-miterlimit:10;"/><polyline points="11.5 13.5 13.5 13.5 13.5 2.5 11.5 2.5" style="fill:none; stroke:808080; stroke-linecap:round; stroke-miterlimit:10;"/><path d="m9,8v3.14c0,.47-.45.86-1,.86h0c-.55,0-1-.38-1-.86v-3.14h2Z" style="fill:#808080;"/><circle cx="8" cy="6" r="1" style="fill:#808080;"/></svg>
<?xml version="1.0" encoding="UTF-8"?><svg id="a" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><polyline points="4.5 2.5 2.5 2.5 2.5 13.5 4.5 13.5" style="fill:none; stroke:#808080; stroke-linecap:round; stroke-miterlimit:10;"/><polyline points="11.5 13.5 13.5 13.5 13.5 2.5 11.5 2.5" style="fill:none; stroke:#808080; stroke-linecap:round; stroke-miterlimit:10;"/><path d="m9,8v3.14c0,.47-.45.86-1,.86h0c-.55,0-1-.38-1-.86v-3.14h2Z" style="fill:#808080;"/><circle cx="8" cy="6" r="1" style="fill:#808080;"/></svg>

Before

Width:  |  Height:  |  Size: 522 B

After

Width:  |  Height:  |  Size: 524 B

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,5 @@
min_slic3r_version = 2.6.0
0.0.4 Updated Start G-Codes.
0.0.3 Added new printer profile.
0.0.2 Updated initial layer heights.
0.0.1 Initial version.

View File

@ -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.3
config_version = 0.0.4
# Where to get the updates from?
config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/LNL3D/
@ -891,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 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
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 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

View File

@ -1,4 +1,7 @@
min_slic3r_version = 2.6.2-alpha0
1.11.0-alpha9 Added printer profiles for Prusa XL Input Shaper (Alpha). Updated Prusa MINI Input Shaper profiles. Added profiles for "Filament PM" filaments.
1.11.0-alpha8 Default file extension changed to bgcode also for other nozzle diameters (MK4IS/MK3.9).
1.11.0-alpha7 Updated end g-code for XL Multi-Tool. Slightly decreased PETG bed temperature (XL).
1.11.0-alpha6 Increased MBL temperature for PET. Enabled FW-specific object labels for XL/MK3.9/MK4/MINI. PETG V0 marked as UL certified for MK4.
1.11.0-alpha5 Added new profiles (additional nozzle diameters) for Prusa MINI Input Shaper (Alpha). Arc fitting changed to I J.
1.11.0-alpha4 Updated compatible printer conditions for specific filament profiles.
@ -7,6 +10,7 @@ min_slic3r_version = 2.6.2-alpha0
1.11.0-alpha1 Updated ramming parameters. Updated start-gcode for XL Multi-Tool. Updated output filename format.
1.11.0-alpha0 Binary g-code, arc fitting, QOI/PNG thumbnails, 90degree XL tower, XL specific filament variants.
min_slic3r_version = 2.6.1-rc2
1.10.1 Increased MBL temperature for PET filaments (MK4, XL). PETG V0 is now UL certified for MK4. Updated end g-code for XL Multi-Tool. Slightly decreased bed temperature for some PET filaments (XL).
1.10.0 Added new profiles for Prusa MINI Input Shaper (Alpha). Enabled XL ramming feature. Prusa XL users may need to re-enable filament profiles in configuration wizard.
min_slic3r_version = 2.6.0-beta2
1.9.10 Added new print profiles for Prusa MINI Input Shaper (Alpha). Updated MK4 IS profiles.

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

View File

@ -0,0 +1,744 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
id="Layer_1"
data-name="Layer 1"
width="360mm"
height="360mm"
viewBox="0 0 1020.5 1020.5"
version="1.1">
<metadata
id="metadata129">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs1646" />
<rect
width="1020.5"
height="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 5.7px;"
id="rect1407" />
<g
id="g1577">
<rect
width="1020.5"
height="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="rect1409" />
<line
y1="992.1"
x2="1020.5"
y2="992.1"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1411" />
<line
x1="954"
y1="963.8"
x2="1020.5"
y2="963.8"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1413" />
<line
y1="963.8"
x2="576.3"
y2="963.8"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1415" />
<line
y1="935.4"
x2="1020.5"
y2="935.4"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1417" />
<line
y1="907.1"
x2="1020.5"
y2="907.1"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1419" />
<line
y1="878.7"
x2="1020.5"
y2="878.7"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1421" />
<line
y1="850.4"
x2="1020.5"
y2="850.4"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1423" />
<line
y1="822"
x2="1020.5"
y2="822"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1425" />
<line
y1="793.7"
x2="1020.5"
y2="793.7"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1427" />
<line
y1="765.4"
x2="1020.5"
y2="765.4"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1429" />
<line
y1="737"
x2="1020.5"
y2="737"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1431" />
<line
y1="708.7"
x2="1020.5"
y2="708.7"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1433" />
<line
y1="680.3"
x2="1020.5"
y2="680.3"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1435" />
<line
y1="652"
x2="1020.5"
y2="652"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1437" />
<line
y1="623.6"
x2="1020.5"
y2="623.6"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1439" />
<line
y1="595.3"
x2="1020.5"
y2="595.3"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1441" />
<line
y1="566.9"
x2="1020.5"
y2="566.9"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1443" />
<line
y1="538.6"
x2="1020.5"
y2="538.6"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1445" />
<line
y1="510.2"
x2="1020.5"
y2="510.2"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1447" />
<line
y1="481.9"
x2="1020.5"
y2="481.9"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1449" />
<line
y1="453.5"
x2="1020.5"
y2="453.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1451" />
<line
y1="425.2"
x2="1020.5"
y2="425.2"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1453" />
<line
y1="396.9"
x2="1020.5"
y2="396.9"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1455" />
<line
y1="368.5"
x2="1020.5"
y2="368.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1457" />
<line
y1="340.2"
x2="1020.5"
y2="340.2"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1459" />
<line
y1="311.8"
x2="1020.5"
y2="311.8"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1461" />
<line
y1="283.5"
x2="1020.5"
y2="283.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1463" />
<line
y1="255.1"
x2="1020.5"
y2="255.1"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1465" />
<line
y1="226.8"
x2="1020.5"
y2="226.8"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1467" />
<line
y1="198.4"
x2="1020.5"
y2="198.4"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1469" />
<line
y1="170.1"
x2="1020.5"
y2="170.1"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1471" />
<line
y1="141.7"
x2="1020.5"
y2="141.7"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1473" />
<line
y1="113.4"
x2="1020.5"
y2="113.4"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1475" />
<line
y1="85"
x2="1020.5"
y2="85"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1477" />
<line
y1="56.7"
x2="1020.5"
y2="56.7"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1479" />
<line
y1="28.3"
x2="1020.5"
y2="28.3"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1481" />
<line
x1="992.1"
x2="992.1"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1483" />
<line
x1="963.8"
x2="963.8"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1485" />
<line
x1="935.4"
y1="984.3"
x2="935.4"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1487" />
<line
x1="935.4"
x2="935.4"
y2="944.9"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1489" />
<line
x1="907.1"
y1="984.3"
x2="907.1"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1491" />
<line
x1="907.1"
x2="907.1"
y2="944.9"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1493" />
<line
x1="878.8"
y1="984.3"
x2="878.7"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1495" />
<line
x1="878.7"
x2="878.7"
y2="944.9"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1497" />
<line
x1="850.5"
y1="984.3"
x2="850.4"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1499" />
<line
x1="850.4"
x2="850.4"
y2="944.9"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1501" />
<line
x1="822.1"
y1="984.3"
x2="822"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1503" />
<line
x1="822"
x2="822"
y2="944.9"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1505" />
<line
x1="793.8"
y1="984.3"
x2="793.7"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1507" />
<line
x1="793.7"
x2="793.7"
y2="944.9"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1509" />
<line
x1="765.4"
x2="765.4"
y2="935.4"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1511" />
<line
x1="737"
y1="984.2"
x2="737"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1513" />
<line
x1="737"
x2="737"
y2="944.9"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1515" />
<line
x1="708.7"
y1="984.2"
x2="708.7"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1517" />
<line
x1="708.7"
x2="708.7"
y2="944.9"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1519" />
<line
x1="680.3"
y1="984.2"
x2="680.3"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1521" />
<line
x1="680.3"
x2="680.3"
y2="944.9"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1523" />
<line
x1="652"
y1="984.2"
x2="652"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1525" />
<line
x1="652"
x2="652"
y2="944.9"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1527" />
<line
x1="623.6"
y1="984.2"
x2="623.6"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1529" />
<line
x1="623.6"
x2="623.6"
y2="944.9"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1531" />
<line
x1="595.3"
y1="984.2"
x2="595.3"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1533" />
<line
x1="595.3"
x2="595.3"
y2="944.9"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1535" />
<line
x1="566.9"
x2="566.9"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1537" />
<line
x1="538.6"
x2="538.6"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1539" />
<line
x1="510.2"
x2="510.2"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1541" />
<line
x1="481.9"
x2="481.9"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1543" />
<line
x1="453.5"
x2="453.5"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1545" />
<line
x1="425.2"
x2="425.2"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1547" />
<line
x1="396.9"
x2="396.9"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1549" />
<line
x1="368.5"
x2="368.5"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1551" />
<line
x1="340.2"
x2="340.2"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1553" />
<line
x1="311.8"
x2="311.8"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1555" />
<line
x1="283.5"
x2="283.5"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1557" />
<line
x1="255.1"
x2="255.1"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1559" />
<line
x1="226.8"
x2="226.8"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1561" />
<line
x1="198.4"
x2="198.4"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1563" />
<line
x1="170.1"
x2="170.1"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1565" />
<line
x1="141.7"
x2="141.7"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1567" />
<line
x1="113.4"
x2="113.4"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1569" />
<line
x1="85"
x2="85"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1571" />
<line
x1="56.7"
x2="56.7"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1573" />
<line
x1="28.3"
x2="28.3"
y2="1020.5"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: .7px;"
id="line1575" />
</g>
<rect
y="765.4"
width="255.1"
height="255.1"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 1.4px;"
id="rect1579" />
<rect
x="255.1"
y="765.4"
width="255.1"
height="255.1"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 1.4px;"
id="rect1581" />
<polyline
points="765.4 992.1 765.4 1020.5 510.2 1020.5 510.2 765.4 765.4 765.4 765.4 935.4"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 1.4px;"
id="polyline1583" />
<polyline
points="765.4 944.9 765.4 765.4 1020.5 765.4 1020.5 1020.5 765.4 1020.5 765.4 984.2"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 1.4px;"
id="polyline1585" />
<rect
y="510.2"
width="255.1"
height="255.1"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 1.4px;"
id="rect1587" />
<rect
x="255.1"
y="510.2"
width="255.1"
height="255.1"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 1.4px;"
id="rect1589" />
<rect
x="510.2"
y="510.2"
width="255.1"
height="255.1"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 1.4px;"
id="rect1591" />
<rect
x="765.4"
y="510.2"
width="255.1"
height="255.1"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 1.4px;"
id="rect1593" />
<rect
y="255.1"
width="255.1"
height="255.1"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 1.4px;"
id="rect1595" />
<rect
x="255.1"
y="255.1"
width="255.1"
height="255.1"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 1.4px;"
id="rect1597" />
<rect
x="510.2"
y="255.1"
width="255.1"
height="255.1"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 1.4px;"
id="rect1599" />
<rect
x="765.4"
y="255.1"
width="255.1"
height="255.1"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 1.4px;"
id="rect1601" />
<rect
width="255.1"
height="255.1"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 1.4px;"
id="rect1603" />
<rect
x="255.1"
width="255.1"
height="255.1"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 1.4px;"
id="rect1605" />
<rect
x="510.2"
width="255.1"
height="255.1"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 1.4px;"
id="rect1607" />
<rect
x="765.4"
width="255.1"
height="255.1"
style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 1.4px;"
id="rect1609" />
<g
id="g1641">
<path
d="m584.3,964.3c0-1.9.3-3.7.9-5.3.6-1.7,1.4-3.1,2.5-4.3,1.1-1.2,2.4-2.2,4-2.9,1.6-.7,3.3-1,5.3-1s3.8.3,5.3,1c1.6.7,2.9,1.7,4,2.9,1.1,1.2,1.9,2.7,2.5,4.3.6,1.7.9,3.4.9,5.3s-.3,3.6-.9,5.2c-.6,1.6-1.4,3-2.5,4.2-1.1,1.2-2.4,2.1-4,2.8-1.6.7-3.3,1-5.3,1s-3.8-.3-5.3-1c-1.6-.7-2.9-1.6-4-2.8-1.1-1.2-1.9-2.6-2.5-4.2-.6-1.6-.9-3.4-.9-5.2Zm5.7,0c0,1.1.1,2.1.4,3.2s.7,1.9,1.2,2.8c.6.8,1.3,1.5,2.2,2,.9.5,2,.7,3.2.7s2.4-.2,3.2-.7c.9-.5,1.6-1.1,2.2-2,.6-.8,1-1.7,1.2-2.8s.4-2.1.4-3.2-.1-2.2-.4-3.3c-.3-1.1-.7-2-1.2-2.8s-1.3-1.5-2.2-2c-.9-.5-2-.7-3.2-.7s-2.4.2-3.2.7c-.9.5-1.6,1.2-2.2,2-.6.8-1,1.8-1.2,2.8-.3,1.1-.4,2.1-.4,3.3Z"
style="fill: #fff;"
id="path1611" />
<path
d="m613.4,951.3h13.9c1.2,0,2.2.2,3.1.6.9.4,1.7.9,2.4,1.5.7.6,1.2,1.4,1.5,2.3.3.9.5,1.8.5,2.7,0,1.5-.3,2.8-1,3.9-.6,1.1-1.7,1.9-3.1,2.5h0c.7.3,1.3.6,1.7,1,.5.4.8.9,1.1,1.4.3.6.5,1.1.6,1.8.1.6.2,1.3.3,1.9,0,.4,0,.9,0,1.4,0,.6,0,1.1.1,1.7,0,.6.2,1.1.3,1.6.1.5.3,1,.6,1.3h-5.7c-.2-.4-.3-.9-.4-1.3,0-.5-.2-1-.2-1.5,0-.5-.1-1.1-.1-1.7,0-.6,0-1.1-.2-1.6-.2-1.3-.6-2.3-1.2-3-.6-.6-1.6-.9-3.1-.9h-5.7v10h-5.7v-25.7Zm5.7,11.6h6.2c1.3,0,2.2-.3,2.9-.9.7-.6,1-1.5,1-2.8s-.3-2.2-1-2.7c-.7-.6-1.6-.8-2.9-.8h-6.2v7.2Z"
style="fill: #fff;"
id="path1613" />
<path
d="m639.4,951.3h5.7v25.7h-5.7v-25.7Z"
style="fill: #fff;"
id="path1615" />
<path
d="m668.6,974.1c-1,1.3-2.1,2.2-3.3,2.7-1.2.5-2.5.8-3.7.8-2,0-3.8-.3-5.3-1-1.6-.7-2.9-1.6-4-2.8-1.1-1.2-1.9-2.6-2.5-4.2-.6-1.6-.9-3.4-.9-5.2s.3-3.7.9-5.3c.6-1.7,1.4-3.1,2.5-4.3,1.1-1.2,2.4-2.2,4-2.9,1.6-.7,3.3-1,5.3-1s2.6.2,3.8.6c1.2.4,2.3,1,3.3,1.7,1,.8,1.8,1.7,2.5,2.8s1.1,2.4,1.2,3.9h-5.4c-.3-1.4-1-2.5-2-3.2-1-.7-2.1-1.1-3.5-1.1s-2.4.2-3.2.7c-.9.5-1.6,1.2-2.2,2-.6.8-1,1.8-1.2,2.8-.3,1.1-.4,2.1-.4,3.3s.1,2.1.4,3.2.7,1.9,1.2,2.8c.6.8,1.3,1.5,2.2,2,.9.5,2,.7,3.2.7,1.8,0,3.3-.5,4.3-1.4,1-.9,1.6-2.3,1.8-4.1h-5.7v-4.2h10.8v13.9h-3.6l-.6-2.9Z"
style="fill: #fff;"
id="path1617" />
<path
d="m677.4,951.3h5.7v25.7h-5.7v-25.7Z"
style="fill: #fff;"
id="path1619" />
<path
d="m688,951.3h5.6l10.7,17.2h0v-17.2h5.3v25.7h-5.7l-10.7-17.2h0v17.2h-5.3v-25.7Z"
style="fill: #fff;"
id="path1621" />
<path
d="m721.7,951.3h5.8l9.6,25.7h-5.9l-1.9-5.7h-9.6l-2,5.7h-5.7l9.8-25.7Zm-.5,15.8h6.7l-3.2-9.4h0l-3.3,9.4Z"
style="fill: #fff;"
id="path1623" />
<path
d="m739.3,951.3h5.7v21h12.5v4.8h-18.2v-25.7Z"
style="fill: #fff;"
id="path1625" />
<path
d="m770.7,951.3h11.6c1.6,0,3,.2,4.1.7s2,1.1,2.8,1.9c.7.8,1.2,1.7,1.5,2.6.3,1,.5,2,.5,3s-.2,2.1-.5,3.1c-.3,1-.8,1.9-1.5,2.6-.7.8-1.6,1.4-2.8,1.9s-2.5.7-4.1.7h-5.9v9.2h-5.7v-25.7Zm5.7,12.1h4.4c.6,0,1.3,0,1.9-.1.6,0,1.1-.3,1.6-.6.5-.3.8-.7,1.1-1.2.3-.5.4-1.2.4-2s-.1-1.5-.4-2c-.3-.5-.6-.9-1.1-1.2-.5-.3-1-.5-1.6-.6-.6,0-1.2-.1-1.9-.1h-4.4v7.7Z"
style="fill: #fff;"
id="path1627" />
<path
d="m794.7,951.3h13.9c1.2,0,2.2.2,3.1.6.9.4,1.7.9,2.4,1.5.7.6,1.2,1.4,1.5,2.3.3.9.5,1.8.5,2.7,0,1.5-.3,2.8-1,3.9-.6,1.1-1.7,1.9-3.1,2.5h0c.7.3,1.3.6,1.7,1,.5.4.8.9,1.1,1.4.3.6.5,1.1.6,1.8.1.6.2,1.3.3,1.9,0,.4,0,.9,0,1.4,0,.6,0,1.1.1,1.7,0,.6.2,1.1.3,1.6.1.5.3,1,.6,1.3h-5.7c-.2-.4-.3-.9-.4-1.3s-.2-1-.2-1.5c0-.5-.1-1.1-.1-1.7,0-.6,0-1.1-.2-1.6-.2-1.3-.6-2.3-1.2-3-.6-.6-1.6-.9-3.1-.9h-5.7v10h-5.7v-25.7Zm5.7,11.6h6.2c1.3,0,2.2-.3,2.9-.9.7-.6,1-1.5,1-2.8s-.3-2.2-1-2.7c-.7-.6-1.6-.8-2.9-.8h-6.2v7.2Z"
style="fill: #fff;"
id="path1629" />
<path
d="m842.5,967.3c0,3.5-1,6.1-2.9,7.8-1.9,1.7-4.6,2.6-8.1,2.6s-6.2-.8-8.1-2.5c-1.9-1.7-2.9-4.3-2.9-7.8v-16h5.7v16c0,.7,0,1.4.2,2.1s.4,1.3.8,1.8c.4.5.9.9,1.6,1.3.7.3,1.6.5,2.8.5,2,0,3.4-.5,4.2-1.4.8-.9,1.2-2.3,1.2-4.2v-16h5.7v16Z"
style="fill: #fff;"
id="path1631" />
<path
d="m851.2,968.5c0,.9.2,1.6.5,2.2.3.6.7,1.1,1.2,1.5.5.4,1.1.6,1.8.8.7.2,1.4.3,2.2.3s1,0,1.6-.1c.6,0,1.1-.2,1.6-.5s.9-.6,1.3-1c.3-.4.5-1,.5-1.6s-.2-1.3-.7-1.7c-.4-.4-1-.8-1.7-1.1-.7-.3-1.5-.6-2.4-.8-.9-.2-1.8-.4-2.8-.7-1-.2-1.9-.5-2.8-.9-.9-.3-1.7-.8-2.4-1.3-.7-.6-1.3-1.2-1.7-2.1-.4-.8-.7-1.8-.7-3s.3-2.5.8-3.4c.6-1,1.3-1.8,2.2-2.4.9-.6,1.9-1.1,3.1-1.4,1.2-.3,2.3-.5,3.5-.5s2.6.2,3.9.5c1.2.3,2.3.8,3.3,1.5,1,.7,1.7,1.5,2.3,2.6.6,1,.8,2.3.8,3.8h-5.5c0-.8-.2-1.4-.5-1.9s-.6-.9-1.1-1.2c-.5-.3-1-.5-1.6-.6-.6-.1-1.2-.2-1.9-.2s-.9,0-1.4.1c-.5,0-.9.3-1.2.5-.4.2-.7.5-.9.9-.2.4-.4.8-.4,1.4s0,.9.3,1.2c.2.3.6.6,1.1.8.6.3,1.3.5,2.3.8,1,.3,2.3.6,3.9,1,.3,0,.7.2,1.2.3.5.1,1,.3,1.6.5.6.2,1.1.5,1.7.9.6.4,1.1.8,1.5,1.3.5.5.8,1.2,1.1,1.9.3.7.4,1.6.4,2.5s-.2,2.3-.7,3.3c-.5,1-1.1,1.9-2,2.6-.9.7-2,1.3-3.3,1.7-1.3.4-2.9.6-4.6.6s-2.8-.2-4.1-.5c-1.3-.4-2.5-.9-3.5-1.7-1-.7-1.8-1.7-2.4-2.8-.6-1.2-.9-2.5-.9-4.1h5.5Z"
style="fill: #fff;"
id="path1633" />
<path
d="m877.7,951.3h5.8l9.6,25.7h-5.9l-1.9-5.7h-9.6l-2,5.7h-5.7l9.8-25.7Zm-.5,15.8h6.7l-3.2-9.4h0l-3.3,9.4Z"
style="fill: #fff;"
id="path1635" />
<path
d="m911.7,963.6l-8.3-12.2h6.6l5,8.2,5.2-8.2h6.2l-8.2,12.3,9,13.4h-6.7l-5.6-8.9-5.7,8.9h-6.4l9-13.5Z"
style="fill: #fff;"
id="path1637" />
<path
d="m929.4,951.3h5.7v21h12.5v4.8h-18.2v-25.7Z"
style="fill: #fff;"
id="path1639" />
</g>
<rect
x="584.22406"
y="983.10077"
width="41.176113"
height="15.750426"
style="fill:#ff3c00;stroke-width:0.75002"
id="rect1336" />
<g
id="g1348"
transform="matrix(0.75002026,0,0,0.75002026,295.01625,586.41471)">
<path
d="m 401.3,545.4 c 0,0.2 0,0.4 -0.2,0.4 h -2 c -0.2,0 -0.4,0 -0.4,-0.3 l -0.4,-1.7 h -3.2 l -0.4,1.7 c 0,0.2 -0.2,0.3 -0.4,0.3 h -2 c -0.2,0 -0.3,-0.1 -0.2,-0.4 l 3.3,-11.9 c 0,-0.2 0.2,-0.3 0.4,-0.3 h 1.7 c 0.2,0 0.3,0 0.4,0.3 l 3.3,11.9 z m -4.5,-9.2 -0.2,1.2 -0.9,4.2 h 2.2 l -0.9,-4.2 z"
style="fill:#ffffff"
id="path1338" />
<path
d="m 402.5,532.1 c 0,-0.2 0.1,-0.4 0.3,-0.4 h 1.8 c 0.2,0 0.3,0.1 0.3,0.4 v 13.3 c 0,0.2 0,0.4 -0.3,0.4 h -1.8 c -0.2,0 -0.3,-0.1 -0.3,-0.4 z"
style="fill:#ffffff"
id="path1340" />
<path
d="m 415,541.9 c 0,2.3 -1.4,4.1 -3.7,4.1 -2.3,0 -1.4,-0.5 -1.8,-1.1 v 3.9 c 0,0.2 -0.2,0.4 -0.4,0.4 h -1.7 c -0.2,0 -0.3,-0.1 -0.3,-0.4 v -13.5 c 0,-0.2 0.1,-0.4 0.3,-0.4 h 1.3 c 0.2,0 0.4,0.1 0.4,0.4 l 0.2,0.9 c 0.4,-0.8 1.1,-1.5 2.1,-1.5 2.2,0 3.6,1.9 3.6,4.1 z m -2.5,-3.2 c 0,-0.9 -0.6,-1.7 -1.5,-1.7 -0.9,0 -1.4,0.8 -1.5,1.8 v 3 c 0,1 0.6,1.9 1.5,1.9 0.9,0 1.5,-0.8 1.5,-1.7 z"
style="fill:#ffffff"
id="path1342" />
<path
d="m 422,538.6 c 0,-0.8 -0.6,-1.6 -1.5,-1.6 -0.9,0 -1.5,0.9 -1.5,1.6 v 6.8 c 0,0.2 -0.3,0.4 -0.5,0.4 h -1.7 c -0.2,0 -0.3,-0.1 -0.3,-0.4 v -13.3 c 0,-0.2 0.1,-0.4 0.3,-0.4 h 1.8 c 0.2,0 0.3,0 0.3,0.3 v 3.9 c 0.5,-0.8 1.2,-1.3 2.2,-1.3 1.9,0 3.3,1.3 3.3,4 v 6.7 c 0,0.2 -0.1,0.4 -0.3,0.4 h -1.8 c -0.2,0 -0.3,-0.1 -0.3,-0.4 v -6.8 z"
style="fill:#ffffff"
id="path1344" />
<path
d="m 426,538.8 c 0,-2.2 1.5,-4.1 3.7,-4.1 2.2,0 1.6,0.6 2,1.4 v -0.8 c 0.2,-0.2 0.3,-0.4 0.6,-0.4 h 1.3 c 0.2,0 0.3,0.1 0.3,0.4 v 10.1 c 0,0.2 -0.1,0.4 -0.3,0.4 h -1.3 c -0.2,0 -0.4,-0.1 -0.4,-0.4 v -0.9 c -0.5,0.8 -1.1,1.4 -2.2,1.4 -2.2,0 -3.7,-1.8 -3.7,-4.1 v -3.1 z m 2.5,3.2 c 0,0.9 0.6,1.7 1.5,1.7 0.9,0 1.4,-0.8 1.5,-1.8 v -3.1 c 0,-1 -0.6,-1.8 -1.5,-1.8 -0.9,0 -1.5,0.8 -1.5,1.7 z"
style="fill:#ffffff"
id="path1346" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -20,6 +20,10 @@ struct FillBedTask: public ArrangeTaskBase
std::vector<ArrItem> selected, unselected;
// For workaround regarding "holes" when filling the bed with the same
// item's copies
std::vector<ArrItem> selected_fillers;
ArrangeSettings settings;
ExtendedBed bed;
size_t selected_existing_count = 0;

View File

@ -74,8 +74,7 @@ void extract(FillBedTask<ArrItem> &task,
// Workaround for missing items when arranging the same geometry only:
// Injecting a number of items but with slightly shrinked shape, so that
// they can fill the emerging holes. Priority is set to lowest so that
// these filler items will only be inserted as the last ones.
// they can fill the emerging holes.
ArrItem prototype_item_shrinked;
scene.model().visit_arrangeable(selected_ids.front(),
[&prototype_item_shrinked, &itm_conv](const Arrangeable &arrbl) {
@ -104,10 +103,6 @@ void extract(FillBedTask<ArrItem> &task,
}
};
// Set the lowest priority to the shrinked prototype (hole filler) item
set_priority(prototype_item_shrinked,
lowest_priority(range(task.selected)) - 1);
scene.model().for_each_arrangeable(collect_task_items);
int needed_items = calculate_items_needed_to_fill_bed(task.bed,
@ -122,7 +117,7 @@ void extract(FillBedTask<ArrItem> &task,
// Add as many filler items as there are needed items. Most of them will
// be discarded anyways.
std::fill_n(std::back_inserter(task.selected), needed_items,
std::fill_n(std::back_inserter(task.selected_fillers), needed_items,
prototype_item_shrinked);
}
@ -175,7 +170,7 @@ std::unique_ptr<FillBedTaskResult> FillBedTask<ArrItem>::process_native(
void on_packed(ArrItem &itm) override
{
// Stop at the first filler that is not on the physical bed
do_stop = get_bed_index(itm) > PhysicalBedId && get_priority(itm) < 0;
do_stop = get_bed_index(itm) > PhysicalBedId && get_priority(itm) == 0;
}
} subctl(ctl, *this);
@ -184,6 +179,13 @@ std::unique_ptr<FillBedTaskResult> FillBedTask<ArrItem>::process_native(
arranger->arrange(selected, unselected, bed, subctl);
auto unsel_cpy = unselected;
for (const auto &itm : selected) {
unsel_cpy.emplace_back(itm);
}
arranger->arrange(selected_fillers, unsel_cpy, bed, FillBedCtl{ctl, *this});
auto arranged_range = Range{selected.begin(),
selected.begin() + selected_existing_count};
@ -196,6 +198,10 @@ std::unique_ptr<FillBedTaskResult> FillBedTask<ArrItem>::process_native(
if (get_bed_index(itm) == PhysicalBedId)
result->add_new_item(itm);
for (auto &itm : selected_fillers)
if (get_bed_index(itm) == PhysicalBedId)
result->add_new_item(itm);
return result;
}

View File

@ -416,12 +416,12 @@ void PrintConfigDef::init_common_params()
def->label = L("Authorization Type");
// def->tooltip = L("");
def->set_enum<AuthorizationType>({
{ "user", L("HTTP digest") },
{ "key", L("API key") }
{ "key", L("API key") },
{ "user", L("HTTP digest") }
});
def->mode = comAdvanced;
def->cli = ConfigOptionDef::nocli;
def->set_default_value(new ConfigOptionEnum<AuthorizationType>(atUserPassword));
def->set_default_value(new ConfigOptionEnum<AuthorizationType>(atKeyPassword));
// temporary workaround for compatibility with older Slicer
{

View File

@ -899,8 +899,9 @@ void SpinCtrl::BUILD() {
if (!wxOSX) temp->SetBackgroundStyle(wxBG_STYLE_PAINT);
wxGetApp().UpdateDarkUI(temp);
if (m_opt.height < 0 && parent_is_custom_ctrl)
if (m_opt.height < 0 && parent_is_custom_ctrl) {
opt_height = (double)temp->GetSize().GetHeight() / m_em_unit;
}
temp->Bind(wxEVT_KILL_FOCUS, ([this](wxEvent& e)
{
@ -1282,8 +1283,8 @@ void Choice::set_values(const std::vector<std::string>& values)
auto value = ww->GetValue();
ww->Clear();
ww->Append("");
for (const auto &el : values)
ww->Append(wxString(el));
for (const std::string& el : values)
ww->Append(from_u8(el));
ww->SetValue(value);
m_disable_change_event = false;

View File

@ -1680,7 +1680,7 @@ void GUI_App::SetWindowVariantForButton(wxButton* btn)
int GUI_App::get_max_font_pt_size()
{
const unsigned disp_count = wxDisplay::GetCount();
for (int i = 0; i < disp_count; i++) {
for (unsigned i = 0; i < disp_count; i++) {
const wxRect display_rect = wxDisplay(i).GetGeometry();
if (display_rect.width >= 2560 && display_rect.height >= 1440)
return 20;

View File

@ -1099,28 +1099,30 @@ std::vector<std::string> create_shape_warnings(const EmbossShape &shape, float s
// This waning is not connected to NSVGshape. It is about union of paths, but Zero index is shown first
size_t index = 0;
add_warning(index, _u8L("Final shape constains selfintersection or multiple points with same coordinate"));
add_warning(index, _u8L("Final shape constains selfintersection or multiple points with same coordinate."));
}
size_t shape_index = 0;
for (NSVGshape *shape = image.shapes; shape != NULL; shape = shape->next, ++shape_index) {
if (!(shape->flags & NSVG_FLAGS_VISIBLE)){
add_warning(shape_index * 2, GUI::format(_L("Shape is marked as invisible (%1%)"), shape->id));
add_warning(shape_index * 2, GUI::format(_L("Shape is marked as invisible (%1%)."), shape->id));
continue;
}
std::string fill_warning = create_fill_warning(*shape);
if (!fill_warning.empty())
add_warning(shape_index * 2, GUI::format(_L("Fill of shape (%1%) contains unsupported: %2% "), shape->id, fill_warning));
if (!fill_warning.empty()) {
// TRN: The first placeholder is shape identifier, the second one is text describing the problem.
add_warning(shape_index * 2, GUI::format(_L("Fill of shape (%1%) contains unsupported: %2%."), shape->id, fill_warning));
}
float minimal_width_in_mm = 1e-3f;
if (shape->strokeWidth <= minimal_width_in_mm * scale) {
add_warning(shape_index * 2, GUI::format(_L("Stroke of shape (%1%) is too thin (minimal width is %2% mm)"), shape->id, minimal_width_in_mm));
add_warning(shape_index * 2, GUI::format(_L("Stroke of shape (%1%) is too thin (minimal width is %2% mm)."), shape->id, minimal_width_in_mm));
continue;
}
std::string stroke_warning = create_stroke_warning(*shape);
if (!stroke_warning.empty())
add_warning(shape_index * 2 + 1, GUI::format(_L("Stroke of shape (%1%) contains unsupported: %2% "), shape->id, stroke_warning));
add_warning(shape_index * 2 + 1, GUI::format(_L("Stroke of shape (%1%) contains unsupported: %2%."), shape->id, stroke_warning));
}
return result;
}

View File

@ -1928,13 +1928,13 @@ void MainFrame::load_config_file()
DynamicPrintConfig config = wxGetApp().preset_bundle->full_config();
const auto* post_process = config.opt<ConfigOptionStrings>("post_process");
if (post_process != nullptr && !post_process->values.empty()) {
const wxString msg = _L("The selected config file contains a post-processing script") + "\n" + _L("Please review the script carefully before running it.");
wxString text;
for (const auto& s : post_process->values) {
const wxString msg = _L("The selected config file contains a post-processing script.\nPlease review the script carefully before exporting G-code.");
std::string text;
for (const std::string& s : post_process->values) {
text += s;
}
InfoDialog msg_dlg(nullptr, msg, text, true, wxOK | wxICON_WARNING);
InfoDialog msg_dlg(nullptr, msg, from_u8(text), true, wxOK | wxICON_WARNING);
msg_dlg.set_caption(wxString(SLIC3R_APP_NAME " - ") + _L("Attention!"));
msg_dlg.ShowModal();
}

View File

@ -943,8 +943,8 @@ boost::any ConfigOptionsGroup::get_config_value(const DynamicPrintConfig& config
else if (opt->gui_flags == "serialized") {
std::vector<std::string> values = config.option<ConfigOptionStrings>(opt_key)->values;
if (!values.empty() && !values[0].empty())
for (auto el : values)
text_value += el + ";";
for (const std::string& el : values)
text_value += from_u8(el) + ";";
ret = text_value;
}
else

View File

@ -2616,15 +2616,14 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
if (!config.empty()) {
const auto* post_process = config.opt<ConfigOptionStrings>("post_process");
if (post_process != nullptr && !post_process->values.empty()) {
wxString msg = type_3mf ? _L("The selected 3MF file contains a post-processing script") :
_L("The selected AMF file contains a post-processing script");
msg += "\n" + _L("Please review the script carefully before running it.");
wxString text;
for (const auto& s : post_process->values) {
// TRN The placeholder is either "3MF" or "AMF"
wxString msg = GUI::format_wxstr(_L("The selected %1% file contains a post-processing script.\n"
"Please review the script carefully before exporting G-code."), type_3mf ? "3MF" : "AMF" );
std::string text;
for (const std::string& s : post_process->values)
text += s;
}
InfoDialog msg_dlg(nullptr, msg, text, true, wxOK | wxICON_WARNING);
InfoDialog msg_dlg(nullptr, msg, from_u8(text), true, wxOK | wxICON_WARNING);
msg_dlg.set_caption(wxString(SLIC3R_APP_NAME " - ") + _L("Attention!"));
msg_dlg.ShowModal();
}
@ -5589,10 +5588,8 @@ void Plater::convert_gcode_to_ascii()
}
else {
output_file = rename_file(output_file, ".gcode");
wxString msg = _L("You are trying to convert to ASCII a binary file whose extension is '.gcode'.");
msg += "\n" + _L("The exported file will be renamed as:");
msg += "\n\n" + output_file;
msg += "\n\n" + _L("Continue with export?");
wxString msg = GUI::format_wxstr("The converted binary G-code file has '.gcode' extension.\n"
"The exported file will be renamed to:\n\n%1%\n\nDo you want to continue?", output_file);
MessageDialog msg_dlg(this, msg, _L("Warning"), wxYES_NO);
if (msg_dlg.ShowModal() != wxID_YES)
return;
@ -5669,10 +5666,8 @@ void Plater::convert_gcode_to_binary()
}
else {
output_file = rename_file(output_file, ".bgcode");
wxString msg = _L("You are trying to convert to binary an ASCII file whose extension is '.bgcode'.");
msg += "\n" + _L("The exported file will be renamed as:");
msg += "\n\n" + output_file;
msg += "\n\n" + _L("Continue with export?");
wxString msg = GUI::format_wxstr("The converted ASCII G-code file has '.bgcode' extension.\n"
"The exported file will be renamed to:\n\n%1%\n\nDo you want to continue?", output_file);
MessageDialog msg_dlg(this, msg, _L("Warning"), wxYES_NO);
if (msg_dlg.ShowModal() != wxID_YES)
return;

View File

@ -1372,10 +1372,10 @@ void Tab::update_preset_description_line()
if (!default_filament_profiles.empty())
{
description_line += "\n\n\t" + _(L("default filament profile")) + ": \n\t\t";
for (auto& profile : default_filament_profiles) {
for (const std::string& profile : default_filament_profiles) {
if (&profile != &*default_filament_profiles.begin())
description_line += ", ";
description_line += profile;
description_line += from_u8(profile);
}
}
break;
@ -1947,23 +1947,22 @@ void TabFilament::create_line_with_near_label_widget(ConfigOptionsGroupShp optgr
else
line = optgroup->create_single_option_line(optgroup->get_option(opt_key));
line.near_label_widget = [this, optgroup_wk = ConfigOptionsGroupWkp(optgroup), opt_key, opt_index](wxWindow* parent) {
wxWindow* check_box = CheckBox::GetNewWin(parent);
wxGetApp().UpdateDarkUI(check_box);
line.near_label_widget = [this, optgroup_wk = ConfigOptionsGroupWkp(optgroup), opt_key, opt_index](wxWindow* parent) {
wxWindow* check_box = CheckBox::GetNewWin(parent);
wxGetApp().UpdateDarkUI(check_box);
check_box->Bind(wxEVT_CHECKBOX, [optgroup_wk, opt_key, opt_index](wxCommandEvent& evt) {
const bool is_checked = evt.IsChecked();
if (auto optgroup_sh = optgroup_wk.lock(); optgroup_sh) {
if (Field *field = optgroup_sh->get_fieldc(opt_key, opt_index); field != nullptr) {
field->toggle(is_checked);
if (is_checked)
field->set_last_meaningful_value();
else
field->set_na_value();
}
check_box->Bind(wxEVT_CHECKBOX, [optgroup_wk, opt_key, opt_index](wxCommandEvent& evt) {
const bool is_checked = evt.IsChecked();
if (auto optgroup_sh = optgroup_wk.lock(); optgroup_sh) {
if (Field *field = optgroup_sh->get_fieldc(opt_key, opt_index); field != nullptr) {
field->toggle(is_checked);
if (is_checked)
field->set_last_meaningful_value();
else
field->set_na_value();
}
});
}
});
m_overrides_options[opt_key] = check_box;
return check_box;
@ -2435,6 +2434,7 @@ void TabFilament::msw_rescale()
void TabFilament::sys_color_changed()
{
wxGetApp().UpdateDarkUI(m_extruders_cb);
m_extruders_cb->Clear();
update_extruder_combobox();

View File

@ -306,7 +306,7 @@ MsgUpdateConfig::MsgUpdateConfig(const std::vector<Update> &updates, bool force_
}
if (! update.new_printers.empty()) {
flex->Add(new wxStaticText(this, wxID_ANY, _L_PLURAL("New printer:", "New printers:", update.new_printers.find(',') == std::string::npos ? 1 : 2)), 0, wxALIGN_RIGHT);
flex->Add(new wxStaticText(this, wxID_ANY, _L_PLURAL("New printer", "New printers", update.new_printers.find(',') == std::string::npos ? 1 : 2) + ":"), 0, wxALIGN_RIGHT);
auto* update_printer = new wxStaticText(this, wxID_ANY, from_u8(update.new_printers));
update_printer->Wrap(CONTENT_WIDTH * wxGetApp().em_unit());
flex->Add(update_printer);
@ -373,7 +373,7 @@ MsgUpdateForced::MsgUpdateForced(const std::vector<Update>& updates) :
}
if (!update.new_printers.empty()) {
versions->Add(new wxStaticText(this, wxID_ANY, _L_PLURAL("New printer:", "New printers:", update.new_printers.find(',') == std::string::npos ? 1 : 2))/*, 0, wxALIGN_RIGHT*/);
versions->Add(new wxStaticText(this, wxID_ANY, _L_PLURAL("New printer", "New printers", update.new_printers.find(',') == std::string::npos ? 1 : 2)+":")/*, 0, wxALIGN_RIGHT*/);
auto* update_printer = new wxStaticText(this, wxID_ANY, from_u8(update.new_printers));
update_printer->Wrap(CONTENT_WIDTH * wxGetApp().em_unit());
versions->Add(update_printer);

View File

@ -272,7 +272,7 @@ void ComboBox::mouseWheelMoved(wxMouseEvent &event)
{
event.Skip();
if (drop_down) return;
auto delta = (event.GetWheelRotation() < 0 == event.IsWheelInverted()) ? -1 : 1;
auto delta = ((event.GetWheelRotation() < 0) == event.IsWheelInverted()) ? -1 : 1;
unsigned int n = GetSelection() + delta;
if (n < GetCount()) {
SetSelection((int) n);

View File

@ -302,7 +302,7 @@ void DropDown::render(wxDC &dc)
}
// draw texts & icons
dc.SetTextForeground(text_color.colorForStates(states));
for (int i = 0; i < texts.size(); ++i) {
for (size_t i = 0; i < texts.size(); ++i) {
if (rcContent.GetBottom() < 0) {
rcContent.y += rowSize.y;
continue;
@ -460,13 +460,14 @@ void DropDown::mouseCaptureLost(wxMouseCaptureLostEvent &event)
void DropDown::mouseMove(wxMouseEvent &event)
{
wxPoint pt = event.GetPosition();
int text_size = int(texts.size());
if (pressedDown) {
wxPoint pt2 = offset + pt - dragStart;
dragStart = pt;
if (pt2.y > 0)
pt2.y = 0;
else if (pt2.y + rowSize.y * texts.size() < GetSize().y)
pt2.y = GetSize().y - rowSize.y * texts.size();
else if (pt2.y + rowSize.y * text_size < GetSize().y)
pt2.y = GetSize().y - rowSize.y * text_size;
if (pt2.y != offset.y) {
offset = pt2;
hover_item = -1; // moved
@ -476,7 +477,7 @@ void DropDown::mouseMove(wxMouseEvent &event)
}
if (!pressedDown || hover_item >= 0) {
int hover = (pt.y - offset.y) / rowSize.y;
if (hover >= (int) texts.size()) hover = -1;
if (hover >= text_size) hover = -1;
if (hover == hover_item) return;
hover_item = hover;
if (hover >= 0)
@ -489,17 +490,18 @@ void DropDown::mouseWheelMoved(wxMouseEvent &event)
{
auto delta = event.GetWheelRotation() > 0 ? rowSize.y : -rowSize.y;
wxPoint pt2 = offset + wxPoint{0, delta};
int text_size = int(texts.size());
if (pt2.y > 0)
pt2.y = 0;
else if (pt2.y + rowSize.y * texts.size() < GetSize().y)
pt2.y = GetSize().y - rowSize.y * texts.size();
else if (pt2.y + rowSize.y * text_size < GetSize().y)
pt2.y = GetSize().y - rowSize.y * text_size;
if (pt2.y != offset.y) {
offset = pt2;
} else {
return;
}
int hover = (event.GetPosition().y - offset.y) / rowSize.y;
if (hover >= (int) texts.size()) hover = -1;
if (hover >= text_size) hover = -1;
if (hover != hover_item) {
hover_item = hover;
if (hover >= 0) SetToolTip(texts[hover]);

View File

@ -297,7 +297,7 @@ void SpinInput::Create(wxWindow *parent,
text_ctrl->Bind(wxEVT_TEXT, &SpinInput::onText, this);
text_ctrl->Bind(wxEVT_TEXT_ENTER, &SpinInput::onTextEnter, this);
text_ctrl->Bind(wxEVT_KEY_DOWN, &SpinInput::keyPressed, this);
text_ctrl->Bind(wxEVT_RIGHT_DOWN, [this](auto &e) {}); // disable context menu
text_ctrl->Bind(wxEVT_RIGHT_DOWN, [](auto &e) {}); // disable context menu
button_inc = create_button(ButtonId::btnIncrease);
button_dec = create_button(ButtonId::btnDecrease);
delta = 0;
@ -403,7 +403,7 @@ void SpinInput::onTextEnter(wxCommandEvent &event)
void SpinInput::mouseWheelMoved(wxMouseEvent &event)
{
auto delta = (event.GetWheelRotation() < 0 == event.IsWheelInverted()) ? 1 : -1;
auto delta = ((event.GetWheelRotation() < 0) == event.IsWheelInverted()) ? 1 : -1;
SetValue(val + delta);
sendSpinEvent();
text_ctrl->SetFocus();
@ -473,7 +473,7 @@ void SpinInputDouble::Create(wxWindow *parent,
text_ctrl->Bind(wxEVT_TEXT, &SpinInputDouble::onText, this);
text_ctrl->Bind(wxEVT_TEXT_ENTER, &SpinInputDouble::onTextEnter, this);
text_ctrl->Bind(wxEVT_KEY_DOWN, &SpinInputDouble::keyPressed, this);
text_ctrl->Bind(wxEVT_RIGHT_DOWN, [this](auto &e) {}); // disable context menu
text_ctrl->Bind(wxEVT_RIGHT_DOWN, [](auto &e) {}); // disable context menu
button_inc = create_button(ButtonId::btnIncrease);
button_dec = create_button(ButtonId::btnDecrease);
delta = 0;
@ -600,7 +600,7 @@ void SpinInputDouble::onTextEnter(wxCommandEvent &event)
void SpinInputDouble::mouseWheelMoved(wxMouseEvent &event)
{
auto delta = (event.GetWheelRotation() < 0 == event.IsWheelInverted()) ? inc : -inc;
auto delta = ((event.GetWheelRotation() < 0) == event.IsWheelInverted()) ? inc : -inc;
SetValue(val + delta);
sendSpinEvent();
text_ctrl->SetFocus();

View File

@ -22,7 +22,7 @@ void StateColor::append(unsigned long color, int states)
{
if ((color & 0xff000000) == 0)
color |= 0xff000000;
wxColour cl; cl.SetRGBA(color & 0xff00ff00 | ((color & 0xff) << 16) | ((color >> 16) & 0xff));
wxColour cl; cl.SetRGBA((color & 0xff00ff00) | ((color & 0xff) << 16) | ((color >> 16) & 0xff));
append(cl, states);
}
@ -49,7 +49,7 @@ wxColour StateColor::defaultColor() {
wxColour StateColor::colorForStates(int states)
{
bool focused = takeFocusedAsHovered_ && (states & Focused);
for (int i = 0; i < statesList_.size(); ++i) {
for (size_t i = 0; i < statesList_.size(); ++i) {
int s = statesList_[i];
int on = s & 0xffff;
int off = s >> 16;
@ -69,18 +69,18 @@ wxColour StateColor::colorForStates(int states)
int StateColor::colorIndexForStates(int states)
{
for (int i = 0; i < statesList_.size(); ++i) {
for (size_t i = 0; i < statesList_.size(); ++i) {
int s = statesList_[i];
int on = s & 0xffff;
int off = s >> 16;
if ((on & states) == on && (off & ~states) == off) { return i; }
if ((on & states) == on && (off & ~states) == off) { return int(i); }
}
return -1;
}
bool StateColor::setColorForStates(wxColour const &color, int states)
{
for (int i = 0; i < statesList_.size(); ++i) {
for (size_t i = 0; i < statesList_.size(); ++i) {
if (statesList_[i] == states) {
colors_[i] = color;
return true;

View File

@ -52,7 +52,7 @@ void StateHandler::update_binds()
int diff = bind_states ^ bind_states_;
State states[] = {Enabled, Checked, Focused, Hovered, Pressed};
wxEventType events[] = {EVT_ENABLE_CHANGED, wxEVT_CHECKBOX, wxEVT_SET_FOCUS, wxEVT_ENTER_WINDOW, wxEVT_LEFT_DOWN};
wxEventType events2[] = {{0}, {0}, wxEVT_KILL_FOCUS, wxEVT_LEAVE_WINDOW, wxEVT_LEFT_UP};
wxEventType events2[] = {0, 0, wxEVT_KILL_FOCUS, wxEVT_LEAVE_WINDOW, wxEVT_LEFT_UP};
for (int i = 0; i < 5; ++i) {
int s = states[i];
if (diff & s) {
@ -82,7 +82,7 @@ void StateHandler::changed(wxEvent &event)
{
event.Skip();
wxEventType events[] = {EVT_ENABLE_CHANGED, wxEVT_CHECKBOX, wxEVT_SET_FOCUS, wxEVT_ENTER_WINDOW, wxEVT_LEFT_DOWN};
wxEventType events2[] = {{0}, {0}, wxEVT_KILL_FOCUS, wxEVT_LEAVE_WINDOW, wxEVT_LEFT_UP};
wxEventType events2[] = { 0, 0, wxEVT_KILL_FOCUS, wxEVT_LEAVE_WINDOW, wxEVT_LEFT_UP};
int old = states_;
// some events are from another window (ex: text_ctrl of TextInput), save state in states2_ to avoid conflicts
for (int i = 0; i < 5; ++i) {

View File

@ -78,7 +78,7 @@ void TextInput::Create(wxWindow * parent,
e.SetId(GetId());
ProcessEventLocally(e);
});
text_ctrl->Bind(wxEVT_RIGHT_DOWN, [this](auto &e) {}); // disable context menu
text_ctrl->Bind(wxEVT_RIGHT_DOWN, [](auto &e) {}); // disable context menu
if (!icon.IsEmpty()) {
this->drop_down_icon = ScalableBitmap(this, icon.ToStdString(), 16);
@ -86,12 +86,6 @@ void TextInput::Create(wxWindow * parent,
messureSize();
}
void TextInput::SetCornerRadius(double radius)
{
this->radius = radius;
Refresh();
}
void TextInput::SetLabel(const wxString& label)
{
wxWindow::SetLabel(label);

View File

@ -37,9 +37,7 @@ public:
const wxSize & size = wxDefaultSize,
long style = 0);
void SetCornerRadius(double radius);
void SetLabel(const wxString& label);
void SetLabel(const wxString& label) wxOVERRIDE;
void SetIcon(const wxBitmapBundle& icon);
@ -76,8 +74,7 @@ public:
protected:
virtual void OnEdit() {}
virtual void DoSetSize(
int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
void DoSetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO) wxOVERRIDE;
void DoSetToolTipText(wxString const &tip) override;

View File

@ -13,10 +13,15 @@
#include <boost/log/trivial.hpp>
#include <boost/filesystem.hpp>
#include "Widgets/ComboBox.hpp"
namespace Slic3r {
namespace GUI {
const char* WIFI_CONFIGFILE_NAME = "prusa_printer_settings.ini";
WifiConfigDialog::WifiConfigDialog(wxWindow* parent, std::string& file_path, RemovableDriveManager* removable_manager)
// TRN: This is the dialog title.
: DPIDialog(parent, wxID_ANY, _L("Wi-Fi Configuration File Generator"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
, m_wifi_scanner(new WifiScanner())
, out_file_path(file_path)
@ -31,29 +36,29 @@ WifiConfigDialog::WifiConfigDialog(wxWindow* parent, std::string& file_path, Rem
// TRN Wifi config dialog explanation line 1.
wxStaticText* explain_label1 = new wxStaticText(panel, wxID_ANY, _L("Generate a file to be loaded by a Prusa printer to configure its Wi-Fi connection."));
// TRN Wifi config dialog explanation line 2.
wxStaticText* explain_label2 = new wxStaticText(panel, wxID_ANY, _L("Write this file on a USB flash drive. Its name will be prusa_printer_settings.ini."));
wxStaticText* explain_label2 = new wxStaticText(panel, wxID_ANY, GUI::format_wxstr(_L("Write this file on the USB flash drive. Its name will be %1%."), WIFI_CONFIGFILE_NAME));
// TRN Wifi config dialog explanation line 3.
wxStaticText* explain_label3 = new wxStaticText(panel, wxID_ANY, _L("Your Prusa Printer should load this file automatically."));
// TRN Wifi config dialog explanation line 4.
wxStaticText* explain_label4 = new wxStaticText(panel, wxID_ANY, _L("Note: This file will contains SSID and password in plain text."));
wxStaticText* explain_label4 = new wxStaticText(panel, wxID_ANY, _L("Note: This file will contain the SSID and password in plain text."));
auto* ssid_sizer = new wxBoxSizer(wxHORIZONTAL);
// TRN SSID of WiFi network.
// TRN SSID of WiFi network. It is a standard abbreviation which should probably not change in most languages.
wxStaticText* ssid_label = new wxStaticText(panel, wxID_ANY, GUI::format_wxstr("%1%:", _L("SSID")));
m_ssid_combo = new wxComboBox(panel, wxID_ANY);
m_ssid_combo = new ::ComboBox(panel, wxID_ANY);
#if __APPLE__
m_ssid_combo->SetToolTip(_L("On some versions of MacOS, this only loads SSID of connected network."));
#endif // __APPLE__
rescan_networks(false);
// TRN Text of button to rescan visible networks in Wifi Config dialog.
wxButton* ssid_button = new wxButton(panel, wxID_ANY, _(L("Rescan")));
ssid_sizer->Add(m_ssid_combo, 1, wxALIGN_CENTER_VERTICAL, 10);
ssid_sizer->Add(m_ssid_combo, 1, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
ssid_sizer->Add(ssid_button, 0);
auto* pass_sizer = new wxBoxSizer(wxHORIZONTAL);
// TRN Password of WiFi network.
wxStaticText* password_label = new wxStaticText(panel, wxID_ANY, GUI::format_wxstr("%1%:", _L("Password")));
m_pass_textctrl = new wxTextCtrl(panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize);
m_pass_textctrl = new ::TextInput(panel, "", "", "", wxDefaultPosition, wxDefaultSize);
pass_sizer->Add(m_pass_textctrl, 1, wxALIGN_CENTER_VERTICAL, 10);
#if __APPLE__
// TRN Text of button to retrieve password from keychain in Wifi Config dialog. Only on Mac.
@ -67,11 +72,11 @@ WifiConfigDialog::WifiConfigDialog(wxWindow* parent, std::string& file_path, Rem
auto* drive_sizer = new wxBoxSizer(wxHORIZONTAL);
// TRN description of Combo Box with path to USB drive.
wxStaticText* drive_label = new wxStaticText(panel, wxID_ANY, GUI::format_wxstr("%1%:", _L("Drive")));
m_drive_combo = new wxComboBox(panel, wxID_ANY);
m_drive_combo = new ::ComboBox(panel, wxID_ANY);
rescan_drives();
// TRN Text of button to rescan connect usb drives in Wifi Config dialog.
wxButton* drive_button = new wxButton(panel, wxID_ANY, _(L("Rescan")));
drive_sizer->Add(m_drive_combo, 1, wxALIGN_CENTER_VERTICAL, 10);
drive_sizer->Add(m_drive_combo, 1, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
drive_sizer->Add(drive_button, 0);
// TRN Text of button to write config file in Wifi Config dialog.
@ -111,6 +116,8 @@ WifiConfigDialog::WifiConfigDialog(wxWindow* parent, std::string& file_path, Rem
m_ssid_combo->Bind(wxEVT_TEXT, &WifiConfigDialog::on_combo, this);
drive_button->Bind(wxEVT_BUTTON, &WifiConfigDialog::on_rescan_drives, this);
ssid_button->Bind(wxEVT_BUTTON, &WifiConfigDialog::on_rescan_networks, this);
wxGetApp().UpdateDlgDarkUI(this);
}
WifiConfigDialog::~WifiConfigDialog()
@ -208,7 +215,7 @@ void WifiConfigDialog::on_ok(wxCommandEvent& e)
return;
}
boost::filesystem::path file_path = boost::filesystem::path(selected_path) / "prusa_printer_settings.ini";
boost::filesystem::path file_path = boost::filesystem::path(selected_path) / WIFI_CONFIGFILE_NAME;
bool path_on_removable_media = m_removable_manager->set_and_verify_last_save_path(file_path.string());
if (!path_on_removable_media) {

View File

@ -10,6 +10,9 @@
#include <wx/combobox.h>
#include <wx/textctrl.h>
#include "Widgets/ComboBox.hpp"
#include "Widgets/TextInput.hpp"
namespace Slic3r {
namespace GUI {
@ -20,9 +23,9 @@ public:
WifiConfigDialog(wxWindow* parent, std::string& file_path, RemovableDriveManager* removable_manager);
~WifiConfigDialog();
private:
wxComboBox* m_ssid_combo {nullptr};
wxTextCtrl* m_pass_textctrl {nullptr};
wxComboBox* m_drive_combo {nullptr};
::ComboBox* m_ssid_combo {nullptr};
::TextInput* m_pass_textctrl {nullptr};
::ComboBox* m_drive_combo {nullptr};
void on_ok(wxCommandEvent& e);
void on_combo(wxCommandEvent& e);

View File

@ -71,11 +71,8 @@ TEST_CASE("Moments calculation for rotated axis.", "[SupportSpotsGenerator]") {
Integrals integrals{{polygon}};
std::mt19937 generator{std::random_device{}()};
std::uniform_real_distribution<float> angle_distribution{0.f, float(2*M_PI)};
// Meassured counterclockwise from (1, 0)
const float angle = angle_distribution(generator);
const float angle = 1.432f;
Vec2f axis{std::cos(angle), std::sin(angle)};
float moment_calculated_then_rotated = compute_second_moment(
@ -93,7 +90,8 @@ TEST_CASE("Moments calculation for rotated axis.", "[SupportSpotsGenerator]") {
Vec2f{1, 0}
);
CHECK(moment_calculated_then_rotated == Approx(moment_rotated_polygon));
// Up to 0.1% accuracy
CHECK_THAT(moment_calculated_then_rotated, Catch::Matchers::WithinRel(moment_rotated_polygon, 0.001f));
}
struct ObjectPartFixture {

View File

@ -3,7 +3,7 @@
set(SLIC3R_APP_NAME "PrusaSlicer")
set(SLIC3R_APP_KEY "PrusaSlicer")
set(SLIC3R_VERSION "2.7.0-alpha0")
set(SLIC3R_VERSION "2.7.0-alpha1")
set(SLIC3R_BUILD_ID "PrusaSlicer-${SLIC3R_VERSION}+UNKNOWN")
set(SLIC3R_RC_VERSION "2,7,0,0")
set(SLIC3R_RC_VERSION_DOTS "2.7.0.0")