Skip to content

Commit

Permalink
v3.11.0
Browse files Browse the repository at this point in the history
- **UI:**
  - (Improvement) Layer navigation load time by parallel `Mat` to `Bitmap` conversion
  - (Improvement) Allow to show exceptions without the stack trace and detailed trigger action by using the `MessageExceiption` (#644)
  - (Improvement) Allow progress to have and display a detailed log (#644)
  - (Improvement) Convert format to another with multiple versions will now only show the possible versions for the extension
- **Suggestion - Wait time before cure:**
  - (Improvement) Set the first wait time based on first valid layer mass rather than use the fixed limit
  - (Improvement) Set zero time to empty and dummy layers
  - (Improvement) When creating the dummy layer also increment the bottom layer count as the created layer count as one
- **PCB Exposure:**
  - (Add) Excellon Drill Format (drl) to cut off holes (Implementation may lack some advanced features, please confirm the result) (#646)
  - (Fix) Arc (G03) with negative offsets (I-/J-) was not drawing the shape correctly
  - (Fix) Implement the rotation for the outline primitive (#645)
- **File formats:**
  - (Improvement) Formats now sanitize the selected version before encode given the file extension, if version is out of range it will force the last known version
  - (Fix) CBDDLP: Remove a table from the file that might cause layer corruption
- (Add) Operations - `AfterCompleteReport` property: Gets or sets an report to show to the user after complete the operation with success
- (Improvement) Suggestion - Wait time after cure: Set zero time to empty and dummy layers
- (Improvement) Slight improvement on the contour intersection check, yields better performance on resin and suction cup detection
- (Improvement) Allow to trigger message boxes from operations and scripts (#644)
- (Upgrade) .NET from 6.0.12 to 6.0.13
  • Loading branch information
sn4k3 committed Jan 16, 2023
1 parent e2aaffb commit ea4f7e0
Show file tree
Hide file tree
Showing 198 changed files with 2,039 additions and 928 deletions.
28 changes: 26 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,35 @@
# Changelog

## 02/01/2022 - v3.10.0
## 15/01/2023 - v3.11.0

- **UI:**
- (Improvement) Layer navigation load time by parallel `Mat` to `Bitmap` conversion
- (Improvement) Allow to show exceptions without the stack trace and detailed trigger action by using the `MessageExceiption` (#644)
- (Improvement) Allow progress to have and display a detailed log (#644)
- (Improvement) Convert format to another with multiple versions will now only show the possible versions for the extension
- **Suggestion - Wait time before cure:**
- (Improvement) Set the first wait time based on first valid layer mass rather than use the fixed limit
- (Improvement) Set zero time to empty and dummy layers
- (Improvement) When creating the dummy layer also increment the bottom layer count as the created layer count as one
- **PCB Exposure:**
- (Add) Excellon Drill Format (drl) to cut off holes (Implementation may lack some advanced features, please confirm the result) (#646)
- (Fix) Arc (G03) with negative offsets (I-/J-) was not drawing the shape correctly
- (Fix) Implement the rotation for the outline primitive (#645)
- **File formats:**
- (Improvement) Formats now sanitize the selected version before encode given the file extension, if version is out of range it will force the last known version
- (Fix) CBDDLP: Remove a table from the file that might cause layer corruption
- (Add) Operations - `AfterCompleteReport` property: Gets or sets an report to show to the user after complete the operation with success
- (Improvement) Suggestion - Wait time after cure: Set zero time to empty and dummy layers
- (Improvement) Slight improvement on the contour intersection check, yields better performance on resin and suction cup detection
- (Improvement) Allow to trigger message boxes from operations and scripts (#644)
- (Upgrade) .NET from 6.0.12 to 6.0.13

## 02/01/2023 - v3.10.0

- (Add) File format: Anet N7 (#635)
- (Add) PrusaSlicer Printer: Anet N7 (#635)
- (Improvement) Each layer can now be aware of it own resolution
- (Improvement) Better set of file resolution from layers when using a compression codec other than png
- (Improvement) Better set of file resolution from layers when using a compression codec other than PNG
- (Fix) Anet N4 printer reset on latest firmware (#633)
- (Fix) PrusaSlicer printers: Change thumbnails resolution to match file preview resolution (Fix stretch images)

Expand Down
27 changes: 21 additions & 6 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,22 @@
- (Add) File format: Anet N7 (#635)
- (Add) PrusaSlicer Printer: Anet N7 (#635)
- (Improvement) Each layer can now be aware of it own resolution
- (Improvement) Better set of file resolution from layers when using a compression codec other than png
- (Fix) Anet N4 printer reset on latest firmware (#633)
- (Fix) PrusaSlicer printers: Change thumbnails resolution to match file preview resolution (Fix stretch images)
- **UI:**
- (Improvement) Layer navigation load time by parallel `Mat` to `Bitmap` conversion
- (Improvement) Allow to show exceptions without the stack trace and detailed trigger action by using the `MessageExceiption` (#644)
- (Improvement) Allow progress to have and display a detailed log (#644)
- (Improvement) Convert format to another with multiple versions will now only show the possible versions for the extension
- **Suggestion - Wait time before cure:**
- (Improvement) Set the first wait time based on first valid layer mass rather than use the fixed limit
- (Improvement) Set zero time to empty and dummy layers
- (Improvement) When creating the dummy layer also increment the bottom layer count as the created layer count as one
- **PCB Exposure:**
- (Add) Excellon Drill Format (drl) to cut off holes (Implementation may lack some advanced features, please confirm the result) (#646)
- (Fix) Arc (G03) with negative offsets (I-/J-) was not drawing the shape correctly
- (Fix) Implement the rotation for the outline primitive (#645)
- **File formats:**
- (Improvement) Formats now sanitize the selected version before encode given the file extension, if version is out of range it will force the last known version
- (Fix) CBDDLP: Remove a table from the file that might cause layer corruption
- (Add) Operations - `AfterCompleteReport` property: Gets or sets an report to show to the user after complete the operation with success
- (Improvement) Suggestion - Wait time after cure: Set zero time to empty and dummy layers
- (Improvement) Slight improvement on the contour intersection check, yields better performance on resin and suction cup detection
- (Improvement) Allow to trigger message boxes from operations and scripts (#644)
- (Upgrade) .NET from 6.0.12 to 6.0.13

2 changes: 1 addition & 1 deletion Scripts/010 Editor/ctb.bt
Original file line number Diff line number Diff line change
Expand Up @@ -101,11 +101,11 @@ struct SLICER_INFO {

if(MachineNameAddress > 0 && MachineNameSize > 0)
{
FSeek(MachineNameAddress);
char MachineName[MachineNameSize] <fgcolor=cBlack, bgcolor=cRed>;
}
};


if(header.PreviewLargeOffsetAddress > 0)
{
FSeek(header.PreviewLargeOffsetAddress);
Expand Down
File renamed without changes.
91 changes: 91 additions & 0 deletions Scripts/UVtools.ScriptSample/ScriptAdvancedDialogSample.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
/*
* GNU AFFERO GENERAL PUBLIC LICENSE
* Version 3, 19 November 2007
* Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
* Everyone is permitted to copy and distribute verbatim copies
* of this license document, but changing it is not allowed.
*/

using System;
using System.Threading;
using UVtools.Core.Dialogs;
using UVtools.Core.Exceptions;
using UVtools.Core.Managers;
using UVtools.Core.Scripting;

namespace UVtools.ScriptSample;

/// <summary>
/// Change layer properties to random values
/// </summary>
public class ScriptAdvancedDialogSample : ScriptGlobals
{
readonly ScriptNumericalInput<byte> Iterations = new()
{
Label = "Number of iterations to run",
Unit = "iterations",
Minimum = 1,
Maximum = byte.MaxValue,
Increment = 1,
Value = 4,
};

/// <summary>
/// Set configurations here, this function trigger just after load a script
/// </summary>
public void ScriptInit()
{
Script.Name = "Tests advanced dialogs";
Script.Description = "This script does nothing other than show advanced dialogs and progress";
Script.Author = "Tiago Conceição";
Script.Version = new Version(0, 1);
Script.MinimumVersionToRun = new Version(3, 11, 0); // Advanced dialogs started here

Script.UserInputs.Add(Iterations);
}

/// <summary>
/// Validate user inputs here, this function trigger when user click on execute
/// </summary>
/// <returns>A error message, empty or null if validation passes.</returns>
public string? ScriptValidate()
{
return null;
}

/// <summary>
/// Execute the script, this function trigger when when user click on execute and validation passes
/// </summary>
/// <returns>True if executes successfully to the end, otherwise false.</returns>
public bool ScriptExecute()
{
Progress.Reset("Some work", Iterations.Value); // Sets the progress name and number of items to process

// Trigger an message box to user, will also show in console runs but in text form
var result = MessageBoxManager.Standard.ShowDialog("This is my script",
"Script is about to start, are you sure you want to continue?\n" +
"This will destroy your file!", AbstractMessageBoxStandard.MessageButtons.YesNo).Result;

// throw error without stack trace
if (result != AbstractMessageBoxStandard.MessageButtonResult.Yes) throw new MessageException("User wanted to abort the script :(");

// Write some text to show after the operation has completed with success
Operation.AfterCompleteReport = "My operation has performed the following changes:\n";


for (int i = 0; i < Iterations.Value; i++)
{
Progress.ThrowIfCancellationRequested();

Thread.Sleep(1000);
Progress.Log = $"Task {i}: Completed!\n{Progress.Log}";
Operation.AfterCompleteReport += $"- Task {i}: Waited for 1s\n";
Progress.LockAndIncrement();
}

Thread.Sleep(1000);

// return true if not cancelled by user
return !Progress.Token.IsCancellationRequested;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@

using System;
using System.Collections.Generic;
using Emgu.CV.CvEnum;
using UVtools.Core.Operations;
using UVtools.Core.Scripting;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
using System;
using Emgu.CV;
using Emgu.CV.CvEnum;
using System;
using System.Drawing;
using UVtools.Core.Extensions;
using UVtools.Core.Scripting;
using Emgu.CV;
using Emgu.CV.CvEnum;

namespace UVtools.ScriptSample;

Expand Down Expand Up @@ -103,7 +103,7 @@ public bool ScriptExecute()
Progress.Reset("Changing layers", 2); // Sets the progress name and number of items to process

SlicerFile.Reallocate(2);

using var pattern = GenerateGridPattern();
SlicerFile[0].LayerMat = pattern;
Progress++;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
*/

using System;
using UVtools.Core.Scripting;
using System.IO;
using System.Collections.Generic;
using UVtools.Core.FileFormats;
using System.Diagnostics;
using System.IO;
using System.Linq;
using UVtools.Core.FileFormats;
using UVtools.Core.Scripting;

namespace UVtools.ScriptSample;

Expand Down Expand Up @@ -199,7 +199,7 @@ public bool ScriptExecute()

// Load the file
file.Decode(filePath);
if (string.Compare(file.MachineName, SlicerFile.MachineName, true) != 0)
if (string.Compare(file.MachineName, SlicerFile.MachineName, StringComparison.OrdinalIgnoreCase) != 0)
{
var deets = new List<string>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
using System;
using Emgu.CV;
using System;
using System.Drawing;
using System.Threading.Tasks;
using UVtools.Core;
using UVtools.Core.Extensions;
using UVtools.Core.Scripting;
using Emgu.CV;

namespace UVtools.ScriptSample;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,6 @@

using System;
using UVtools.Core.Scripting;
using System.IO;
using UVtools.Core;
using UVtools.Core.Extensions;
using UVtools.Core.FileFormats;

namespace UVtools.ScriptSample;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ public bool ScriptExecute()
var firstLayer = SlicerFile.FirstLayer;
if (firstLayer is not null)
{
if (firstLayer.NonZeroPixelCount > 1) // First layer is not blank as it seems, lets create one
if (!firstLayer.IsDummy) // First layer is not blank as it seems, lets create one
{
firstLayer = firstLayer.Clone();
using var mat = EmguExtensions.InitMat(SlicerFile.Resolution);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@
* of this license document, but changing it is not allowed.
*/

using Emgu.CV;
using Emgu.CV.CvEnum;
using System;
using System.Drawing;
using System.Text;
using System.Threading.Tasks;
using UVtools.Core.Scripting;
using Emgu.CV;
using Emgu.CV.CvEnum;
using UVtools.Core;
using UVtools.Core.Extensions;
using UVtools.Core.Scripting;

namespace UVtools.ScriptSample;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@
* of this license document, but changing it is not allowed.
*/

using Emgu.CV;
using Emgu.CV.Structure;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using UVtools.Core.Scripting;
using Emgu.CV;
using Emgu.CV.Structure;
using UVtools.Core;
using UVtools.Core.Extensions;
using UVtools.Core.Scripting;

namespace UVtools.ScriptSample;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
using System;
using Emgu.CV;
using Emgu.CV.CvEnum;
using System;
using System.Drawing;
using System.Linq;
using System.Threading.Tasks;
using UVtools.Core;
using UVtools.Core.Extensions;
using UVtools.Core.Scripting;
using UVtools.Core.Layers;
using Emgu.CV;
using Emgu.CV.CvEnum;
using UVtools.Core.Scripting;

namespace UVtools.ScriptSample;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@
* of this license document, but changing it is not allowed.
*/

using System;
using System.Drawing;
using Emgu.CV;
using Emgu.CV.CvEnum;
using System;
using System.Drawing;
using UVtools.Core.Extensions;
using UVtools.Core.Operations;
using UVtools.Core.Scripting;
Expand Down Expand Up @@ -85,13 +85,11 @@ public bool ScriptExecute()
// Exercise for you: Do eyebrows
var mats = EmguExtensions.InitMats(layerCount, SlicerFile.Resolution); // Allocate x images with file resolution

int x, y;
int xCenter = (int) (SlicerFile.ResolutionX / 2);
//int yCenter = (int) (SlicerFile.ResolutionY / 2);

// Do the left eye
x = xCenter - noseThickness/2 - faceSpacing - eyeDiameter/2;
y = faceSpacing;
var x = xCenter - noseThickness/2 - faceSpacing - eyeDiameter/2;
int y = faceSpacing;
CvInvoke.Circle(mats[0], new Point(x, y), eyeDiameter/2, EmguExtensions.WhiteColor, -1, lineType);
CvInvoke.Circle(mats[1], new Point(x, y), eyeDiameter/2, EmguExtensions.WhiteColor, -1, lineType);
Progress++;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,17 @@
* of this license document, but changing it is not allowed.
*/

using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Util;
using System;
using System.Collections.Generic;
using System.Drawing;
using UVtools.Core.Scripting;
using System.IO;
using System.Threading.Tasks;
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Util;
using UVtools.Core;
using UVtools.Core.EmguCV;
using UVtools.Core.Extensions;
using UVtools.Core.Scripting;

namespace UVtools.ScriptSample;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
* of this license document, but changing it is not allowed.
*/

using System;
using System.Drawing;
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
using System;
using System.Drawing;
using UVtools.Core.Extensions;
using UVtools.Core.Scripting;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\UVtools.Core\UVtools.Core.csproj" />
<ProjectReference Include="..\..\UVtools.Core\UVtools.Core.csproj" />
</ItemGroup>

<ItemGroup>
Expand Down
Loading

0 comments on commit ea4f7e0

Please sign in to comment.