Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sn4k3/UVtools.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiago Conceição <Tiago_caza@hotmail.com>2020-11-03 02:45:39 +0300
committerTiago Conceição <Tiago_caza@hotmail.com>2020-11-03 02:45:39 +0300
commit3c0a41a049cac63aab2ed7b5a0c7d53813c6876d (patch)
tree5a5c1cb685ea5a5f3b773d817b8aa603e690ef8b
parent15094f96cc42a39f40a1f8182bb0bf6716b32db2 (diff)
v1.1.2
* (Add) Program start elapsed seconds on Log * (Add) Lift heights @ speeds, retract speed, light-off information to status bar * (Fix) Per layer settings are being lost when doing operations via tools that changes the layer count * (Fix) Current layer height mm was being calculated instead of showing the stored position Z value (For hacked files) * (Fix) Zip: By using hacked gcodes were possible to do a lift sequence without returning back to Z layer position * (Fix) ZCodex: Read per layer lift height/speed, retract speed and pwm from GCode * (Fix) Status bar, layer top and bottom bar: Break content down for the next line if window size overlaps the controls * (Fix) Status bar: Make right buttons same height as left buttons * (Improvement) CWS: Better gcode parser for decoding * (Change) GCodes: Cure commands (Light-on/Cure time/Light-off) are only exposed when exposure time and pwm are present and greater than 0 [Safe guard] * (Change) Zip: If only one G0 command found per layer, it will be associated to the cure z position (No lift height) * (Change) Merged bottom/normal exposure times on status bar * (Change) Tabs: Change controls spacing from 5 to 2 for better looking * (Change) Deploy UVtools self-contained per platform specific: (#89) * Platform optimized * Reduced the package size * Includes .NET Core assemblies and dont require the installation of .NET Core * Can execute UVtools by double click on "UVtools" file or via ".\UVtools" on terminal * **Naming:** UVtools_[os]-[architecture]_v[version].zip * **"universal"** zip file that includes the portable version, os and architecture independent but requires dotnet to run, these build were used in all previous versions
-rw-r--r--.gitignore1
-rw-r--r--CHANGELOG.md23
-rw-r--r--CompileWindows.bat4
-rw-r--r--CreateRelease.WPF.ps1152
-rw-r--r--README.md17
-rw-r--r--UVtools.Core/FileFormats/CWSFile.cs26
-rw-r--r--UVtools.Core/FileFormats/ChituboxFile.cs6
-rw-r--r--UVtools.Core/FileFormats/ChituboxZipFile.cs46
-rw-r--r--UVtools.Core/FileFormats/FileFormat.cs30
-rw-r--r--UVtools.Core/FileFormats/ImageFile.cs2
-rw-r--r--UVtools.Core/FileFormats/LGSFile.cs10
-rw-r--r--UVtools.Core/FileFormats/PHZFile.cs6
-rw-r--r--UVtools.Core/FileFormats/PWSFile.cs4
-rw-r--r--UVtools.Core/FileFormats/PhotonSFile.cs11
-rw-r--r--UVtools.Core/FileFormats/SL1File.cs23
-rw-r--r--UVtools.Core/FileFormats/UVJFile.cs2
-rw-r--r--UVtools.Core/FileFormats/ZCodexFile.cs61
-rw-r--r--UVtools.Core/Layer/Layer.cs119
-rw-r--r--UVtools.Core/Layer/LayerManager.cs27
-rw-r--r--UVtools.Core/UVtools.Core.csproj2
-rw-r--r--UVtools.InstallerMM/UVtools.InstallerMM.wxs805
-rw-r--r--UVtools.WPF/App.axaml.cs15
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/AnyCubic Photon S.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/AnyCubic Photon Zero.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/AnyCubic Photon.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Creality LD-002H.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Creality LD-002R.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Creality LD-006.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/EPAX E10 Mono.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/EPAX E6 Mono.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/EPAX X1.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/EPAX X10 4K Mono.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/EPAX X10.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/EPAX X133 4K Mono.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/EPAX X156 4K Color.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/EPAX X1K 2K Mono.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Elegoo Mars 2 Pro.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Elegoo Mars C.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Elegoo Mars.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Elegoo Saturn.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Kelant S400.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Longer Orange 10.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Longer Orange 30.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Longer Orange4K.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Nova3D Bene4 Mono.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Nova3D Elfin.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Peopoly Phenom L.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Peopoly Phenom Noir.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Peopoly Phenom.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle 16.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle 4K.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle Lite.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle XL Lite.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle XL.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Phrozen Sonic 4K.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Phrozen Sonic Mighty 4K.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Phrozen Sonic Mini 4K.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Phrozen Sonic Mini.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Phrozen Sonic.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Phrozen Transform.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/QIDI S-Box.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/QIDI Shadow5.5.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/QIDI Shadow6.0 Pro.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Universal 0.025 UltraDetail - Heavy Supports.ini44
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Universal 0.025 UltraDetail - Medium Supports.ini44
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Universal 0.035 Detail - Heavy Supports.ini44
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Universal 0.035 Detail - Medium Supports.ini44
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Universal 0.05 Normal - Heavy Supports.ini44
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Universal 0.05 Normal - Medium Supports.ini44
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Universal 0.1 Fast - Heavy Supports.ini44
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Universal 0.1 Fast - Medium Supports.ini44
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Voxelab Polaris.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Voxelab Proxima.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Wanhao D7.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Wanhao D8.ini37
-rw-r--r--UVtools.WPF/Assets/PrusaSlicer/Zortrax Inkspire.ini37
-rw-r--r--UVtools.WPF/MainWindow.LayerPreview.cs2
-rw-r--r--UVtools.WPF/MainWindow.axaml479
-rw-r--r--UVtools.WPF/MainWindow.axaml.cs4
-rw-r--r--UVtools.WPF/Program.cs4
-rw-r--r--UVtools.WPF/Structures/PEProfileFolder.cs4
-rw-r--r--UVtools.WPF/UVtools.WPF.csproj23
-rw-r--r--UVtools.WPF/Windows/ToolWindow.axaml.cs4
84 files changed, 3471 insertions, 532 deletions
diff --git a/.gitignore b/.gitignore
index beec460..029334f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,6 +21,7 @@ UVtools.CAD/OldVersions/
mono_crash.*
# Build results
+publish/
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 84c71e4..cfc254e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,28 @@
# Changelog
+## 02/11/2020 - v1.1.2
+
+* (Add) Program start elapsed seconds on Log
+* (Add) Lift heights @ speeds, retract speed, light-off information to status bar
+* (Fix) Per layer settings are being lost when doing operations via tools that changes the layer count
+* (Fix) Current layer height mm was being calculated instead of showing the stored position Z value (For hacked files)
+* (Fix) Zip: By using hacked gcodes were possible to do a lift sequence without returning back to Z layer position
+* (Fix) ZCodex: Read per layer lift height/speed, retract speed and pwm from GCode
+* (Fix) Status bar, layer top and bottom bar: Break content down for the next line if window size overlaps the controls
+* (Fix) Status bar: Make right buttons same height as left buttons
+* (Improvement) CWS: Better gcode parser for decoding
+* (Change) GCodes: Cure commands (Light-on/Cure time/Light-off) are only exposed when exposure time and pwm are present and greater than 0 [Safe guard]
+* (Change) Zip: If only one G0 command found per layer, it will be associated to the cure z position (No lift height)
+* (Change) Merged bottom/normal exposure times on status bar
+* (Change) Tabs: Change controls spacing from 5 to 2 for better looking
+* (Change) Deploy UVtools self-contained per platform specific: (#89)
+ * Platform optimized
+ * Reduced the package size
+ * Includes .NET Core assemblies and dont require the installation of .NET Core
+ * Can execute UVtools by double click on "UVtools" file or via ".\UVtools" on terminal
+ * **Naming:** UVtools_[os]-[architecture]_v[version].zip
+ * **"universal"** zip file that includes the portable version, os and architecture independent but requires dotnet to run, these build were used in all previous versions
+
## 01/11/2020 - v1.1.1
* (Fix) PHZ, PWS, LGS, SL1 and ZCodex per layer settings and implement missing properties on decode
diff --git a/CompileWindows.bat b/CompileWindows.bat
index 624babb..8c2bccd 100644
--- a/CompileWindows.bat
+++ b/CompileWindows.bat
@@ -6,9 +6,9 @@ if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Cu
IF [%MSBUILD_PATH%] == [] GOTO noMSBuild
-echo PrusaSL1Viewer.sln Compile
+echo UVtools.sln Compile
echo %MSBUILD_PATH%
-%MSBUILD_PATH% -p:Configuration=Release PrusaSL1Viewer.sln
+%MSBUILD_PATH% -p:Configuration=Release UVtools.sln
GOTO end
diff --git a/CreateRelease.WPF.ps1 b/CreateRelease.WPF.ps1
index 3341de9..86e6210 100644
--- a/CreateRelease.WPF.ps1
+++ b/CreateRelease.WPF.ps1
@@ -10,6 +10,9 @@
# https://gist.github.com/lantrix/738ebfa616d5222a8b1db947793bc3fc
#
+####################################
+### Fix Zip slash ###
+####################################
Add-Type -AssemblyName System.Text.Encoding
Add-Type -AssemblyName System.IO.Compression.FileSystem
@@ -23,11 +26,148 @@ class FixedEncoder : System.Text.UTF8Encoding {
}
}
+####################################
+### Configuration ###
+####################################
+# Profilling
+$stopWatch = New-Object -TypeName System.Diagnostics.Stopwatch
+$deployStopWatch = New-Object -TypeName System.Diagnostics.Stopwatch
+$stopWatch.Start()
-cd $PSScriptRoot
-$version = (Get-Command UVtools.WPF\bin\Release\netcoreapp3.1\UVtools.dll).FileVersionInfo.ProductVersion
-echo "UVtools v$version"
+# Script working directory
+Set-Location $PSScriptRoot
-#[IO.Compression.ZipFile]::CreateFromDirectory("$PSScriptRoot\UVtools.WPF\bin\Release\netcoreapp3.1", "$PSScriptRoot\UVtools.WPF\bin\UVtools_v$version.zip")
-[System.IO.Compression.ZipFile]::CreateFromDirectory("$PSScriptRoot\UVtools.WPF\bin\Release\netcoreapp3.1", "$PSScriptRoot\UVtools.WPF\bin\UVtools_v$version.zip", [System.IO.Compression.CompressionLevel]::Optimal, $false, [FixedEncoder]::new())
-Copy-Item "$PSScriptRoot\UVtools.Installer\bin\Release\UVtools.msi" -Destination "$PSScriptRoot\UVtools.WPF\bin\UVtools_v$version.msi" \ No newline at end of file
+# Variables
+$software = "UVtools"
+$project = "UVtools.WPF"
+$buildWith = "Release"
+$releaseFolder = "$PSScriptRoot\$project\bin\$buildWith\netcoreapp3.1"
+$publishFolder = "$PSScriptRoot\publish"
+
+#$version = (Get-Command "$releaseFolder\UVtools.dll").FileVersionInfo.ProductVersion
+$projectXml = [Xml] (Get-Content "$PSScriptRoot\$project\$project.csproj")
+$version = "$($projectXml.Project.PropertyGroup.Version)".Trim();
+if([string]::IsNullOrWhiteSpace($version)){
+ Write-Error "Can not detect the UVtools version, does $project\$project.csproj exists?"
+ exit
+}
+
+# MSI Variables
+$installers = @("UVtools.InstallerMM", "UVtools.Installer")
+$msiSourceFile = "$PSScriptRoot\UVtools.Installer\bin\Release\UVtools.msi"
+$msiTargetFile = "$publishFolder\${software}_${runtime}_v$version.msi"
+$msbuild = "`"${env:ProgramFiles(x86)}\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe`" /t:Build /p:Configuration=$buildWith /p:MSIProductVersion=$version"
+
+Write-Output "
+####################################
+### UVtools builder & deployer ###
+####################################
+Version: $version [$buildWith]
+"
+
+####################################
+### Clean up previous publish ###
+####################################
+# Clean up previous publish
+Remove-Item $publishFolder -Recurse -ErrorAction Ignore # Clean
+
+####################################
+### Self-contained runtimes ###
+####################################
+$runtimes =
+@{
+ "win-x64" = @{
+ "extraCmd" = "-p:PublishReadyToRun=true"
+ "exclude" = @("libcvextern.so", "libcvextern.dylib", "UVtools.sh")
+ }
+ "linux-x64" = @{
+ "extraCmd" = "-p:PublishReadyToRun=true"
+ "exclude" = @("x86", "x64", "libcvextern.dylib")
+ }
+ "rhel-x64" = @{
+ "extraCmd" = "-p:PublishReadyToRun=true"
+ "exclude" = @("x86", "x64", "libcvextern.dylib")
+ }
+ #"unix-x64" = @{
+ # "extraCmd" = "-p:PublishReadyToRun=true"
+ # "exclude" = @("x86", "x64", "libcvextern.dylib")
+ #}
+ "osx-x64" = @{
+ "extraCmd" = "-p:PublishReadyToRun=true"
+ "exclude" = @("x86", "x64", "libcvextern.so")
+ }
+}
+
+foreach ($obj in $runtimes.GetEnumerator()) {
+ # Configuration
+ $deployStopWatch.Restart()
+ $runtime = $obj.Name; # runtime name
+ $extraCmd = $obj.extraCmd; # extra cmd to run with dotnet
+ $targetZip = "$publishFolder\${software}_${runtime}_v$version.zip" # Target zip filename
+
+ # Deploy
+ Write-Output "################################
+Building: $runtime"
+ dotnet publish $project -o "$publishFolder\$runtime" -c $buildWith -r $runtime $extraCmd
+
+ # Cleanup
+ Remove-Item "$releaseFolder\$runtime" -Recurse -ErrorAction Ignore
+ foreach ($excludeObj in $obj.Value.exclude) {
+ Write-Output "Excluding: $excludeObj"
+ Remove-Item "$publishFolder\$runtime\$excludeObj" -Recurse -ErrorAction Ignore
+ }
+
+ # Zip
+ Write-Output "Compressing $runtime to: $targetZip"
+ [System.IO.Compression.ZipFile]::CreateFromDirectory("$publishFolder\$runtime", $targetZip, [System.IO.Compression.CompressionLevel]::Optimal, $false, [FixedEncoder]::new())
+ $deployStopWatch.Stop()
+
+ Write-Output "Took: $($deployStopWatch.Elapsed)
+################################
+"
+}
+
+# Universal package
+$deployStopWatch.Restart()
+$runtime = "universal-x86-x64"
+$targetZip = "$publishFolder\${software}_${runtime}_v$version.zip"
+
+Write-Output "################################
+Building: $runtime"
+dotnet build $project -c $buildWith
+
+Write-Output "Compressing $runtime to: $targetZip"
+[System.IO.Compression.ZipFile]::CreateFromDirectory($releaseFolder, $targetZip, [System.IO.Compression.CompressionLevel]::Optimal, $false, [FixedEncoder]::new())
+Write-Output "Took: $($deployStopWatch.Elapsed)
+################################
+"
+$stopWatch.Stop()
+
+
+# MSI Installer for Windows
+$deployStopWatch.Restart()
+$runtime = 'win-x64'
+Write-Output "################################
+Building: $runtime MSI Installer"
+
+foreach($installer in $installers)
+{
+ # Clean and build MSI
+ Remove-Item "$PSScriptRoot\$installer\obj" -Recurse -ErrorAction Ignore
+ Remove-Item "$PSScriptRoot\$installer\bin" -Recurse -ErrorAction Ignore
+ iex "& $msbuild $installer\$installer.wixproj"
+}
+
+Copy-Item $msiSourceFile $msiTargetFile
+
+Write-Output "Took: $($deployStopWatch.Elapsed)
+################################
+"
+
+
+
+Write-Output "
+####################################
+### Completed ###
+####################################
+In: $($stopWatch.Elapsed)" \ No newline at end of file
diff --git a/README.md b/README.md
index fc4c322..5ed37c4 100644
--- a/README.md
+++ b/README.md
@@ -159,13 +159,16 @@ After some tests without failure you can increase your confidence and ignore thi
1. Windows 7 or greater
1. If on Windows 10 N or NK: [Media Feature Pack](https://www.microsoft.com/download/details.aspx?id=48231) must be installed
1. .NET Framework 4.8 installed (Comes pre-installed on Windows 10 with last updates)
-1. 2 GB RAM or higher
+1. 4GB RAM or higher
### Linux
**Ubuntu/Mint/Debian/Similars**
+1. CentOS, Debian, Fedora, Ubuntu, and derivatives
+1. 4GB RAM or higher
+
```bash
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
@@ -178,12 +181,17 @@ sudo apt-get install -y libjpeg-dev libpng-dev libgeotiff-dev libdc1394-22 libav
To run UVtools open it folder on a terminal and call one of:
+* Double-click UVtools file
* `dotnet UVtools.dll`
* `sh UVtools.sh`
* As a pratical alternative you can create a shortcut on Desktop
### Mac
+1. macOS 10.12 Sierra
+ 1. If on a previous macOS version, use the universal UVtools package
+1. 4GB RAM or higher
+
<!---
* Donwload and install: https://dotnet.microsoft.com/download/dotnet-core/thank-you/sdk-3.1.402-macos-x64-installer
brew install libjpeg libpng libgeotiff libdc1394 ffmpeg openexr tbb
@@ -197,6 +205,7 @@ brew cask install dotnet
To run UVtools open it folder on a terminal and call one of:
+* Double-click UVtools file
* `dotnet UVtools.dll`
* `sh UVtools.sh`
* As a pratical alternative you can create a shortcut on Desktop
@@ -205,10 +214,10 @@ To run UVtools open it folder on a terminal and call one of:
There are multiple ways to open your file:
-1. Open UVtools.exe and load your file (CTRL + O) (File -> Open)
-2. Open UVtools.exe and drag and drop your file inside window
+1. Open UVtools and load your file (CTRL + O) (File -> Open)
+2. Open UVtools and drag and drop your file inside window
3. Drag and drop file into UVtools.exe
-4. Set UVtools.exe the default program to open your files
+4. Set UVtools the default program to open your files
## Library -> Developers
diff --git a/UVtools.Core/FileFormats/CWSFile.cs b/UVtools.Core/FileFormats/CWSFile.cs
index b1532da..c57af3a 100644
--- a/UVtools.Core/FileFormats/CWSFile.cs
+++ b/UVtools.Core/FileFormats/CWSFile.cs
@@ -495,8 +495,6 @@ namespace UVtools.Core.FileFormats
//float currentHeight = 0;
- int layerSize = OutputSettings.LayersNum.ToString().Length;
-
inputFile.Entries.AsParallel().ForAllInApproximateOrder(zipArchiveEntry =>
//foreach (var zipArchiveEntry in inputFile.Entries)
{
@@ -525,7 +523,7 @@ namespace UVtools.Core.FileFormats
.Trim(' ', '\n', '\r', '\t');
//var startCurrPos = stripGcode.Remove(0, ";currPos:".Length);
- float liftHeight = GetInitialLayerValueOrNormal(layerIndex, BottomLiftHeight, LiftHeight);
+ float liftHeight = 0;
float liftSpeed = GetInitialLayerValueOrNormal(layerIndex, BottomLiftSpeed, LiftSpeed);
float retractSpeed = RetractSpeed;
float lightOffDelay = GetInitialLayerValueOrNormal(layerIndex, BottomLayerOffTime, LayerOffTime);
@@ -539,12 +537,13 @@ namespace UVtools.Core.FileFormats
if (moveG1Regex.Success)
{
- liftHeight = float.Parse(moveG1Regex.Groups[1].Value, CultureInfo.InvariantCulture);
- liftSpeed = float.Parse(moveG1Regex.Groups[3].Value, CultureInfo.InvariantCulture);
+ var liftHeightTemp = float.Parse(moveG1Regex.Groups[1].Value, CultureInfo.InvariantCulture);
+ var liftSpeedTemp = float.Parse(moveG1Regex.Groups[3].Value, CultureInfo.InvariantCulture);
moveG1Regex = moveG1Regex.NextMatch();
if (moveG1Regex.Success)
{
- //float retractHeight = Math.Abs(float.Parse(moveG1Regex.Groups[1].Value, CultureInfo.InvariantCulture));
+ liftHeight = liftHeightTemp;
+ liftSpeed = liftSpeedTemp;
retractSpeed = float.Parse(moveG1Regex.Groups[3].Value, CultureInfo.InvariantCulture);
}
}
@@ -613,9 +612,8 @@ namespace UVtools.Core.FileFormats
if (Printer == PrinterType.Elfin)
{
this[layerIndex] =
- new Layer(layerIndex, buffer, zipArchiveEntry.Name)
+ new Layer(layerIndex, buffer, LayerManager)
{
- PositionZ = GetHeightFromLayer(layerIndex),
ExposureTime = exposureTime,
LiftHeight = liftHeight,
LiftSpeed = liftSpeed,
@@ -639,9 +637,8 @@ namespace UVtools.Core.FileFormats
}
this[layerIndex] =
- new Layer(layerIndex, matDecode, zipArchiveEntry.Name)
+ new Layer(layerIndex, matDecode, LayerManager)
{
- PositionZ = GetHeightFromLayer(layerIndex),
ExposureTime = exposureTime,
LiftHeight = liftHeight,
LiftSpeed = liftSpeed,
@@ -691,9 +688,12 @@ namespace UVtools.Core.FileFormats
{
Layer layer = this[layerIndex];
GCode.AppendLine($"{GCodeKeywordSlice} {layerIndex}");
- GCode.AppendLine($"M106 S{layer.LightPWM}");
- GCode.AppendLine($"{GCodeKeywordDelay} {layer.ExposureTime * 1000}");
- GCode.AppendLine("M106 S0");
+ if (layer.ExposureTime > 0 && layer.LightPWM > 0)
+ {
+ GCode.AppendLine($"M106 S{layer.LightPWM}");
+ GCode.AppendLine($"{GCodeKeywordDelay} {layer.ExposureTime * 1000}");
+ GCode.AppendLine("M106 S0");
+ }
GCode.AppendLine(GCodeKeywordSliceBlank);
if (lastZPosition != layer.PositionZ)
diff --git a/UVtools.Core/FileFormats/ChituboxFile.cs b/UVtools.Core/FileFormats/ChituboxFile.cs
index 2d38108..1b5a19a 100644
--- a/UVtools.Core/FileFormats/ChituboxFile.cs
+++ b/UVtools.Core/FileFormats/ChituboxFile.cs
@@ -1556,15 +1556,11 @@ namespace UVtools.Core.FileFormats
using (var image = LayerDefinitions[0, layerIndex].Decode((uint) layerIndex))
{
- var layer = new Layer((uint) layerIndex, image)
+ var layer = new Layer((uint) layerIndex, image, LayerManager)
{
PositionZ = LayerDefinitions[0, layerIndex].LayerPositionZ,
ExposureTime = LayerDefinitions[0, layerIndex].LayerExposure,
- LiftHeight = GetInitialLayerValueOrNormal((uint)layerIndex, BottomLiftHeight, LiftHeight),
- LiftSpeed = GetInitialLayerValueOrNormal((uint)layerIndex, BottomLiftSpeed, LiftSpeed),
- RetractSpeed = RetractSpeed,
LayerOffTime = LayerDefinitions[0, layerIndex].LayerOffSeconds,
- LightPWM = GetInitialLayerValueOrNormal((uint)layerIndex, BottomLightPWM, LightPWM),
};
if (!(LayerDefinitionsEx is null))
diff --git a/UVtools.Core/FileFormats/ChituboxZipFile.cs b/UVtools.Core/FileFormats/ChituboxZipFile.cs
index f1c1d08..9e37497 100644
--- a/UVtools.Core/FileFormats/ChituboxZipFile.cs
+++ b/UVtools.Core/FileFormats/ChituboxZipFile.cs
@@ -448,6 +448,7 @@ namespace UVtools.Core.FileFormats
progress.ItemCount = LayerCount;
var gcode = GCode?.ToString();
+ float lastPostZ = LayerHeight;
for (uint layerIndex = 0; layerIndex < HeaderSettings.LayerCount; layerIndex++)
{
@@ -461,15 +462,7 @@ namespace UVtools.Core.FileFormats
if (IsPHZZip) // PHZ file
{
- this[layerIndex] = new Layer(layerIndex, entry.Open(), entry.Name)
- {
- PositionZ = GetHeightFromLayer(layerIndex),
- ExposureTime = GetInitialLayerValueOrNormal(layerIndex, BottomExposureTime, ExposureTime),
- LiftHeight = GetInitialLayerValueOrNormal(layerIndex, BottomLiftHeight, LiftHeight),
- LiftSpeed = GetInitialLayerValueOrNormal(layerIndex, BottomLiftSpeed, LiftSpeed),
- RetractSpeed = RetractSpeed,
- LightPWM = GetInitialLayerValueOrNormal(layerIndex, BottomLightPWM, LightPWM),
- };
+ this[layerIndex] = new Layer(layerIndex, entry.Open(), LayerManager);
progress++;
continue;;
}
@@ -480,7 +473,7 @@ namespace UVtools.Core.FileFormats
stripGcode = stripGcode.Substring(0, stripGcode.IndexOf(";LAYER_END")).Trim(' ', '\n', '\r', '\t');
//var startCurrPos = stripGcode.Remove(0, ";currPos:".Length);
- float posZ;
+ float posZ = lastPostZ;
float liftHeight = GetInitialLayerValueOrNormal(layerIndex, BottomLiftHeight, LiftHeight);
float liftSpeed = GetInitialLayerValueOrNormal(layerIndex, BottomLiftSpeed, LiftSpeed);
float retractSpeed = RetractSpeed;
@@ -488,13 +481,13 @@ namespace UVtools.Core.FileFormats
byte pwm = GetInitialLayerValueOrNormal(layerIndex, BottomLightPWM, LightPWM); ;
float exposureTime = GetInitialLayerValueOrNormal(layerIndex, BottomExposureTime, ExposureTime);
- var currPosRegex = Regex.Match(stripGcode, @";currPos:([+-]?([0-9]*[.])?[0-9]+)", RegexOptions.IgnoreCase);
+ //var currPosRegex = Regex.Match(stripGcode, @";currPos:([+-]?([0-9]*[.])?[0-9]+)", RegexOptions.IgnoreCase);
var moveG0Regex = Regex.Match(stripGcode, @"G0 Z([+-]?([0-9]*[.])?[0-9]+) F(\d+)", RegexOptions.IgnoreCase);
var waitG4Regex = Regex.Match(stripGcode, @"G4 P(\d+)", RegexOptions.IgnoreCase);
var pwmM106Regex = Regex.Match(stripGcode, @"M106 S(\d+)", RegexOptions.IgnoreCase);
- if (currPosRegex.Success)
+ /*if (currPosRegex.Success)
{
var posZRegex = currPosRegex.Groups[1].Value;
posZ = float.Parse(posZRegex, CultureInfo.InvariantCulture);
@@ -502,7 +495,7 @@ namespace UVtools.Core.FileFormats
else
{
posZ = GetHeightFromLayer(layerIndex);
- }
+ }*/
if (moveG0Regex.Success)
{
@@ -515,6 +508,11 @@ namespace UVtools.Core.FileFormats
retractSpeed = float.Parse(moveG0Regex.Groups[3].Value, CultureInfo.InvariantCulture);
liftHeight = (float) Math.Round(liftHeightTemp - retractHeight, 2);
liftSpeed = liftSpeedTemp;
+ lastPostZ = posZ = retractHeight;
+ }
+ else
+ {
+ lastPostZ = posZ = liftHeightTemp;
}
}
@@ -545,7 +543,7 @@ namespace UVtools.Core.FileFormats
}
}
- this[layerIndex] = new Layer(layerIndex, entry.Open(), entry.Name)
+ this[layerIndex] = new Layer(layerIndex, entry.Open(), LayerManager)
{
PositionZ = posZ,
ExposureTime = exposureTime,
@@ -623,23 +621,29 @@ namespace UVtools.Core.FileFormats
GCode.AppendLine($";LAYER_START:{layerIndex}");
GCode.AppendLine($";currPos:{layer.PositionZ}");
- GCode.AppendLine($"M6054 \"{layerIndex + 1}.png\";show Image");
+ if (layer.ExposureTime > 0 && pwmValue > 0)
+ {
+ GCode.AppendLine($"M6054 \"{layerIndex + 1}.png\";show Image");
+ }
// Absolute gcode
if (liftHeight > 0 && liftZHeight > layer.PositionZ)
{
GCode.AppendLine($"G0 Z{liftZHeight} F{liftSpeed};Z Lift");
+ GCode.AppendLine($"G0 Z{layer.PositionZ} F{retractSpeed};Layer position");
}
+ else if (lastZPosition < layer.PositionZ)
+ GCode.AppendLine($"G0 Z{layer.PositionZ} F{retractSpeed};Layer position");
+
+ GCode.AppendLine($"G4 P{lightOffDelay};Stabilization delay");
- if (lastZPosition < layer.PositionZ)
+ if (layer.ExposureTime > 0 && pwmValue > 0)
{
- GCode.AppendLine($"G0 Z{layer.PositionZ} F{retractSpeed};Layer position");
+ GCode.AppendLine($"M106 S{pwmValue};light on");
+ GCode.AppendLine($"G4 P{exposureTime};Cure time");
+ GCode.AppendLine("M106 S0;light off");
}
- GCode.AppendLine($"G4 P{lightOffDelay};Stabilization delay");
- GCode.AppendLine($"M106 S{pwmValue};light on");
- GCode.AppendLine($"G4 P{exposureTime};Cure time");
- GCode.AppendLine("M106 S0;light off");
GCode.AppendLine(";LAYER_END");
GCode.AppendLine();
diff --git a/UVtools.Core/FileFormats/FileFormat.cs b/UVtools.Core/FileFormats/FileFormat.cs
index ec336d2..3ec0f65 100644
--- a/UVtools.Core/FileFormats/FileFormat.cs
+++ b/UVtools.Core/FileFormats/FileFormat.cs
@@ -172,6 +172,16 @@ namespace UVtools.Core.FileFormats
#region Constants
private const string ExtractConfigFileName = "Configuration";
private const string ExtractConfigFileExtension = "ini";
+
+ public const float DefaultBottomLiftHeight = 5;
+ public const float DefaultLiftHeight = 5;
+ public const float DefaultBottomLiftSpeed = 100;
+ public const float DefaultLiftSpeed = 100;
+ public const float DefaultRetractSpeed = 100;
+ public const float DefaultBottomLightOffDelay = 0;
+ public const float DefaultLightOffDelay = 0;
+ public const byte DefaultBottomLightPWM = 255;
+ public const byte DefaultLightPWM = 255;
#endregion
#region Static Methods
@@ -404,15 +414,15 @@ namespace UVtools.Core.FileFormats
public uint NormalLayerCount => LayerCount - BottomLayerCount;
public virtual float BottomExposureTime { get; set; }
public virtual float ExposureTime { get; set; }
- public virtual float BottomLayerOffTime { get; set; }
- public virtual float LayerOffTime { get; set; }
- public virtual float BottomLiftHeight { get; set; } = 5;
- public virtual float LiftHeight { get; set; } = 5;
- public virtual float BottomLiftSpeed { get; set; } = 100;
- public virtual float LiftSpeed { get; set; } = 100;
- public virtual float RetractSpeed { get; set; } = 100;
- public virtual byte BottomLightPWM { get; set; } = 255;
- public virtual byte LightPWM { get; set; } = 255;
+ public virtual float BottomLayerOffTime { get; set; } = DefaultBottomLightOffDelay;
+ public virtual float LayerOffTime { get; set; } = DefaultLightOffDelay;
+ public virtual float BottomLiftHeight { get; set; } = DefaultBottomLiftHeight;
+ public virtual float LiftHeight { get; set; } = DefaultLiftHeight;
+ public virtual float BottomLiftSpeed { get; set; } = DefaultBottomLiftSpeed;
+ public virtual float LiftSpeed { get; set; } = DefaultLiftSpeed;
+ public virtual float RetractSpeed { get; set; } = DefaultRetractSpeed;
+ public virtual byte BottomLightPWM { get; set; } = DefaultBottomLightPWM;
+ public virtual byte LightPWM { get; set; } = DefaultLightPWM;
public abstract float PrintTime { get; }
@@ -772,7 +782,7 @@ namespace UVtools.Core.FileFormats
{
if (progress.Token.IsCancellationRequested) return;
var byteArr = layer.CompressedBytes;
- using (FileStream stream = File.Create(Path.Combine(path, $"Layer{layer.Index.ToString().PadLeft(LayerCount.ToString().Length, '0')}.png"),
+ using (FileStream stream = File.Create(Path.Combine(path, layer.Filename),
byteArr.Length))
{
stream.Write(byteArr, 0, byteArr.Length);
diff --git a/UVtools.Core/FileFormats/ImageFile.cs b/UVtools.Core/FileFormats/ImageFile.cs
index 7158897..9517be0 100644
--- a/UVtools.Core/FileFormats/ImageFile.cs
+++ b/UVtools.Core/FileFormats/ImageFile.cs
@@ -88,7 +88,7 @@ namespace UVtools.Core.FileFormats
}*/
LayerManager = new LayerManager(1, this);
- this[0] = new Layer(0, ImageMat, Path.GetFileName(fileFullPath));
+ this[0] = new Layer(0, ImageMat, LayerManager);
}
public override void SaveAs(string filePath = null, OperationProgress progress = null)
diff --git a/UVtools.Core/FileFormats/LGSFile.cs b/UVtools.Core/FileFormats/LGSFile.cs
index 15c1c40..82ec363 100644
--- a/UVtools.Core/FileFormats/LGSFile.cs
+++ b/UVtools.Core/FileFormats/LGSFile.cs
@@ -545,15 +545,7 @@ namespace UVtools.Core.FileFormats
using (var image = layerData[layerIndex].Decode())
{
- this[layerIndex] = new Layer((uint) layerIndex, image)
- {
- PositionZ = GetHeightFromLayer((uint)layerIndex),
- ExposureTime = GetInitialLayerValueOrNormal((uint)layerIndex, BottomExposureTime, ExposureTime),
- LiftHeight = GetInitialLayerValueOrNormal((uint)layerIndex, BottomLiftHeight, LiftHeight),
- LiftSpeed = GetInitialLayerValueOrNormal((uint)layerIndex, BottomLiftSpeed, LiftSpeed),
- RetractSpeed = RetractSpeed,
- LightPWM = GetInitialLayerValueOrNormal((uint)layerIndex, BottomLightPWM, LightPWM),
- };
+ this[layerIndex] = new Layer((uint) layerIndex, image, LayerManager);
lock (progress.Mutex)
{
diff --git a/UVtools.Core/FileFormats/PHZFile.cs b/UVtools.Core/FileFormats/PHZFile.cs
index 012d0e7..bb28b78 100644
--- a/UVtools.Core/FileFormats/PHZFile.cs
+++ b/UVtools.Core/FileFormats/PHZFile.cs
@@ -1159,15 +1159,11 @@ namespace UVtools.Core.FileFormats
using (var image = LayersDefinitions[layerIndex].Decode((uint) layerIndex, true))
{
- this[layerIndex] = new Layer((uint) layerIndex, image)
+ this[layerIndex] = new Layer((uint) layerIndex, image, LayerManager)
{
PositionZ = LayersDefinitions[layerIndex].LayerPositionZ,
ExposureTime = LayersDefinitions[layerIndex].LayerExposure,
- LiftHeight = GetInitialLayerValueOrNormal((uint)layerIndex, BottomLiftHeight, LiftHeight),
- LiftSpeed = GetInitialLayerValueOrNormal((uint)layerIndex, BottomLiftSpeed, LiftSpeed),
- RetractSpeed = RetractSpeed,
LayerOffTime = LayersDefinitions[layerIndex].LayerOffTimeSeconds,
- LightPWM = GetInitialLayerValueOrNormal((uint)layerIndex, BottomLightPWM, LightPWM),
};
}
diff --git a/UVtools.Core/FileFormats/PWSFile.cs b/UVtools.Core/FileFormats/PWSFile.cs
index 91cd29c..c055f63 100644
--- a/UVtools.Core/FileFormats/PWSFile.cs
+++ b/UVtools.Core/FileFormats/PWSFile.cs
@@ -1148,14 +1148,12 @@ namespace UVtools.Core.FileFormats
using (var image = LayersDefinition[(uint) layerIndex].Decode())
{
- this[layerIndex] = new Layer((uint) layerIndex, image)
+ this[layerIndex] = new Layer((uint) layerIndex, image, LayerManager)
{
PositionZ = LayersDefinition[(uint)layerIndex].LayerPositionZ,
ExposureTime = LayersDefinition[(uint)layerIndex].LayerExposure,
LiftHeight = LayersDefinition[(uint)layerIndex].LiftHeight,
LiftSpeed = (float)Math.Round(LayersDefinition[(uint)layerIndex].LiftSpeed * 60, 2),
- RetractSpeed = RetractSpeed,
- LightPWM = GetInitialLayerValueOrNormal((uint) layerIndex, BottomLightPWM, LightPWM)
};
}
diff --git a/UVtools.Core/FileFormats/PhotonSFile.cs b/UVtools.Core/FileFormats/PhotonSFile.cs
index 4243edb..1d092ef 100644
--- a/UVtools.Core/FileFormats/PhotonSFile.cs
+++ b/UVtools.Core/FileFormats/PhotonSFile.cs
@@ -512,16 +512,7 @@ namespace UVtools.Core.FileFormats
using (var image = layerData[layerIndex].Decode())
{
- this[layerIndex] = new Layer((uint) layerIndex, image)
- {
- PositionZ = GetHeightFromLayer((uint)layerIndex),
- ExposureTime = GetInitialLayerValueOrNormal((uint)layerIndex, BottomExposureTime, ExposureTime),
- LiftHeight = GetInitialLayerValueOrNormal((uint)layerIndex, BottomLiftHeight, LiftHeight),
- LiftSpeed = GetInitialLayerValueOrNormal((uint)layerIndex, BottomLiftSpeed, LiftSpeed),
- RetractSpeed = RetractSpeed,
- LightPWM = GetInitialLayerValueOrNormal((uint)layerIndex, BottomLightPWM, LightPWM),
- };
-
+ this[layerIndex] = new Layer((uint) layerIndex, image, LayerManager);
lock (progress.Mutex)
{
progress++;
diff --git a/UVtools.Core/FileFormats/SL1File.cs b/UVtools.Core/FileFormats/SL1File.cs
index e85161e..9584766 100644
--- a/UVtools.Core/FileFormats/SL1File.cs
+++ b/UVtools.Core/FileFormats/SL1File.cs
@@ -524,7 +524,7 @@ namespace UVtools.Core.FileFormats
progress.Token.ThrowIfCancellationRequested();
Layer layer = this[layerIndex];
var layerImagePath = $"{Path.GetFileNameWithoutExtension(fileFullPath)}{layerIndex:D5}.png";
- layer.Filename = layerImagePath;
+ //layer.Filename = layerImagePath;
outputFile.PutFileContent(layerImagePath, layer.CompressedBytes, ZipArchiveMode.Create);
progress++;
}
@@ -626,15 +626,7 @@ namespace UVtools.Core.FileFormats
// - .png - 5 numbers
string layerStr = entity.Name.Substring(entity.Name.Length - 4 - 5, 5);
uint iLayer = uint.Parse(layerStr);
- this[iLayer] = new Layer(iLayer, entity.Open(), entity.Name)
- {
- PositionZ = GetHeightFromLayer(iLayer),
- ExposureTime = GetInitialLayerValueOrNormal(iLayer, BottomExposureTime, ExposureTime),
- LiftHeight = GetInitialLayerValueOrNormal(iLayer, BottomLiftHeight, LiftHeight),
- LiftSpeed = GetInitialLayerValueOrNormal(iLayer, BottomLiftSpeed, LiftSpeed),
- RetractSpeed = RetractSpeed,
- LightPWM = GetInitialLayerValueOrNormal(iLayer, BottomLightPWM, LightPWM),
- };
+ this[iLayer] = new Layer(iLayer, entity.Open(), LayerManager);
progress.ProcessedItems++;
}
}
@@ -646,17 +638,6 @@ namespace UVtools.Core.FileFormats
Debug.WriteLine(Statistics);
}
- /*public override Image<L8> GetLayerImage(uint layerIndex)
- {
- //Stopwatch sw = Stopwatch.StartNew();
- var image = Image.Load<L8>(DecompressLayer(Layers[layerIndex]));
- //Debug.WriteLine(sw.ElapsedMilliseconds);
-
- return layerIndex >= LayerCount ? null : image;
- //return layerIndex >= LayerCount ? null : Image.Load<L8>(LayerEntries[(int)layerIndex].Open());
- //return layerIndex >= LayerCount ? null : Image.Load<L8>(DecompressLayer(Layers[layerIndex]));
- }*/
-
public override void SaveAs(string filePath = null, OperationProgress progress = null)
{
if (RequireFullEncode)
diff --git a/UVtools.Core/FileFormats/UVJFile.cs b/UVtools.Core/FileFormats/UVJFile.cs
index e900672..7baa21a 100644
--- a/UVtools.Core/FileFormats/UVJFile.cs
+++ b/UVtools.Core/FileFormats/UVJFile.cs
@@ -476,7 +476,7 @@ namespace UVtools.Core.FileFormats
entry = inputFile.GetEntry($"{FolderImageName}/{layerIndex:D8}.png");
if (ReferenceEquals(entry, null)) continue;
- this[layerIndex] = new Layer(layerIndex, entry.Open(), entry.Name)
+ this[layerIndex] = new Layer(layerIndex, entry.Open(), LayerManager)
{
PositionZ = JsonSettings.Layers.Count >= layerIndex ? JsonSettings.Layers[(int) layerIndex].Z : GetHeightFromLayer(layerIndex),
LiftHeight = JsonSettings.Layers.Count >= layerIndex ? JsonSettings.Layers[(int)layerIndex].Exposure.LiftHeight : GetInitialLayerValueOrNormal(layerIndex, BottomLiftHeight, LiftHeight),
diff --git a/UVtools.Core/FileFormats/ZCodexFile.cs b/UVtools.Core/FileFormats/ZCodexFile.cs
index 7e65646..682d3f0 100644
--- a/UVtools.Core/FileFormats/ZCodexFile.cs
+++ b/UVtools.Core/FileFormats/ZCodexFile.cs
@@ -8,6 +8,7 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
using System.IO;
using System.IO.Compression;
using System.Text;
@@ -163,6 +164,13 @@ namespace UVtools.Core.FileFormats
PrintParameterModifier.LiftSpeed,
};
+ public override PrintParameterModifier[] PrintParameterPerLayerModifiers { get; } = {
+ PrintParameterModifier.LiftHeight,
+ PrintParameterModifier.LiftSpeed,
+ PrintParameterModifier.RetractSpeed,
+ PrintParameterModifier.LightPWM,
+ };
+
public override byte ThumbnailsCount { get; } = 1;
public override System.Drawing.Size[] ThumbnailsOriginalSize { get; } = {new System.Drawing.Size(320, 180)};
@@ -458,41 +466,48 @@ M106 S0
var startStr = $"{GCodeKeywordSlice} {layerIndex}";
var stripGcode = gcode.Substring(gcode.IndexOf(startStr, StringComparison.InvariantCultureIgnoreCase) + startStr.Length).Trim(' ', '\n', '\r', '\t');
- var currPos = Regex.Match(stripGcode, "G1 Z([+-]?([0-9]*[.])?[0-9]+)", RegexOptions.IgnoreCase);
- //var exposureTime = Regex.Match(stripGcode, ";<Delay> (\\d+)", RegexOptions.IgnoreCase);
- /*var pwm = Regex.Match(stripGcode, "M106 S(\\d+)", RegexOptions.IgnoreCase);
- if (layerIndex < InitialLayerCount)
- {
- OutputSettings.BottomLayerLightPWM = byte.Parse(pwm.Groups[1].Value);
- }
- else
- {
- OutputSettings.LayerLightPWM = byte.Parse(pwm.Groups[1].Value);
- }*/
- if (currPos.Success)
+ float liftHeight = 0;
+ float liftSpeed = GetInitialLayerValueOrNormal((uint)layerIndex, BottomLiftSpeed, LiftSpeed);
+ float retractSpeed = RetractSpeed;
+ byte pwm = GetInitialLayerValueOrNormal((uint)layerIndex, BottomLightPWM, LightPWM); ;
+
+ //var currPos = Regex.Match(stripGcode, "G1 Z([+-]?([0-9]*[.])?[0-9]+)", RegexOptions.IgnoreCase);
+ var moveG1Regex = Regex.Match(stripGcode, @"G1 Z([+-]?([0-9]*[.])?[0-9]+) F(\d+)", RegexOptions.IgnoreCase);
+ var pwmM106Regex = Regex.Match(stripGcode, @"M106 S(\d+)", RegexOptions.IgnoreCase);
+
+ if (moveG1Regex.Success)
{
- var nextMatch = currPos.NextMatch();
- if (nextMatch.Success)
+ var liftHeightTemp = float.Parse(moveG1Regex.Groups[1].Value, CultureInfo.InvariantCulture);
+ var liftSpeedTemp = float.Parse(moveG1Regex.Groups[3].Value, CultureInfo.InvariantCulture);
+ moveG1Regex = moveG1Regex.NextMatch();
+ if (moveG1Regex.Success)
{
- currentHeight = (float)Math.Round(currentHeight + float.Parse(currPos.Groups[1].Value) + float.Parse(currPos.NextMatch().Groups[1].Value), 2);
+ liftHeight = liftHeightTemp;
+ liftSpeed = liftSpeedTemp;
+ var retractHeight = float.Parse(moveG1Regex.Groups[1].Value, CultureInfo.InvariantCulture);
+ retractSpeed = float.Parse(moveG1Regex.Groups[3].Value, CultureInfo.InvariantCulture);
+ currentHeight = (float)Math.Round(currentHeight + liftHeightTemp + retractHeight, 2);
}
else
{
- currentHeight = (float)Math.Round(currentHeight + float.Parse(currPos.Groups[1].Value), 2);
+ currentHeight = (float) Math.Round(currentHeight + liftHeightTemp);
}
-
}
+ if (pwmM106Regex.Success)
+ {
+ pwm = byte.Parse(pwmM106Regex.Groups[1].Value);
+ }
+
LayersSettings[layerIndex].LayerFileIndex = layerFileIndex;
LayersSettings[layerIndex].LayerEntry = inputFile.GetEntry(layerimagePath);
- this[layerIndex] = new Layer((uint) layerIndex, LayersSettings[layerIndex].LayerEntry.Open(), LayersSettings[layerIndex].LayerEntry.Name)
+ this[layerIndex] = new Layer((uint) layerIndex, LayersSettings[layerIndex].LayerEntry.Open(), LayerManager)
{
PositionZ = currentHeight,
- ExposureTime = GetInitialLayerValueOrNormal((uint) layerIndex, BottomExposureTime, ExposureTime),
- LiftHeight = GetInitialLayerValueOrNormal((uint) layerIndex, BottomLiftHeight, LiftHeight),
- LiftSpeed = GetInitialLayerValueOrNormal((uint) layerIndex, BottomLiftSpeed, LiftSpeed),
- RetractSpeed = RetractSpeed,
- LightPWM = GetInitialLayerValueOrNormal((uint) layerIndex, BottomLightPWM, LightPWM),
+ LiftHeight = liftHeight,
+ LiftSpeed = liftSpeed,
+ RetractSpeed = retractSpeed,
+ LightPWM = pwm
};
layerIndex++;
diff --git a/UVtools.Core/Layer/Layer.cs b/UVtools.Core/Layer/Layer.cs
index 6bec1a5..342f119 100644
--- a/UVtools.Core/Layer/Layer.cs
+++ b/UVtools.Core/Layer/Layer.cs
@@ -16,6 +16,7 @@ using Emgu.CV.Structure;
using Emgu.CV.Util;
using UVtools.Core.Extensions;
using UVtools.Core.FileFormats;
+using UVtools.Core.Objects;
using UVtools.Core.Operations;
using Stream = System.IO.Stream;
@@ -24,7 +25,7 @@ namespace UVtools.Core
/// <summary>
/// Represent a Layer
/// </summary>
- public class Layer : IEquatable<Layer>, IEquatable<uint>
+ public class Layer : BindableBase, IEquatable<Layer>, IEquatable<uint>
{
#region Properties
@@ -35,15 +36,25 @@ namespace UVtools.Core
/// </summary>
public LayerManager ParentLayerManager { get; set; }
+ public FileFormat SlicerFile => ParentLayerManager?.SlicerFile;
+
/// <summary>
/// Gets the number of non zero pixels on this layer image
/// </summary>
- public uint NonZeroPixelCount { get; internal set; }
+ public uint NonZeroPixelCount
+ {
+ get => _nonZeroPixelCount;
+ internal set => RaiseAndSetIfChanged(ref _nonZeroPixelCount, value);
+ }
/// <summary>
/// Gets the bounding rectangle for the image area
/// </summary>
- public Rectangle BoundingRectangle { get; internal set; } = Rectangle.Empty;
+ public Rectangle BoundingRectangle
+ {
+ get => _boundingRectangle;
+ internal set => RaiseAndSetIfChanged(ref _boundingRectangle, value);
+ }
public bool IsBottomLayer => Index < ParentLayerManager.SlicerFile.BottomLayerCount;
public bool IsNormalLayer => !IsBottomLayer;
@@ -51,44 +62,88 @@ namespace UVtools.Core
/// <summary>
/// Gets the layer index
/// </summary>
- public uint Index { get; set; }
+ public uint Index
+ {
+ get => _index;
+ set => RaiseAndSetIfChanged(ref _index, value);
+ }
/// <summary>
/// Gets or sets the normal layer exposure time in seconds
/// </summary>
- public float ExposureTime { get; set; }
+ public float ExposureTime
+ {
+ get => _exposureTime;
+ set => RaiseAndSetIfChanged(ref _exposureTime, value);
+ }
/// <summary>
/// Gets or sets the layer off time in seconds
/// </summary>
- public float LayerOffTime { get; set; }
+ public float LayerOffTime
+ {
+ get => _layerOffTime;
+ set => RaiseAndSetIfChanged(ref _layerOffTime, value);
+ }
/// <summary>
/// Gets or sets the lift height in mm
/// </summary>
- public float LiftHeight { get; set; } = 5;
+ public float LiftHeight
+ {
+ get => _liftHeight;
+ set => RaiseAndSetIfChanged(ref _liftHeight, value);
+ }
/// <summary>
/// Gets or sets the speed in mm/min
/// </summary>
- public float LiftSpeed { get; set; } = 100;
+ public float LiftSpeed
+ {
+ get => _liftSpeed;
+ set => RaiseAndSetIfChanged(ref _liftSpeed, value);
+ }
/// <summary>
/// Gets the speed in mm/min for the retracts
/// </summary>
- public float RetractSpeed { get; set; } = 100;
+ public float RetractSpeed
+ {
+ get => _retractSpeed;
+ set => RaiseAndSetIfChanged(ref _retractSpeed, value);
+ }
/// <summary>
/// Gets or sets the pwm value from 0 to 255
/// </summary>
- public byte LightPWM { get; set; } = 255;
+ public byte LightPWM
+ {
+ get => _lightPwm;
+ set => RaiseAndSetIfChanged(ref _lightPwm, value);
+ }
/// <summary>
/// Gets or sets the layer position on Z in mm
/// </summary>
- public float PositionZ { get; set; }
+ public float PositionZ
+ {
+ get => _positionZ;
+ set => RaiseAndSetIfChanged(ref _positionZ, value);
+ }
private byte[] _compressedBytes;
+ private uint _nonZeroPixelCount;
+ private Rectangle _boundingRectangle = Rectangle.Empty;
+ private uint _index;
+ private float _exposureTime;
+ private float _layerOffTime = FileFormat.DefaultLightOffDelay;
+ private float _liftHeight = FileFormat.DefaultLiftHeight;
+ private float _liftSpeed = FileFormat.DefaultLiftSpeed;
+ private float _retractSpeed = FileFormat.DefaultRetractSpeed;
+ private byte _lightPwm = FileFormat.DefaultLightPWM;
+ private float _positionZ;
+ private bool _isModified;
+
/// <summary>
/// Gets or sets layer image compressed data
/// </summary>
@@ -105,14 +160,18 @@ namespace UVtools.Core
}
/// <summary>
- /// Gets the original filename, null if no filename attached with layer
+ /// Gets a computed layer filename, padding zeros are equal to layer count digits
/// </summary>
- public string Filename { get; set; }
+ public string Filename => $"layer{Index.ToString().PadLeft(ParentLayerManager.LayerDigits, '0')}.png";
/// <summary>
/// Gets if layer has been modified
/// </summary>
- public bool IsModified { get; set; }
+ public bool IsModified
+ {
+ get => _isModified;
+ set => RaiseAndSetIfChanged(ref _isModified, value);
+ }
/// <summary>
/// Gets or sets a new image instance
@@ -134,6 +193,8 @@ namespace UVtools.Core
GetBoundingRectangle(value, true);
}
+
+ RaisePropertyChanged();
}
}
@@ -153,27 +214,37 @@ namespace UVtools.Core
#endregion
#region Constructor
- public Layer(uint index, byte[] compressedBytes, string filename = null, LayerManager pararentLayerManager = null)
+ public Layer(uint index, byte[] compressedBytes, LayerManager parentLayerManager)
{
- ParentLayerManager = pararentLayerManager;
+ ParentLayerManager = parentLayerManager;
Index = index;
- Filename = filename ?? $"Layer{index}.png";
+ //Filename = filename ?? $"Layer{index}.png";
CompressedBytes = compressedBytes;
IsModified = false;
/*if (compressedBytes.Length > 0)
{
GetBoundingRectangle();
}*/
+
+ if (!(parentLayerManager is null))
+ {
+ _positionZ = SlicerFile.GetHeightFromLayer(index);
+ _exposureTime = SlicerFile.GetInitialLayerValueOrNormal(index, SlicerFile.BottomExposureTime, SlicerFile.ExposureTime);
+ _liftHeight = SlicerFile.GetInitialLayerValueOrNormal(index, SlicerFile.BottomLiftHeight, SlicerFile.LiftHeight);
+ _liftSpeed = SlicerFile.GetInitialLayerValueOrNormal(index, SlicerFile.BottomLiftSpeed, SlicerFile.LiftSpeed);
+ _retractSpeed = SlicerFile.RetractSpeed;
+ _lightPwm = SlicerFile.GetInitialLayerValueOrNormal(index, SlicerFile.BottomLightPWM, SlicerFile.LightPWM);
+ }
}
- public Layer(uint index, Mat layerMat, string filename = null, LayerManager pararentLayerManager = null) : this(index, new byte[0], filename, pararentLayerManager)
+ public Layer(uint index, Mat layerMat, LayerManager parentLayerManager) : this(index, new byte[0], parentLayerManager)
{
LayerMat = layerMat;
IsModified = false;
}
- public Layer(uint index, Stream stream, string filename = null, LayerManager pararentLayerManager = null) : this(index, stream.ToArray(), filename, pararentLayerManager)
+ public Layer(uint index, Stream stream, LayerManager parentLayerManager) : this(index, stream.ToArray(), parentLayerManager)
{ }
#endregion
@@ -249,9 +320,10 @@ namespace UVtools.Core
#endregion
#region Formaters
+
public override string ToString()
{
- return $"{nameof(Index)}: {Index}, {nameof(Filename)}: {Filename}, {nameof(IsModified)}: {IsModified}";
+ return $"{nameof(Index)}: {Index}, {nameof(Filename)}: {Filename}, {nameof(NonZeroPixelCount)}: {NonZeroPixelCount}, {nameof(BoundingRectangle)}: {BoundingRectangle}, {nameof(IsBottomLayer)}: {IsBottomLayer}, {nameof(IsNormalLayer)}: {IsNormalLayer}, {nameof(PositionZ)}: {PositionZ}, {nameof(ExposureTime)}: {ExposureTime}, {nameof(LayerOffTime)}: {LayerOffTime}, {nameof(LiftHeight)}: {LiftHeight}, {nameof(LiftSpeed)}: {LiftSpeed}, {nameof(RetractSpeed)}: {RetractSpeed}, {nameof(LightPWM)}: {LightPWM}, {nameof(IsModified)}: {IsModified}";
}
#endregion
@@ -940,10 +1012,15 @@ namespace UVtools.Core
}
public Layer Clone()
{
- return new Layer(Index, CompressedBytes.ToArray(), Filename, ParentLayerManager)
+ return new Layer(Index, CompressedBytes.ToArray(), ParentLayerManager)
{
PositionZ = PositionZ,
ExposureTime = ExposureTime,
+ LiftHeight = LiftHeight,
+ LiftSpeed = LiftSpeed,
+ RetractSpeed = RetractSpeed,
+ LayerOffTime = LayerOffTime,
+ LightPWM = LightPWM,
BoundingRectangle = BoundingRectangle,
NonZeroPixelCount = NonZeroPixelCount,
};
diff --git a/UVtools.Core/Layer/LayerManager.cs b/UVtools.Core/Layer/LayerManager.cs
index 1bd0789..f6930ea 100644
--- a/UVtools.Core/Layer/LayerManager.cs
+++ b/UVtools.Core/Layer/LayerManager.cs
@@ -48,6 +48,8 @@ namespace UVtools.Core
/// </summary>
public uint Count => (uint) Layers.Length;
+ public byte LayerDigits => (byte) Layers.Length.ToString().Length;
+
/// <summary>
/// Gets if any layer got modified, otherwise false
/// </summary>
@@ -1611,7 +1613,7 @@ namespace UVtools.Core
}
}
}
- this[layerIndex] = new Layer(layerIndex, mat);
+ this[layerIndex] = new Layer(layerIndex, mat, this);
lock (progress.Mutex)
{
@@ -1750,15 +1752,10 @@ namespace UVtools.Core
{
for (byte i = 0; i < operation.Item.Modifier; i++)
{
- Layers[newLayerIndex] =
- new Layer(newLayerIndex, oldLayer.CompressedBytes, null, this)
- {
- PositionZ = (float)(operation.Item.LayerHeight * (newLayerIndex + 1)),
- ExposureTime = oldLayer.ExposureTime,
- BoundingRectangle = oldLayer.BoundingRectangle,
- NonZeroPixelCount = oldLayer.NonZeroPixelCount
-
- };
+ var newLayer = oldLayer.Clone();
+ newLayer.Index = newLayerIndex;
+ newLayer.PositionZ = (float) (operation.Item.LayerHeight * (newLayerIndex + 1));
+ Layers[newLayerIndex] = newLayer;
newLayerIndex++;
progress++;
}
@@ -1775,11 +1772,11 @@ namespace UVtools.Core
}
}
- Layers[newLayerIndex] = new Layer(newLayerIndex, mat, null, this)
- {
- PositionZ = (float)(operation.Item.LayerHeight * (newLayerIndex + 1)),
- ExposureTime = oldLayer.ExposureTime
- };
+ var newLayer = oldLayer.Clone();
+ newLayer.Index = newLayerIndex;
+ newLayer.PositionZ = (float) (operation.Item.LayerHeight * (newLayerIndex + 1));
+ newLayer.LayerMat = mat;
+ Layers[newLayerIndex] = newLayer;
newLayerIndex++;
layerIndex--;
progress++;
diff --git a/UVtools.Core/UVtools.Core.csproj b/UVtools.Core/UVtools.Core.csproj
index f72f755..4486203 100644
--- a/UVtools.Core/UVtools.Core.csproj
+++ b/UVtools.Core/UVtools.Core.csproj
@@ -10,7 +10,7 @@
<RepositoryUrl>https://github.com/sn4k3/UVtools</RepositoryUrl>
<PackageProjectUrl>https://github.com/sn4k3/UVtools</PackageProjectUrl>
<Description>MSLA/DLP, file analysis, repair, conversion and manipulation</Description>
- <Version>1.1.1</Version>
+ <Version>1.1.2</Version>
<Copyright>Copyright © 2020 PTRTECH</Copyright>
<PackageIcon>UVtools.png</PackageIcon>
<Platforms>AnyCPU;x64</Platforms>
diff --git a/UVtools.InstallerMM/UVtools.InstallerMM.wxs b/UVtools.InstallerMM/UVtools.InstallerMM.wxs
index b04abca..ba1a5b8 100644
--- a/UVtools.InstallerMM/UVtools.InstallerMM.wxs
+++ b/UVtools.InstallerMM/UVtools.InstallerMM.wxs
@@ -2,12 +2,132 @@
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?define ComponentRules="OneToOne"?>
<!-- SourceDir instructs IsWiX the location of the directory that contains files for this merge module -->
- <?define SourceDir="..\UVtools.WPF\bin\Release\netcoreapp3.1"?>
+ <?define SourceDir="..\publish\win-x64"?>
<Module Id="UVtools" Language="1033" Version="1.0.0.0">
<Package Id="12aaa1cf-ff06-4a02-abd5-2ac01ac4f83b" Manufacturer="PTRTECH" InstallerVersion="200" Keywords="MSLA, DLP" Description="MSLA/DLP, file analysis, repair, conversion and manipulation" InstallScope="perMachine" />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="DesktopFolder" />
<Directory Id="MergeRedirectFolder">
+ <Component Id="owcF3EB3D7C133F5B48E5859309ABDC2EE0" Guid="5a6040ae-b91e-47b6-8438-d9cd47fb947a">
+ <File Id="owfF3EB3D7C133F5B48E5859309ABDC2EE0" Source="$(var.SourceDir)\api-ms-win-core-console-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcB0E3C7251F136710A0F11E0C18525364" Guid="f80e6202-0436-d488-52cf-827e37483096">
+ <File Id="owfB0E3C7251F136710A0F11E0C18525364" Source="$(var.SourceDir)\api-ms-win-core-datetime-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc4B0AD9DF281D253C1207D4E82DEB0DD2" Guid="4ac4edbd-2c6a-8aed-125e-11237a36e4f8">
+ <File Id="owf4B0AD9DF281D253C1207D4E82DEB0DD2" Source="$(var.SourceDir)\api-ms-win-core-debug-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc0BC091DFDF8929131FA52A129DCEBED7" Guid="dc61ed86-1fb2-43f1-ba79-d39df61efff6">
+ <File Id="owf0BC091DFDF8929131FA52A129DCEBED7" Source="$(var.SourceDir)\api-ms-win-core-errorhandling-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcB8506905830F0088BB646B3A8730400E" Guid="c32be070-5e67-9acf-2253-bce1d67d0139">
+ <File Id="owfB8506905830F0088BB646B3A8730400E" Source="$(var.SourceDir)\api-ms-win-core-file-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcE8347DEA0E729A0801F9EC688606ED5A" Guid="47cea295-3138-da6c-5ab5-1e3c6f6ae58a">
+ <File Id="owfE8347DEA0E729A0801F9EC688606ED5A" Source="$(var.SourceDir)\api-ms-win-core-file-l1-2-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcBC4BB905E2625FF8812B77442EC3F27B" Guid="f02a6238-6002-1e28-2813-76c8afaa1d3c">
+ <File Id="owfBC4BB905E2625FF8812B77442EC3F27B" Source="$(var.SourceDir)\api-ms-win-core-file-l2-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc740A048F42D8DF1A9A77580493C4C987" Guid="f9ef4f41-636f-0a9a-335e-6ec96c45d13c">
+ <File Id="owf740A048F42D8DF1A9A77580493C4C987" Source="$(var.SourceDir)\api-ms-win-core-handle-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc139D09B67243A68F34B95704CCB38020" Guid="ff774f94-e3c3-eac4-982e-e892f317a235">
+ <File Id="owf139D09B67243A68F34B95704CCB38020" Source="$(var.SourceDir)\api-ms-win-core-heap-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc65372F05C29E55457B1C95D7E75F56EA" Guid="55dacd03-85c4-b361-95e9-8f97e8ad7a31">
+ <File Id="owf65372F05C29E55457B1C95D7E75F56EA" Source="$(var.SourceDir)\api-ms-win-core-interlocked-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc83FA9B95DF474359D7DABD4543DD33E6" Guid="4d368a8e-f1d7-a0d9-d5e5-a79bf86b3579">
+ <File Id="owf83FA9B95DF474359D7DABD4543DD33E6" Source="$(var.SourceDir)\api-ms-win-core-libraryloader-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc6DCAA1302E4C4C84B800FB1E70119DF0" Guid="d915a3e0-a53b-6f2b-2899-1554d5781918">
+ <File Id="owf6DCAA1302E4C4C84B800FB1E70119DF0" Source="$(var.SourceDir)\api-ms-win-core-localization-l1-2-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc404603E02B0B789BCB7F840BB530BA6A" Guid="9f431d8e-8e7b-8abf-d199-71b22010a26f">
+ <File Id="owf404603E02B0B789BCB7F840BB530BA6A" Source="$(var.SourceDir)\api-ms-win-core-memory-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc64E8470B0E608FAC29A885FE1E254BB5" Guid="4b64e16c-f93c-adf9-aaf5-be236c900a97">
+ <File Id="owf64E8470B0E608FAC29A885FE1E254BB5" Source="$(var.SourceDir)\api-ms-win-core-namedpipe-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcC43BF7A4E7A31856547F0A915D3E720D" Guid="1fd136d4-542d-1e9a-3adc-f8b2821d94ac">
+ <File Id="owfC43BF7A4E7A31856547F0A915D3E720D" Source="$(var.SourceDir)\api-ms-win-core-processenvironment-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcC944A567AF4971E0F6690D1F6B0E2188" Guid="bee79815-ccc0-8f0b-5ba5-27021637a3fc">
+ <File Id="owfC944A567AF4971E0F6690D1F6B0E2188" Source="$(var.SourceDir)\api-ms-win-core-processthreads-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc063581CA4F10046EFAB402C73DBB2AE2" Guid="a36b82c7-e6a3-321f-9948-e94e30513204">
+ <File Id="owf063581CA4F10046EFAB402C73DBB2AE2" Source="$(var.SourceDir)\api-ms-win-core-processthreads-l1-1-1.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc70447A29E3762E57B9C5AA1F0F0B0DE6" Guid="372cf964-065e-c240-0074-3198fed89881">
+ <File Id="owf70447A29E3762E57B9C5AA1F0F0B0DE6" Source="$(var.SourceDir)\api-ms-win-core-profile-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcF57953A9122696C0FA8DD3345F2649C3" Guid="3f3b3dc3-ce42-f3cf-4406-4bfa18a7b58d">
+ <File Id="owfF57953A9122696C0FA8DD3345F2649C3" Source="$(var.SourceDir)\api-ms-win-core-rtlsupport-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc7ADECD5D4A25825BBF26821AD5DDCD50" Guid="2c6007ac-65cd-67ac-43d5-07b874640ecb">
+ <File Id="owf7ADECD5D4A25825BBF26821AD5DDCD50" Source="$(var.SourceDir)\api-ms-win-core-string-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcB678D5C59AC99A47A3BD4E490206F834" Guid="21cc017a-2cb8-74ab-cf18-a404ba2b8b44">
+ <File Id="owfB678D5C59AC99A47A3BD4E490206F834" Source="$(var.SourceDir)\api-ms-win-core-synch-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc31615FBE506FE8C6C3164744E49BD75A" Guid="35ddd353-900a-cd82-d8bb-fab3c63e5af3">
+ <File Id="owf31615FBE506FE8C6C3164744E49BD75A" Source="$(var.SourceDir)\api-ms-win-core-synch-l1-2-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc8BF6D3E06929C968426F71A39AB67A6A" Guid="4d2cfb22-00c1-4f5c-8993-94c6117f2586">
+ <File Id="owf8BF6D3E06929C968426F71A39AB67A6A" Source="$(var.SourceDir)\api-ms-win-core-sysinfo-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc2B55561383738D0EC2FC457DCEE62880" Guid="db80f8f9-0d57-d2d3-8ec0-ede1cc33faca">
+ <File Id="owf2B55561383738D0EC2FC457DCEE62880" Source="$(var.SourceDir)\api-ms-win-core-timezone-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc68FE9A51BE117EA988B03782E905E80C" Guid="41ab7ba6-2a93-8f92-ccce-010861eedcdb">
+ <File Id="owf68FE9A51BE117EA988B03782E905E80C" Source="$(var.SourceDir)\api-ms-win-core-util-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcD1693AA47CB9D1478746AA0EA51393DE" Guid="21deac68-aabd-ca78-9850-5d3946257dd2">
+ <File Id="owfD1693AA47CB9D1478746AA0EA51393DE" Source="$(var.SourceDir)\api-ms-win-crt-conio-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcC0FF1ED3E758B2E709F858D62299B564" Guid="b625b88e-4abf-6166-ead9-51d7f022a245">
+ <File Id="owfC0FF1ED3E758B2E709F858D62299B564" Source="$(var.SourceDir)\api-ms-win-crt-convert-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcFF109116ADE424E019A74ECEDCEEDC96" Guid="df956e13-b57b-21f3-03e3-03045db37ad0">
+ <File Id="owfFF109116ADE424E019A74ECEDCEEDC96" Source="$(var.SourceDir)\api-ms-win-crt-environment-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc58EEEBEEDA434B7510814325C1AB10BD" Guid="78a9cebd-4ff7-7156-01c1-701cc378ec48">
+ <File Id="owf58EEEBEEDA434B7510814325C1AB10BD" Source="$(var.SourceDir)\api-ms-win-crt-filesystem-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcF9145DB2949158EE66CAF13467D7CDEA" Guid="0db242df-3c38-59d9-ba82-678292e415e9">
+ <File Id="owfF9145DB2949158EE66CAF13467D7CDEA" Source="$(var.SourceDir)\api-ms-win-crt-heap-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc04E2797822CA701738BA8CF773ACA17D" Guid="e1ceddda-a7e2-c588-eff5-1c64a6829942">
+ <File Id="owf04E2797822CA701738BA8CF773ACA17D" Source="$(var.SourceDir)\api-ms-win-crt-locale-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc79E5C41B2E769D88A7E451C9B85B7D3E" Guid="5af7dee7-e556-d050-2bee-905bab048731">
+ <File Id="owf79E5C41B2E769D88A7E451C9B85B7D3E" Source="$(var.SourceDir)\api-ms-win-crt-math-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcC0DD0DCFA4C8391F0584DDBFD3D01D8A" Guid="69d99aa1-532a-a42b-da66-239b695caa29">
+ <File Id="owfC0DD0DCFA4C8391F0584DDBFD3D01D8A" Source="$(var.SourceDir)\api-ms-win-crt-multibyte-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc00DF349696D15E13CDDB73EFE89973BF" Guid="86dbb085-cf17-3a18-0b04-48ca1dcdf789">
+ <File Id="owf00DF349696D15E13CDDB73EFE89973BF" Source="$(var.SourceDir)\api-ms-win-crt-private-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc1C6DFB0EB64E5491806509E3A185DA92" Guid="69d98238-e53d-68df-a2d1-a40f0f074603">
+ <File Id="owf1C6DFB0EB64E5491806509E3A185DA92" Source="$(var.SourceDir)\api-ms-win-crt-process-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc6D67191F10304B6EEB061FF6C8BA189E" Guid="c3e4e843-7d00-d6eb-57e1-dffe08b74b39">
+ <File Id="owf6D67191F10304B6EEB061FF6C8BA189E" Source="$(var.SourceDir)\api-ms-win-crt-runtime-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcD4C69D7E7D5B0EB2FCF1A1D64DB4E549" Guid="04a20710-8488-76dd-a682-05f5beda4865">
+ <File Id="owfD4C69D7E7D5B0EB2FCF1A1D64DB4E549" Source="$(var.SourceDir)\api-ms-win-crt-stdio-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc6BD6F8DDDEE0D45B22F4D0C1651442CB" Guid="2bda440c-7480-06ee-f3b8-bd2d961eaa70">
+ <File Id="owf6BD6F8DDDEE0D45B22F4D0C1651442CB" Source="$(var.SourceDir)\api-ms-win-crt-string-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcD70B7FCB3BE2EABECC4DA8763976173F" Guid="f903429f-585a-59b2-7b0e-d4eb32984751">
+ <File Id="owfD70B7FCB3BE2EABECC4DA8763976173F" Source="$(var.SourceDir)\api-ms-win-crt-time-l1-1-0.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc2B8CEEBABEB111119D338BBEA7DDEE56" Guid="360a1a54-67cf-c5bc-ba1f-45460ea2297c">
+ <File Id="owf2B8CEEBABEB111119D338BBEA7DDEE56" Source="$(var.SourceDir)\api-ms-win-crt-utility-l1-1-0.dll" KeyPath="yes" />
+ </Component>
<Component Id="owcD7380A80B6429BB4DD3659354FF3599A" Guid="20b81152-3892-057d-a7ba-4ecf09ee3857">
<File Id="owfD7380A80B6429BB4DD3659354FF3599A" Source="$(var.SourceDir)\Avalonia.Animation.dll" KeyPath="yes" />
</Component>
@@ -95,6 +215,21 @@
<Component Id="owc0F7CC7ACEA840EC81FADDEE08D4B54C3" Guid="8de4454d-fc84-51cf-d44c-612dcea01607">
<File Id="owf0F7CC7ACEA840EC81FADDEE08D4B54C3" Source="$(var.SourceDir)\BinarySerializer.dll" KeyPath="yes" />
</Component>
+ <Component Id="owc3D4C6D44ECDB03E5FE1F04B44BCF854F" Guid="7357d916-7bf8-aecc-ec52-30bed411500d">
+ <File Id="owf3D4C6D44ECDB03E5FE1F04B44BCF854F" Source="$(var.SourceDir)\clrcompression.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc1EB8A6523152350CEBC63B9D1BC2930F" Guid="a49af45a-fa09-479b-2625-4fdd580aa598">
+ <File Id="owf1EB8A6523152350CEBC63B9D1BC2930F" Source="$(var.SourceDir)\clretwrc.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc80EC8AEA1BFB8077812CDD06F9128A53" Guid="afbd2d79-629c-90a1-57a9-d68edc2d1437">
+ <File Id="owf80EC8AEA1BFB8077812CDD06F9128A53" Source="$(var.SourceDir)\clrjit.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc6135A13B8E29883ED57BF3FE20578EED" Guid="cd1aae2e-a4de-1bd1-9680-014bccf80e32">
+ <File Id="owf6135A13B8E29883ED57BF3FE20578EED" Source="$(var.SourceDir)\coreclr.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc3883419A2BFFE7013C2194A99728AB11" Guid="dd137337-4b74-c76b-c87e-6b5f42697dd4">
+ <File Id="owf3883419A2BFFE7013C2194A99728AB11" Source="$(var.SourceDir)\dbgshim.dll" KeyPath="yes" />
+ </Component>
<Component Id="owc0810B538AB40CCE1552F9EF3F42953A3" Guid="f95c1be6-57ee-5b8f-1c0f-2f4e227d8d79">
<File Id="owf0810B538AB40CCE1552F9EF3F42953A3" Source="$(var.SourceDir)\DynamicData.dll" KeyPath="yes" />
</Component>
@@ -104,24 +239,69 @@
<Component Id="owc596D9175D838C2B55E7BD869B446D92E" Guid="5a816164-9ca0-8b4c-5481-76eff54d3b1c">
<File Id="owf596D9175D838C2B55E7BD869B446D92E" Source="$(var.SourceDir)\HarfBuzzSharp.dll" KeyPath="yes" />
</Component>
+ <Component Id="owc8138E00413CF804D31C92E6536ADBDD7" Guid="644a568d-6191-f90d-d183-aa343c0fbaff">
+ <File Id="owf8138E00413CF804D31C92E6536ADBDD7" Source="$(var.SourceDir)\hostfxr.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcD0A4163F1CFBFB72485E8EF0D23425C0" Guid="24cee699-91b4-3e01-c2c3-1623a1af17b5">
+ <File Id="owfD0A4163F1CFBFB72485E8EF0D23425C0" Source="$(var.SourceDir)\hostpolicy.dll" KeyPath="yes" />
+ </Component>
<Component Id="owcB4617140E4B8CB31110519BDA453AF9F" Guid="91471bb5-2f18-7710-ec5c-84629d1a627c">
<File Id="owfB4617140E4B8CB31110519BDA453AF9F" Source="$(var.SourceDir)\JetBrains.Annotations.dll" KeyPath="yes" />
</Component>
- <Component Id="owc78A4AE6F184EDF0B8006BF850B100248" Guid="4b8833ff-a07f-7ea5-69d3-97ebbee528a4">
- <File Id="owf78A4AE6F184EDF0B8006BF850B100248" Source="$(var.SourceDir)\libcvextern.dylib" KeyPath="yes" />
+ <Component Id="owc41446B36203B82310F233D8008B969AA" Guid="ea7a7559-9953-2c8d-a8e4-e4518a2b49d5">
+ <File Id="owf41446B36203B82310F233D8008B969AA" Source="$(var.SourceDir)\libHarfBuzzSharp.dll" KeyPath="yes" />
</Component>
- <Component Id="owc0D4FE9E810FADA83CD6B68F54844D575" Guid="c8b67178-232f-4a24-708b-5394472b26e3">
- <File Id="owf0D4FE9E810FADA83CD6B68F54844D575" Source="$(var.SourceDir)\libcvextern.so" KeyPath="yes" />
+ <Component Id="owcABA441AFF3054689389C9F05A60C2B49" Guid="bc14fe23-5c0e-c4f0-7268-d633972c8d6b">
+ <File Id="owfABA441AFF3054689389C9F05A60C2B49" Source="$(var.SourceDir)\libSkiaSharp.dll" KeyPath="yes" />
</Component>
<Component Id="owc6262D65DF7B3DF80C034B72467CAE882" Guid="4941cd5b-5666-87fe-5a6a-5ebdd5ee2524">
<File Id="owf6262D65DF7B3DF80C034B72467CAE882" Source="$(var.SourceDir)\MessageBox.Avalonia.dll" KeyPath="yes" />
</Component>
+ <Component Id="owc27AE8A53D94DD8A3E4AEAF6F7C27FB60" Guid="80e5ef0e-84a5-2bce-9923-0fd54d243e45">
+ <File Id="owf27AE8A53D94DD8A3E4AEAF6F7C27FB60" Source="$(var.SourceDir)\Microsoft.CSharp.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc8E8A4B43081A3E23A39A84E6034A1F78" Guid="bfdc1e75-05b8-7f04-2965-29a50f29fe42">
+ <File Id="owf8E8A4B43081A3E23A39A84E6034A1F78" Source="$(var.SourceDir)\Microsoft.DiaSymReader.Native.amd64.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc4A360832ECFF1ECB9A008F2BA790EC1F" Guid="48a7d858-89a0-d86f-9222-354f090dbbae">
+ <File Id="owf4A360832ECFF1ECB9A008F2BA790EC1F" Source="$(var.SourceDir)\Microsoft.VisualBasic.Core.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc926E7DC3DE74EB3E2181C7465A15BAF4" Guid="397a9bc4-4f37-c528-2e2b-4058762b3129">
+ <File Id="owf926E7DC3DE74EB3E2181C7465A15BAF4" Source="$(var.SourceDir)\Microsoft.VisualBasic.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcADE9A457248959D397C6B092C7CCF78B" Guid="4aac0c53-b1ed-bef0-2706-7a1a9ee332ae">
+ <File Id="owfADE9A457248959D397C6B092C7CCF78B" Source="$(var.SourceDir)\Microsoft.Win32.Primitives.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc32505701ADEEE7A81C57A93DDFC583B2" Guid="e0bde769-f4c5-1e7c-49ff-50b79f2fddf1">
+ <File Id="owf32505701ADEEE7A81C57A93DDFC583B2" Source="$(var.SourceDir)\Microsoft.Win32.Registry.dll" KeyPath="yes" />
+ </Component>
<Component Id="owc7609DFEE03B95E830FD72B0699C9CF8C" Guid="c7b987b7-1a3c-0d2c-7831-ad6f4c3871e7">
<File Id="owf7609DFEE03B95E830FD72B0699C9CF8C" Source="$(var.SourceDir)\Microsoft.Win32.SystemEvents.dll" KeyPath="yes" />
</Component>
<Component Id="owcC64805E458FD0630011C0F519E9CA9E7" Guid="4b534498-a1a1-b38c-3d4b-d63b915c6d88">
<File Id="owfC64805E458FD0630011C0F519E9CA9E7" Source="$(var.SourceDir)\Microsoft.Windows.SDK.NET.dll" KeyPath="yes" />
</Component>
+ <Component Id="owc6F31DEF09608AA645959666A4CB7FBBC" Guid="c94570a5-5bb4-a53f-e12f-9581bddf7d08">
+ <File Id="owf6F31DEF09608AA645959666A4CB7FBBC" Source="$(var.SourceDir)\mscordaccore.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcFEB7513C4748B7C8BC89CF57C2CC59F2" Guid="087d4e59-3c7c-7140-73b8-ab38a91b18b2">
+ <File Id="owfFEB7513C4748B7C8BC89CF57C2CC59F2" Source="$(var.SourceDir)\mscordaccore_amd64_amd64_4.700.20.41105.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc5FC34571A1AE47A011FC6C2A95B00DA6" Guid="2591451e-0fe5-ccad-abf6-1d1097251253">
+ <File Id="owf5FC34571A1AE47A011FC6C2A95B00DA6" Source="$(var.SourceDir)\mscordbi.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc703B511CED6E576F1821E72BCD315C77" Guid="905632ee-e7c7-e961-f7b6-cefe84558e3f">
+ <File Id="owf703B511CED6E576F1821E72BCD315C77" Source="$(var.SourceDir)\mscorlib.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc537429FE657E0F214AF003E728760762" Guid="3c845268-20d3-8867-b25c-1a28f4be795f">
+ <File Id="owf537429FE657E0F214AF003E728760762" Source="$(var.SourceDir)\mscorrc.debug.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcE382B0CF482F0E7C3AF33E6EEEBD26B0" Guid="7433845c-c763-9b7e-e2c9-7b06986570bf">
+ <File Id="owfE382B0CF482F0E7C3AF33E6EEEBD26B0" Source="$(var.SourceDir)\mscorrc.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc79156F385239CEA4DEA3C87C1DA3E1D8" Guid="68380c80-6708-5eb6-415d-10e278417679">
+ <File Id="owf79156F385239CEA4DEA3C87C1DA3E1D8" Source="$(var.SourceDir)\netstandard.dll" KeyPath="yes" />
+ </Component>
<Component Id="owc3FC8434C1A84605AEEBC6A100CA2F3E1" Guid="47d7e276-db6d-424e-d797-1a69e1e24b3b">
<File Id="owf3FC8434C1A84605AEEBC6A100CA2F3E1" Source="$(var.SourceDir)\Newtonsoft.Json.dll" KeyPath="yes" />
</Component>
@@ -137,24 +317,501 @@
<Component Id="owc363CAFE6342F1E71AB07D13BAEEE5FF0" Guid="8e946fdc-ea52-7c4b-a8b3-69e1ecf51086">
<File Id="owf363CAFE6342F1E71AB07D13BAEEE5FF0" Source="$(var.SourceDir)\SkiaSharp.dll" KeyPath="yes" />
</Component>
+ <Component Id="owc07DD36861474DFA8A7BE8029239D0262" Guid="9c40efa6-5a9a-cfc7-7bc2-05ad801e798f">
+ <File Id="owf07DD36861474DFA8A7BE8029239D0262" Source="$(var.SourceDir)\SOS_README.md" KeyPath="yes" />
+ </Component>
<Component Id="owcB6B3A58616D1CC4857D00CF30CE2144F" Guid="9e96df83-7e62-ac6c-85b4-2a92ac85ef1e">
<File Id="owfB6B3A58616D1CC4857D00CF30CE2144F" Source="$(var.SourceDir)\Splat.dll" KeyPath="yes" />
</Component>
+ <Component Id="owc25FBE4153F32A5634B0ADA8A6954CC89" Guid="6c98bea6-1304-2fb8-4ce3-709ad7fb9601">
+ <File Id="owf25FBE4153F32A5634B0ADA8A6954CC89" Source="$(var.SourceDir)\System.AppContext.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc266C4DEC591C8A54CCC1D3C61FC512AA" Guid="2224179c-4d85-88a2-23e2-bc0c27cadd0e">
+ <File Id="owf266C4DEC591C8A54CCC1D3C61FC512AA" Source="$(var.SourceDir)\System.Buffers.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcB0938B04162738D88A9505D891432182" Guid="d7cbe080-11e4-4dc2-1193-c6f503619626">
+ <File Id="owfB0938B04162738D88A9505D891432182" Source="$(var.SourceDir)\System.Collections.Concurrent.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcC2F9734A56DFCFEB68C9F8C7AC021C68" Guid="82632b16-161d-4a6e-e391-607b20e12b4a">
+ <File Id="owfC2F9734A56DFCFEB68C9F8C7AC021C68" Source="$(var.SourceDir)\System.Collections.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc2F5D24BF1EA2D036DA793146E86BDF87" Guid="4d4dbb14-d5d0-ce16-910a-fdb6e5ba134f">
+ <File Id="owf2F5D24BF1EA2D036DA793146E86BDF87" Source="$(var.SourceDir)\System.Collections.Immutable.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc3C7F9AF847AED9488EC18EEE32E4304B" Guid="809763ea-b3f3-18ce-3e41-26bbda842703">
+ <File Id="owf3C7F9AF847AED9488EC18EEE32E4304B" Source="$(var.SourceDir)\System.Collections.NonGeneric.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc4AB84BBF58909FD5D097268ED05BD3B8" Guid="89c3ecb5-0659-212f-cb59-05d31675daa7">
+ <File Id="owf4AB84BBF58909FD5D097268ED05BD3B8" Source="$(var.SourceDir)\System.Collections.Specialized.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc7948664103751DE00E3ABF3175F1B8F5" Guid="a366d8d2-4235-2c9e-7252-ca4929048578">
+ <File Id="owf7948664103751DE00E3ABF3175F1B8F5" Source="$(var.SourceDir)\System.ComponentModel.Annotations.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc458070063867F096B12D3D0EA7702B44" Guid="686d8347-a4df-2d8a-7194-657c3fbf995d">
+ <File Id="owf458070063867F096B12D3D0EA7702B44" Source="$(var.SourceDir)\System.ComponentModel.DataAnnotations.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc0792F81748B398DB4EE3E1DDF209590D" Guid="412b0f26-4503-9999-14e9-e2202c8021e8">
+ <File Id="owf0792F81748B398DB4EE3E1DDF209590D" Source="$(var.SourceDir)\System.ComponentModel.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc3D2E0FD83A8DB7B30128FE2CC76A6D37" Guid="5dda7ef9-ae81-1fe4-8988-f67e2ce81309">
+ <File Id="owf3D2E0FD83A8DB7B30128FE2CC76A6D37" Source="$(var.SourceDir)\System.ComponentModel.EventBasedAsync.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcB98A1045EF964B67FA038C39D0455A74" Guid="d0e70631-1f29-359a-7ccb-265ced4e5d8e">
+ <File Id="owfB98A1045EF964B67FA038C39D0455A74" Source="$(var.SourceDir)\System.ComponentModel.Primitives.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc8CC124ECA60830593E855269F2C68614" Guid="0cbd8724-812b-82e5-1498-9c99299e2890">
+ <File Id="owf8CC124ECA60830593E855269F2C68614" Source="$(var.SourceDir)\System.ComponentModel.TypeConverter.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc4D1AA5E76AA7D0794358BCC376413DFB" Guid="1221d4ea-dc0b-5283-b6b7-bc16eeb85b02">
+ <File Id="owf4D1AA5E76AA7D0794358BCC376413DFB" Source="$(var.SourceDir)\System.Configuration.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcA90D9D10E6DAB6E67011458672887086" Guid="054993ce-0abb-9441-3124-21f972454715">
+ <File Id="owfA90D9D10E6DAB6E67011458672887086" Source="$(var.SourceDir)\System.Console.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc2EA670ABDBE3E6FE0C73F0120DC793D1" Guid="eb1f610c-76e9-af90-7f4d-6d6fb47758d3">
+ <File Id="owf2EA670ABDBE3E6FE0C73F0120DC793D1" Source="$(var.SourceDir)\System.Core.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc197F2534968D57C97974CF0FED71433C" Guid="3647ba1e-f9a9-2b45-b700-10df69827a5c">
+ <File Id="owf197F2534968D57C97974CF0FED71433C" Source="$(var.SourceDir)\System.Data.Common.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcAA8A37AF9206BCE732E042CF295162C2" Guid="b23269cc-c591-f9b5-0037-c08f266c345f">
+ <File Id="owfAA8A37AF9206BCE732E042CF295162C2" Source="$(var.SourceDir)\System.Data.DataSetExtensions.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc6A5367E03C802967F875027B23010458" Guid="690870a4-9f7d-aed4-cf6c-48c9414103d6">
+ <File Id="owf6A5367E03C802967F875027B23010458" Source="$(var.SourceDir)\System.Data.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc3C29D500369F47A07E343EDD2651DB32" Guid="29dea56c-eaa9-483f-a716-b67d01b8b990">
+ <File Id="owf3C29D500369F47A07E343EDD2651DB32" Source="$(var.SourceDir)\System.Diagnostics.Contracts.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc6CACFB486BAFCC91094BBE11FA1D6D77" Guid="793133b4-fb80-7975-7a8e-07766464274c">
+ <File Id="owf6CACFB486BAFCC91094BBE11FA1D6D77" Source="$(var.SourceDir)\System.Diagnostics.Debug.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcBC11F886BA2AB9469783C04435BCA0B9" Guid="2c483d72-1aea-aa8b-f71a-6566569838c7">
+ <File Id="owfBC11F886BA2AB9469783C04435BCA0B9" Source="$(var.SourceDir)\System.Diagnostics.DiagnosticSource.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc95502C822C8ECC756B2E2C4F9C64FF16" Guid="dd7706d9-f8b2-2713-b7f0-834cb639d431">
+ <File Id="owf95502C822C8ECC756B2E2C4F9C64FF16" Source="$(var.SourceDir)\System.Diagnostics.FileVersionInfo.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc07926E71F17C43267B44ABF5C937ED8C" Guid="c2f4dc50-e48b-8b70-da9d-05d3d0b96d8c">
+ <File Id="owf07926E71F17C43267B44ABF5C937ED8C" Source="$(var.SourceDir)\System.Diagnostics.Process.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcFD55AECF118116371C5449C61249EBA9" Guid="3e573539-03f1-e10d-bdf2-156834c932bb">
+ <File Id="owfFD55AECF118116371C5449C61249EBA9" Source="$(var.SourceDir)\System.Diagnostics.StackTrace.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc8C141B7761F05071AEBFD95ADA41AAC2" Guid="f47f0838-abc0-f976-4844-86785cf80c59">
+ <File Id="owf8C141B7761F05071AEBFD95ADA41AAC2" Source="$(var.SourceDir)\System.Diagnostics.TextWriterTraceListener.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc574EE3E1A7A24522AA9A38228494DECE" Guid="5a009284-cc72-3c8c-153f-7efd850794bd">
+ <File Id="owf574EE3E1A7A24522AA9A38228494DECE" Source="$(var.SourceDir)\System.Diagnostics.Tools.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcA29B00369195EF6CDC8068D7A2A4DA83" Guid="743ce7b4-53e5-922c-e986-bf8473a7cf98">
+ <File Id="owfA29B00369195EF6CDC8068D7A2A4DA83" Source="$(var.SourceDir)\System.Diagnostics.TraceSource.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc38B2B9FCCE93A2C7D2E931C05D695098" Guid="9459de6c-25a4-7990-155f-a45d2c7be1c9">
+ <File Id="owf38B2B9FCCE93A2C7D2E931C05D695098" Source="$(var.SourceDir)\System.Diagnostics.Tracing.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc792855966F47F4EE89053BF1151A9542" Guid="9331c7c2-b0f6-e3b1-0868-9382d658ad1f">
+ <File Id="owf792855966F47F4EE89053BF1151A9542" Source="$(var.SourceDir)\System.dll" KeyPath="yes" />
+ </Component>
<Component Id="owcC44FBFE064FE5B25B9677334BAFFBB9F" Guid="7eaa9e75-cff6-90ab-c842-673d3b7d6d9b">
<File Id="owfC44FBFE064FE5B25B9677334BAFFBB9F" Source="$(var.SourceDir)\System.Drawing.Common.dll" KeyPath="yes" />
</Component>
+ <Component Id="owcA073632493751937102DDDDCECF0885D" Guid="c3a44acf-4091-f095-8147-5d7a100fdd22">
+ <File Id="owfA073632493751937102DDDDCECF0885D" Source="$(var.SourceDir)\System.Drawing.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcAE197E3701A3A42602A5A8DFCD4C1352" Guid="aaecbf8b-bd8b-869d-39d1-a4ad8096c8fc">
+ <File Id="owfAE197E3701A3A42602A5A8DFCD4C1352" Source="$(var.SourceDir)\System.Drawing.Primitives.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc9A4DD4F6185D06C5A78E8AEDADB2494F" Guid="3249aa9c-9bf9-808a-ad80-94b09eb9ee37">
+ <File Id="owf9A4DD4F6185D06C5A78E8AEDADB2494F" Source="$(var.SourceDir)\System.Dynamic.Runtime.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcB1B1D5CD5E0525947D05C2530DDA9E96" Guid="43664615-fe63-0e97-cbd8-b599204e0079">
+ <File Id="owfB1B1D5CD5E0525947D05C2530DDA9E96" Source="$(var.SourceDir)\System.Globalization.Calendars.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc25E08EF59014137F40FBDB350A040254" Guid="72175d94-4661-bd4d-8f7c-806a2c4e10df">
+ <File Id="owf25E08EF59014137F40FBDB350A040254" Source="$(var.SourceDir)\System.Globalization.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcC5DFECD777F28F599EFA8F4187DD40EF" Guid="99f2e8a7-8767-ed7e-3b5d-db91e3aac12e">
+ <File Id="owfC5DFECD777F28F599EFA8F4187DD40EF" Source="$(var.SourceDir)\System.Globalization.Extensions.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc0B27BF2D8C5E9D1FA71670F897004F44" Guid="0f7714e7-c24e-22c7-ad62-6f5cdb4a87bf">
+ <File Id="owf0B27BF2D8C5E9D1FA71670F897004F44" Source="$(var.SourceDir)\System.IO.Compression.Brotli.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc5AC6699E38D4EE124CC260C1E19F025A" Guid="c61fccad-8828-7db7-7b4c-a6e5c488d921">
+ <File Id="owf5AC6699E38D4EE124CC260C1E19F025A" Source="$(var.SourceDir)\System.IO.Compression.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc7076993716C6C3AE1E237165C150BC5D" Guid="6ba9db0d-a783-1f25-3bce-dec520a31d10">
+ <File Id="owf7076993716C6C3AE1E237165C150BC5D" Source="$(var.SourceDir)\System.IO.Compression.FileSystem.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc87D8454A10E8D4063130BA0D60AAE450" Guid="a585b63b-3239-b7eb-2469-3c56a3d09878">
+ <File Id="owf87D8454A10E8D4063130BA0D60AAE450" Source="$(var.SourceDir)\System.IO.Compression.ZipFile.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc7600C49A56A3819C607969AD7D76A1D1" Guid="9542af82-033f-50c7-0b25-101b9d94aee5">
+ <File Id="owf7600C49A56A3819C607969AD7D76A1D1" Source="$(var.SourceDir)\System.IO.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc6372F0503E54EFFBD93822665A490240" Guid="bf636343-7d51-0f71-d231-b3d5da7213d5">
+ <File Id="owf6372F0503E54EFFBD93822665A490240" Source="$(var.SourceDir)\System.IO.FileSystem.AccessControl.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc6A348A5B38822B45BE742FD5B11ACF09" Guid="adbadd4a-8778-9648-1adb-3049bb09a6fe">
+ <File Id="owf6A348A5B38822B45BE742FD5B11ACF09" Source="$(var.SourceDir)\System.IO.FileSystem.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc200ACB21A48F8F1D56C9616D95EC5CA6" Guid="86572d0d-c334-066c-8492-f5a95c55ae7e">
+ <File Id="owf200ACB21A48F8F1D56C9616D95EC5CA6" Source="$(var.SourceDir)\System.IO.FileSystem.DriveInfo.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc6AF351692769A11F3108B81F1F6AC695" Guid="2ac1ada3-a20f-6c5e-5cdf-7bf5714f1c04">
+ <File Id="owf6AF351692769A11F3108B81F1F6AC695" Source="$(var.SourceDir)\System.IO.FileSystem.Primitives.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc7B9EE702BD2FAC26E42EFF8600C64938" Guid="84c93447-8f38-23ab-af54-34e69eb7ced5">
+ <File Id="owf7B9EE702BD2FAC26E42EFF8600C64938" Source="$(var.SourceDir)\System.IO.FileSystem.Watcher.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc0E49FFF68A74A08E1D96D167E231151C" Guid="e75a5738-a216-d575-b966-18057daede4a">
+ <File Id="owf0E49FFF68A74A08E1D96D167E231151C" Source="$(var.SourceDir)\System.IO.IsolatedStorage.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcE365A318301D62F1E6FA10DAB8EDC93F" Guid="2326c008-47f6-4283-e890-762ab2f98d30">
+ <File Id="owfE365A318301D62F1E6FA10DAB8EDC93F" Source="$(var.SourceDir)\System.IO.MemoryMappedFiles.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcA10791B34B9C78C70CAA64E8338D9614" Guid="d1c6232d-5704-91b7-0c7a-777a386f1051">
+ <File Id="owfA10791B34B9C78C70CAA64E8338D9614" Source="$(var.SourceDir)\System.IO.Pipes.AccessControl.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcDCCA68A85DF38860CCC28523FB623211" Guid="add6cc29-8bf1-6e97-79ee-b261352607e4">
+ <File Id="owfDCCA68A85DF38860CCC28523FB623211" Source="$(var.SourceDir)\System.IO.Pipes.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc78BC0855489045221F1F6CEA03DF8766" Guid="d2b4c167-5a87-ed23-1ce5-794611185bd9">
+ <File Id="owf78BC0855489045221F1F6CEA03DF8766" Source="$(var.SourceDir)\System.IO.UnmanagedMemoryStream.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc14A5BB088914D21BDD2FBEE1395FD78B" Guid="11154b61-2f87-760b-ca0a-36b886648d7f">
+ <File Id="owf14A5BB088914D21BDD2FBEE1395FD78B" Source="$(var.SourceDir)\System.Linq.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc06E33481927840239152432A87297CC9" Guid="2f479661-9a83-d333-258a-3151e9ece602">
+ <File Id="owf06E33481927840239152432A87297CC9" Source="$(var.SourceDir)\System.Linq.Expressions.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc33213504D30FB74AAAB9D42C2A139443" Guid="dd6f9275-f413-79ca-4c16-3b49f3eed555">
+ <File Id="owf33213504D30FB74AAAB9D42C2A139443" Source="$(var.SourceDir)\System.Linq.Parallel.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcB31C9F44CA4C0DEA88E930491533E593" Guid="87247598-1247-8568-6682-990663cb8642">
+ <File Id="owfB31C9F44CA4C0DEA88E930491533E593" Source="$(var.SourceDir)\System.Linq.Queryable.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcF2B199C7800AE0BBCC0001E0A61F6988" Guid="405dfe99-fffe-4059-26e0-c7d1bd0a0bed">
+ <File Id="owfF2B199C7800AE0BBCC0001E0A61F6988" Source="$(var.SourceDir)\System.Memory.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc4A43C16F2C3C6CBABFA3485A6C60298F" Guid="21af8d40-14dc-d59b-6214-1311fa50c80b">
+ <File Id="owf4A43C16F2C3C6CBABFA3485A6C60298F" Source="$(var.SourceDir)\System.Net.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcB279CD308898A9D5EFCE20D942FB230A" Guid="d983e56b-4031-2045-c1d1-5c2c9be7f564">
+ <File Id="owfB279CD308898A9D5EFCE20D942FB230A" Source="$(var.SourceDir)\System.Net.Http.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc1FF5D15A5BDB1E29D2F481CDF957855A" Guid="c020ff07-701e-3695-86ec-a8484a08f16e">
+ <File Id="owf1FF5D15A5BDB1E29D2F481CDF957855A" Source="$(var.SourceDir)\System.Net.HttpListener.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcBA297676BD4016E21925CEC4E12AAF2B" Guid="6f2bfcd5-8345-6ac6-d857-cc814c58999f">
+ <File Id="owfBA297676BD4016E21925CEC4E12AAF2B" Source="$(var.SourceDir)\System.Net.Mail.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc81FA8D77EACF48506EFC7693E951C70F" Guid="e7ed96ee-ac84-1462-3bc5-0acf623d1e15">
+ <File Id="owf81FA8D77EACF48506EFC7693E951C70F" Source="$(var.SourceDir)\System.Net.NameResolution.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc934C98C53C7E0808A3EE15A4AC868052" Guid="9117b5fe-bb92-90f0-6841-8fd5f4866905">
+ <File Id="owf934C98C53C7E0808A3EE15A4AC868052" Source="$(var.SourceDir)\System.Net.NetworkInformation.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc1537EF89B96DC1C1E331FD2FE9BC31B8" Guid="561d623d-0e08-7280-427b-d69affcec093">
+ <File Id="owf1537EF89B96DC1C1E331FD2FE9BC31B8" Source="$(var.SourceDir)\System.Net.Ping.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcA5E0D3BB9BB264A42DB0EF961B40BAC9" Guid="9ef2c73b-6f1f-0357-6cf8-bc070f12760c">
+ <File Id="owfA5E0D3BB9BB264A42DB0EF961B40BAC9" Source="$(var.SourceDir)\System.Net.Primitives.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc427724892EF22A8FDF13221FADDF47CC" Guid="c1af59c0-6298-681e-d89d-ea0b63bd940a">
+ <File Id="owf427724892EF22A8FDF13221FADDF47CC" Source="$(var.SourceDir)\System.Net.Requests.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc5A51A1889EEF7C8C80A51530FF7D999C" Guid="3dcfe4c5-b7ac-e109-3c50-0e5ea818dded">
+ <File Id="owf5A51A1889EEF7C8C80A51530FF7D999C" Source="$(var.SourceDir)\System.Net.Security.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc9A130B1AD6CE0DBF4EF30D1FA0E17558" Guid="f1a46601-8f73-d33b-87df-57da3b57cc3e">
+ <File Id="owf9A130B1AD6CE0DBF4EF30D1FA0E17558" Source="$(var.SourceDir)\System.Net.ServicePoint.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcC356900D1A9E2893A31E87C428F0E41B" Guid="61cebe7a-3808-0785-6015-240947c99e73">
+ <File Id="owfC356900D1A9E2893A31E87C428F0E41B" Source="$(var.SourceDir)\System.Net.Sockets.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcFBF4445BFCD03E40CAA85580941050EC" Guid="4e9712fa-3326-c7a6-01e9-adde23c326da">
+ <File Id="owfFBF4445BFCD03E40CAA85580941050EC" Source="$(var.SourceDir)\System.Net.WebClient.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc15ED2C21746479C61C5A49665D7267AB" Guid="aa1db7fa-0a1d-1a1e-6719-05f44a9ed8d5">
+ <File Id="owf15ED2C21746479C61C5A49665D7267AB" Source="$(var.SourceDir)\System.Net.WebHeaderCollection.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc1FEECFECFF17CF9EE1457E09FDD8F063" Guid="d25b3ad2-7120-0447-b74e-b7716800f56d">
+ <File Id="owf1FEECFECFF17CF9EE1457E09FDD8F063" Source="$(var.SourceDir)\System.Net.WebProxy.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc4B4A4DF753894976B75856AABBD83E94" Guid="218b92df-fbee-5e9e-effc-d4ba986254c9">
+ <File Id="owf4B4A4DF753894976B75856AABBD83E94" Source="$(var.SourceDir)\System.Net.WebSockets.Client.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc307840A4F26A9DC062C0BF59A99A6C7F" Guid="a1d35c2f-09e0-879e-7ed4-332bc5171e54">
+ <File Id="owf307840A4F26A9DC062C0BF59A99A6C7F" Source="$(var.SourceDir)\System.Net.WebSockets.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc8D7782E7A3BC230C7410DA352FB0C8FC" Guid="55be9b9f-5cd4-c78e-1459-8f6765527eda">
+ <File Id="owf8D7782E7A3BC230C7410DA352FB0C8FC" Source="$(var.SourceDir)\System.Numerics.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcACF44A9199404726B3D0BCAC3DDC9884" Guid="6f6141de-d259-6b2b-c804-923361cfa667">
+ <File Id="owfACF44A9199404726B3D0BCAC3DDC9884" Source="$(var.SourceDir)\System.Numerics.Vectors.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc47F52E1092EC255FB03FA729B1FB25DD" Guid="510ba151-2fd1-9a2b-c8b3-8ac725dc97ff">
+ <File Id="owf47F52E1092EC255FB03FA729B1FB25DD" Source="$(var.SourceDir)\System.ObjectModel.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcC7CAE2D30C1FF0EEA89AC22371A96B2E" Guid="84f5b75a-cd78-cefa-5b2e-77a8f68c3790">
+ <File Id="owfC7CAE2D30C1FF0EEA89AC22371A96B2E" Source="$(var.SourceDir)\System.Private.CoreLib.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcC04757078499DE51102D8CDAB1D1EE59" Guid="19d3b934-95c5-8f10-338a-5ed4fbf4c6df">
+ <File Id="owfC04757078499DE51102D8CDAB1D1EE59" Source="$(var.SourceDir)\System.Private.DataContractSerialization.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc9CD12B7F32947BB77F0EAB6A5BF49268" Guid="fdaf043f-420a-39b3-3cf7-a3bf2047b76b">
+ <File Id="owf9CD12B7F32947BB77F0EAB6A5BF49268" Source="$(var.SourceDir)\System.Private.Uri.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc6BD0CD2B2788A0401676CF3B25EF8A0F" Guid="10e3c7ea-439a-4cfd-277b-7de66a382d60">
+ <File Id="owf6BD0CD2B2788A0401676CF3B25EF8A0F" Source="$(var.SourceDir)\System.Private.Xml.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc148489B5CDA7EB2C29FE77B292334A78" Guid="9cb9b3e6-4894-c00e-81e8-b063f5c6da3b">
+ <File Id="owf148489B5CDA7EB2C29FE77B292334A78" Source="$(var.SourceDir)\System.Private.Xml.Linq.dll" KeyPath="yes" />
+ </Component>
<Component Id="owc784C102062996900FDDFF7A76CCC6BEA" Guid="c0228705-c52a-22a0-45e2-aeea6d7780a0">
<File Id="owf784C102062996900FDDFF7A76CCC6BEA" Source="$(var.SourceDir)\System.Reactive.dll" KeyPath="yes" />
</Component>
<Component Id="owc659AD7BAD61D23D57810ADB460B5F787" Guid="24c8a539-f0c6-e966-b480-914f2f28b932">
<File Id="owf659AD7BAD61D23D57810ADB460B5F787" Source="$(var.SourceDir)\System.Reactive.xml" KeyPath="yes" />
</Component>
+ <Component Id="owc3113B8ED121A12C42915591BDB9D1908" Guid="13c39e0e-6a8a-6a6c-e70c-464a51dafcee">
+ <File Id="owf3113B8ED121A12C42915591BDB9D1908" Source="$(var.SourceDir)\System.Reflection.DispatchProxy.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc7A6EE41CC1504CC124313BD05EDA4F44" Guid="c7dccf48-7641-5657-0f4a-790939e60107">
+ <File Id="owf7A6EE41CC1504CC124313BD05EDA4F44" Source="$(var.SourceDir)\System.Reflection.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcB8E57E36F239BA1AF1F29557E2BC8504" Guid="fa8a4480-b62d-31da-0031-ffa3ae954680">
+ <File Id="owfB8E57E36F239BA1AF1F29557E2BC8504" Source="$(var.SourceDir)\System.Reflection.Emit.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc3DF46F848282D290A9F851917AA8772A" Guid="288973f5-f332-a49f-9d93-840452901e6c">
+ <File Id="owf3DF46F848282D290A9F851917AA8772A" Source="$(var.SourceDir)\System.Reflection.Emit.ILGeneration.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcF862FB0271E431AEED11008D1B08CDD8" Guid="c3cb3976-106a-8638-a9fe-d92c87eef3db">
+ <File Id="owfF862FB0271E431AEED11008D1B08CDD8" Source="$(var.SourceDir)\System.Reflection.Emit.Lightweight.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcD9272FCEF8BD1CC7FEAD7AD1A6E49EF3" Guid="4ba74d67-6502-0abd-79a8-26cce9bc86d4">
+ <File Id="owfD9272FCEF8BD1CC7FEAD7AD1A6E49EF3" Source="$(var.SourceDir)\System.Reflection.Extensions.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcA16A544127C8C5C1A438AA3570FBD816" Guid="4e943266-3693-05ea-92ef-4af7612de750">
+ <File Id="owfA16A544127C8C5C1A438AA3570FBD816" Source="$(var.SourceDir)\System.Reflection.Metadata.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc083C1FE687BC99A09242C06653A8673C" Guid="f268003d-bd54-6061-568d-b909f33eaf33">
+ <File Id="owf083C1FE687BC99A09242C06653A8673C" Source="$(var.SourceDir)\System.Reflection.Primitives.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc342C8E4E3FD4C3812596B5DEA9DFA6DF" Guid="0dbd5985-58a6-164d-ee5c-e36378843e69">
+ <File Id="owf342C8E4E3FD4C3812596B5DEA9DFA6DF" Source="$(var.SourceDir)\System.Reflection.TypeExtensions.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcEFF9EFA899E048C6DD53C124C8DAE919" Guid="a497a5bc-c0f3-1762-69bf-4dc4b0a88f6e">
+ <File Id="owfEFF9EFA899E048C6DD53C124C8DAE919" Source="$(var.SourceDir)\System.Resources.Reader.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc750D708E37736D206D716B57DF575AB0" Guid="0bde5d63-8ea7-f22c-1ebb-030e8d39dfad">
+ <File Id="owf750D708E37736D206D716B57DF575AB0" Source="$(var.SourceDir)\System.Resources.ResourceManager.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc849861456AA2178B87DEAD1CF0DA8761" Guid="8b407362-c4b6-528d-6f4c-5486f3281fbf">
+ <File Id="owf849861456AA2178B87DEAD1CF0DA8761" Source="$(var.SourceDir)\System.Resources.Writer.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc496161876FAED4A7A0471BC80B909F19" Guid="7fe0a99f-4733-5247-2280-d9c79313b3a1">
+ <File Id="owf496161876FAED4A7A0471BC80B909F19" Source="$(var.SourceDir)\System.Runtime.CompilerServices.Unsafe.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc184E3D12DDC835719CBE7B32D018A9B9" Guid="5b7727d9-d809-6709-fa1d-cb6731f22dcf">
+ <File Id="owf184E3D12DDC835719CBE7B32D018A9B9" Source="$(var.SourceDir)\System.Runtime.CompilerServices.VisualC.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcCD2580ECA1FA1A3513916545D2F2BFA5" Guid="6340e508-d6f8-8810-a6a8-ac0e78dde158">
+ <File Id="owfCD2580ECA1FA1A3513916545D2F2BFA5" Source="$(var.SourceDir)\System.Runtime.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcB0183318DD63CCAB717750C767DC21D7" Guid="483f57ba-9660-18d1-2e88-4a867168e9e0">
+ <File Id="owfB0183318DD63CCAB717750C767DC21D7" Source="$(var.SourceDir)\System.Runtime.Extensions.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc136B2242A532BBBC64642250BAE3BC3F" Guid="3ab37d46-5fd1-fbc4-6157-d3551784c9a2">
+ <File Id="owf136B2242A532BBBC64642250BAE3BC3F" Source="$(var.SourceDir)\System.Runtime.Handles.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc456C772F6BA4F8274FFF4540362C5A62" Guid="72ae39cf-24e7-236b-11f9-67b7675f0c4a">
+ <File Id="owf456C772F6BA4F8274FFF4540362C5A62" Source="$(var.SourceDir)\System.Runtime.InteropServices.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc142B759C8549F55E22EAD18CF214B77E" Guid="4e3b53dc-2b0a-9a0f-3956-f346f8b8ebd1">
+ <File Id="owf142B759C8549F55E22EAD18CF214B77E" Source="$(var.SourceDir)\System.Runtime.InteropServices.RuntimeInformation.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc3CA4B705071A600D347C4DD0486AD3BC" Guid="674c2a3e-6a95-d20d-42ac-659354ea5bab">
+ <File Id="owf3CA4B705071A600D347C4DD0486AD3BC" Source="$(var.SourceDir)\System.Runtime.InteropServices.WindowsRuntime.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc9A9C9FBB06116601690A51EB023CA483" Guid="97913f47-cd75-9dbc-af5e-b2268ffe41f5">
+ <File Id="owf9A9C9FBB06116601690A51EB023CA483" Source="$(var.SourceDir)\System.Runtime.Intrinsics.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc89E8C9EAF9E8E5FDD9C8AF216759A449" Guid="a73ea78a-649c-bf2a-0e24-3d676cec2674">
+ <File Id="owf89E8C9EAF9E8E5FDD9C8AF216759A449" Source="$(var.SourceDir)\System.Runtime.Loader.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc4D6AAABFFAA874E29883633840AD5B1F" Guid="9cf171cf-1bd8-7320-ccb2-cb1adcf87ec0">
+ <File Id="owf4D6AAABFFAA874E29883633840AD5B1F" Source="$(var.SourceDir)\System.Runtime.Numerics.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc0D05731F796C61AEBDC3FF2F0377452C" Guid="1a55f7a8-17bb-2708-41ec-4ccea1f69c17">
+ <File Id="owf0D05731F796C61AEBDC3FF2F0377452C" Source="$(var.SourceDir)\System.Runtime.Serialization.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcE993E9C3A7C67ECA577A3A9E42989BFE" Guid="42f40541-4eac-dd0c-419f-07752bb5366a">
+ <File Id="owfE993E9C3A7C67ECA577A3A9E42989BFE" Source="$(var.SourceDir)\System.Runtime.Serialization.Formatters.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc878F2DAAF11EC15BCCF25D4B2664C036" Guid="fc052749-2574-2d83-91cd-317890816d6e">
+ <File Id="owf878F2DAAF11EC15BCCF25D4B2664C036" Source="$(var.SourceDir)\System.Runtime.Serialization.Json.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc8CCA0B6EDAAD44516BEED2BD0448127B" Guid="3a279abe-73c3-37ef-d282-05432cc4de99">
+ <File Id="owf8CCA0B6EDAAD44516BEED2BD0448127B" Source="$(var.SourceDir)\System.Runtime.Serialization.Primitives.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcAFF0D75B678B8C04204C4F4BE10DC63D" Guid="962d7785-2bdd-31be-55cc-1ef55fb340f1">
+ <File Id="owfAFF0D75B678B8C04204C4F4BE10DC63D" Source="$(var.SourceDir)\System.Runtime.Serialization.Xml.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc1097CF703360A42944AC2B35A6F9BFE6" Guid="ea57ed6c-2897-5e3e-3123-8d98b98dbd10">
+ <File Id="owf1097CF703360A42944AC2B35A6F9BFE6" Source="$(var.SourceDir)\System.Runtime.WindowsRuntime.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcC7317F397E5D1F6B51A848BA3C5670EC" Guid="25c92170-3bc9-34cc-b0f2-03c2d0974abf">
+ <File Id="owfC7317F397E5D1F6B51A848BA3C5670EC" Source="$(var.SourceDir)\System.Runtime.WindowsRuntime.UI.Xaml.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcE16E2DDD34171BE60D55C8D38E64DFED" Guid="5c9c49b2-ab60-2ada-7c5b-ccaf917fec9e">
+ <File Id="owfE16E2DDD34171BE60D55C8D38E64DFED" Source="$(var.SourceDir)\System.Security.AccessControl.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc75D606E732168EB3AF6DA3C08CCDE454" Guid="26c8e108-08a8-4f5f-4bbd-f4a1239aa723">
+ <File Id="owf75D606E732168EB3AF6DA3C08CCDE454" Source="$(var.SourceDir)\System.Security.Claims.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcD6CB46E32249D9DFE253203C9E68622F" Guid="0aa2f4b7-b10b-cfe5-23bf-064b16b835a1">
+ <File Id="owfD6CB46E32249D9DFE253203C9E68622F" Source="$(var.SourceDir)\System.Security.Cryptography.Algorithms.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcBDEF67F7824536A847E85C78FE427CC5" Guid="d8d2da9f-852a-d6e1-e3c6-f1f79ae03812">
+ <File Id="owfBDEF67F7824536A847E85C78FE427CC5" Source="$(var.SourceDir)\System.Security.Cryptography.Cng.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcE1097D781C913E7C0DFC7E360BA5341C" Guid="ed9b5dc0-4679-3d18-d31c-80e19c54a569">
+ <File Id="owfE1097D781C913E7C0DFC7E360BA5341C" Source="$(var.SourceDir)\System.Security.Cryptography.Csp.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcF620F5D5E0DED6F51741DE9E09BAA10C" Guid="2bc2c15c-d955-2493-537a-644fab7006f5">
+ <File Id="owfF620F5D5E0DED6F51741DE9E09BAA10C" Source="$(var.SourceDir)\System.Security.Cryptography.Encoding.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc52714E3E268ECC037C258F1650B55C09" Guid="74e08645-84bc-db40-130e-d8bb2370b886">
+ <File Id="owf52714E3E268ECC037C258F1650B55C09" Source="$(var.SourceDir)\System.Security.Cryptography.OpenSsl.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc0F0B6DF93E003C893A5E5E253BAF6C85" Guid="8156cb10-1a47-9979-3566-e6bac4f9dfeb">
+ <File Id="owf0F0B6DF93E003C893A5E5E253BAF6C85" Source="$(var.SourceDir)\System.Security.Cryptography.Primitives.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc328828932DA40CAED6EC4EA121F7534D" Guid="7057b2c9-50fd-de60-a125-3b4584bd89c0">
+ <File Id="owf328828932DA40CAED6EC4EA121F7534D" Source="$(var.SourceDir)\System.Security.Cryptography.X509Certificates.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcC0DB18BCBC84132D6B61635BE6EAF1EA" Guid="9d7c6c38-bc43-d772-8953-7b3295914289">
+ <File Id="owfC0DB18BCBC84132D6B61635BE6EAF1EA" Source="$(var.SourceDir)\System.Security.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcBEFCDE5B2833DF316BCC51AFD6BF3AA4" Guid="05208332-4a46-eea8-7608-a22531987d4d">
+ <File Id="owfBEFCDE5B2833DF316BCC51AFD6BF3AA4" Source="$(var.SourceDir)\System.Security.Principal.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc016214434E9B6E25C4C645A5894A9696" Guid="dd4f1d1e-1fd6-9722-938e-2571dc3780b4">
+ <File Id="owf016214434E9B6E25C4C645A5894A9696" Source="$(var.SourceDir)\System.Security.Principal.Windows.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcCD07048BAA4A186C4C46EDDAE7408BE9" Guid="fec26fc5-0f79-ae52-46a4-1ed20b673c35">
+ <File Id="owfCD07048BAA4A186C4C46EDDAE7408BE9" Source="$(var.SourceDir)\System.Security.SecureString.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc555E20B29231033BCEEEEFECE7D284AE" Guid="f247b3b5-b43e-0e04-e481-19a119288ff4">
+ <File Id="owf555E20B29231033BCEEEEFECE7D284AE" Source="$(var.SourceDir)\System.ServiceModel.Web.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcA3FF4D2B280956BC17D8887A11C5600B" Guid="a0e5728b-8bec-fbac-6c29-c4d1cf611bbe">
+ <File Id="owfA3FF4D2B280956BC17D8887A11C5600B" Source="$(var.SourceDir)\System.ServiceProcess.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc135E43289668F503124D1EBE6BAEB320" Guid="8e315afb-fefc-02e9-52e9-be1cbfb8cd33">
+ <File Id="owf135E43289668F503124D1EBE6BAEB320" Source="$(var.SourceDir)\System.Text.Encoding.CodePages.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc9DE717553DF308353E4F1AD8553191F3" Guid="113c0221-beb8-56b6-2c47-3cf70203c0a4">
+ <File Id="owf9DE717553DF308353E4F1AD8553191F3" Source="$(var.SourceDir)\System.Text.Encoding.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc34C27BB25C81891A7475EFD8FFAA9931" Guid="6ea9738b-8925-479b-9ca3-111dec6a2131">
+ <File Id="owf34C27BB25C81891A7475EFD8FFAA9931" Source="$(var.SourceDir)\System.Text.Encoding.Extensions.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc80A9D1B08FB1D8164D5533012857F968" Guid="a72dee7f-1a2e-26f1-2f41-e1d50be4ff61">
+ <File Id="owf80A9D1B08FB1D8164D5533012857F968" Source="$(var.SourceDir)\System.Text.Encodings.Web.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc19E6D5424ACBD32622F1E5B314864D09" Guid="e03f2e4d-0424-cc35-53eb-48558a3090d1">
+ <File Id="owf19E6D5424ACBD32622F1E5B314864D09" Source="$(var.SourceDir)\System.Text.Json.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc50D709F95681A7937E1395ED21E4DE32" Guid="7b081cab-1412-4a3c-0d6d-3a888e5d04fe">
+ <File Id="owf50D709F95681A7937E1395ED21E4DE32" Source="$(var.SourceDir)\System.Text.RegularExpressions.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc4E643F069E48F2CB72C64B10067DEDBA" Guid="795c4f4b-3f12-c8a9-52c9-e4fdae740061">
+ <File Id="owf4E643F069E48F2CB72C64B10067DEDBA" Source="$(var.SourceDir)\System.Threading.Channels.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc93B418EA3A4105CA687B1FD6F9F8E483" Guid="4765e3c2-e8fe-81ea-e8d2-2cbc01e9ab23">
+ <File Id="owf93B418EA3A4105CA687B1FD6F9F8E483" Source="$(var.SourceDir)\System.Threading.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc26DBBA37A502B1E377A9CF34F7C9D924" Guid="7dbebf27-47a9-2d91-9dea-ca8847ff38e9">
+ <File Id="owf26DBBA37A502B1E377A9CF34F7C9D924" Source="$(var.SourceDir)\System.Threading.Overlapped.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcCE4898A459220AFB82CE5C29F65FEB28" Guid="d6cfc0fe-0141-1a96-5403-d9390c17e896">
+ <File Id="owfCE4898A459220AFB82CE5C29F65FEB28" Source="$(var.SourceDir)\System.Threading.Tasks.Dataflow.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc46051FF3577F3044A630547B602D36DC" Guid="5b7067b2-7764-c6d6-1cd8-0c0ec94ac9de">
+ <File Id="owf46051FF3577F3044A630547B602D36DC" Source="$(var.SourceDir)\System.Threading.Tasks.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc3CF0579307E4A1BD0241C5C6F3C8B3D4" Guid="80fa7fae-900d-88df-1639-3dd6c24b807b">
+ <File Id="owf3CF0579307E4A1BD0241C5C6F3C8B3D4" Source="$(var.SourceDir)\System.Threading.Tasks.Extensions.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc4DE82B405CA7ADEA8047D5BC722BBBEF" Guid="bb415d19-c137-2787-38dc-5bb66284bcf3">
+ <File Id="owf4DE82B405CA7ADEA8047D5BC722BBBEF" Source="$(var.SourceDir)\System.Threading.Tasks.Parallel.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc1268977FB6886DC35AB6DD4910EC47A5" Guid="553ce841-c554-609c-10f6-d76e19ccc3d8">
+ <File Id="owf1268977FB6886DC35AB6DD4910EC47A5" Source="$(var.SourceDir)\System.Threading.Thread.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcDC6299D4B1597EE397010E85295D610C" Guid="90599afd-2eda-0dad-706c-ffc98b418414">
+ <File Id="owfDC6299D4B1597EE397010E85295D610C" Source="$(var.SourceDir)\System.Threading.ThreadPool.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcB50ADFFB11B16B7B3CB8B8CF322E6E82" Guid="a2ac071f-7b0b-5b3e-23a1-7d5bc783531c">
+ <File Id="owfB50ADFFB11B16B7B3CB8B8CF322E6E82" Source="$(var.SourceDir)\System.Threading.Timer.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcC611AD2074B39B99F982585B6E9B8763" Guid="e34f2079-78d6-5ad7-6a38-5b97128f08c8">
+ <File Id="owfC611AD2074B39B99F982585B6E9B8763" Source="$(var.SourceDir)\System.Transactions.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcC0550E86DAE6C9BD032DEF07B5424FC7" Guid="6fd27f3f-f7c4-71ac-f0fc-f9430ef16810">
+ <File Id="owfC0550E86DAE6C9BD032DEF07B5424FC7" Source="$(var.SourceDir)\System.Transactions.Local.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcE4E6B570ADBEC007C10E9A65C0D3809D" Guid="505ee0c9-d5a3-8e70-221f-48e70d9ec096">
+ <File Id="owfE4E6B570ADBEC007C10E9A65C0D3809D" Source="$(var.SourceDir)\System.ValueTuple.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc2456C0BAF8F82081E54CBD3EDA22600A" Guid="86de67e7-dfce-cfe5-2d5d-0a5efdece2b0">
+ <File Id="owf2456C0BAF8F82081E54CBD3EDA22600A" Source="$(var.SourceDir)\System.Web.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc0F421467BB606E2D060164F924A83B03" Guid="a3071672-4fc9-91ff-20cf-c2dfb3d021ac">
+ <File Id="owf0F421467BB606E2D060164F924A83B03" Source="$(var.SourceDir)\System.Web.HttpUtility.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc722113449C03EF4E424692018BED36E6" Guid="2cf858a6-415c-49ab-88cb-2170ef8e4489">
+ <File Id="owf722113449C03EF4E424692018BED36E6" Source="$(var.SourceDir)\System.Windows.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcC9F972FFBCC718F1F0F868B9459608C3" Guid="bfefaeda-644a-e405-2122-9f2f77eafecd">
+ <File Id="owfC9F972FFBCC718F1F0F868B9459608C3" Source="$(var.SourceDir)\System.Xml.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcA04967F05900924C76DC93C6AD6E7DD2" Guid="fe2578b9-c72e-c2f1-f97e-a2df67fb0fbb">
+ <File Id="owfA04967F05900924C76DC93C6AD6E7DD2" Source="$(var.SourceDir)\System.Xml.Linq.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc1EC9EF9564C76F0DA10AA382F306146E" Guid="43678e96-830a-a38c-d698-b43a3a7a50a8">
+ <File Id="owf1EC9EF9564C76F0DA10AA382F306146E" Source="$(var.SourceDir)\System.Xml.ReaderWriter.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcB5AB17B98C69CADEF8BE513BA59A8970" Guid="eae62965-bc17-96ea-b75b-0c1e3762d812">
+ <File Id="owfB5AB17B98C69CADEF8BE513BA59A8970" Source="$(var.SourceDir)\System.Xml.Serialization.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcF216D8D0B753CC36356881E2E693CE3F" Guid="04ea6b06-18d4-d739-f496-c64af28a71f9">
+ <File Id="owfF216D8D0B753CC36356881E2E693CE3F" Source="$(var.SourceDir)\System.Xml.XDocument.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcCAE4D437B41AEF31A4F9A1A57B15D3A9" Guid="d41c876d-c6e6-612f-c7ca-b8802416556f">
+ <File Id="owfCAE4D437B41AEF31A4F9A1A57B15D3A9" Source="$(var.SourceDir)\System.Xml.XmlDocument.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc5D35CD8D594CC804EE94DB60FD950A78" Guid="35495e0e-68b9-a7c8-ebe3-f1b54d2efb92">
+ <File Id="owf5D35CD8D594CC804EE94DB60FD950A78" Source="$(var.SourceDir)\System.Xml.XmlSerializer.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owc09E711B62DEFC2C1EE748EF308694428" Guid="91c9eb37-ac71-a646-2e0a-071efc351607">
+ <File Id="owf09E711B62DEFC2C1EE748EF308694428" Source="$(var.SourceDir)\System.Xml.XPath.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcE0C17BD02D38DB980B86FDA2BE82379B" Guid="7da0a47b-fe8b-8b11-a230-87f3c827c2f2">
+ <File Id="owfE0C17BD02D38DB980B86FDA2BE82379B" Source="$(var.SourceDir)\System.Xml.XPath.XDocument.dll" KeyPath="yes" />
+ </Component>
<Component Id="owc9AB8ED587037D049D47A65028C17AE93" Guid="b99f6da4-b6ca-790b-a463-f4e997e409d6">
<File Id="owf9AB8ED587037D049D47A65028C17AE93" Source="$(var.SourceDir)\ThemeEditor.Controls.ColorPicker.dll" KeyPath="yes" />
</Component>
<Component Id="owc708079DD5FA0D491EA8FDC1BFDF3B8AF" Guid="b7d422cf-5f2c-ca34-3fd3-d4b2b2af2ab2">
<File Id="owf708079DD5FA0D491EA8FDC1BFDF3B8AF" Source="$(var.SourceDir)\Tmds.DBus.dll" KeyPath="yes" />
</Component>
+ <Component Id="owc7382C9C8FF3A521BF6356335630BD375" Guid="aa17a4dd-086a-d8ca-2a94-5bed85c6d151">
+ <File Id="owf7382C9C8FF3A521BF6356335630BD375" Source="$(var.SourceDir)\ucrtbase.dll" KeyPath="yes" />
+ </Component>
<Component Id="owc540CF8CDBE6617C60879532E387E1716" Guid="bd0331df-7b7e-28be-f87a-809cdbfa07f0">
<File Id="owf540CF8CDBE6617C60879532E387E1716" Source="$(var.SourceDir)\UVtools.Core.dll" KeyPath="yes" />
</Component>
@@ -169,26 +826,25 @@
</Component>
<Component Id="owc21B8C8C0F69E3CD1398B9A0674DF07BD" Guid="1e472543-e636-904d-da5b-cddaac2d36b1">
<File Id="owf21B8C8C0F69E3CD1398B9A0674DF07BD" Source="$(var.SourceDir)\UVtools.exe" KeyPath="yes">
- <Shortcut Id="sc218BF75801887335D1B30BAFB94BA631" Name="UVtools" Directory="scd220707349D4C8FA275285514283F3E2A" WorkingDirectory="MergeRedirectFolder" Description="MSLA/DLP, file analysis, repair, conversion and manipulation" />
- <Shortcut Id="sc2F2092C02FDD8EB21E756F58C31B70A7" Name="UVtools" Directory="StartMenuFolder" Description="MSLA/DLP, file analysis, repair, conversion and manipulation" WorkingDirectory="MergeRedirectFolder" />
+ <Shortcut Id="sc218BF75801887335D1B30BAFB94BA631" Name="UVtools" Directory="scd220707349D4C8FA275285514283F3E2A" Description="MSLA/DLP, file analysis, repair, conversion and manipulation" WorkingDirectory="MergeRedirectFolder" />
<Shortcut Id="sc6327849DA5C02D2396E91B8B1892E03C" Name="UVtools" Directory="DesktopFolder" WorkingDirectory="MergeRedirectFolder" Description="MSLA/DLP, file analysis, repair, conversion and manipulation" />
</File>
</Component>
<Component Id="owc0C1077539E2B54F2460D2C0993613EFB" Guid="fc6ae2db-2865-9eb4-5753-4f2f941fdf16">
<File Id="owf0C1077539E2B54F2460D2C0993613EFB" Source="$(var.SourceDir)\UVtools.pdb" KeyPath="yes" />
</Component>
- <Component Id="owcE981F89C0DDF33039D11D16C235AC6A4" Guid="bac9dfcc-6b0a-0d1a-d562-492224c52805">
- <File Id="owfE981F89C0DDF33039D11D16C235AC6A4" Source="$(var.SourceDir)\UVtools.runtimeconfig.dev.json" KeyPath="yes" />
- </Component>
<Component Id="owc8B5F65BBC0ED56607BB35C1BA7A63823" Guid="a5f52e20-3806-8061-10a3-5daa4730459f">
<File Id="owf8B5F65BBC0ED56607BB35C1BA7A63823" Source="$(var.SourceDir)\UVtools.runtimeconfig.json" KeyPath="yes" />
</Component>
- <Component Id="owc7930FE48C019D2CCA4CF8D89B3EC5B7F" Guid="bce775e0-f4af-d90c-3d33-1a882c35a706">
- <File Id="owf7930FE48C019D2CCA4CF8D89B3EC5B7F" Source="$(var.SourceDir)\UVtools.sh" KeyPath="yes" />
- </Component>
<Component Id="owc1FE1E0B70F7D880A2FB9AFA8E0E36EF5" Guid="545300b7-5398-2ce2-788f-02287a83e8a7">
<File Id="owf1FE1E0B70F7D880A2FB9AFA8E0E36EF5" Source="$(var.SourceDir)\UVtools_demo_file.sl1" KeyPath="yes" />
</Component>
+ <Component Id="owc9AF7D2C52438BF24F3FA3132D7C0E6A9" Guid="892f88e7-cf94-fad1-08d3-b26c1b5913d3">
+ <File Id="owf9AF7D2C52438BF24F3FA3132D7C0E6A9" Source="$(var.SourceDir)\WindowsBase.dll" KeyPath="yes" />
+ </Component>
+ <Component Id="owcC8A7C6BC010A46EC5B595131EDD0214B" Guid="e125d364-209e-4a33-51df-5b1fff92ce4c">
+ <File Id="owfC8A7C6BC010A46EC5B595131EDD0214B" Source="$(var.SourceDir)\winrt.runtime.dll" KeyPath="yes" />
+ </Component>
<Directory Id="owd9F9F77C9E3C3E4DA718760164D5303B8" Name="Assets">
<Directory Id="owd09EA423812736FC896B5C82AE8837139" Name="PrusaSlicer">
<Directory Id="owd44E5BD2F3F078D3F66FB8FE12300C21C" Name="printer">
@@ -373,129 +1029,6 @@
</Component>
</Directory>
</Directory>
- <Directory Id="owdBF28E7F1782E32C92B2CAA92105E7DA0" Name="runtimes">
- <Directory Id="owdC6A1AEFECBF0A2DE1F88B018090711E2" Name="linux-arm">
- <Directory Id="owd617D2DD6EE84B974BE709F2E1722D585" Name="native">
- <Component Id="owc06400294BD32250A45AD8D28DC9D2601" Guid="354109de-77ed-91d9-a2a6-11b37ec46764">
- <File Id="owf06400294BD32250A45AD8D28DC9D2601" Source="$(var.SourceDir)\runtimes\linux-arm\native\libHarfBuzzSharp.so" KeyPath="yes" />
- </Component>
- <Component Id="owc347B03371531C34651F2E97B23C850E7" Guid="3ac9d0dc-26a8-f08f-4b14-4e51f57257ae">
- <File Id="owf347B03371531C34651F2E97B23C850E7" Source="$(var.SourceDir)\runtimes\linux-arm\native\libSkiaSharp.so" KeyPath="yes" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="owd6F2AE932234BA47911EB1ECD58F66368" Name="linux-arm64">
- <Directory Id="owdFCFE80F2F1930F105F0788041ED8D4E3" Name="native">
- <Component Id="owc0644B6A9D52D12060767D47628A9E08C" Guid="670134c6-52ac-1bef-73b8-005bb99ecb12">
- <File Id="owf0644B6A9D52D12060767D47628A9E08C" Source="$(var.SourceDir)\runtimes\linux-arm64\native\libHarfBuzzSharp.so" KeyPath="yes" />
- </Component>
- <Component Id="owc135EA1D3430DBC90FB8E96F2191D8F13" Guid="eee2c5e4-6bf0-f73d-3533-ce911e91c29e">
- <File Id="owf135EA1D3430DBC90FB8E96F2191D8F13" Source="$(var.SourceDir)\runtimes\linux-arm64\native\libSkiaSharp.so" KeyPath="yes" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="owdD3C6D08658AA9E98BDEFC184131031EF" Name="linux-musl-x64">
- <Directory Id="owdCC33DFC5AE4A99EB1A8A5DF9F4F25106" Name="native">
- <Component Id="owc11B8CD04C05A6C8E9235BC1DE21463F0" Guid="3002bddf-de7d-0c37-8014-e09dde3cfbd8">
- <File Id="owf11B8CD04C05A6C8E9235BC1DE21463F0" Source="$(var.SourceDir)\runtimes\linux-musl-x64\native\libHarfBuzzSharp.so" KeyPath="yes" />
- </Component>
- <Component Id="owcD0B7332C27AE652FCEE611D179DC5A49" Guid="40211e3d-656b-442d-52fd-64599eec49ef">
- <File Id="owfD0B7332C27AE652FCEE611D179DC5A49" Source="$(var.SourceDir)\runtimes\linux-musl-x64\native\libSkiaSharp.so" KeyPath="yes" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="owd556291CEC15CE19FDBB87DF3B325B56F" Name="linux-x64">
- <Directory Id="owdAD75A314791B679E18192844AC45FBE1" Name="native">
- <Component Id="owc1880BEFEB746715CA6F896F985351B5B" Guid="1758bc3a-dfb4-bd2c-b866-01b79169baa5">
- <File Id="owf1880BEFEB746715CA6F896F985351B5B" Source="$(var.SourceDir)\runtimes\linux-x64\native\libHarfBuzzSharp.so" KeyPath="yes" />
- </Component>
- <Component Id="owcB5E491BF1899604E0DA5BACB0CE1EFE7" Guid="e6614f30-9dd2-de48-0a31-65e74b510de7">
- <File Id="owfB5E491BF1899604E0DA5BACB0CE1EFE7" Source="$(var.SourceDir)\runtimes\linux-x64\native\libSkiaSharp.so" KeyPath="yes" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="owd3CD72BF57EA19F64F22DD127C870F0E7" Name="osx">
- <Directory Id="owd0E26F835006F73849909592CF7CD7D92" Name="native">
- <Component Id="owc63F8EBE530EF65B743C642E06994E5B6" Guid="a26b2ec0-d0ed-06fb-c65d-b18571be71a0">
- <File Id="owf63F8EBE530EF65B743C642E06994E5B6" Source="$(var.SourceDir)\runtimes\osx\native\libAvaloniaNative.dylib" KeyPath="yes" />
- </Component>
- <Component Id="owc8ADA513DA1910763A16A32A0FA9CD3E3" Guid="f586ea51-bd57-42e5-c035-75b950f71dc1">
- <File Id="owf8ADA513DA1910763A16A32A0FA9CD3E3" Source="$(var.SourceDir)\runtimes\osx\native\libHarfBuzzSharp.dylib" KeyPath="yes" />
- </Component>
- <Component Id="owcD9EC42BB2A6C33399CEB9553E7FF13E1" Guid="73a4b80e-f3e4-6095-73f9-c023b9ae33d0">
- <File Id="owfD9EC42BB2A6C33399CEB9553E7FF13E1" Source="$(var.SourceDir)\runtimes\osx\native\libSkiaSharp.dylib" KeyPath="yes" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="owd87A5E449AD9392823A58760FB908E24D" Name="unix">
- <Directory Id="owd0EBAEB8B6BD41BA5E65612D460B101A3" Name="lib">
- <Directory Id="owdCF67F5CD278E94BC31DEA7E052481F3C" Name="netcoreapp2.0">
- <Component Id="owc7785632DDB4F3A15581F1812493FD22C" Guid="f42c1a65-7db6-2cf4-963c-d4b38c43a7c4">
- <File Id="owf7785632DDB4F3A15581F1812493FD22C" Source="$(var.SourceDir)\runtimes\unix\lib\netcoreapp2.0\System.Drawing.Common.dll" KeyPath="yes" />
- </Component>
- </Directory>
- </Directory>
- </Directory>
- <Directory Id="owdE8459012E85EF895F4D7FE30FF6E8267" Name="win">
- <Directory Id="owdC163318E67EFDCE0B896108800A15455" Name="lib">
- <Directory Id="owdC9C087285946FE3B7A71615E0B825E74" Name="netcoreapp2.0">
- <Component Id="owc9D9EC872ED4AF0A91F656CDA92A03CD4" Guid="25929d9b-62bf-c253-283f-66601aee7dcb">
- <File Id="owf9D9EC872ED4AF0A91F656CDA92A03CD4" Source="$(var.SourceDir)\runtimes\win\lib\netcoreapp2.0\Microsoft.Win32.SystemEvents.dll" KeyPath="yes" />
- </Component>
- <Component Id="owcA5987B6A2079F892EF984F59BE36370D" Guid="f40e5eb8-9f01-3b7a-23ab-e1a46780da77">
- <File Id="owfA5987B6A2079F892EF984F59BE36370D" Source="$(var.SourceDir)\runtimes\win\lib\netcoreapp2.0\System.Drawing.Common.dll" KeyPath="yes" />
- </Component>
- </Directory>
- </Directory>
- </Directory>
- <Directory Id="owdAABA5F09C75767C406C5539CD7F20030" Name="win7-x64">
- <Directory Id="owd5777C140FF7E84A3D3F7CCEF36AC1996" Name="native">
- <Component Id="owc91777EF68DD1467D9A6C42D6460A8777" Guid="c874a7a2-53f9-67bc-043a-dde0ac08b48f">
- <File Id="owf91777EF68DD1467D9A6C42D6460A8777" Source="$(var.SourceDir)\runtimes\win7-x64\native\av_libglesv2.dll" KeyPath="yes" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="owd01DBB5CF07B2ACE2E693F31D049BCD78" Name="win7-x86">
- <Directory Id="owd8B18EF56D86AB5DA68A7A076E04003BD" Name="native">
- <Component Id="owc159E8174837264C5007070ACA82FA70F" Guid="1e243638-16ee-2c65-5e36-087b71ac931a">
- <File Id="owf159E8174837264C5007070ACA82FA70F" Source="$(var.SourceDir)\runtimes\win7-x86\native\av_libglesv2.dll" KeyPath="yes" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="owdE5F4984A074B06AB916298BF6A56CF44" Name="win-arm64">
- <Directory Id="owdE1E93812BF8760F936688A296A3D31FC" Name="native">
- <Component Id="owc9692BEA16B4CB769A7E097910CEFEA79" Guid="e3585836-c33b-26ed-338f-ea48f8f5c055">
- <File Id="owf9692BEA16B4CB769A7E097910CEFEA79" Source="$(var.SourceDir)\runtimes\win-arm64\native\av_libglesv2.dll" KeyPath="yes" />
- </Component>
- <Component Id="owc9AC17F83871B0BF66421DDA16023D92B" Guid="9c622830-b46e-163e-9789-0af7ac63ad74">
- <File Id="owf9AC17F83871B0BF66421DDA16023D92B" Source="$(var.SourceDir)\runtimes\win-arm64\native\libHarfBuzzSharp.dll" KeyPath="yes" />
- </Component>
- <Component Id="owc84E0CB3CCDDC2FEDB19A5D2879AACD84" Guid="568acb91-f330-fd9c-8830-dd1831e0913f">
- <File Id="owf84E0CB3CCDDC2FEDB19A5D2879AACD84" Source="$(var.SourceDir)\runtimes\win-arm64\native\libSkiaSharp.dll" KeyPath="yes" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="owd771C5C3DC29DF4A4B043FB9590CAB7C3" Name="win-x64">
- <Directory Id="owdEB440828DC2B3C970045074AEB045D37" Name="native">
- <Component Id="owc205924684486CE35676F9CD9BA74773B" Guid="59524c92-d012-0f92-61e6-2e73cc8b32cb">
- <File Id="owf205924684486CE35676F9CD9BA74773B" Source="$(var.SourceDir)\runtimes\win-x64\native\libHarfBuzzSharp.dll" KeyPath="yes" />
- </Component>
- <Component Id="owcB1184B053C439A3A8535D617A081ED89" Guid="9d59c1f4-58be-6d72-54f3-e9d6898ff0be">
- <File Id="owfB1184B053C439A3A8535D617A081ED89" Source="$(var.SourceDir)\runtimes\win-x64\native\libSkiaSharp.dll" KeyPath="yes" />
- </Component>
- </Directory>
- </Directory>
- <Directory Id="owdB4F695B772F52E42751F0202C23B302A" Name="win-x86">
- <Directory Id="owd645F06F492760FA8A3ADF782CF530DAB" Name="native">
- <Component Id="owc97E8A7CFF67FE571A6D5D82E8A6B1F05" Guid="0a3fb801-f08a-c381-94cb-434ef745b88a">
- <File Id="owf97E8A7CFF67FE571A6D5D82E8A6B1F05" Source="$(var.SourceDir)\runtimes\win-x86\native\libHarfBuzzSharp.dll" KeyPath="yes" />
- </Component>
- <Component Id="owc2818B54769093033C90688B0DC041F8C" Guid="220ad8b8-3469-ffbf-2c4c-ba90490bd0ad">
- <File Id="owf2818B54769093033C90688B0DC041F8C" Source="$(var.SourceDir)\runtimes\win-x86\native\libSkiaSharp.dll" KeyPath="yes" />
- </Component>
- </Directory>
- </Directory>
- </Directory>
<Directory Id="owd37EA32A018DF9B31395A1FCE42233062" Name="x64">
<Component Id="owcCD1854F2CC6C7F17F61397E23B6C598A" Guid="0a98d274-6f18-ee97-f14c-410e8fd2060d">
<File Id="owfCD1854F2CC6C7F17F61397E23B6C598A" Source="$(var.SourceDir)\x64\concrt140.dll" KeyPath="yes" />
diff --git a/UVtools.WPF/App.axaml.cs b/UVtools.WPF/App.axaml.cs
index 52c9838..b946e10 100644
--- a/UVtools.WPF/App.axaml.cs
+++ b/UVtools.WPF/App.axaml.cs
@@ -49,9 +49,9 @@ namespace UVtools.WPF
UserSettings.Load();
UserSettings.SetVersion();
- ThemeSelector = Avalonia.ThemeManager.ThemeSelector.Create("Assets/Themes");
+ ThemeSelector = Avalonia.ThemeManager.ThemeSelector.Create(Path.Combine(ApplicationPath, "Assets", "Themes"));
ThemeSelector.LoadSelectedTheme(Path.Combine(UserSettings.SettingsFolder, "selected.theme"));
- if (ThemeSelector.SelectedTheme.Name == "UVtoolsDark")
+ if (ThemeSelector.SelectedTheme.Name == "UVtoolsDark" || ThemeSelector.SelectedTheme.Name == "Light")
{
foreach (var theme in ThemeSelector.Themes)
{
@@ -99,7 +99,11 @@ namespace UVtools.WPF
};
Process.Start(info).Dispose();
}
- else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
+ else if(File.Exists("UVtools"))
+ {
+ Process.Start("UVtools", $"\"{filePath}\"").Dispose();
+ }
+ else
{
Process.Start("dotnet", $"UVtools.dll \"{filePath}\"").Dispose();
}
@@ -175,10 +179,7 @@ namespace UVtools.WPF
public static Bitmap GetBitmapFromAsset(string url) => new Bitmap(GetAsset(url));
- public static string GetApplicationPath()
- {
- return Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
- }
+ public static string ApplicationPath => Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
public static string GetPrusaSlicerDirectory()
{
diff --git a/UVtools.WPF/Assets/PrusaSlicer/AnyCubic Photon S.ini b/UVtools.WPF/Assets/PrusaSlicer/AnyCubic Photon S.ini
new file mode 100644
index 0000000..a0e3071
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/AnyCubic Photon S.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 01:30:11 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,68.04x0,68.04x120.96,0x120.96
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120.96
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1440
+display_pixels_y = 2560
+display_width = 68.04
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 165
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_ANYCUBIC\nPRINTER_MODEL_PHOTON_S\n\nSTART_CUSTOM_VALUES\nLayerOffTime_1\nLiftHeight_6\nLiftingSpeed_60\nRetractSpeed_150\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/AnyCubic Photon Zero.ini b/UVtools.WPF/Assets/PrusaSlicer/AnyCubic Photon Zero.ini
new file mode 100644
index 0000000..3f312b4
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/AnyCubic Photon Zero.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 01:11:02 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,55.4x0,55.4x98.6,0x98.6
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 98.6
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 480
+display_pixels_y = 854
+display_width = 55.4
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 150
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_ANYCUBIC\nPRINTER_MODEL_PHOTON_ZERO\n\nSTART_CUSTOM_VALUES\nLayerOffTime_1\nLiftHeight_6\nLiftingSpeed_60\nRetractSpeed_150\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/AnyCubic Photon.ini b/UVtools.WPF/Assets/PrusaSlicer/AnyCubic Photon.ini
new file mode 100644
index 0000000..28922c3
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/AnyCubic Photon.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 01:09:41 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,68.04x0,68.04x120.96,0x120.96
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120.96
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1440
+display_pixels_y = 2560
+display_width = 68.04
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 155
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_ANYCUBIC\nPRINTER_MODEL_PHOTON\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_2\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_65\nLiftSpeed_65\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Creality LD-002H.ini b/UVtools.WPF/Assets/PrusaSlicer/Creality LD-002H.ini
new file mode 100644
index 0000000..f64c265
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Creality LD-002H.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:05:00 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,82.62x0,82.62x130.56,0x130.56
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 130.56
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1620
+display_pixels_y = 2560
+display_width = 82.62
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 160
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_LD_002H\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_50\nLiftSpeed_50\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Creality LD-002R.ini b/UVtools.WPF/Assets/PrusaSlicer/Creality LD-002R.ini
new file mode 100644
index 0000000..e4bdfbd
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Creality LD-002R.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:05:06 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,68.04x0,68.04x120.96,0x120.96
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120.96
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1440
+display_pixels_y = 2560
+display_width = 68.04
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 160
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_LD_002R\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_2\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_65\nLiftSpeed_65\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Creality LD-006.ini b/UVtools.WPF/Assets/PrusaSlicer/Creality LD-006.ini
new file mode 100644
index 0000000..8a88238
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Creality LD-006.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:05:10 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,192x0,192x120,0x120
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 3840
+display_pixels_y = 2400
+display_width = 192
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 245
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_LD_006\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_7\nLiftHeight_7\nBottomLiftSpeed_70\nLiftSpeed_70\nRetractSpeed_80\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/EPAX E10 Mono.ini b/UVtools.WPF/Assets/PrusaSlicer/EPAX E10 Mono.ini
new file mode 100644
index 0000000..3d8c0c7
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/EPAX E10 Mono.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:05:14 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,192x0,192x120,0x120
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 3840
+display_pixels_y = 2400
+display_width = 192
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 250
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_EPAX\nPRINTER_MODEL_E10_Mono\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_7\nLiftHeight_7\nBottomLiftSpeed_40\nLiftSpeed_60\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/EPAX E6 Mono.ini b/UVtools.WPF/Assets/PrusaSlicer/EPAX E6 Mono.ini
new file mode 100644
index 0000000..aab4ae4
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/EPAX E6 Mono.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:05:18 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,81x0,81x128,0x128
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 128
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1620
+display_pixels_y = 2560
+display_width = 81
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 155
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_EPAX\nPRINTER_MODEL_E6_Mono\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_40\nLiftSpeed_60\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/EPAX X1.ini b/UVtools.WPF/Assets/PrusaSlicer/EPAX X1.ini
new file mode 100644
index 0000000..80d13c0
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/EPAX X1.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 01:43:50 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,68.04x0,68.04x120.96,0x120.96
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120.96
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1440
+display_pixels_y = 2560
+display_width = 68.04
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 155
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_EPAX\nPRINTER_MODEL_X1\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_40\nLiftSpeed_60\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/EPAX X10 4K Mono.ini b/UVtools.WPF/Assets/PrusaSlicer/EPAX X10 4K Mono.ini
new file mode 100644
index 0000000..ca8583e
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/EPAX X10 4K Mono.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:05:24 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,192x0,192x120,0x120
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 3840
+display_pixels_y = 2400
+display_width = 192
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 250
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_EPAX\nPRINTER_MODEL_X10_4KMONO\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_7\nLiftHeight_7\nBottomLiftSpeed_40\nLiftSpeed_60\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/EPAX X10.ini b/UVtools.WPF/Assets/PrusaSlicer/EPAX X10.ini
new file mode 100644
index 0000000..dae3c2d
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/EPAX X10.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 01:44:05 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,135.36x0,135.36x216.57,0x216.57
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 216.57
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1600
+display_pixels_y = 2560
+display_width = 135.36
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 250
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_EPAX\nPRINTER_MODEL_X10\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_7\nLiftHeight_7\nBottomLiftSpeed_40\nLiftSpeed_60\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/EPAX X133 4K Mono.ini b/UVtools.WPF/Assets/PrusaSlicer/EPAX X133 4K Mono.ini
new file mode 100644
index 0000000..73ed4b5
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/EPAX X133 4K Mono.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:05:27 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,293.76x0,293.76x165.24,0x165.24
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 165.24
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 3840
+display_pixels_y = 2160
+display_width = 293.76
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 400
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_EPAX\nPRINTER_MODEL_X133_4KMONO\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_15\nLiftHeight_12\nBottomLiftSpeed_40\nLiftSpeed_40\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/EPAX X156 4K Color.ini b/UVtools.WPF/Assets/PrusaSlicer/EPAX X156 4K Color.ini
new file mode 100644
index 0000000..6f47841
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/EPAX X156 4K Color.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:05:32 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,345.6x0,345.6x194.4,0x194.4
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 194.4
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 3840
+display_pixels_y = 2160
+display_width = 345.6
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 400
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_EPAX\nPRINTER_MODEL_X156_4KCOLOR\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_15\nLiftHeight_12\nBottomLiftSpeed_40\nLiftSpeed_40\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/EPAX X1K 2K Mono.ini b/UVtools.WPF/Assets/PrusaSlicer/EPAX X1K 2K Mono.ini
new file mode 100644
index 0000000..611935f
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/EPAX X1K 2K Mono.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:05:38 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,82.62x0,82.62x130.56,0x130.56
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 130.56
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1620
+display_pixels_y = 2560
+display_width = 82.62
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 155
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_EPAX\nPRINTER_MODEL_X1K_2K_MONO\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_40\nLiftSpeed_60\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Elegoo Mars 2 Pro.ini b/UVtools.WPF/Assets/PrusaSlicer/Elegoo Mars 2 Pro.ini
new file mode 100644
index 0000000..c41ae9a
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Elegoo Mars 2 Pro.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 02:49:49 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,82.62x0,82.62x130.56,0x130.56
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 130.56
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1620
+display_pixels_y = 2560
+display_width = 82.62
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 160
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_ELEGOO\nPRINTER_MODEL_MARS2_PRO\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_60\nLiftSpeed_80\nRetractSpeed_210\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Elegoo Mars C.ini b/UVtools.WPF/Assets/PrusaSlicer/Elegoo Mars C.ini
new file mode 100644
index 0000000..b01c79a
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Elegoo Mars C.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:05:46 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,68.04x0,68.04x120.96,0x120.96
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120.96
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1440
+display_pixels_y = 2560
+display_width = 68.04
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 150
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_ELEGOO\nPRINTER_MODEL_MARS_C\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_90\nLiftSpeed_100\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Elegoo Mars.ini b/UVtools.WPF/Assets/PrusaSlicer/Elegoo Mars.ini
new file mode 100644
index 0000000..dc243d1
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Elegoo Mars.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 01:08:57 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,68.04x0,68.04x120.96,0x120.96
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120.96
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1440
+display_pixels_y = 2560
+display_width = 68.04
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 150
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_ELEGOO\nPRINTER_MODEL_MARS\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_90\nLiftSpeed_100\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Elegoo Saturn.ini b/UVtools.WPF/Assets/PrusaSlicer/Elegoo Saturn.ini
new file mode 100644
index 0000000..33233c1
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Elegoo Saturn.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 02:50:06 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,192x0,192x120,0x120
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 3840
+display_pixels_y = 2400
+display_width = 192
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 200
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_ELEGOO\nPRINTER_MODEL_SATURN\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_7\nLiftHeight_7\nBottomLiftSpeed_70\nLiftSpeed_70\nRetractSpeed_210\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Kelant S400.ini b/UVtools.WPF/Assets/PrusaSlicer/Kelant S400.ini
new file mode 100644
index 0000000..2e21c0c
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Kelant S400.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 01:20:36 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,192x0,192x120,0x120
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 2560
+display_pixels_y = 1600
+display_width = 192
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 200
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_KELANT\nPRINTER_MODEL_S400\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_15\nLiftHeight_15\nBottomLiftSpeed_30\nLiftSpeed_30\nRetractSpeed_300\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Longer Orange 10.ini b/UVtools.WPF/Assets/PrusaSlicer/Longer Orange 10.ini
new file mode 100644
index 0000000..4c923e0
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Longer Orange 10.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 01:21:14 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,55.44x0,55.44x98.64,0x98.64
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 98.64
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 480
+display_pixels_y = 854
+display_width = 55.44
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 140
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_LONGER\nPRINTER_MODEL_ORANGE10\n\nSTART_CUSTOM_VALUES\nLayerOffTime_1\nBottomLightOffDelay_1\nBottomLiftHeight_4\nLiftHeight_2\nBottomLiftSpeed_90\nLiftSpeed_150\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Longer Orange 30.ini b/UVtools.WPF/Assets/PrusaSlicer/Longer Orange 30.ini
new file mode 100644
index 0000000..5e9bd7e
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Longer Orange 30.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 02:51:24 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,68.04x0,68.04x120.96,0x120.96
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120.96
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1440
+display_pixels_y = 2560
+display_width = 68.04
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 170
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_LONGER\nPRINTER_MODEL_ORANGE30\n\nSTART_CUSTOM_VALUES\nLayerOffTime_1\nBottomLightOffDelay_1\nBottomLiftHeight_2\nLiftHeight_2\nBottomLiftSpeed_48\nLiftSpeed_150\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Longer Orange4K.ini b/UVtools.WPF/Assets/PrusaSlicer/Longer Orange4K.ini
new file mode 100644
index 0000000..7766383
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Longer Orange4K.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 02:52:58 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,68.04x0,68.04x120.96,0x120.96
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120.96
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 6480
+display_pixels_y = 3840
+display_width = 68.04
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 170
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_LONGER\nPRINTER_MODEL_ORANGE30\n\nSTART_CUSTOM_VALUES\nLayerOffTime_1\nBottomLightOffDelay_1\nBottomLiftHeight_2\nLiftHeight_2\nBottomLiftSpeed_90\nLiftSpeed_150\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Nova3D Bene4 Mono.ini b/UVtools.WPF/Assets/PrusaSlicer/Nova3D Bene4 Mono.ini
new file mode 100644
index 0000000..8e11a37
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Nova3D Bene4 Mono.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 01:22:18 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,65.02x0,65.02x116,0x116
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 116
+display_mirror_x = 0
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1566
+display_pixels_y = 2549
+display_width = 65.02
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 130
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_NOVA3D\nPRINTER_MODEL_BENE4_MONO\n\nSTART_CUSTOM_VALUES\nXppm_19.608\nYppm_19.608\nWaitBeforeExpoMs_3000\nLiftHeight_4\nLiftSpeed_120\nRetractSpeed_120\nLiftWhenFinished_80\nBlankingLayerTime_0\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nNOVAMAKER_GRAY2RGB_ENCODE ; Required for Bene4 Mono as output images are in RGB\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Nova3D Elfin.ini b/UVtools.WPF/Assets/PrusaSlicer/Nova3D Elfin.ini
new file mode 100644
index 0000000..8786860
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Nova3D Elfin.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 01:22:45 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,73x0,73x131,0x131
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 131
+display_mirror_x = 0
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1410
+display_pixels_y = 2531
+display_width = 73
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 150
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_NOVA3D\nPRINTER_MODEL_ELFIN\n\nSTART_CUSTOM_VALUES\nXppm_19.324\nYppm_19.324\nWaitBeforeExpoMs_2000\nLiftHeight_4\nLiftSpeed_120\nRetractSpeed_120\nLiftWhenFinished_80\nBlankingLayerTime_0\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Peopoly Phenom L.ini b/UVtools.WPF/Assets/PrusaSlicer/Peopoly Phenom L.ini
new file mode 100644
index 0000000..3a31a1d
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Peopoly Phenom L.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:26:28 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,345.6x0,345.6x194.4,0x194.4
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 194.4
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 3840
+display_pixels_y = 2160
+display_width = 345.6
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 400
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_PEOPOLY\nPRINTER_MODEL_PHENOM_L\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_12\nLiftHeight_9\nBottomLiftSpeed_32\nLiftSpeed_45\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Peopoly Phenom Noir.ini b/UVtools.WPF/Assets/PrusaSlicer/Peopoly Phenom Noir.ini
new file mode 100644
index 0000000..11c53bf
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Peopoly Phenom Noir.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 01:23:00 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,293.76x0,293.76x165.24,0x165.24
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 165.24
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 3840
+display_pixels_y = 2160
+display_width = 293.76
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 400
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_PEOPOLY\nPRINTER_MODEL_PHENOM_NOIR\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_8\nLiftHeight_8\nBottomLiftSpeed_36\nLiftSpeed_45\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Peopoly Phenom.ini b/UVtools.WPF/Assets/PrusaSlicer/Peopoly Phenom.ini
new file mode 100644
index 0000000..0b6fbd2
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Peopoly Phenom.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 01:22:52 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,276.48x0,276.48x155.52,0x155.52
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 155.52
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 3840
+display_pixels_y = 2160
+display_width = 276.48
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 400
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_PEOPOLY\nPRINTER_MODEL_PHENOM\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_15\nLiftHeight_12\nBottomLiftSpeed_36\nLiftSpeed_48\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle 16.ini b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle 16.ini
new file mode 100644
index 0000000..4fd48c3
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle 16.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:11:50 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,337.92x0,337.92x190.08,0x190.08
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 190.08
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 3840
+display_pixels_y = 2160
+display_width = 337.92
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 400
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_PHROZEN\nPRINTER_MODEL_SHUFFLE_16\n\nSTART_CUSTOM_VALUES\nLayerOffTime_15\nBottomLightOffDelay_15\nBottomLiftHeight_10\nLiftHeight_8\nBottomLiftSpeed_65\nLiftSpeed_65\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle 4K.ini b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle 4K.ini
new file mode 100644
index 0000000..1d78ca5
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle 4K.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 02:57:14 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,68.04x0,68.04x120.96,0x120.96
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120.96
+display_mirror_x = 0
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 2160
+display_pixels_y = 3840
+display_width = 68.04
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 170
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_PHROZEN\nPRINTER_MODEL_SHUFFLE_4K\n\nSTART_CUSTOM_VALUES\nLayerOffTime_10\nBottomLightOffDelay_10\nBottomLiftHeight_6\nLiftHeight_5\nBottomLiftSpeed_100\nLiftSpeed_100\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle Lite.ini b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle Lite.ini
new file mode 100644
index 0000000..ae1b713
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle Lite.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:04:46 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,68.04x0,68.04x120.96,0x120.96
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120.96
+display_mirror_x = 0
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1440
+display_pixels_y = 2560
+display_width = 68.04
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 170
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_PHROZEN\nPRINTER_MODEL_SHUFFLE_LITE\n\nSTART_CUSTOM_VALUES\nLayerOffTime_7\nBottomLightOffDelay_7\nBottomLiftHeight_6\nLiftHeight_5\nBottomLiftSpeed_100\nLiftSpeed_100\nRetractSpeed_200\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle XL Lite.ini b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle XL Lite.ini
new file mode 100644
index 0000000..bcc8bac
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle XL Lite.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:06:06 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,192x0,192x120,0x120
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 2560
+display_pixels_y = 1600
+display_width = 192
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 200
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_PHROZEN\nPRINTER_MODEL_SHUFFLE_XL_LITE\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_65\nLiftSpeed_65\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle XL.ini b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle XL.ini
new file mode 100644
index 0000000..3240641
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle XL.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:06:01 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,192x0,192x120,0x120
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120
+display_mirror_x = 0
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 2560
+display_pixels_y = 1600
+display_width = 192
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 200
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_PHROZEN\nPRINTER_MODEL_SHUFFLE_XL\n\nSTART_CUSTOM_VALUES\nLayerOffTime_7\nBottomLightOffDelay_7\nBottomLiftHeight_8\nLiftHeight_6\nBottomLiftSpeed_100\nLiftSpeed_100\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle.ini b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle.ini
new file mode 100644
index 0000000..37ce48c
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Shuffle.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 02:56:59 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,67.68x0,67.68x120.32,0x120.32
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120.32
+display_mirror_x = 0
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1440
+display_pixels_y = 2560
+display_width = 67.68
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 200
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_PHROZEN\nPRINTER_MODEL_SHUFFLE\n\nSTART_CUSTOM_VALUES\nLayerOffTime_7\nBottomLightOffDelay_7\nBottomLiftHeight_6\nLiftHeight_5\nBottomLiftSpeed_100\nLiftSpeed_100\nRetractSpeed_200\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Phrozen Sonic 4K.ini b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Sonic 4K.ini
new file mode 100644
index 0000000..f2255ce
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Sonic 4K.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:13:52 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,134.4x0,134.4x75.6,0x75.6
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 75.6
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 3840
+display_pixels_y = 2160
+display_width = 134.4
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 200
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_PHROZEN\nPRINTER_MODEL_SONIC_4K\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_65\nLiftSpeed_65\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Phrozen Sonic Mighty 4K.ini b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Sonic Mighty 4K.ini
new file mode 100644
index 0000000..c93d717
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Sonic Mighty 4K.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:16:20 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,199.68x0,199.68x124.8,0x124.8
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 124.8
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 3840
+display_pixels_y = 2400
+display_width = 199.68
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 220
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_PHROZEN\nPRINTER_MODEL_SONIC_MIGHTY_4K\n\nSTART_CUSTOM_VALUES\nLayerOffTime_11\nBottomLightOffDelay_11\nBottomLiftHeight_8\nLiftHeight_6\nBottomLiftSpeed_60\nLiftSpeed_60\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Phrozen Sonic Mini 4K.ini b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Sonic Mini 4K.ini
new file mode 100644
index 0000000..94a0c00
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Sonic Mini 4K.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:09:38 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,134.4x0,134.4x75.6,0x75.6
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 75.6
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 3840
+display_pixels_y = 2160
+display_width = 134.4
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 130
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_PHROZEN\nPRINTER_MODEL_SONIC_MINI_4K\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_65\nLiftSpeed_65\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Phrozen Sonic Mini.ini b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Sonic Mini.ini
new file mode 100644
index 0000000..cdcda19
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Sonic Mini.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 01:26:16 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,68.04x0,68.04x120.96,0x120.96
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120.96
+display_mirror_x = 0
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1080
+display_pixels_y = 1920
+display_width = 68.04
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 130
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_PHROZEN\nPRINTER_MODEL_SONIC_MINI\n\nSTART_CUSTOM_VALUES\nLayerOffTime_7\nBottomLightOffDelay_7\nBottomLiftHeight_6\nLiftHeight_5\nBottomLiftSpeed_100\nLiftSpeed_100\nRetractSpeed_200\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Phrozen Sonic.ini b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Sonic.ini
new file mode 100644
index 0000000..f87a458
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Sonic.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:08:50 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,68.04x0,68.04x120.96,0x120.96
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120.96
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1080
+display_pixels_y = 1920
+display_width = 68.04
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 170
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_PHROZEN\nPRINTER_MODEL_SONIC\n\nSTART_CUSTOM_VALUES\nLayerOffTime_6\nBottomLightOffDelay_6\nBottomLiftHeight_6\nLiftHeight_5\nBottomLiftSpeed_100\nLiftSpeed_100\nRetractSpeed_200\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Phrozen Transform.ini b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Transform.ini
new file mode 100644
index 0000000..1360d3f
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Phrozen Transform.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-06-12 at 00:41:58 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,291.84x0,291.84x164.16,0x164.16
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 164.16
+display_mirror_x = 0
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 3840
+display_pixels_y = 2160
+display_width = 291.84
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 400
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_PHROZEN\nPRINTER_MODEL_TRANSFORM\n\nSTART_CUSTOM_VALUES\nLayerOffTime_10\nBottomLightOffDelay_10\nBottomLiftHeight_10\nLiftHeight_8\nBottomLiftSpeed_65\nLiftSpeed_65\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/QIDI S-Box.ini b/UVtools.WPF/Assets/PrusaSlicer/QIDI S-Box.ini
new file mode 100644
index 0000000..3014478
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/QIDI S-Box.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:21:39 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,135.36x0,135.36x216.576,0x216.576
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 216.576
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1600
+display_pixels_y = 2560
+display_width = 135.36
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 200
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_QIDI\nPRINTER_MODEL_S-BOX\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_10\nLiftHeight_7\nBottomLiftSpeed_100\nLiftSpeed_65\nRetractSpeed_65\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/QIDI Shadow5.5.ini b/UVtools.WPF/Assets/PrusaSlicer/QIDI Shadow5.5.ini
new file mode 100644
index 0000000..abfdfb2
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/QIDI Shadow5.5.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:19:21 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,68.04x0,68.04x120.96,0x120.96
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120.96
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1440
+display_pixels_y = 2560
+display_width = 68.04
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 150
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_QIDI\nPRINTER_MODEL_SHADOW5.5\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_100\nLiftSpeed_65\nRetractSpeed_65\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/QIDI Shadow6.0 Pro.ini b/UVtools.WPF/Assets/PrusaSlicer/QIDI Shadow6.0 Pro.ini
new file mode 100644
index 0000000..1cd2f97
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/QIDI Shadow6.0 Pro.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:20:10 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,74.52x0,74.52x132.48,0x132.48
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 132.48
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1440
+display_pixels_y = 2560
+display_width = 74.52
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 150
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_QIDI\nPRINTER_MODEL_SHADOW6.0_PRO\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_100\nLiftSpeed_65\nRetractSpeed_65\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Universal 0.025 UltraDetail - Heavy Supports.ini b/UVtools.WPF/Assets/PrusaSlicer/Universal 0.025 UltraDetail - Heavy Supports.ini
new file mode 100644
index 0000000..b50c910
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Universal 0.025 UltraDetail - Heavy Supports.ini
@@ -0,0 +1,44 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-06-11 at 02:37:18 UTC
+compatible_printers =
+compatible_printers_condition =
+default_sla_print_profile =
+faded_layers = 10
+hollowing_closing_distance = 2
+hollowing_enable = 0
+hollowing_min_thickness = 3
+hollowing_quality = 0.5
+inherits = 0.025 UltraDetail
+layer_height = 0.025
+output_filename_format = {input_filename_base}_{material_type}{layer_height}mm_{printer_model}_{print_time}.sl1
+pad_around_object = 0
+pad_around_object_everywhere = 0
+pad_brim_size = 1.6
+pad_enable = 1
+pad_max_merge_distance = 50
+pad_object_connector_penetration = 0.3
+pad_object_connector_stride = 10
+pad_object_connector_width = 0.5
+pad_object_gap = 1
+pad_wall_height = 0
+pad_wall_slope = 90
+pad_wall_thickness = 1
+sla_print_settings_id =
+slice_closing_radius = 0.005
+support_base_diameter = 3
+support_base_height = 1
+support_base_safety_distance = 1
+support_buildplate_only = 0
+support_critical_angle = 45
+support_head_front_diameter = 1
+support_head_penetration = 0.6
+support_head_width = 2
+support_max_bridge_length = 10
+support_max_bridges_on_pillar = 3
+support_max_pillar_link_distance = 10
+support_object_elevation = 5
+support_pillar_connection_mode = zigzag
+support_pillar_diameter = 1.5
+support_pillar_widening_factor = 0
+support_points_density_relative = 100
+support_points_minimal_distance = 1
+supports_enable = 1
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Universal 0.025 UltraDetail - Medium Supports.ini b/UVtools.WPF/Assets/PrusaSlicer/Universal 0.025 UltraDetail - Medium Supports.ini
new file mode 100644
index 0000000..ed59379
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Universal 0.025 UltraDetail - Medium Supports.ini
@@ -0,0 +1,44 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-06-11 at 02:36:13 UTC
+compatible_printers =
+compatible_printers_condition =
+default_sla_print_profile =
+faded_layers = 10
+hollowing_closing_distance = 2
+hollowing_enable = 0
+hollowing_min_thickness = 3
+hollowing_quality = 0.5
+inherits = 0.025 UltraDetail
+layer_height = 0.025
+output_filename_format = {input_filename_base}_{material_type}{layer_height}mm_{printer_model}_{print_time}.sl1
+pad_around_object = 0
+pad_around_object_everywhere = 0
+pad_brim_size = 1.6
+pad_enable = 1
+pad_max_merge_distance = 50
+pad_object_connector_penetration = 0.3
+pad_object_connector_stride = 10
+pad_object_connector_width = 0.5
+pad_object_gap = 1
+pad_wall_height = 0
+pad_wall_slope = 90
+pad_wall_thickness = 1
+sla_print_settings_id =
+slice_closing_radius = 0.005
+support_base_diameter = 3
+support_base_height = 1
+support_base_safety_distance = 1
+support_buildplate_only = 0
+support_critical_angle = 45
+support_head_front_diameter = 0.8
+support_head_penetration = 0.4
+support_head_width = 2
+support_max_bridge_length = 10
+support_max_bridges_on_pillar = 3
+support_max_pillar_link_distance = 10
+support_object_elevation = 5
+support_pillar_connection_mode = zigzag
+support_pillar_diameter = 1.2
+support_pillar_widening_factor = 0
+support_points_density_relative = 100
+support_points_minimal_distance = 1
+supports_enable = 1
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Universal 0.035 Detail - Heavy Supports.ini b/UVtools.WPF/Assets/PrusaSlicer/Universal 0.035 Detail - Heavy Supports.ini
new file mode 100644
index 0000000..a46b970
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Universal 0.035 Detail - Heavy Supports.ini
@@ -0,0 +1,44 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-06-11 at 02:34:54 UTC
+compatible_printers =
+compatible_printers_condition =
+default_sla_print_profile =
+faded_layers = 10
+hollowing_closing_distance = 2
+hollowing_enable = 0
+hollowing_min_thickness = 3
+hollowing_quality = 0.5
+inherits = 0.035 Detail
+layer_height = 0.035
+output_filename_format = {input_filename_base}_{material_type}{layer_height}mm_{printer_model}_{print_time}.sl1
+pad_around_object = 0
+pad_around_object_everywhere = 0
+pad_brim_size = 1.6
+pad_enable = 1
+pad_max_merge_distance = 50
+pad_object_connector_penetration = 0.3
+pad_object_connector_stride = 10
+pad_object_connector_width = 0.5
+pad_object_gap = 1
+pad_wall_height = 0
+pad_wall_slope = 90
+pad_wall_thickness = 1
+sla_print_settings_id =
+slice_closing_radius = 0.005
+support_base_diameter = 3
+support_base_height = 1
+support_base_safety_distance = 1
+support_buildplate_only = 0
+support_critical_angle = 45
+support_head_front_diameter = 1
+support_head_penetration = 0.6
+support_head_width = 3
+support_max_bridge_length = 10
+support_max_bridges_on_pillar = 3
+support_max_pillar_link_distance = 10
+support_object_elevation = 5
+support_pillar_connection_mode = zigzag
+support_pillar_diameter = 1.5
+support_pillar_widening_factor = 0
+support_points_density_relative = 100
+support_points_minimal_distance = 1
+supports_enable = 1
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Universal 0.035 Detail - Medium Supports.ini b/UVtools.WPF/Assets/PrusaSlicer/Universal 0.035 Detail - Medium Supports.ini
new file mode 100644
index 0000000..fa0c748
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Universal 0.035 Detail - Medium Supports.ini
@@ -0,0 +1,44 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-06-11 at 02:34:31 UTC
+compatible_printers =
+compatible_printers_condition =
+default_sla_print_profile =
+faded_layers = 10
+hollowing_closing_distance = 2
+hollowing_enable = 0
+hollowing_min_thickness = 3
+hollowing_quality = 0.5
+inherits = 0.035 Detail
+layer_height = 0.035
+output_filename_format = {input_filename_base}_{material_type}{layer_height}mm_{printer_model}_{print_time}.sl1
+pad_around_object = 0
+pad_around_object_everywhere = 0
+pad_brim_size = 1.6
+pad_enable = 1
+pad_max_merge_distance = 50
+pad_object_connector_penetration = 0.3
+pad_object_connector_stride = 10
+pad_object_connector_width = 0.5
+pad_object_gap = 1
+pad_wall_height = 0
+pad_wall_slope = 90
+pad_wall_thickness = 1
+sla_print_settings_id =
+slice_closing_radius = 0.005
+support_base_diameter = 3
+support_base_height = 1
+support_base_safety_distance = 1
+support_buildplate_only = 0
+support_critical_angle = 45
+support_head_front_diameter = 0.8
+support_head_penetration = 0.4
+support_head_width = 3
+support_max_bridge_length = 10
+support_max_bridges_on_pillar = 3
+support_max_pillar_link_distance = 10
+support_object_elevation = 5
+support_pillar_connection_mode = zigzag
+support_pillar_diameter = 1.2
+support_pillar_widening_factor = 0
+support_points_density_relative = 100
+support_points_minimal_distance = 1
+supports_enable = 1
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Universal 0.05 Normal - Heavy Supports.ini b/UVtools.WPF/Assets/PrusaSlicer/Universal 0.05 Normal - Heavy Supports.ini
new file mode 100644
index 0000000..10e334d
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Universal 0.05 Normal - Heavy Supports.ini
@@ -0,0 +1,44 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-06-11 at 02:24:57 UTC
+compatible_printers =
+compatible_printers_condition =
+default_sla_print_profile =
+faded_layers = 10
+hollowing_closing_distance = 2
+hollowing_enable = 0
+hollowing_min_thickness = 3
+hollowing_quality = 0.5
+inherits = 0.05 Normal
+layer_height = 0.05
+output_filename_format = {input_filename_base}_{material_type}{layer_height}mm_{printer_model}_{print_time}.sl1
+pad_around_object = 0
+pad_around_object_everywhere = 0
+pad_brim_size = 1.6
+pad_enable = 1
+pad_max_merge_distance = 50
+pad_object_connector_penetration = 0.3
+pad_object_connector_stride = 10
+pad_object_connector_width = 0.5
+pad_object_gap = 1
+pad_wall_height = 0
+pad_wall_slope = 90
+pad_wall_thickness = 1
+sla_print_settings_id =
+slice_closing_radius = 0.005
+support_base_diameter = 3
+support_base_height = 1
+support_base_safety_distance = 1
+support_buildplate_only = 0
+support_critical_angle = 45
+support_head_front_diameter = 1
+support_head_penetration = 0.6
+support_head_width = 3
+support_max_bridge_length = 10
+support_max_bridges_on_pillar = 3
+support_max_pillar_link_distance = 10
+support_object_elevation = 5
+support_pillar_connection_mode = zigzag
+support_pillar_diameter = 1.5
+support_pillar_widening_factor = 0
+support_points_density_relative = 100
+support_points_minimal_distance = 1
+supports_enable = 1
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Universal 0.05 Normal - Medium Supports.ini b/UVtools.WPF/Assets/PrusaSlicer/Universal 0.05 Normal - Medium Supports.ini
new file mode 100644
index 0000000..79511c7
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Universal 0.05 Normal - Medium Supports.ini
@@ -0,0 +1,44 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-06-11 at 02:23:55 UTC
+compatible_printers =
+compatible_printers_condition =
+default_sla_print_profile =
+faded_layers = 10
+hollowing_closing_distance = 2
+hollowing_enable = 0
+hollowing_min_thickness = 3
+hollowing_quality = 0.5
+inherits = 0.05 Normal
+layer_height = 0.05
+output_filename_format = {input_filename_base}_{material_type}{layer_height}mm_{printer_model}_{print_time}.sl1
+pad_around_object = 0
+pad_around_object_everywhere = 0
+pad_brim_size = 1.6
+pad_enable = 1
+pad_max_merge_distance = 50
+pad_object_connector_penetration = 0.3
+pad_object_connector_stride = 10
+pad_object_connector_width = 0.5
+pad_object_gap = 1
+pad_wall_height = 0
+pad_wall_slope = 90
+pad_wall_thickness = 1
+sla_print_settings_id =
+slice_closing_radius = 0.005
+support_base_diameter = 3
+support_base_height = 1
+support_base_safety_distance = 1
+support_buildplate_only = 0
+support_critical_angle = 45
+support_head_front_diameter = 0.8
+support_head_penetration = 0.4
+support_head_width = 3
+support_max_bridge_length = 10
+support_max_bridges_on_pillar = 3
+support_max_pillar_link_distance = 10
+support_object_elevation = 5
+support_pillar_connection_mode = zigzag
+support_pillar_diameter = 1.2
+support_pillar_widening_factor = 0
+support_points_density_relative = 100
+support_points_minimal_distance = 1
+supports_enable = 1
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Universal 0.1 Fast - Heavy Supports.ini b/UVtools.WPF/Assets/PrusaSlicer/Universal 0.1 Fast - Heavy Supports.ini
new file mode 100644
index 0000000..825330a
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Universal 0.1 Fast - Heavy Supports.ini
@@ -0,0 +1,44 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-06-11 at 02:30:54 UTC
+compatible_printers =
+compatible_printers_condition =
+default_sla_print_profile =
+faded_layers = 10
+hollowing_closing_distance = 2
+hollowing_enable = 0
+hollowing_min_thickness = 3
+hollowing_quality = 0.5
+inherits = 0.1 Fast
+layer_height = 0.1
+output_filename_format = {input_filename_base}_{material_type}{layer_height}mm_{printer_model}_{print_time}.sl1
+pad_around_object = 0
+pad_around_object_everywhere = 0
+pad_brim_size = 1.6
+pad_enable = 1
+pad_max_merge_distance = 50
+pad_object_connector_penetration = 0.3
+pad_object_connector_stride = 10
+pad_object_connector_width = 0.5
+pad_object_gap = 1
+pad_wall_height = 0
+pad_wall_slope = 90
+pad_wall_thickness = 1
+sla_print_settings_id =
+slice_closing_radius = 0.005
+support_base_diameter = 3
+support_base_height = 1
+support_base_safety_distance = 1
+support_buildplate_only = 0
+support_critical_angle = 45
+support_head_front_diameter = 1
+support_head_penetration = 0.7
+support_head_width = 3
+support_max_bridge_length = 10
+support_max_bridges_on_pillar = 3
+support_max_pillar_link_distance = 10
+support_object_elevation = 5
+support_pillar_connection_mode = zigzag
+support_pillar_diameter = 1.5
+support_pillar_widening_factor = 0
+support_points_density_relative = 100
+support_points_minimal_distance = 1
+supports_enable = 1
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Universal 0.1 Fast - Medium Supports.ini b/UVtools.WPF/Assets/PrusaSlicer/Universal 0.1 Fast - Medium Supports.ini
new file mode 100644
index 0000000..c43832c
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Universal 0.1 Fast - Medium Supports.ini
@@ -0,0 +1,44 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-09-05 at 15:51:14 UTC
+compatible_printers =
+compatible_printers_condition =
+default_sla_print_profile =
+faded_layers = 10
+hollowing_closing_distance = 2
+hollowing_enable = 0
+hollowing_min_thickness = 3
+hollowing_quality = 0.5
+inherits = 0.1 Fast
+layer_height = 0.1
+output_filename_format = {input_filename_base}_{material_type}{layer_height}mm_{printer_model}_{print_time}.sl1
+pad_around_object = 0
+pad_around_object_everywhere = 0
+pad_brim_size = 1.6
+pad_enable = 1
+pad_max_merge_distance = 50
+pad_object_connector_penetration = 0.3
+pad_object_connector_stride = 10
+pad_object_connector_width = 0.5
+pad_object_gap = 1
+pad_wall_height = 0
+pad_wall_slope = 90
+pad_wall_thickness = 1
+sla_print_settings_id =
+slice_closing_radius = 0.005
+support_base_diameter = 3
+support_base_height = 1
+support_base_safety_distance = 1
+support_buildplate_only = 0
+support_critical_angle = 45
+support_head_front_diameter = 0.9
+support_head_penetration = 0.5
+support_head_width = 3
+support_max_bridge_length = 10
+support_max_bridges_on_pillar = 3
+support_max_pillar_link_distance = 10
+support_object_elevation = 5
+support_pillar_connection_mode = zigzag
+support_pillar_diameter = 1.3
+support_pillar_widening_factor = 0
+support_points_density_relative = 100
+support_points_minimal_distance = 1
+supports_enable = 1
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Voxelab Polaris.ini b/UVtools.WPF/Assets/PrusaSlicer/Voxelab Polaris.ini
new file mode 100644
index 0000000..760a68a
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Voxelab Polaris.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 01:27:58 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,68.04x0,68.04x120.96,0x120.96
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120.96
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1440
+display_pixels_y = 2560
+display_width = 68.04
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 155
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_VOXELAB\nPRINTER_MODEL_POLARIS\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_65\nLiftSpeed_65\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Voxelab Proxima.ini b/UVtools.WPF/Assets/PrusaSlicer/Voxelab Proxima.ini
new file mode 100644
index 0000000..f661138
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Voxelab Proxima.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:18:23 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,82.62x0,82.62x130.56,0x130.56
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 130.56
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1620
+display_pixels_y = 2560
+display_width = 82.62
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 155
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_VOXELAB\nPRINTER_MODEL_PROXIMA\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_60\nLiftSpeed_60\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Wanhao D7.ini b/UVtools.WPF/Assets/PrusaSlicer/Wanhao D7.ini
new file mode 100644
index 0000000..9361237
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Wanhao D7.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 01:28:07 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,120.96x0,120.96x68.5,0x68.5
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 68.5
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 2560
+display_pixels_y = 1440
+display_width = 120.96
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 180
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_WANHAO\nPRINTER_MODEL_D7\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_60\nLiftSpeed_60\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Wanhao D8.ini b/UVtools.WPF/Assets/PrusaSlicer/Wanhao D8.ini
new file mode 100644
index 0000000..2ced018
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Wanhao D8.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 01:28:11 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,192x0,192x120,0x120
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 120
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 2560
+display_pixels_y = 1600
+display_width = 192
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 180
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_WANHAO\nPRINTER_MODEL_D8\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_60\nLiftSpeed_60\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/Assets/PrusaSlicer/Zortrax Inkspire.ini b/UVtools.WPF/Assets/PrusaSlicer/Zortrax Inkspire.ini
new file mode 100644
index 0000000..879b5b9
--- /dev/null
+++ b/UVtools.WPF/Assets/PrusaSlicer/Zortrax Inkspire.ini
@@ -0,0 +1,37 @@
+# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:06:43 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,74.67x0,74.67x132.88,0x132.88
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 132.88
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 1440
+display_pixels_y = 2560
+display_width = 74.67
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 175
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_ZORTRAX\nPRINTER_MODEL_INKSPIRE\n\nSTART_CUSTOM_VALUES\nLayerOffTime_5\nLiftHeight_5\nLiftSpeed_100\nRetractSpeed_100\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/UVtools.WPF/MainWindow.LayerPreview.cs b/UVtools.WPF/MainWindow.LayerPreview.cs
index f11480c..fca4b2b 100644
--- a/UVtools.WPF/MainWindow.LayerPreview.cs
+++ b/UVtools.WPF/MainWindow.LayerPreview.cs
@@ -276,7 +276,7 @@ namespace UVtools.WPF
public string MinimumLayerString => SlicerFile is null ? "???" : $"{SlicerFile.LayerHeight}mm\n0";
public string MaximumLayerString => SlicerFile is null ? "???" : $"{SlicerFile.TotalHeight}mm\n{SlicerFile.LayerCount - 1}";
- public string ActualLayerTooltip => SlicerFile is null ? "???" : $"{SlicerFile.GetHeightFromLayer(ActualLayer):0.00}mm\n{ActualLayer}\n{(ActualLayer + 1) * 100 / (SlicerFile.LayerCount)}%";
+ public string ActualLayerTooltip => SlicerFile is null ? "???" : $"{LayerCache.Layer?.PositionZ:0.00}mm\n{ActualLayer}\n{(ActualLayer + 1) * 100 / (SlicerFile.LayerCount)}%";
public uint SliderMaximumValue => SlicerFile?.LastLayerIndex ?? 0;
diff --git a/UVtools.WPF/MainWindow.axaml b/UVtools.WPF/MainWindow.axaml
index f58fa55..8492e14 100644
--- a/UVtools.WPF/MainWindow.axaml
+++ b/UVtools.WPF/MainWindow.axaml
@@ -202,51 +202,96 @@
</Menu>
<Border Padding="5" DockPanel.Dock="Bottom" Background="WhiteSmoke" IsVisible="{Binding IsFileLoaded}">
- <StackPanel
- VerticalAlignment="Center"
- Orientation="Horizontal"
- Spacing="5"
+ <WrapPanel
+ Orientation="Horizontal"
+ VerticalAlignment="Center"
>
<TextBlock Text="{Binding SlicerFile.LayerHeight, StringFormat=Layer height: \{0\}mm}"/>
- <TextBlock Text="|"/>
-
- <TextBlock Text="{Binding SlicerFile.BottomLayerCount, StringFormat=Bottom layers: \{0\}}"/>
- <TextBlock Text="|"/>
-
- <TextBlock Text="{Binding SlicerFile.BottomExposureTime, StringFormat=Bottom exposure: \{0\}s}"/>
- <TextBlock Text="|"/>
-
- <TextBlock Text="{Binding SlicerFile.ExposureTime, StringFormat=Exposure: \{0\}s}"/>
- <TextBlock IsVisible="{Binding SlicerFile.PrintTimeHours}"
- Text="|"/>
+ <TextBlock Text=" | Exposures: "/>
+
+ <TextBlock>
+ <TextBlock.Text>
+ <MultiBinding StringFormat="\{0\}s/\{1\}s">
+ <Binding Path="SlicerFile.BottomExposureTime"/>
+ <Binding Path="SlicerFile.ExposureTime"/>
+ </MultiBinding>
+ </TextBlock.Text>
+ </TextBlock>
+
+ <TextBlock IsVisible="{Binding SlicerFile.BottomLiftHeight}" Text=" | Lift: "/>
+ <TextBlock IsVisible="{Binding SlicerFile.BottomLiftHeight}">
+ <TextBlock.Text>
+ <MultiBinding StringFormat="\{0\}/\{1\}mm @ \{2\}/\{3\}mm/min">
+ <Binding Path="SlicerFile.BottomLiftHeight"/>
+ <Binding Path="SlicerFile.LiftHeight"/>
+ <Binding Path="SlicerFile.BottomLiftSpeed"/>
+ <Binding Path="SlicerFile.LiftSpeed"/>
+ </MultiBinding>
+ </TextBlock.Text>
+ </TextBlock>
+
+ <!--
+ <TextBlock IsVisible="{Binding SlicerFile.BottomLiftHeight}" Text="| Bottom lift:"/>
+ <TextBlock IsVisible="{Binding SlicerFile.BottomLiftHeight}">
+ <TextBlock.Text>
+ <MultiBinding StringFormat="\{0\}mm @ \{1\}mm/min">
+ <Binding Path="SlicerFile.BottomLiftHeight"/>
+ <Binding Path="SlicerFile.BottomLiftSpeed"/>
+ </MultiBinding>
+ </TextBlock.Text>
+ </TextBlock>
+
+ <TextBlock IsVisible="{Binding SlicerFile.LiftHeight}" Text="| Lift:"/>
+ <TextBlock IsVisible="{Binding SlicerFile.LiftHeight}">
+ <TextBlock.Text>
+ <MultiBinding StringFormat="\{0\}mm @ \{1\}mm/min">
+ <Binding Path="SlicerFile.LiftHeight"/>
+ <Binding Path="SlicerFile.LiftSpeed"/>
+ </MultiBinding>
+ </TextBlock.Text>
+ </TextBlock>
+ !-->
+
+ <TextBlock IsVisible="{Binding SlicerFile.RetractSpeed}" Text=" | "/>
+ <TextBlock IsVisible="{Binding SlicerFile.RetractSpeed}"
+ Text="{Binding SlicerFile.RetractSpeed, StringFormat=Retract Speed: \{0\}mm/min}"/>
+
+ <TextBlock IsVisible="{Binding SlicerFile.LayerOffTime}" Text=" | Light-off: "/>
+ <TextBlock IsVisible="{Binding SlicerFile.LayerOffTime}">
+ <TextBlock.Text>
+ <MultiBinding StringFormat="\{0\}s/\{1\}s">
+ <Binding Path="SlicerFile.BottomLayerOffTime"/>
+ <Binding Path="SlicerFile.LayerOffTime"/>
+ </MultiBinding>
+ </TextBlock.Text>
+ </TextBlock>
+
+ <TextBlock IsVisible="{Binding SlicerFile.PrintTimeHours}" Text=" | "/>
<TextBlock IsVisible="{Binding SlicerFile.PrintTimeHours}"
Text="{Binding SlicerFile.PrintTimeHours, StringFormat=Print time: \{0\}h}"/>
- <TextBlock IsVisible="{Binding SlicerFile.UsedMaterial}"
- Text="|"/>
+ <TextBlock IsVisible="{Binding SlicerFile.UsedMaterial}" Text=" | "/>
<TextBlock IsVisible="{Binding SlicerFile.UsedMaterial}"
Text="{Binding SlicerFile.UsedMaterial, StringFormat=Used material: \{0\}ml}"/>
- <TextBlock IsVisible="{Binding SlicerFile.MaterialCost}"
- Text="|"/>
- <TextBlock IsVisible="{Binding SlicerFile.MaterialCost}"
- Text="{Binding SlicerFile.MaterialCost, StringFormat=Material cost: \{0\}ml}"/>
+ <TextBlock IsVisible="{Binding SlicerFile.MaterialCost}" Text=" | "/>
+ <TextBlock IsVisible="{Binding SlicerFile.MaterialCost}" Text="{Binding SlicerFile.MaterialCost, StringFormat=Material cost: \{0\}ml}"/>
<TextBlock IsVisible="{Binding SlicerFile.MaterialName, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
- Text="|"/>
+ Text=" | "/>
<TextBlock IsVisible="{Binding SlicerFile.MaterialName, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
Text="{Binding SlicerFile.MaterialName, StringFormat=Material: \{0\}}"/>
<TextBlock IsVisible="{Binding SlicerFile.MachineName, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
- Text="|"/>
+ Text=" | "/>
<TextBlock IsVisible="{Binding SlicerFile.MachineName, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
Text="{Binding SlicerFile.MachineName, StringFormat=Machine: \{0\}}"/>
- </StackPanel>
+ </WrapPanel>
</Border>
<TabControl
@@ -304,7 +349,7 @@
IsVisible="{Binding SlicerFile.CreatedThumbnailsCount}"
Grid.Row="0"
Orientation="Horizontal"
- Spacing="5"
+ Spacing="2"
HorizontalAlignment="Right"
VerticalAlignment="Center">
<TextBlock VerticalAlignment="Center"
@@ -358,7 +403,7 @@
IsVisible="{Binding SlicerProperties.Count}"
Grid.Row="2"
Orientation="Horizontal"
- Spacing="5"
+ Spacing="2"
HorizontalAlignment="Right"
VerticalAlignment="Center">
@@ -454,7 +499,7 @@
<StackPanel
Grid.Row="0"
Orientation="Horizontal"
- Spacing="5"
+ Spacing="2"
HorizontalAlignment="Right"
VerticalAlignment="Center">
@@ -524,7 +569,7 @@
IsEnabled="{Binding IsFileLoaded}"
Grid.Row="0"
Orientation="Horizontal"
- Spacing="5"
+ Spacing="2"
VerticalAlignment="Center">
<RepeatButton
HotKey="Ctrl + Shift + Down"
@@ -573,7 +618,7 @@
<StackPanel
Grid.Row="0"
Orientation="Horizontal"
- Spacing="5"
+ Spacing="2"
HorizontalAlignment="Right"
VerticalAlignment="Center">
@@ -1194,6 +1239,31 @@
</TabItem>
+ <!--
+ <TabItem
+ Name="TabLayers"
+ ToolTip.Tip="Layers">
+ <TabItem.Header>
+ <StackPanel VerticalAlignment="Center" Orientation="Horizontal">
+ <Image Source="/Assets/Icons/book-32x32.png" Width="32"/>
+ <TextBlock Margin="5,0,0,0">Layers</TextBlock>
+ </StackPanel>
+ </TabItem.Header>
+
+ <TreeView Items="{Binding SlicerFile.LayerManager.Layers}"
+ AutoScrollToSelectedItem="True">
+
+ <TreeView.ItemTemplate>
+ <DataTemplate>
+ <TreeViewItem Header="{Binding Index}"/>
+ </DataTemplate>
+ </TreeView.ItemTemplate>
+
+ </TreeView>
+
+ </TabItem>
+ !-->
+
<TabItem
Name="TabLog"
ToolTip.Tip="Log">
@@ -1402,120 +1472,131 @@
<Grid
IsEnabled="{Binding IsFileLoaded}"
ColumnDefinitions="*" RowDefinitions="Auto,*,Auto" Margin="5">
- <StackPanel HorizontalAlignment="Left" Grid.Row="0" Orientation="Horizontal" Spacing="1">
- <ToggleButton
- IsChecked="{Binding ShowLayerImageRotated}"
- HotKey="Ctrl + R"
- ToolTip.Tip="Auto rotate layer preview image at 90º (This can slow down the layer preview) [CTRL+R]"
+ <Grid
+ IsEnabled="{Binding IsFileLoaded}"
+ ColumnDefinitions="*,Auto" RowDefinitions="Auto" Margin="5">
+ <WrapPanel HorizontalAlignment="Left" Grid.Row="0" Orientation="Horizontal">
+ <ToggleButton
+ IsChecked="{Binding ShowLayerImageRotated}"
+ HotKey="Ctrl + R"
+ ToolTip.Tip="Auto rotate layer preview image at 90º (This can slow down the layer preview) [CTRL+R]"
>
- <StackPanel Orientation="Horizontal">
- <Image Source="/Assets/Icons/undo-alt-16x16.png"/>
- <TextBlock Margin="5,0,5,0" Text="Rotate"/>
- </StackPanel>
- </ToggleButton>
-
- <ToggleButton
- IsChecked="{Binding ShowLayerImageDifference}"
- ToolTip.Tip="Show layer differences where darker pixels were also present on previous layer and the white pixels the difference between previous and current layer."
+ <StackPanel Orientation="Horizontal">
+ <Image Source="/Assets/Icons/undo-alt-16x16.png"/>
+ <TextBlock Margin="5,0,5,0" Text="Rotate"/>
+ </StackPanel>
+ </ToggleButton>
+
+ <ToggleButton
+ IsChecked="{Binding ShowLayerImageDifference}"
+ ToolTip.Tip="Show layer differences where darker pixels were also present on previous layer and the white pixels the difference between previous and current layer."
+ Margin="1,0,0,0"
>
- <StackPanel Orientation="Horizontal">
- <Image Source="/Assets/Icons/layers-16x16.png"/>
- <TextBlock Margin="5,0,5,0" Text="Difference"/>
- </StackPanel>
- </ToggleButton>
-
- <ToggleButton
- IsChecked="{Binding ShowLayerImageIssues}"
- ToolTip.Tip="Highlight Issues on current layer. Valid only if Issues are calculated."
+ <StackPanel Orientation="Horizontal">
+ <Image Source="/Assets/Icons/layers-16x16.png"/>
+ <TextBlock Margin="5,0,5,0" Text="Difference"/>
+ </StackPanel>
+ </ToggleButton>
+
+ <ToggleButton
+ IsChecked="{Binding ShowLayerImageIssues}"
+ ToolTip.Tip="Highlight Issues on current layer. Valid only if Issues are calculated."
+ Margin="1,0,0,0"
>
- <StackPanel Orientation="Horizontal">
- <Image Source="/Assets/Icons/warning-16x16.png"/>
- <TextBlock Margin="5,0,5,0" Text="Issues"/>
- </StackPanel>
- </ToggleButton>
-
- <ToggleButton
- IsChecked="{Binding ShowLayerImageCrosshairs}"
- ToolTip.Tip="Show crosshairs for selected issues on the current layer."
+ <StackPanel Orientation="Horizontal">
+ <Image Source="/Assets/Icons/warning-16x16.png"/>
+ <TextBlock Margin="5,0,5,0" Text="Issues"/>
+ </StackPanel>
+ </ToggleButton>
+
+ <ToggleButton
+ IsChecked="{Binding ShowLayerImageCrosshairs}"
+ ToolTip.Tip="Show crosshairs for selected issues on the current layer."
+ Margin="1,0,0,0"
>
- <StackPanel Orientation="Horizontal">
- <Image Source="/Assets/Icons/crosshairs-16x16.png"/>
- <TextBlock Margin="5,0,5,0" Text="Crosshairs"/>
- </StackPanel>
- </ToggleButton>
-
- <Button
- ToolTip.Tip="Click to access the various outlines."
- Command="{Binding #LayerPreviewOutlineContextMenu.Open}"
+ <StackPanel Orientation="Horizontal">
+ <Image Source="/Assets/Icons/crosshairs-16x16.png"/>
+ <TextBlock Margin="5,0,5,0" Text="Crosshairs"/>
+ </StackPanel>
+ </ToggleButton>
+
+ <Button
+ ToolTip.Tip="Click to access the various outlines."
+ Command="{Binding #LayerPreviewOutlineContextMenu.Open}"
+ Margin="1,0,0,0"
>
- <Button.ContextMenu>
- <ContextMenu Name="LayerPreviewOutlineContextMenu" PlacementMode="Bottom">
- <CheckBox
- IsChecked="{Binding ShowLayerOutlinePrintVolumeBoundary}"
- Content="Print volume boundary"/>
- <CheckBox
- IsChecked="{Binding ShowLayerOutlineLayerBoundary}"
- Content="Layer boundary"/>
- <CheckBox
- IsChecked="{Binding ShowLayerOutlineHollowAreas}"
- Content="Hollow areas"/>
- <CheckBox
- IsChecked="{Binding ShowLayerOutlineEdgeDetection}"
- Content="Edge detection"/>
- </ContextMenu>
- </Button.ContextMenu>
- <StackPanel Orientation="Horizontal">
- <Image Source="/Assets/Icons/geometry-16x16.png"/>
- <TextBlock Margin="5,0,5,0" Text="Outline ⮟"/>
- </StackPanel>
- </Button>
-
-
- <ToggleButton
- IsChecked="{Binding IsPixelEditorActive}"
- ToolTip.Tip="Edit layer image: Draw pixels, add supports and/or drain holes."
+ <Button.ContextMenu>
+ <ContextMenu Name="LayerPreviewOutlineContextMenu" PlacementMode="Bottom">
+ <CheckBox
+ IsChecked="{Binding ShowLayerOutlinePrintVolumeBoundary}"
+ Content="Print volume boundary"/>
+ <CheckBox
+ IsChecked="{Binding ShowLayerOutlineLayerBoundary}"
+ Content="Layer boundary"/>
+ <CheckBox
+ IsChecked="{Binding ShowLayerOutlineHollowAreas}"
+ Content="Hollow areas"/>
+ <CheckBox
+ IsChecked="{Binding ShowLayerOutlineEdgeDetection}"
+ Content="Edge detection"/>
+ </ContextMenu>
+ </Button.ContextMenu>
+ <StackPanel Orientation="Horizontal">
+ <Image Source="/Assets/Icons/geometry-16x16.png"/>
+ <TextBlock Margin="5,0,5,0" Text="Outline ⮟"/>
+ </StackPanel>
+ </Button>
+
+
+ <ToggleButton HorizontalAlignment="Right"
+ IsChecked="{Binding IsPixelEditorActive}"
+ ToolTip.Tip="Edit layer image: Draw pixels, add supports and/or drain holes."
+ Margin="1,0,0,0"
>
- <StackPanel Orientation="Horizontal">
- <Image Source="/Assets/Icons/pixel-16x16.png"/>
- <TextBlock Margin="5,0,5,0" Text="Pixel editor"/>
- </StackPanel>
- </ToggleButton>
+ <StackPanel Orientation="Horizontal">
+ <Image Source="/Assets/Icons/pixel-16x16.png"/>
+ <TextBlock Margin="5,0,5,0" Text="Pixel editor"/>
+ </StackPanel>
+ </ToggleButton>
- </StackPanel>
+ </WrapPanel>
-
- <StackPanel HorizontalAlignment="Right" Grid.Row="0" Orientation="Horizontal" Spacing="1">
- <Button
- Command="{Binding #LayerActionsContextMenu.Open}"
- >
- <StackPanel Orientation="Horizontal">
- <Image Source="/Assets/Icons/layers-alt-16x16.png"/>
- <TextBlock Margin="5,0,5,0" Text="Actions ⮟"/>
- </StackPanel>
- <Button.ContextMenu>
- <ContextMenu Name="LayerActionsContextMenu" PlacementMode="Bottom" Items="{Binding LayerActionsMenu}"/>
- </Button.ContextMenu>
- </Button>
- <Button
- Command="{Binding ShowLayer}"
- HotKey="F5"
- ToolTip.Tip="Refresh current layer [F5]">
- <StackPanel Orientation="Horizontal">
- <Image Source="/Assets/Icons/refresh-16x16.png"/>
- </StackPanel>
- </Button>
+ <WrapPanel HorizontalAlignment="Right" Grid.Row="0" Grid.Column="1" Orientation="Horizontal">
+ <Button
+ Command="{Binding #LayerActionsContextMenu.Open}"
+ >
+ <StackPanel Orientation="Horizontal">
+ <Image Source="/Assets/Icons/layers-alt-16x16.png"/>
+ <TextBlock Margin="5,0,5,0" Text="Actions ⮟"/>
+ </StackPanel>
+ <Button.ContextMenu>
+ <ContextMenu Name="LayerActionsContextMenu" PlacementMode="Bottom" Items="{Binding LayerActionsMenu}"/>
+ </Button.ContextMenu>
+ </Button>
+
+ <Button
+ Command="{Binding ShowLayer}"
+ HotKey="F5"
+ ToolTip.Tip="Refresh current layer [F5]"
+ Margin="1,0,0,0">
+ <StackPanel Orientation="Horizontal">
+ <Image Source="/Assets/Icons/refresh-16x16.png"/>
+ </StackPanel>
+ </Button>
- <Button
- Command="{Binding SaveCurrentLayerImage}"
- ToolTip.Tip="Save layer image to a file">
- <StackPanel Orientation="Horizontal">
- <Image Source="/Assets/Icons/save-16x16.png"/>
- </StackPanel>
- </Button>
+ <Button
+ Command="{Binding SaveCurrentLayerImage}"
+ ToolTip.Tip="Save layer image to a file"
+ Margin="1,0,0,0">
+ <StackPanel Orientation="Horizontal">
+ <Image Source="/Assets/Icons/save-16x16.png"/>
+ </StackPanel>
+ </Button>
- </StackPanel>
+ </WrapPanel>
+ </Grid>
<Border
Grid.Row="1"
@@ -1543,85 +1624,93 @@
<TextBlock Text="{Binding TooltipOverlayText}" />
</Border>
</Canvas>
-
-
- <StackPanel Grid.Row="2" Orientation="Horizontal" Spacing="5">
- <StackPanel
- ToolTip.Tip="Number of pixels to cure on this layer image and the percetange of them against total lcd pixels"
- VerticalAlignment="Center" Orientation="Horizontal" Spacing="5">
- <Image Source="/Assets/Icons/pixel-16x16.png"/>
- <TextBlock Text="{Binding LayerPixelCountStr, StringFormat=Pixels: \{0\}}"/>
- </StackPanel>
- <Button
- ToolTip.Tip="Object volume bounds for current layer, position and size.
+
+ <Grid
+ IsEnabled="{Binding IsFileLoaded}"
+ Grid.Row="2"
+ ColumnDefinitions="*,*" RowDefinitions="Auto" Margin="5">
+ <WrapPanel Orientation="Horizontal">
+ <StackPanel
+ ToolTip.Tip="Number of pixels to cure on this layer image and the percentage of them against total lcd pixels"
+ VerticalAlignment="Center" Orientation="Horizontal" Spacing="5">
+ <Image Source="/Assets/Icons/pixel-16x16.png"/>
+ <TextBlock Text="{Binding LayerPixelCountStr, StringFormat=Pixels: \{0\}}"/>
+ </StackPanel>
+
+ <Button
+ ToolTip.Tip="Object volume bounds for current layer, position and size.
&#x0a;Click: go to region"
- Command="{Binding ZoomToFitPrintVolume}"
+ Command="{Binding ZoomToFitPrintVolume}"
+ Margin="5,0,0,0"
>
- <StackPanel VerticalAlignment="Center" Orientation="Horizontal" Spacing="5">
- <Image Source="/Assets/Icons/expand-16x16.png"/>
- <TextBlock Text="{Binding LayerBoundsStr, StringFormat=Bounds: \{0\}}"/>
- </StackPanel>
- </Button>
+ <StackPanel VerticalAlignment="Center" Orientation="Horizontal" Spacing="5">
+ <Image Source="/Assets/Icons/expand-16x16.png"/>
+ <TextBlock Text="{Binding LayerBoundsStr, StringFormat=Bounds: \{0\}}"/>
+ </StackPanel>
+ </Button>
- <Button
- IsEnabled="{Binding IsFileLoaded}"
- Command="{Binding OnROIClick}"
- ToolTip.Tip="Region of interest selection over layer.
+ <Button
+ IsEnabled="{Binding IsFileLoaded}"
+ Margin="2,0,0,0"
+ Command="{Binding OnROIClick}"
+ ToolTip.Tip="Region of interest selection over layer.
&#x0a;(NS): Not selected
&#x0a;Click: go to region | ESC: Clear ROI"
>
- <StackPanel VerticalAlignment="Center" Orientation="Horizontal" Spacing="5">
- <Image Source="/Assets/Icons/object-group-16x16.png"/>
- <TextBlock Text="{Binding LayerROIStr, StringFormat=ROI: \{0\}}"/>
- </StackPanel>
- </Button>
-
- </StackPanel>
-
- <StackPanel Margin="0,5,0,0" VerticalAlignment="Center" HorizontalAlignment="Right" Grid.Row="2" Orientation="Horizontal" Spacing="5">
-
- <Button
- IsEnabled="{Binding LayerPixelPicker.IsSet}"
- Command="{Binding OnLayerPixelPickerClicked}"
- ToolTip.Tip="Pixel picker:
+ <StackPanel VerticalAlignment="Center" Orientation="Horizontal" Spacing="5">
+ <Image Source="/Assets/Icons/object-group-16x16.png"/>
+ <TextBlock Text="{Binding LayerROIStr, StringFormat=ROI: \{0\}}"/>
+ </StackPanel>
+ </Button>
+
+ </WrapPanel>
+
+ <WrapPanel Grid.Row="2" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Right" Orientation="Horizontal">
+ <Button
+ IsEnabled="{Binding LayerPixelPicker.IsSet}"
+ Command="{Binding OnLayerPixelPickerClicked}"
+ ToolTip.Tip="Pixel picker:
&#x0a;Use CONTROL and over a pixel to get his position and brightness.
&#x0a;Click: Center at position"
>
- <StackPanel VerticalAlignment="Center" Orientation="Horizontal" Spacing="5">
- <Image Source="/Assets/Icons/map-marker-16x16.png"/>
- <TextBlock Text="{Binding LayerPixelPicker}"/>
- </StackPanel>
- </Button>
-
- <Button
- ToolTip.Tip="Layer image zoom level, use mouse scroll to zoom in/out into image.
+ <StackPanel VerticalAlignment="Center" Orientation="Horizontal" Spacing="5">
+ <Image Source="/Assets/Icons/map-marker-16x16.png"/>
+ <TextBlock Text="{Binding LayerPixelPicker}"/>
+ </StackPanel>
+ </Button>
+
+ <Button
+ ToolTip.Tip="Layer image zoom level, use mouse scroll to zoom in/out into image.
&#x0a;Ctrl + 0 OR double right click to scale to fit"
+ Margin="2,0,0,0"
>
- <StackPanel VerticalAlignment="Center" Orientation="Horizontal" Spacing="5">
- <Image Source="/Assets/Icons/search-16x16.png"/>
- <TextBlock Text="{Binding LayerZoomStr, StringFormat=Zoom: [ \{0\} ]}"/>
- </StackPanel>
- </Button>
-
- <Button
- ToolTip.Tip="Layer Resolution.
+ <StackPanel VerticalAlignment="Center" Orientation="Horizontal" Spacing="5">
+ <Image Source="/Assets/Icons/search-16x16.png"/>
+ <TextBlock Text="{Binding LayerZoomStr, StringFormat=Zoom: [ \{0\} ]}"/>
+ </StackPanel>
+ </Button>
+
+ <Button
+ ToolTip.Tip="Layer Resolution.
&#x0a;Click: Zoom to fit"
- Command="{Binding ZoomToFitSimple}"
+ Command="{Binding ZoomToFitSimple}"
+ Margin="2,0,0,0"
>
- <StackPanel VerticalAlignment="Center" Orientation="Horizontal" Spacing="5">
- <Image Source="/Assets/Icons/expand-16x16.png"/>
- <TextBlock Text="{Binding LayerResolutionStr}"/>
- </StackPanel>
- </Button>
-
-
- <TextBlock
- ToolTip.Tip="Layer preview computation time."
- VerticalAlignment="Center" Text="{Binding ShowLayerRenderMs, StringFormat=\{0\}ms}"/>
- </StackPanel>
-
+ <StackPanel VerticalAlignment="Center" Orientation="Horizontal" Spacing="5">
+ <Image Source="/Assets/Icons/expand-16x16.png"/>
+ <TextBlock Text="{Binding LayerResolutionStr}"/>
+ </StackPanel>
+ </Button>
+
+
+ <TextBlock
+ ToolTip.Tip="Layer preview computation time."
+ Margin="5,0,0,0"
+ VerticalAlignment="Center" Text="{Binding ShowLayerRenderMs, StringFormat=\{0\}ms}"/>
+ </WrapPanel>
+ </Grid>
</Grid>
diff --git a/UVtools.WPF/MainWindow.axaml.cs b/UVtools.WPF/MainWindow.axaml.cs
index 676a0fc..fa2de86 100644
--- a/UVtools.WPF/MainWindow.axaml.cs
+++ b/UVtools.WPF/MainWindow.axaml.cs
@@ -404,7 +404,8 @@ namespace UVtools.WPF
protected override void OnOpened(EventArgs e)
{
base.OnOpened(e);
- AddLog($"{About.Software} start");
+ Program.ProgramStartupTime.Stop();
+ AddLog($"{About.Software} start", Program.ProgramStartupTime.Elapsed.TotalSeconds);
if (Settings.General.CheckForUpdatesOnStartup)
{
@@ -549,6 +550,7 @@ namespace UVtools.WPF
public async void MenuFileSaveAsClicked()
{
+ //await this.MessageBoxInfo(Path.Combine(App.ApplicationPath, "Assets", "Themes"));
if (!IsFileLoaded) return;
var ext = Path.GetExtension(SlicerFile.FileFullPath);
var extNoDot = ext.Remove(0, 1);
diff --git a/UVtools.WPF/Program.cs b/UVtools.WPF/Program.cs
index 2b856b3..1d7fa50 100644
--- a/UVtools.WPF/Program.cs
+++ b/UVtools.WPF/Program.cs
@@ -1,4 +1,5 @@
using System;
+using System.Diagnostics;
using Avalonia;
namespace UVtools.WPF
@@ -6,12 +7,15 @@ namespace UVtools.WPF
public static class Program
{
public static string[] Args;
+
+ public static Stopwatch ProgramStartupTime;
// Initialization code. Don't use any Avalonia, third-party APIs or any
// SynchronizationContext-reliant code before AppMain is called: things aren't initialized
// yet and stuff might break.
[STAThread]
public static void Main(string[] args)
{
+ ProgramStartupTime = Stopwatch.StartNew();
Args = args;
BuildAvaloniaApp()
diff --git a/UVtools.WPF/Structures/PEProfileFolder.cs b/UVtools.WPF/Structures/PEProfileFolder.cs
index b949e6d..c09745b 100644
--- a/UVtools.WPF/Structures/PEProfileFolder.cs
+++ b/UVtools.WPF/Structures/PEProfileFolder.cs
@@ -68,12 +68,12 @@ namespace UVtools.WPF.Structures
{
case FolderType.Print:
SourcePath = string.Format("{0}{1}Assets{1}PrusaSlicer{1}sla_print",
- App.GetApplicationPath(), Path.DirectorySeparatorChar);
+ App.ApplicationPath, Path.DirectorySeparatorChar);
TargetPath = $"{App.GetPrusaSlicerDirectory()}{Path.DirectorySeparatorChar}sla_print";
break;
case FolderType.Printer:
SourcePath = string.Format("{0}{1}Assets{1}PrusaSlicer{1}printer",
- App.GetApplicationPath(), Path.DirectorySeparatorChar);
+ App.ApplicationPath, Path.DirectorySeparatorChar);
TargetPath = $"{App.GetPrusaSlicerDirectory()}{Path.DirectorySeparatorChar}printer";
break;
}
diff --git a/UVtools.WPF/UVtools.WPF.csproj b/UVtools.WPF/UVtools.WPF.csproj
index ad92e14..b0ddb53 100644
--- a/UVtools.WPF/UVtools.WPF.csproj
+++ b/UVtools.WPF/UVtools.WPF.csproj
@@ -12,9 +12,9 @@
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<RepositoryUrl>https://github.com/sn4k3/UVtools</RepositoryUrl>
<RepositoryType>Git</RepositoryType>
- <Nullable>enable</Nullable>
- <Version>1.1.1</Version>
+ <Version>1.1.2</Version>
</PropertyGroup>
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<NoWarn>1701;1702;</NoWarn>
@@ -45,24 +45,12 @@
<None Remove="Assets\Icons\UVtools.ico" />
</ItemGroup>
<ItemGroup>
- <None Update="arm\libcvextern.so">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Update="Assets\selected.theme">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
<None Update="libcvextern.dylib">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="libcvextern.so">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
- <None Update="Themes - Copy\UVtoolsDark.xaml">
- <Generator>MSBuild:Compile</Generator>
- </None>
- <None Update="Themes - Copy\UVtoolsLight.xaml">
- <Generator>MSBuild:Compile</Generator>
- </None>
<None Update="Assets\Themes\UVtools.themes">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
@@ -79,6 +67,7 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="..\CHANGELOG.md" Link="CHANGELOG.md" />
+ <None Include="..\CreateRelease.WPF.ps1" Link="CreateRelease.WPF.ps1" />
<None Include="..\CREDITS.md" Link="CREDITS.md" />
<None Include="..\LICENSE">
<Pack>True</Pack>
@@ -118,7 +107,7 @@
<DependentUpon>%(Filename)</DependentUpon>
</Compile>
</ItemGroup>
- <Target Name="PostBuild" AfterTargets="PostBuildEvent">
- <Exec Command="xcopy /i /y /d /s $(ProjectDir)..\PrusaSlicer $(ProjectDir)$(OutDir)\Assets\PrusaSlicer" />
- </Target>
+ <ItemGroup>
+ <None Include="..\PrusaSlicer\**" CopyToOutputDirectory="PreserveNewest" LinkBase="Assets\PrusaSlicer" />
+ </ItemGroup>
</Project>
diff --git a/UVtools.WPF/Windows/ToolWindow.axaml.cs b/UVtools.WPF/Windows/ToolWindow.axaml.cs
index 5cf7060..4757e0d 100644
--- a/UVtools.WPF/Windows/ToolWindow.axaml.cs
+++ b/UVtools.WPF/Windows/ToolWindow.axaml.cs
@@ -107,7 +107,7 @@ namespace UVtools.WPF.Windows
}
}
- public float LayerStartMM => App.SlicerFile.GetHeightFromLayer(_layerIndexStart);
+ public float LayerStartMM => App.SlicerFile[_layerIndexStart].PositionZ;
public uint LayerIndexEnd
{
@@ -123,7 +123,7 @@ namespace UVtools.WPF.Windows
}
}
- public float LayerEndMM => App.SlicerFile.GetHeightFromLayer(_layerIndexEnd);
+ public float LayerEndMM => App.SlicerFile[_layerIndexEnd].PositionZ;
public string LayerRangeCountStr
{