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>2022-10-17 06:25:16 +0300
committerTiago Conceição <Tiago_caza@hotmail.com>2022-10-17 06:25:16 +0300
commitc4aeb4939d8974d10c5cfff507f4ca13d16df441 (patch)
treebdf6febf0ce756fb607813b1078e852ba1d47683
parent693188b961d5e7acaf3969b72264b72483d4c33d (diff)
v3.7.1v3.7.1
- (Add) PrusaSlicer printer: Elegoo Saturn 2 - (Fix) PCB Exposure: Possible error when drawing outline primitive macros that contains duplicate points (#580)
-rw-r--r--CHANGELOG.md5
-rw-r--r--README.md141
-rw-r--r--RELEASE_NOTES.md26
-rw-r--r--UVtools.Core/UVtools.Core.Documentation.shfbproj103
-rw-r--r--UVtools.Core/UVtools.Core.csproj8
-rw-r--r--UVtools.Installer/Code/HeatGeneratedFileList.wxs4
-rw-r--r--UVtools.WPF/UVtools.WPF.csproj192
-rw-r--r--UVtools.sln22
-rw-r--r--build/cvextern.ps1 (renamed from build/cvextern.dll.ps1)0
-rw-r--r--build/libcvextern.sh7
10 files changed, 314 insertions, 194 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2381245..6201488 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
# Changelog
+## 17/10/2022 - v3.7.1
+
+- (Add) PrusaSlicer printer: Elegoo Saturn 2
+- (Fix) PCB Exposure: Possible error when drawing outline primitive macros that contains duplicate points (#580)
+
## 12/10/2022 - v3.7.0
- **File formats:**
diff --git a/README.md b/README.md
index 64b334c..e027554 100644
--- a/README.md
+++ b/README.md
@@ -11,59 +11,80 @@
[![GitHub Sponsors](https://img.shields.io/github/sponsors/sn4k3?color=red&style=for-the-badge)](https://github.com/sponsors/sn4k3)
## Download the latest version at:
-https://github.com/sn4k3/UVtools/releases/latest
+
+### https://github.com/sn4k3/UVtools/releases/latest
## To auto install on Windows via a package manager:
+
- **Winget:** `winget install -e --id PTRTECH.UVtools`
- **Chocolatey:** `choco install -y uvtools`
-**Note:** Winget is included on Windows 11 by default.
+**Note:** Winget is included on Windows 10 with recent updates and Windows 11 by default.
## To auto install on MacOS via homebrew:
-`brew install --cask uvtools`
+
+```bash
+[[ ! "$(command -v brew)" ]] && /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
+brew install --cask uvtools
+```
# MSLA/DLP, file analysis, calibration, repair, conversion and manipulation
-This simple tool can give you insight of supports and find some failures. Did you forget what resin or other settings you used on a project? This can also save you, check every setting that were used with or simply change them!
+This simple tool can give you insight of supports and find key failures.
+Did you forget what resin or other settings you used on a project?
+This can also save you, check every setting that were used with or simply change them!
- Facebook group: https://www.facebook.com/groups/uvtools
+- Discussions: https://github.com/sn4k3/UVtools/discussions
![GUI Screenshot](https://raw.githubusercontent.com/sn4k3/UVtools/master/wiki/UI1.png)
![GUI Screenshot Islands](https://raw.githubusercontent.com/sn4k3/UVtools/master/wiki/UI2.png)
![Convertion Screenshot](https://raw.githubusercontent.com/sn4k3/UVtools/master/UVtools.GUI/Images/Screenshots/SL1ToCbddlp.png)
# Why this project?
-I don't own a Prusa SL1 or any other resin printer, for now I’m only a FDM user with
-Prusa MK3 and a Ender3.
-PrusaSlicer is my only choose, why? Because I think it's the best and feature more,
-at least for me, simple but powerful.
+
+I don't own a Prusa SL1 or any other resin printer, for now I’m only a FDM user with Prusa MK3 and a Ender3.
+PrusaSlicer is my only choose, why? Because I think it's the best and feature more, at least for me, simple but powerful.
So why this project? Well in fact I’m looking for a resin printer and i like to study
and learn first before buy, get good and don't regret, and while inspecting i found that
resin printers firmwares are not as universal as FDM, too many file formats and there
before each printer can use their own property file, this of course limit the software selection,
-for example, only PrusaSlicer can slice SL1 files. So with that in mind i'm preparing when I got
-some resin printer in future I can use PrusaSlicer instead of others.
+for example, only PrusaSlicer can slice SL1 files. So with that in mind I'm preparing when I get
+a resin printer in future I can use PrusaSlicer instead of others.
I've explored the other slicers and again, no one give me joy, and i feel them unstable,
-many users slice model on PrusaSlicer just to get those supports and export stl to load in another,
+many users slice model on PrusaSlicer just to get those supports and export STL to load in another,
that means again PrusaSlicer is on the win side, the problem is they can't slice directly on PrusaSlicer,
so, in the end, my project aims to do almost that, configure a printer on PrusaSlicer, eg: EPAX X1,
slice, export file, convert SL1 to native printer file and print.
-Please note i don't have any resin printer! All my work is virtual and calculated,
+Please note I don't own any resin printer! All my work is virtual and calculated,
so, use experimental functions with care! Once things got confirmed a list will show.
-But also, i need victims for test subject. Proceed at your own risk!
+But also, I need victims for test subject. Proceed at your own risk!
# Features
-- View image layer by layer
-- View and extract thumbnails
-- View all used settings
-- Edit print properties and save file
-- Mutate and filter layers
-- Check islands, overhangs, resin traps, empty layers and repair/remove them as other issues
+- View, modify and extract layer by layer
+- View, modify and extract thumbnails
- Export file to a folder
-- Convert format to another format
+- View and edit all used properties/settings
+- Many tools to mutate and filter layers
+- Check for issues and repair/remove them as possible:
+ - Islands
+ - Overhangs
+ - Resin traps
+ - Suction cups
+ - Touching bounds
+ - Print height
+ - Empty layers
+- Suggestions and auto corrections:
+ - Layer height
+ - Bottom layer count
+ - Wait time before cure
+ - Wait time after cure
+ - Transition layer count
+ - Model position
+- [Convert format to another format](https://github.com/sn4k3/UVtools/wiki/Sliced-File-Conversion)
- Calibration tests
- Portable (No installation needed)
@@ -113,47 +134,36 @@ But also, i need victims for test subject. Proceed at your own risk!
- UVJ (Zip file format for manual manipulation)
- Image files (png, jpg, jpeg, jp2, tif, bmp, pbm, pgm, ras, sr)
-# Available printers for PrusaSlicer
-
-See at: https://github.com/sn4k3/UVtools/tree/master/PrusaSlicer/printer
-
-# Available profiles for PrusaSlicer
-
-* From 0.01mm to 0.20mm
-* Light, Medium and Heavy Supports
-
-# Install and configure profiles under PrusaSlicer
-
-Complete guide: https://github.com/sn4k3/UVtools/wiki/Setup-PrusaSlicer
-
-## Custom "Material Notes" and "Printer Notes" keywords for PrusaSlicer
-
-Note that some variables will only work if the target format supports them, otherwise they will be ignored.
+# PrusaSlicer
+
+- **Installation:** https://github.com/sn4k3/UVtools/wiki/Setup-PrusaSlicer
+- **Available printers:** https://github.com/sn4k3/UVtools/tree/master/PrusaSlicer/printer
+- **Available profiles**:
+ - From 0.01mm to 0.20mm
+ - Light, Medium and Heavy Supports
+- **Custom "Material Notes" and "Printer Notes" keywords:**
+ - **TransitionLayerCount_xxx:** Sets the number of transition layers
+ - **BottomLightOffDelay_xxx:** Sets the bottom light off delay time in seconds
+ - **LightOffDelay_xxx:** Sets the light off delay time in seconds
+ - **BottomWaitTimeBeforeCure_xxx:** Sets the bottom wait time before cure in seconds
+ - **WaitTimeBeforeCure_xxx:** Sets the wait time before cure in seconds
+ - **BottomWaitTimeAfterCure_xxx:** Sets the bottom wait time after cure in seconds
+ - **WaitTimeAfterCure_xxx:** Sets the wait time after cure in seconds
+ - **BottomLiftHeight_xxx:** Sets the bottom lift height in millimeters
+ - **BottomLiftSpeed_xxx:** Sets the bottom lift speed in millimeters/minute
+ - **LiftHeight_xxx:** Sets the lift height in millimeters
+ - **LiftSpeed_xxx:** Sets the lift speed in millimeters/minute
+ - **BottomWaitTimeAfterLift_xxx:** Sets the bottom wait time after lift in seconds
+ - **WaitTimeAfterLift_xxx:** Sets the wait time after lift in seconds
+ - **RetractSpeed_xxx:** Sets the retract speed in millimeters/minute
+ - **BottomLightPWM_xxx:** Sets the bottom LED light power (0-255)
+ - **LightPWM_xxx:** Sets the LED light power (0-255)
+ - **FILEVERSION_n:** Sets the output file format version/revision
+ - **FILEFORMAT_xxx:** Sets the output file format extension to be auto converted once open on UVtools
+
+Note that some variables will only work if the target format supports them, otherwise they will be ignored.
Replace the "xxx" by your desired value in the correct units
-- **TransitionLayerCount_xxx:** Sets the number of transition layers
-- **BottomLightOffDelay_xxx:** Sets the bottom light off delay time in seconds
-- **LightOffDelay_xxx:** Sets the light off delay time in seconds
-- **BottomWaitTimeBeforeCure_xxx:** Sets the bottom wait time before cure in seconds
-- **WaitTimeBeforeCure_xxx:** Sets the wait time before cure in seconds
-- **BottomWaitTimeAfterCure_xxx:** Sets the bottom wait time after cure in seconds
-- **WaitTimeAfterCure_xxx:** Sets the wait time after cure in seconds
-- **BottomLiftHeight_xxx:** Sets the bottom lift height in millimeters
-- **BottomLiftSpeed_xxx:** Sets the bottom lift speed in millimeters/minute
-- **LiftHeight_xxx:** Sets the lift height in millimeters
-- **LiftSpeed_xxx:** Sets the lift speed in millimeters/minute
-- **BottomWaitTimeAfterLift_xxx:** Sets the bottom wait time after lift in seconds
-- **WaitTimeAfterLift_xxx:** Sets the wait time after lift in seconds
-- **RetractSpeed_xxx:** Sets the retract speed in millimeters/minute
-- **BottomLightPWM_xxx:** Sets the bottom LED light power (0-255)
-- **LightPWM_xxx:** Sets the LED light power (0-255)
-- **FILEVERSION_n:** Sets the output file format version/revision
-- **FILEFORMAT_xxx:** Sets the output file format extension to be auto converted once open on UVtools
-
-# File Convertion
-
-https://github.com/sn4k3/UVtools/wiki/Sliced-File-Conversion
-
# Command-line
## UVtoolsCmd (Console) executable
@@ -270,7 +280,7 @@ wget -qO - https://raw.githubusercontent.com/sn4k3/UVtools/master/Scripts/libdl-
- `./UVtools`
- `bash UVtools.sh`
- `dotnet UVtools.dll` [For universal package only, requires dotnet-runtime]
-- As a pratical alternative you can create a shortcut on Desktop
+- As a practical alternative you can create a shortcut on Desktop
If you downloaded the **.AppImage** package variant you must set run permissions to it before attempt to run it:
![AppImage permissions](https://github.com/sn4k3/UVtools/raw/master/wiki/linux_AppImage_permissions.png)
@@ -309,7 +319,7 @@ To run UVtools open it folder on a terminal and call one of:
- Double-click UVtools file
- `./UVtools.app/Contents/MacOS/UVtools`
- `bash UVtools.app/Contents/MacOS/UVtools.sh`
-- As a pratical alternative you can create a shortcut on Desktop
+- As a practical alternative you can create a shortcut on Desktop
# How to use
@@ -345,10 +355,10 @@ dotnet add package UVtools.Core
The fastest way to compile the project is by run the `build/compile.bat`, however if you wish to develop with visual studio follow the following steps:
1. Install Visual Studio and include .NET development support
-1. Install the .NET 6.0 SDK if not included on previous instalation
+1. Install the .NET 6.0 SDK if not included on previous installation
- https://dotnet.microsoft.com/download/dotnet/6.0
-1. Install the Avalonia for Visual Sutdio:
- - https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaforVisualStudio
+1. Install the Avalonia for Visual Studio:
+ - https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaVS
1. Install the Wix Toolset: (Required only for MSI build, **optional**)
1. https://wixtoolset.org/releases
1. https://marketplace.visualstudio.com/items?itemName=WixToolset.WiXToolset
@@ -359,7 +369,7 @@ The fastest way to compile the project is by run the `build/compile.bat`, howeve
# TODO
- More file formats
- Clean up & performance (always)
-- See features request under Github
+- See features request under GitHub
# Support my work / Donate
@@ -372,5 +382,6 @@ Use one of the following methods:
[![Donate PayPal](https://img.shields.io/badge/Donate-PayPal-blue?style=for-the-badge)](https://paypal.me/SkillTournament)
# Contributors
+
[![GitHub contributors](https://img.shields.io/github/contributors/sn4k3/UVtools?style=for-the-badge)](https://github.com/sn4k3/UVtools/graphs/contributors)
[![Contributors](https://contrib.rocks/image?repo=sn4k3/UVtools)](https://github.com/sn4k3/UVtools/graphs/contributors)
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index 3e8d757..eb91362 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -1,25 +1,3 @@
-- **File formats:**
- - (Add) `TransitionLayerCount` modifier to: Chitubox Zip, CWS, JXS, OSLA, PW*, UVJ, ZCodex, ZCode
- - (Add) Utility methods for transition layers calculation/parse
- - (Improvement) Calculate and set `TransitionLayerCount` property in file decode based on layer exposure time configuration
-- **GCode:**
- - (Improvement) GCode: Able to parse layer image file with appended numbers on the filename (Afecting CWS) (#577)
- - (Fix) Bad parsing of the file when it comes from Lychee or NovaMaker slicer (Afecting CWS)
- - (Fix) Incorrect parse of "Wait time before cure" from layers when printer require wait sync moves (Afecting CWS)
-- **Tools:**
- - (Add) External tests: The Complete Resin 3D Printing Settings Guide for Beginners
- - (Add) External tests: 9 settings for faster printing
- - (Improvement) Fade exposure time: Set `TransitionLayerCount` property with the affected layer count
-- **Suggestions:**
- - (Add) Transition layers: If you are printing flat on the build plate your model will print better when using a smooth transition exposure time instead of a harsh variation, resulting in reduced layer line effect and avoid possible problems due the large exposure difference.
- This is not so important when your model print raised under a raft/supports unaffected by the bottom exposure, in that case, it's fine to ignore this.
- - (Add) Model position: Printing on a corner will reduce the FEP stretch forces when detaching from the model during a lift sequence, benefits are: Reduced lift height and faster printing, less stretch, less FEP marks, better FEP lifespan, easier to peel, less prone to failure and use the screen pixels more evenly.
- If the model is too large to fit within the margin(s) on the screen, it will attempt to center it on that same axis to avoid touching on screen edge(s) and to give a sane margin from it.
-- **Status bar:**
- - (Add) Transition layers: 0/-0.00s
- - (Improvement) Change "Layer Height: 0.000mm" to "Layers: count @ 0.000mm"
- - (Improvement) Change "Bottom layers: 0" to "Bottom layers: 0/0.000mm"
-- (Change) Show user informative message about CTB Encrypted file format once per ten file loads
-- (Upgrade) .NET from 6.0.9 to 6.0.10
-- (Fix) Windows MSI installation not upgrading well when downgrade libraries
+- (Add) PrusaSlicer printer: Elegoo Saturn 2
+- (Fix) PCB Exposure: Possible error when drawing outline primitive macros that contains duplicate points (#580)
diff --git a/UVtools.Core/UVtools.Core.Documentation.shfbproj b/UVtools.Core/UVtools.Core.Documentation.shfbproj
new file mode 100644
index 0000000..bb27430
--- /dev/null
+++ b/UVtools.Core/UVtools.Core.Documentation.shfbproj
@@ -0,0 +1,103 @@
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <!-- Import the common properties to support NuGet restore -->
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <!-- The configuration and platform will be used to determine which assemblies to include from solution and
+ project documentation sources -->
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{18e03bca-49b8-48de-8abe-13df47b5048d}</ProjectGuid>
+ <SHFBSchemaVersion>2017.9.26.0</SHFBSchemaVersion>
+ <!-- AssemblyName, Name, and RootNamespace are not used by SHFB but Visual Studio adds them anyway -->
+ <AssemblyName>Documentation</AssemblyName>
+ <RootNamespace>Documentation</RootNamespace>
+ <Name>Documentation</Name>
+ <!-- SHFB properties -->
+ <FrameworkVersion>.NET Core/.NET Standard/.NET 5.0+</FrameworkVersion>
+ <OutputPath>.\Help\</OutputPath>
+ <HtmlHelpName>UVtools</HtmlHelpName>
+ <Language>en-US</Language>
+ <DocumentationSources>
+ <DocumentationSource sourceFile="UVtools.Core.csproj" />
+<DocumentationSource sourceFile="..\documentation\UVtools.Core.xml" /></DocumentationSources>
+ <HelpFileFormat>Website</HelpFileFormat>
+ <SyntaxFilters>Standard</SyntaxFilters>
+ <PresentationStyle>Default2022</PresentationStyle>
+ <CleanIntermediates>True</CleanIntermediates>
+ <KeepLogFile>True</KeepLogFile>
+ <DisableCodeBlockComponent>False</DisableCodeBlockComponent>
+ <IndentHtml>False</IndentHtml>
+ <BuildAssemblerVerbosity>OnlyWarningsAndErrors</BuildAssemblerVerbosity>
+ <SaveComponentCacheCapacity>100</SaveComponentCacheCapacity>
+ <HelpTitle>UVtools Documented Class Library</HelpTitle>
+ <HelpFileVersion>1.0.0.0</HelpFileVersion>
+ <NamingMethod>Guid</NamingMethod>
+ <ContentPlacement>AboveNamespaces</ContentPlacement>
+ <RootNamespaceContainer>False</RootNamespaceContainer>
+ <NamespaceGrouping>False</NamespaceGrouping>
+ <MaximumGroupParts>2</MaximumGroupParts>
+ <Preliminary>False</Preliminary>
+ <SdkLinkTarget>Blank</SdkLinkTarget>
+ <NamespaceSummaries>
+ <NamespaceSummaryItem name="(global)" isDocumented="True" />
+<NamespaceSummaryItem name="System.Collections.ObjectModel" isDocumented="False" />
+<NamespaceSummaryItem name="UVtools.Core" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.Converters" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.EmguCV" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.Extensions" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.FileFormats" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.GCode" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.Gerber" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.Gerber.Apertures" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.Gerber.Primitives" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.Layers" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.Managers" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.MeshFormats" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.Network" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.Objects" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.Operations" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.PixelEditor" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.Printer" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.Scripting" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.Slicer" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.Suggestions" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.SystemOS" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.SystemOS.Windows" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.Core.Voxel" isDocumented="True" />
+<NamespaceSummaryItem name="UVtools.WPF.Structures" isDocumented="True" /></NamespaceSummaries>
+ <PlugInConfigurations />
+ <MissingTags>Summary, Parameter, Returns, AutoDocumentCtors, TypeParameter, AutoDocumentDispose</MissingTags>
+ </PropertyGroup>
+ <!-- There are no properties for these groups. AnyCPU needs to appear in order for Visual Studio to perform
+ the build. The others are optional common platform types that may appear. -->
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|Win32' ">
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|Win32' ">
+ </PropertyGroup>
+ <!-- Import the common build targets during NuGet restore because before the packages are being installed, $(SHFBROOT) is not set yet -->
+ <Import Project="$(MSBuildToolsPath)\Microsoft.Common.targets" Condition="'$(MSBuildRestoreSessionId)' != ''" />
+ <!-- Import the SHFB build targets during build -->
+ <Import Project="$(SHFBROOT)\SandcastleHelpFileBuilder.targets" Condition="'$(MSBuildRestoreSessionId)' == ''" />
+ <!-- The pre-build and post-build event properties must appear *after* the targets file import in order to be
+ evaluated correctly. -->
+ <PropertyGroup>
+ <PreBuildEvent>
+ </PreBuildEvent>
+ <PostBuildEvent>
+ </PostBuildEvent>
+ <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/UVtools.Core/UVtools.Core.csproj b/UVtools.Core/UVtools.Core.csproj
index f7e84d7..11c334f 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, calibration, repair, conversion and manipulation</Description>
- <Version>3.7.0</Version>
+ <Version>3.7.1</Version>
<Copyright>Copyright © 2020 PTRTECH</Copyright>
<PackageIcon>UVtools.png</PackageIcon>
<Platforms>AnyCPU;x64</Platforms>
@@ -54,15 +54,15 @@
<ItemGroup>
<None Include="..\LICENSE">
<Pack>True</Pack>
- <PackagePath></PackagePath>
+ <PackagePath>\</PackagePath>
</None>
<None Include="..\README.md">
<Pack>True</Pack>
- <PackagePath></PackagePath>
+ <PackagePath>\</PackagePath>
</None>
<None Include="..\UVtools.CAD\UVtools.png">
<Pack>True</Pack>
- <PackagePath></PackagePath>
+ <PackagePath>\</PackagePath>
</None>
</ItemGroup>
diff --git a/UVtools.Installer/Code/HeatGeneratedFileList.wxs b/UVtools.Installer/Code/HeatGeneratedFileList.wxs
index 76232c5..a1c4f23 100644
--- a/UVtools.Installer/Code/HeatGeneratedFileList.wxs
+++ b/UVtools.Installer/Code/HeatGeneratedFileList.wxs
@@ -1031,6 +1031,9 @@
<Component Id="cmp1CE96BD7A34ADC76D869FAA33C43C8F9" Guid="*">
<File Id="filD0BB879B6F8796B97D3B477215BF400B" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Elegoo Mars.ini" />
</Component>
+ <Component Id="cmp6D57ACCB6758632F336507A7A92D9296" Guid="*">
+ <File Id="fil8B07B47569CCE9031149F199636F4556" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Elegoo Saturn 2.ini" />
+ </Component>
<Component Id="cmp281D1362804305C566F0105E67045599" Guid="*">
<File Id="filCA714ED8F162F059A65F918B95900278" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Elegoo Saturn 8K.ini" />
</Component>
@@ -1920,6 +1923,7 @@
<ComponentRef Id="cmp334FC6F96727E76A445CF33F79C5B924" />
<ComponentRef Id="cmp6E755F014B53DE8D1393C0EFF3903CEB" />
<ComponentRef Id="cmp1CE96BD7A34ADC76D869FAA33C43C8F9" />
+ <ComponentRef Id="cmp6D57ACCB6758632F336507A7A92D9296" />
<ComponentRef Id="cmp281D1362804305C566F0105E67045599" />
<ComponentRef Id="cmpB744B8818C71233B0217F96C9F4BD247" />
<ComponentRef Id="cmp3DBFA7C93945FC1D4172C4DFE5EB0F72" />
diff --git a/UVtools.WPF/UVtools.WPF.csproj b/UVtools.WPF/UVtools.WPF.csproj
index 8bb9917..ec73205 100644
--- a/UVtools.WPF/UVtools.WPF.csproj
+++ b/UVtools.WPF/UVtools.WPF.csproj
@@ -1,99 +1,97 @@
<Project Sdk="Microsoft.NET.Sdk">
- <PropertyGroup>
- <OutputType>WinExe</OutputType>
- <TargetFramework>net6.0</TargetFramework>
- <AssemblyName>UVtools</AssemblyName>
- <ApplicationIcon>UVtools.ico</ApplicationIcon>
- <Authors>Tiago Conceição, sn4k3</Authors>
- <Company>PTRTECH</Company>
- <Description>MSLA/DLP, file analysis, calibration, repair, conversion and manipulation</Description>
- <Copyright>Copyright © 2020 PTRTECH</Copyright>
- <PackageProjectUrl>https://github.com/sn4k3/UVtools</PackageProjectUrl>
- <PackageLicenseFile>LICENSE</PackageLicenseFile>
- <RepositoryUrl>https://github.com/sn4k3/UVtools</RepositoryUrl>
- <RepositoryType>Git</RepositoryType>
- <Version>3.7.0</Version>
- <Platforms>AnyCPU;x64</Platforms>
- <PackageIcon>UVtools.png</PackageIcon>
- <PackageReadmeFile>README.md</PackageReadmeFile>
- <PackageRequireLicenseAcceptance>True</PackageRequireLicenseAcceptance>
- <PackageTags>msla, dlp, resin, printer, slicer, 3d printing, image processing, layers</PackageTags>
- <Nullable>disable</Nullable>
- </PropertyGroup>
-
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
- <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
- <NoWarn>1701;1702;</NoWarn>
- </PropertyGroup>
-
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
- <NoWarn>1701;1702;</NoWarn>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
- <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
- <NoWarn>1701;1702;</NoWarn>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
- <NoWarn>1701;1702;</NoWarn>
- </PropertyGroup>
- <ItemGroup>
- <PackageReference Include="Avalonia" Version="0.10.18" />
- <PackageReference Include="Avalonia.Controls.DataGrid" Version="0.10.18" />
- <PackageReference Include="Avalonia.Desktop" Version="0.10.18" />
- <PackageReference Include="Avalonia.Diagnostics" Version="0.10.18" />
- <PackageReference Include="MessageBox.Avalonia" Version="2.1.0" />
- <PackageReference Include="Projektanker.Icons.Avalonia" Version="5.5.0" />
- <PackageReference Include="Projektanker.Icons.Avalonia.FontAwesome" Version="5.5.0" />
- <PackageReference Include="Projektanker.Icons.Avalonia.MaterialDesign" Version="5.5.0" />
- <PackageReference Include="ThemeEditor.Controls.ColorPicker" Version="0.10.17" />
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="..\UVtools.AvaloniaControls\UVtools.AvaloniaControls.csproj" />
- <ProjectReference Include="..\UVtools.Core\UVtools.Core.csproj" />
- </ItemGroup>
- <ItemGroup>
- <None Include="..\PrusaSlicer\**" CopyToOutputDirectory="PreserveNewest" LinkBase="Assets\PrusaSlicer" />
- <None Update="Assets\Themes\UVtools.themes">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Update="Assets\Themes\UVtoolsDark.xaml">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Update="Assets\Themes\UVtoolsLight.xaml">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Update="UVtools.sh">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="..\CHANGELOG.md" Link="CHANGELOG.md" />
- <None Include="..\CREDITS.md" Link="CREDITS.md" />
- <None Include="..\LICENSE">
- <Pack>True</Pack>
- <PackagePath></PackagePath>
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="..\README.md" Link="README.md">
- <Pack>True</Pack>
- <PackagePath></PackagePath>
- </None>
- <None Include="..\UVtools.CAD\UVtools.png">
- <Pack>True</Pack>
- <PackagePath></PackagePath>
- </None>
- <None Include="..\UVtools.CAD\UVtools_demo_file.sl1" Link="UVtools_demo_file.sl1">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- </ItemGroup>
- <ItemGroup>
- <Compile Update="**\*.xaml.cs">
- <DependentUpon>%(Filename)</DependentUpon>
- </Compile>
- <AvaloniaResource Include="**\*.xaml">
- <SubType>Designer</SubType>
- </AvaloniaResource>
- <AvaloniaResource Include="Assets\Icons\*" />
- <AvaloniaResource Include="Assets\benchmark.png" />
- </ItemGroup>
+ <PropertyGroup>
+ <OutputType>WinExe</OutputType>
+ <TargetFramework>net6.0</TargetFramework>
+ <AssemblyName>UVtools</AssemblyName>
+ <ApplicationIcon>UVtools.ico</ApplicationIcon>
+ <Authors>Tiago Conceição, sn4k3</Authors>
+ <Company>PTRTECH</Company>
+ <Description>MSLA/DLP, file analysis, calibration, repair, conversion and manipulation</Description>
+ <Copyright>Copyright © 2020 PTRTECH</Copyright>
+ <PackageProjectUrl>https://github.com/sn4k3/UVtools</PackageProjectUrl>
+ <PackageLicenseFile>LICENSE</PackageLicenseFile>
+ <RepositoryUrl>https://github.com/sn4k3/UVtools</RepositoryUrl>
+ <RepositoryType>Git</RepositoryType>
+ <Version>3.7.1</Version>
+ <Platforms>AnyCPU;x64</Platforms>
+ <PackageIcon>UVtools.png</PackageIcon>
+ <PackageReadmeFile>README.md</PackageReadmeFile>
+ <PackageRequireLicenseAcceptance>True</PackageRequireLicenseAcceptance>
+ <PackageTags>msla, dlp, resin, printer, slicer, 3d printing, image processing, layers</PackageTags>
+ <Nullable>disable</Nullable>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <NoWarn>1701;1702;</NoWarn>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <NoWarn>1701;1702;</NoWarn>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <NoWarn>1701;1702;</NoWarn>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <NoWarn>1701;1702;</NoWarn>
+ </PropertyGroup>
+ <ItemGroup>
+ <PackageReference Include="Avalonia" Version="0.10.18" />
+ <PackageReference Include="Avalonia.Controls.DataGrid" Version="0.10.18" />
+ <PackageReference Include="Avalonia.Desktop" Version="0.10.18" />
+ <PackageReference Include="Avalonia.Diagnostics" Version="0.10.18" />
+ <PackageReference Include="MessageBox.Avalonia" Version="2.1.0" />
+ <PackageReference Include="Projektanker.Icons.Avalonia" Version="5.5.0" />
+ <PackageReference Include="Projektanker.Icons.Avalonia.FontAwesome" Version="5.5.0" />
+ <PackageReference Include="Projektanker.Icons.Avalonia.MaterialDesign" Version="5.5.0" />
+ <PackageReference Include="ThemeEditor.Controls.ColorPicker" Version="0.10.17" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\UVtools.AvaloniaControls\UVtools.AvaloniaControls.csproj" />
+ <ProjectReference Include="..\UVtools.Core\UVtools.Core.csproj" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="..\PrusaSlicer\**" CopyToOutputDirectory="PreserveNewest" LinkBase="Assets\PrusaSlicer" />
+ <None Update="Assets\Themes\UVtools.themes">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Update="Assets\Themes\UVtoolsDark.xaml">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Update="Assets\Themes\UVtoolsLight.xaml">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Update="UVtools.sh">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="..\LICENSE">
+ <Pack>True</Pack>
+ <PackagePath>\</PackagePath>
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="..\README.md">
+ <Pack>True</Pack>
+ <PackagePath>\</PackagePath>
+ </None>
+ <None Include="..\UVtools.CAD\UVtools.png">
+ <Pack>True</Pack>
+ <PackagePath>\</PackagePath>
+ </None>
+ <None Include="..\UVtools.CAD\UVtools_demo_file.sl1" Link="UVtools_demo_file.sl1">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Update="**\*.xaml.cs">
+ <DependentUpon>%(Filename)</DependentUpon>
+ </Compile>
+ <AvaloniaResource Include="**\*.xaml">
+ <SubType>Designer</SubType>
+ </AvaloniaResource>
+ <AvaloniaResource Include="Assets\Icons\*" />
+ <AvaloniaResource Include="Assets\benchmark.png" />
+ </ItemGroup>
</Project>
diff --git a/UVtools.sln b/UVtools.sln
index 599dc95..e722ae9 100644
--- a/UVtools.sln
+++ b/UVtools.sln
@@ -22,6 +22,28 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UVtools.AvaloniaControls",
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UVtools.Cmd", "UVtools.Cmd\UVtools.Cmd.csproj", "{D0733F51-0CB1-483B-8F93-36B815FBFFF3}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{B5BD32D7-3B3E-4254-877C-3353664BC044}"
+ ProjectSection(SolutionItems) = preProject
+ build\compile.bat = build\compile.bat
+ build\compile.sh = build\compile.sh
+ build\createRelease.ps1 = build\createRelease.ps1
+ build\createRelease.sh = build\createRelease.sh
+ build\libcvextern.sh = build\libcvextern.sh
+ build\cvextern.ps1 = build\cvextern.ps1
+ build\README.md = build\README.md
+ build\run.bat = build\run.bat
+ build\run.sh = build\run.sh
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "root", "root", "{E91CEB7A-5EDC-4928-8133-D8F354EF3CE8}"
+ ProjectSection(SolutionItems) = preProject
+ CHANGELOG.md = CHANGELOG.md
+ CREDITS.md = CREDITS.md
+ LICENSE = LICENSE
+ README.md = README.md
+ RELEASE_NOTES.md = RELEASE_NOTES.md
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
diff --git a/build/cvextern.dll.ps1 b/build/cvextern.ps1
index fcd1f82..fcd1f82 100644
--- a/build/cvextern.dll.ps1
+++ b/build/cvextern.ps1
diff --git a/build/libcvextern.sh b/build/libcvextern.sh
index 15c07d0..5b4ee65 100644
--- a/build/libcvextern.sh
+++ b/build/libcvextern.sh
@@ -6,7 +6,7 @@
# usage 1: ./libcvextern.sh clean
# usage 2: ./libcvextern.sh -i
# usage 3: ./libcvextern.sh
-# usage 3: ./libcvextern.sh 4.5.5
+# usage 3: ./libcvextern.sh 4.6.0
#
cd "$(dirname "$0")"
directory="emgucv"
@@ -45,9 +45,8 @@ echo "- Detecting OS"
if [[ $OSTYPE == 'darwin'* ]]; then
osVariant="macOS"
if [ installDependencies == true ]; then
- /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
- brew analytics off
- brew install git cmake mono-libgdiplus
+ [[ ! "$(command -v brew)" ]] && /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
+ brew install git cmake
brew install --cask dotnet
fi
elif command -v apt-get &> /dev/null