From 9c421cc144b66d4c7e73e09f5f44e27358bc7eac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tiago=20Concei=C3=A7=C3=A3o?= Date: Sun, 13 Sep 2020 01:18:43 +0100 Subject: [PATCH] More abstraction * (Add) Global print properties on formats for more internal abstraction * (Improvement) Print properties performance internal code with abstraction --- CHANGELOG.md | 2 + README.md | 6 +- UVtools.Cmd/Program.cs | 6 +- UVtools.Core/FileFormats/CWSFile.cs | 147 ++++------ UVtools.Core/FileFormats/ChituboxFile.cs | 259 ++++++++---------- UVtools.Core/FileFormats/ChituboxZipFile.cs | 205 +++++--------- UVtools.Core/FileFormats/FileFormat.cs | 248 ++++++++++++++--- UVtools.Core/FileFormats/IFileFormat.cs | 68 +++-- UVtools.Core/FileFormats/ImageFile.cs | 11 - UVtools.Core/FileFormats/LGSFile.cs | 125 ++++----- UVtools.Core/FileFormats/MakerbaseFile.cs | 35 +-- UVtools.Core/FileFormats/PHZFile.cs | 252 ++++++++--------- UVtools.Core/FileFormats/PWSFile.cs | 140 ++++------ UVtools.Core/FileFormats/SL1File.cs | 127 ++++----- UVtools.Core/FileFormats/UVJFile.cs | 214 +++++++-------- UVtools.Core/FileFormats/ZCodexFile.cs | 101 +++---- UVtools.Core/Layer/LayerManager.cs | 4 +- .../Tools/CtrlToolEditEditParameters.cs | 3 +- UVtools.GUI/Forms/FrmToolWindow.cs | 4 +- UVtools.GUI/FrmMain.cs | 25 +- 20 files changed, 920 insertions(+), 1062 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 06eccd4..8d9aa53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ * (Add) Layer status bar: Button with ROI - Click to zoom in region | Click + shift to clear roi * (Add) Setting: Allow the layer overlay tooltips for select issues, ROI, and edit pixel mode to be hidden (#51) +* (Add) Global print properties on formats for more internal abstraction +* (Improvement) Print properties performance internal code with abstraction * (Change) Layer status bar: Bounds text to button - Click to zoom in region * (Change) Layer status bar: Pixel picker text to button - Click to center in point * (Change) Layer status bar: Resolution text to button - Click to zoom to fit diff --git a/README.md b/README.md index 7436aa4..8abcaf6 100644 --- a/README.md +++ b/README.md @@ -135,8 +135,10 @@ After some tests without failure you can increase your confidence and ignore thi ### Windows 1. Windows 7 or greater -2. .NET Framework 4.8 installed (Comes pre-installed on Windows 10 with last updates) -3. 2 GB RAM or higher + 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 + ### Mac and Linux diff --git a/UVtools.Cmd/Program.cs b/UVtools.Cmd/Program.cs index f7e8545..af7e35f 100644 --- a/UVtools.Cmd/Program.cs +++ b/UVtools.Cmd/Program.cs @@ -123,9 +123,9 @@ namespace UVtools.Cmd Console.WriteLine($"Resolution: {new Size((int) fileFormat.ResolutionX, (int) fileFormat.ResolutionY)}"); Console.WriteLine($"AntiAlias: {fileFormat.ValidateAntiAliasingLevel()}"); - Console.WriteLine($"Bottom Layer Count: {fileFormat.InitialLayerCount}"); - Console.WriteLine($"Bottom Exposure Time: {fileFormat.InitialExposureTime}s"); - Console.WriteLine($"Layer Exposure Time: {fileFormat.LayerExposureTime}s"); + Console.WriteLine($"Bottom Layer Count: {fileFormat.BottomLayerCount}"); + Console.WriteLine($"Bottom Exposure Time: {fileFormat.BottomExposureTime}s"); + Console.WriteLine($"Layer Exposure Time: {fileFormat.ExposureTime}s"); Console.WriteLine($"Print Time: {fileFormat.PrintTime}s"); Console.WriteLine($"Cost: {fileFormat.MaterialCost}$"); Console.WriteLine($"Resin Name: {fileFormat.MaterialName}"); diff --git a/UVtools.Core/FileFormats/CWSFile.cs b/UVtools.Core/FileFormats/CWSFile.cs index 62a0787..36a7b08 100644 --- a/UVtools.Core/FileFormats/CWSFile.cs +++ b/UVtools.Core/FileFormats/CWSFile.cs @@ -135,8 +135,8 @@ namespace UVtools.Core.FileFormats }; public override PrintParameterModifier[] PrintParameterModifiers { get; } = { - PrintParameterModifier.InitialLayerCount, - PrintParameterModifier.InitialExposureSeconds, + PrintParameterModifier.BottomLayerCount, + PrintParameterModifier.BottomExposureSeconds, PrintParameterModifier.ExposureSeconds, @@ -182,17 +182,54 @@ namespace UVtools.Core.FileFormats } } - public override ushort InitialLayerCount => SliceSettings.HeadLayersNum; + public override ushort BottomLayerCount + { + get => SliceSettings.HeadLayersNum; + set => SliceSettings.HeadLayersNum = value; + } - public override float InitialExposureTime => SliceSettings.HeadLayersExpoMs / 1000f; + public override float BottomExposureTime + { + get => (float) Math.Round(SliceSettings.HeadLayersExpoMs / 1000f, 2); + set => SliceSettings.HeadLayersExpoMs = (uint) (value * 1000f); + } - public override float LayerExposureTime => SliceSettings.LayersExpoMs / 1000f; + public override float ExposureTime + { + get => (float) Math.Round(SliceSettings.LayersExpoMs / 1000f, 2); + set => SliceSettings.LayersExpoMs = (uint) (value * 1000f); + } + + public override float LiftHeight + { + get => SliceSettings.LiftDistance; + set => SliceSettings.LiftDistance = value; + } - public override float LiftHeight => SliceSettings.LiftDistance; + public override float LiftSpeed + { + get => SliceSettings.LiftDownSpeed; + set => SliceSettings.LiftDownSpeed = value; + } - public override float LiftSpeed => SliceSettings.LiftDownSpeed; + public override float RetractSpeed + { + get => OutputSettings.ZLiftRetractRate; + set => OutputSettings.ZLiftRetractRate = value; + } + + public override byte BottomLightPWM + { + get => OutputSettings.BottomLightPWM; + set => OutputSettings.BottomLightPWM = value; + } + + public override byte LightPWM + { + get => OutputSettings.LightPWM; + set => OutputSettings.LightPWM = value; + } - public override float RetractSpeed => OutputSettings.ZLiftRetractRate; public override float PrintTime => 0; @@ -488,92 +525,6 @@ namespace UVtools.Core.FileFormats LayerManager.GetBoundingRectangle(progress); } - public override object GetValueFromPrintParameterModifier(PrintParameterModifier modifier) - { - var baseValue = base.GetValueFromPrintParameterModifier(modifier); - if (!ReferenceEquals(baseValue, null)) return baseValue; - - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLightPWM)) return OutputSettings.BottomLightPWM; - if (ReferenceEquals(modifier, PrintParameterModifier.LightPWM)) return OutputSettings.LightPWM; - - return null; - } - - public override bool SetValueFromPrintParameterModifier(PrintParameterModifier modifier, string value) - { - void UpdateLayers() - { - for (uint layerIndex = 0; layerIndex < LayerCount; layerIndex++) - { - this[layerIndex].ExposureTime = GetInitialLayerValueOrNormal(layerIndex, InitialExposureTime, LayerExposureTime); - } - } - - if (ReferenceEquals(modifier, PrintParameterModifier.InitialLayerCount)) - { - SliceSettings.HeadLayersNum = - OutputSettings.NumberBottomLayers = value.Convert(); - UpdateLayers(); - RebuildGCode(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.InitialExposureSeconds)) - { - SliceSettings.HeadLayersExpoMs = - OutputSettings.BottomLayersTime = (uint) (value.Convert()*1000); - UpdateLayers(); - RebuildGCode(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.ExposureSeconds)) - { - SliceSettings.LayersExpoMs = - OutputSettings.LayerTime = (uint) (value.Convert() * 1000); - UpdateLayers(); - RebuildGCode(); - return true; - } - - if (ReferenceEquals(modifier, PrintParameterModifier.LiftHeight)) - { - SliceSettings.LiftDistance = - OutputSettings.LiftDistance = value.Convert(); - RebuildGCode(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LiftSpeed)) - { - SliceSettings.LiftUpSpeed = - OutputSettings.ZLiftFeedRate = value.Convert(); - RebuildGCode(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.RetractSpeed)) - { - SliceSettings.LiftDownSpeed = - OutputSettings.ZLiftRetractRate = - OutputSettings.ZBottomLiftFeedRate = value.Convert(); - RebuildGCode(); - return true; - } - - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLightPWM)) - { - OutputSettings.BottomLightPWM = value.Convert(); - RebuildGCode(); - return true; - } - - if (ReferenceEquals(modifier, PrintParameterModifier.LightPWM)) - { - OutputSettings.BottomLightPWM = value.Convert(); - RebuildGCode(); - return true; - } - - return false; - } - public override void RebuildGCode() { string arch = Environment.Is64BitOperatingSystem ? "64-bits" : "32-bits"; @@ -623,7 +574,7 @@ namespace UVtools.Core.FileFormats } // delay = max(extra['wait'], 500) + int(((int(lift)/(extra['lift_feed']/60)) + (int(lift)/(extra['lift_retract']/60)))*1000) uint extraDelay = (uint)(((LiftHeight / (LiftSpeed / 60f)) + (LiftHeight / (RetractSpeed / 60f))) * 1000); - if (layerIndex < InitialLayerCount) + if (layerIndex < BottomLayerCount) { extraDelay = (uint)Math.Max(extraDelay + 10000, layer.ExposureTime * 1000); } @@ -731,18 +682,18 @@ namespace UVtools.Core.FileFormats { LiftHeight = SliceSettings.LiftDistance, LiftSpeed = SliceSettings.LiftUpSpeed, - LightOnTime = InitialExposureTime, + LightOnTime = BottomExposureTime, //LightOffTime = SliceSettings.BottomLightOffDelay, LightPWM = OutputSettings.BottomLightPWM, RetractSpeed = OutputSettings.ZBottomLiftFeedRate, - Count = InitialLayerCount + Count = BottomLayerCount //RetractHeight = LookupCustomValue(Keyword_LiftHeight, defaultFormat.JsonSettings.Properties.Bottom.RetractHeight), }, Exposure = new UVJFile.Exposure { LiftHeight = SliceSettings.LiftDistance, LiftSpeed = SliceSettings.LiftUpSpeed, - LightOnTime = InitialExposureTime, + LightOnTime = BottomExposureTime, //LightOffTime = SliceSettings.BottomLightOffDelay, LightPWM = OutputSettings.BottomLightPWM, RetractSpeed = SliceSettings.LiftDownSpeed, diff --git a/UVtools.Core/FileFormats/ChituboxFile.cs b/UVtools.Core/FileFormats/ChituboxFile.cs index 15477b7..0bc1044 100644 --- a/UVtools.Core/FileFormats/ChituboxFile.cs +++ b/UVtools.Core/FileFormats/ChituboxFile.cs @@ -978,8 +978,8 @@ namespace UVtools.Core.FileFormats public override PrintParameterModifier[] PrintParameterModifiers { get; } = { - PrintParameterModifier.InitialLayerCount, - PrintParameterModifier.InitialExposureSeconds, + PrintParameterModifier.BottomLayerCount, + PrintParameterModifier.BottomExposureSeconds, PrintParameterModifier.ExposureSeconds, PrintParameterModifier.BottomLayerOffTime, @@ -1027,14 +1027,77 @@ namespace UVtools.Core.FileFormats } } - public override ushort InitialLayerCount => (ushort)HeaderSettings.BottomLayersCount; + public override ushort BottomLayerCount + { + get => (ushort) HeaderSettings.BottomLayersCount; + set => HeaderSettings.BottomLayersCount = value; + } - public override float InitialExposureTime => HeaderSettings.BottomExposureSeconds; + public override float BottomExposureTime + { + get => HeaderSettings.BottomExposureSeconds; + set => HeaderSettings.BottomExposureSeconds = value; + } - public override float LayerExposureTime => HeaderSettings.LayerExposureSeconds; - public override float LiftHeight => PrintParametersSettings.LiftHeight; - public override float LiftSpeed => PrintParametersSettings.LiftSpeed; - public override float RetractSpeed => PrintParametersSettings.RetractSpeed; + public override float ExposureTime + { + get => HeaderSettings.LayerExposureSeconds; + set => HeaderSettings.LayerExposureSeconds = value; + } + + public override float BottomLayerOffTime + { + get => PrintParametersSettings.BottomLightOffDelay; + set => PrintParametersSettings.BottomLightOffDelay = value; + } + + public override float LayerOffTime + { + get => PrintParametersSettings.LightOffDelay; + set => HeaderSettings.LayerOffTime = PrintParametersSettings.LightOffDelay = value; + } + + public override float BottomLiftHeight + { + get => PrintParametersSettings.BottomLiftHeight; + set => PrintParametersSettings.BottomLiftHeight = value; + } + + public override float LiftHeight + { + get => PrintParametersSettings.LiftHeight; + set => PrintParametersSettings.LiftHeight = value; + } + + public override float BottomLiftSpeed + { + get => PrintParametersSettings.BottomLiftSpeed; + set => PrintParametersSettings.BottomLiftSpeed = value; + } + + public override float LiftSpeed + { + get => PrintParametersSettings.LiftSpeed; + set => PrintParametersSettings.LiftSpeed = value; + } + + public override float RetractSpeed + { + get => PrintParametersSettings.RetractSpeed; + set => PrintParametersSettings.RetractSpeed = value; + } + + public override byte BottomLightPWM + { + get => (byte) HeaderSettings.BottomLightPWM; + set => HeaderSettings.BottomLightPWM = value; + } + + public override byte LightPWM + { + get => (byte) HeaderSettings.BottomLightPWM; + set => HeaderSettings.BottomLightPWM = value; + } public override float PrintTime => HeaderSettings.PrintTime; @@ -1394,117 +1457,6 @@ namespace UVtools.Core.FileFormats progress.Token.ThrowIfCancellationRequested(); } - public override object GetValueFromPrintParameterModifier(PrintParameterModifier modifier) - { - var baseValue = base.GetValueFromPrintParameterModifier(modifier); - if (!ReferenceEquals(baseValue, null)) return baseValue; - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLayerOffTime)) return PrintParametersSettings.BottomLightOffDelay; - if (ReferenceEquals(modifier, PrintParameterModifier.LayerOffTime)) return PrintParametersSettings.LightOffDelay; - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftHeight)) return PrintParametersSettings.BottomLiftHeight; - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftSpeed)) return PrintParametersSettings.BottomLiftSpeed; - /*if (ReferenceEquals(modifier, PrintParameterModifier.LiftHeight)) return PrintParametersSettings.LiftHeight; - if (ReferenceEquals(modifier, PrintParameterModifier.LiftSpeed)) return PrintParametersSettings.LiftingSpeed; - if (ReferenceEquals(modifier, PrintParameterModifier.RetractSpeed)) return PrintParametersSettings.RetractSpeed;*/ - - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLightPWM)) return HeaderSettings.BottomLightPWM; - if (ReferenceEquals(modifier, PrintParameterModifier.LightPWM)) return HeaderSettings.LightPWM; - - - - return null; - } - - public override bool SetValueFromPrintParameterModifier(PrintParameterModifier modifier, string value) - { - void UpdateLayers() - { - for (byte aaIndex = 0; aaIndex < HeaderSettings.AntiAliasLevel; aaIndex++) - { - for (uint layerIndex = 0; layerIndex < HeaderSettings.LayerCount; layerIndex++) - { - // Bottom : others - this[layerIndex].ExposureTime = - LayersDefinitions[aaIndex, layerIndex].LayerExposure = GetInitialLayerValueOrNormal(layerIndex, HeaderSettings.BottomExposureSeconds, HeaderSettings.LayerExposureSeconds); - - LayersDefinitions[aaIndex, layerIndex].LayerOffTimeSeconds = GetInitialLayerValueOrNormal(layerIndex, PrintParametersSettings.BottomLightOffDelay, HeaderSettings.LayerOffTime); - } - } - } - - if (ReferenceEquals(modifier, PrintParameterModifier.InitialLayerCount)) - { - HeaderSettings.BottomLayersCount = - PrintParametersSettings.BottomLayerCount = value.Convert(); - UpdateLayers(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.InitialExposureSeconds)) - { - HeaderSettings.BottomExposureSeconds = value.Convert(); - UpdateLayers(); - return true; - } - - if (ReferenceEquals(modifier, PrintParameterModifier.ExposureSeconds)) - { - HeaderSettings.LayerExposureSeconds = value.Convert(); - UpdateLayers(); - return true; - } - - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLayerOffTime)) - { - PrintParametersSettings.BottomLightOffDelay = value.Convert(); - UpdateLayers(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LayerOffTime)) - { - HeaderSettings.LayerOffTime = - PrintParametersSettings.LightOffDelay = value.Convert(); - UpdateLayers(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftHeight)) - { - PrintParametersSettings.BottomLiftHeight = value.Convert(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftSpeed)) - { - PrintParametersSettings.BottomLiftSpeed = value.Convert(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LiftHeight)) - { - PrintParametersSettings.LiftHeight = value.Convert(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LiftSpeed)) - { - PrintParametersSettings.LiftSpeed = value.Convert(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.RetractSpeed)) - { - PrintParametersSettings.RetractSpeed = value.Convert(); - return true; - } - - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLightPWM)) - { - HeaderSettings.BottomLightPWM = value.Convert(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LightPWM)) - { - HeaderSettings.LightPWM = value.Convert(); - return true; - } - - return false; - } - public override void SaveAs(string filePath = null, OperationProgress progress = null) { if (RequireFullEncode) @@ -1642,18 +1594,18 @@ namespace UVtools.Core.FileFormats BottomLiftSpeed = PrintParametersSettings.BottomLiftSpeed, LiftSpeed = PrintParametersSettings.LiftSpeed, RetractSpeed = PrintParametersSettings.RetractSpeed, - BottomLayCount = InitialLayerCount, - BottomLayerCount = InitialLayerCount, + BottomLayCount = BottomLayerCount, + BottomLayerCount = BottomLayerCount, BottomLightOffTime = PrintParametersSettings.BottomLightOffDelay, LightOffTime = PrintParametersSettings.LightOffDelay, - BottomLayExposureTime = InitialExposureTime, - BottomLayerExposureTime = InitialExposureTime, - LayerExposureTime = LayerExposureTime, + BottomLayExposureTime = BottomExposureTime, + BottomLayerExposureTime = BottomExposureTime, + LayerExposureTime = ExposureTime, LayerHeight = LayerHeight, LayerCount = LayerCount, AntiAliasing = ValidateAntiAliasingLevel(), BottomLightPWM = (byte) HeaderSettings.BottomLightPWM, - LayerLightPWM = (byte) HeaderSettings.LightPWM, + LightPWM = (byte) HeaderSettings.LightPWM, EstimatedPrintTime = PrintTime }, @@ -1675,13 +1627,13 @@ namespace UVtools.Core.FileFormats ResolutionX = ResolutionX, ResolutionY = ResolutionY, LayerHeight = LayerHeight, - LayerExposureTime = LayerExposureTime, + LayerExposureTime = ExposureTime, LiftHeight = LiftHeight, LiftSpeed = LiftSpeed / 60, RetractSpeed = RetractSpeed / 60, LayerOffTime = HeaderSettings.LayerOffTime, - BottomLayersCount = InitialLayerCount, - BottomExposureSeconds = InitialExposureTime, + BottomLayersCount = BottomLayerCount, + BottomExposureSeconds = BottomExposureTime, Price = MaterialCost, Volume = UsedMaterial, Weight = PrintParametersSettings.WeightG, @@ -1707,11 +1659,11 @@ namespace UVtools.Core.FileFormats BedSizeY = HeaderSettings.BedSizeY, BedSizeZ = HeaderSettings.BedSizeZ, OverallHeightMilimeter = TotalHeight, - BottomExposureSeconds = InitialExposureTime, - BottomLayersCount = InitialLayerCount, + BottomExposureSeconds = BottomExposureTime, + BottomLayersCount = BottomLayerCount, BottomLightPWM = HeaderSettings.BottomLightPWM, LayerCount = LayerCount, - LayerExposureSeconds = LayerExposureTime, + LayerExposureSeconds = ExposureTime, LayerHeightMilimeter = LayerHeight, LayerOffTime = HeaderSettings.LayerOffTime, LightPWM = HeaderSettings.LightPWM, @@ -1719,7 +1671,7 @@ namespace UVtools.Core.FileFormats ProjectorType = HeaderSettings.ProjectorType, ResolutionX = ResolutionX, ResolutionY = ResolutionY, - BottomLayerCount = InitialLayerCount, + BottomLayerCount = BottomLayerCount, BottomLiftHeight = PrintParametersSettings.BottomLiftHeight, BottomLiftSpeed = PrintParametersSettings.BottomLiftSpeed, BottomLightOffDelay = PrintParametersSettings.BottomLightOffDelay, @@ -1753,9 +1705,9 @@ namespace UVtools.Core.FileFormats MaterialId = 2, Material = MaterialName, AdditionalSupportLayerTime = 0, - BottomLayersNumber = InitialLayerCount, - BottomLayersTime = (uint)(InitialExposureTime * 1000), - LayerTime = (uint)(LayerExposureTime * 1000), + BottomLayersNumber = BottomLayerCount, + BottomLayersTime = (uint)(BottomExposureTime * 1000), + LayerTime = (uint)(ExposureTime * 1000), DisableSettingsChanges = false, LayerThickness = LayerHeight, PrintTime = (uint)PrintTime, @@ -1766,10 +1718,10 @@ namespace UVtools.Core.FileFormats UserSettings = new ZCodexFile.UserSettingsdata { Printer = MachineName, - BottomLayersCount = InitialLayerCount, + BottomLayersCount = BottomLayerCount, PrintTime = $"{ts.Hours}h {ts.Minutes}m", - LayerExposureTime = (uint)(LayerExposureTime * 1000), - BottomLayerExposureTime = (uint)(InitialExposureTime * 1000), + LayerExposureTime = (uint)(ExposureTime * 1000), + BottomLayerExposureTime = (uint)(BottomExposureTime * 1000), MaterialId = 2, LayerThickness = $"{LayerHeight} mm", AntiAliasing = (byte)(ValidateAntiAliasingLevel() > 1 ? 1 : 0), @@ -1840,9 +1792,9 @@ namespace UVtools.Core.FileFormats file.SliceSettings.Yres = file.OutputSettings.YResolution = (ushort)ResolutionY; file.SliceSettings.Thickness = file.OutputSettings.LayerThickness = LayerHeight; file.SliceSettings.LayersNum = file.OutputSettings.LayersNum = LayerCount; - file.SliceSettings.HeadLayersNum = file.OutputSettings.NumberBottomLayers = InitialLayerCount; - file.SliceSettings.LayersExpoMs = file.OutputSettings.LayerTime = (uint)LayerExposureTime * 1000; - file.SliceSettings.HeadLayersExpoMs = file.OutputSettings.BottomLayersTime = (uint)InitialExposureTime * 1000; + file.SliceSettings.HeadLayersNum = file.OutputSettings.NumberBottomLayers = BottomLayerCount; + file.SliceSettings.LayersExpoMs = file.OutputSettings.LayerTime = (uint)ExposureTime * 1000; + file.SliceSettings.HeadLayersExpoMs = file.OutputSettings.BottomLayersTime = (uint)BottomExposureTime * 1000; file.SliceSettings.WaitBeforeExpoMs = (uint)(PrintParametersSettings.LightOffDelay * 1000); file.SliceSettings.LiftDistance = file.OutputSettings.LiftDistance = LiftHeight; file.SliceSettings.LiftUpSpeed = file.OutputSettings.ZLiftFeedRate = LiftSpeed; @@ -1893,18 +1845,18 @@ namespace UVtools.Core.FileFormats { LiftHeight = PrintParametersSettings.BottomLiftHeight, LiftSpeed = PrintParametersSettings.BottomLiftSpeed, - LightOnTime = InitialExposureTime, + LightOnTime = BottomExposureTime, LightOffTime = PrintParametersSettings.BottomLightOffDelay, LightPWM = (byte) HeaderSettings.BottomLightPWM, RetractSpeed = PrintParametersSettings.RetractSpeed, - Count = InitialLayerCount + Count = BottomLayerCount //RetractHeight = LookupCustomValue(Keyword_LiftHeight, defaultFormat.JsonSettings.Properties.Bottom.RetractHeight), }, Exposure = new UVJFile.Exposure { LiftHeight = PrintParametersSettings.LiftHeight, LiftSpeed = PrintParametersSettings.LiftSpeed, - LightOnTime = LayerExposureTime, + LightOnTime = ExposureTime, LightOffTime = PrintParametersSettings.LightOffDelay, LightPWM = (byte) HeaderSettings.LightPWM, RetractSpeed = PrintParametersSettings.RetractSpeed, @@ -1922,6 +1874,25 @@ namespace UVtools.Core.FileFormats return false; } + + public override byte SetValuesFromPrintParametersModifiers() + { + var count = base.SetValuesFromPrintParametersModifiers(); + if (count == 0) return 0; + + for (byte aaIndex = 0; aaIndex < HeaderSettings.AntiAliasLevel; aaIndex++) + { + for (uint layerIndex = 0; layerIndex < HeaderSettings.LayerCount; layerIndex++) + { + // Bottom : others + LayersDefinitions[aaIndex, layerIndex].LayerExposure = this[layerIndex].ExposureTime; + LayersDefinitions[aaIndex, layerIndex].LayerOffTimeSeconds = GetInitialLayerValueOrNormal(layerIndex, PrintParametersSettings.BottomLightOffDelay, HeaderSettings.LayerOffTime); + } + } + + return count; + } + #endregion } } diff --git a/UVtools.Core/FileFormats/ChituboxZipFile.cs b/UVtools.Core/FileFormats/ChituboxZipFile.cs index 71628ea..79f85fd 100644 --- a/UVtools.Core/FileFormats/ChituboxZipFile.cs +++ b/UVtools.Core/FileFormats/ChituboxZipFile.cs @@ -79,7 +79,7 @@ namespace UVtools.Core.FileFormats [DisplayName("bottomLightOffTime")] public float BottomLightOffTime { get; set; } [DisplayName("lightOffTime")] public float LightOffTime { get; set; } [DisplayName("bottomPWMLight")] public byte BottomLightPWM { get; set; } = 255; - [DisplayName("PWMLight")] public byte LayerLightPWM { get; set; } = 255; + [DisplayName("PWMLight")] public byte LightPWM { get; set; } = 255; [DisplayName("antiAliasLevel")] public byte AntiAliasing { get; set; } = 1; } @@ -99,8 +99,8 @@ namespace UVtools.Core.FileFormats }; public override PrintParameterModifier[] PrintParameterModifiers { get; } = { - PrintParameterModifier.InitialLayerCount, - PrintParameterModifier.InitialExposureSeconds, + PrintParameterModifier.BottomLayerCount, + PrintParameterModifier.BottomExposureSeconds, PrintParameterModifier.ExposureSeconds, PrintParameterModifier.BottomLayerOffTime, @@ -148,17 +148,77 @@ namespace UVtools.Core.FileFormats } } - public override ushort InitialLayerCount => HeaderSettings.BottomLayerCount; + public override ushort BottomLayerCount + { + get => HeaderSettings.BottomLayerCount; + set => HeaderSettings.BottomLayerCount = HeaderSettings.BottomLayCount = value; + } - public override float InitialExposureTime => HeaderSettings.BottomLayerExposureTime; + public override float BottomExposureTime + { + get => HeaderSettings.BottomLayerExposureTime; + set => HeaderSettings.BottomLayerExposureTime = HeaderSettings.BottomLayExposureTime = value; + } - public override float LayerExposureTime => HeaderSettings.LayerExposureTime; + public override float ExposureTime + { + get => HeaderSettings.LayerExposureTime; + set => HeaderSettings.LayerExposureTime = value; + } - public override float LiftHeight => HeaderSettings.LiftHeight; + public override float BottomLayerOffTime + { + get => HeaderSettings.BottomLightOffTime; + set => HeaderSettings.BottomLightOffTime = value; + } - public override float LiftSpeed => HeaderSettings.LiftSpeed; + public override float LayerOffTime + { + get => HeaderSettings.LightOffTime; + set => HeaderSettings.LightOffTime = value; + } - public override float RetractSpeed => HeaderSettings.RetractSpeed; + public override float BottomLiftHeight + { + get => HeaderSettings.BottomLiftHeight; + set => HeaderSettings.BottomLiftHeight = value; + } + + public override float LiftHeight + { + get => HeaderSettings.LiftHeight; + set => HeaderSettings.LiftHeight = value; + } + + public override float BottomLiftSpeed + { + get => HeaderSettings.BottomLiftSpeed; + set => HeaderSettings.BottomLiftSpeed = value; + } + + public override float LiftSpeed + { + get => HeaderSettings.LiftSpeed; + set => HeaderSettings.LiftSpeed = value; + } + + public override float RetractSpeed + { + get => HeaderSettings.RetractSpeed; + set => HeaderSettings.RetractSpeed = value; + } + + public override byte BottomLightPWM + { + get => HeaderSettings.BottomLightPWM; + set => HeaderSettings.BottomLightPWM = value; + } + + public override byte LightPWM + { + get => HeaderSettings.LightPWM; + set => HeaderSettings.LightPWM = value; + } public override float PrintTime => HeaderSettings.EstimatedPrintTime; @@ -300,13 +360,13 @@ namespace UVtools.Core.FileFormats var currPos = Regex.Match(stripGcode, ";currPos:([+-]?([0-9]*[.])?[0-9]+)", RegexOptions.IgnoreCase); var exposureTime = Regex.Match(stripGcode, "G4 P(\\d+)", RegexOptions.IgnoreCase); var pwm = Regex.Match(stripGcode, "M106 S(\\d+)", RegexOptions.IgnoreCase); - if (layerIndex < InitialLayerCount) + if (layerIndex < BottomLayerCount) { HeaderSettings.BottomLightPWM = byte.Parse(pwm.Groups[1].Value); } else { - HeaderSettings.LayerLightPWM = byte.Parse(pwm.Groups[1].Value); + HeaderSettings.LightPWM = byte.Parse(pwm.Groups[1].Value); } LayerManager[layerIndex] = new Layer(layerIndex, entry.Open(), entry.Name) @@ -342,119 +402,6 @@ namespace UVtools.Core.FileFormats LayerManager.GetBoundingRectangle(progress); } - public override object GetValueFromPrintParameterModifier(PrintParameterModifier modifier) - { - var baseValue = base.GetValueFromPrintParameterModifier(modifier); - if (!ReferenceEquals(baseValue, null)) return baseValue; - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLayerOffTime)) return HeaderSettings.BottomLightOffTime; - if (ReferenceEquals(modifier, PrintParameterModifier.LayerOffTime)) return HeaderSettings.LightOffTime; - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftHeight)) return HeaderSettings.BottomLiftHeight; - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftSpeed)) return HeaderSettings.BottomLiftSpeed; - /*if (ReferenceEquals(modifier, PrintParameterModifier.LiftHeight)) return PrintParametersSettings.LiftHeight; - if (ReferenceEquals(modifier, PrintParameterModifier.LiftSpeed)) return PrintParametersSettings.LiftingSpeed; - if (ReferenceEquals(modifier, PrintParameterModifier.RetractSpeed)) return PrintParametersSettings.RetractSpeed;*/ - - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLightPWM)) return HeaderSettings.BottomLightPWM; - if (ReferenceEquals(modifier, PrintParameterModifier.LightPWM)) return HeaderSettings.LayerLightPWM; - - - - return null; - } - - public override bool SetValueFromPrintParameterModifier(PrintParameterModifier modifier, string value) - { - void UpdateLayers() - { - for (uint layerIndex = 0; layerIndex < LayerCount; layerIndex++) - { - this[layerIndex].ExposureTime = GetInitialLayerValueOrNormal(layerIndex, InitialExposureTime, LayerExposureTime); - } - } - - if (ReferenceEquals(modifier, PrintParameterModifier.InitialLayerCount)) - { - HeaderSettings.BottomLayerCount = - HeaderSettings.BottomLayCount = value.Convert(); - UpdateLayers(); - RebuildGCode(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.InitialExposureSeconds)) - { - HeaderSettings.BottomLayerExposureTime = value.Convert(); - UpdateLayers(); - RebuildGCode(); - return true; - } - - if (ReferenceEquals(modifier, PrintParameterModifier.ExposureSeconds)) - { - HeaderSettings.LayerExposureTime = value.Convert(); - UpdateLayers(); - RebuildGCode(); - return true; - } - - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLayerOffTime)) - { - HeaderSettings.BottomLightOffTime = value.Convert(); - RebuildGCode(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LayerOffTime)) - { - HeaderSettings.LightOffTime = value.Convert(); - RebuildGCode(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftHeight)) - { - HeaderSettings.BottomLiftHeight = value.Convert(); - RebuildGCode(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftSpeed)) - { - HeaderSettings.LiftSpeed = value.Convert(); - RebuildGCode(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LiftHeight)) - { - HeaderSettings.LiftHeight = value.Convert(); - RebuildGCode(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LiftSpeed)) - { - HeaderSettings.LiftSpeed = value.Convert(); - RebuildGCode(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.RetractSpeed)) - { - HeaderSettings.RetractSpeed = value.Convert(); - RebuildGCode(); - return true; - } - - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLightPWM)) - { - HeaderSettings.BottomLightPWM = value.Convert(); - RebuildGCode(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LightPWM)) - { - HeaderSettings.LayerLightPWM = value.Convert(); - RebuildGCode(); - return true; - } - - return false; - } - public override void RebuildGCode() { string arch = Environment.Is64BitOperatingSystem ? "64-bits" : "32-bits"; @@ -486,7 +433,7 @@ namespace UVtools.Core.FileFormats var lightOffDelay = GetInitialLayerValueOrNormal(layerIndex, HeaderSettings.BottomLightOffTime, HeaderSettings.LightOffTime) * 1000; - var pwmValue = GetInitialLayerValueOrNormal(layerIndex, HeaderSettings.BottomLightPWM, HeaderSettings.LayerLightPWM); + var pwmValue = GetInitialLayerValueOrNormal(layerIndex, HeaderSettings.BottomLightPWM, HeaderSettings.LightPWM); var exposureTime = this[layerIndex].ExposureTime * 1000; GCode.AppendLine($";LAYER_START:{layerIndex}"); @@ -580,20 +527,20 @@ namespace UVtools.Core.FileFormats { LiftHeight = HeaderSettings.BottomLiftHeight, LiftSpeed = HeaderSettings.BottomLiftSpeed, - LightOnTime = InitialExposureTime, + LightOnTime = BottomExposureTime, LightOffTime = HeaderSettings.BottomLightOffTime, LightPWM = HeaderSettings.BottomLightPWM, RetractSpeed = HeaderSettings.RetractSpeed, - Count = InitialLayerCount + Count = BottomLayerCount //RetractHeight = LookupCustomValue(Keyword_LiftHeight, defaultFormat.JsonSettings.Properties.Bottom.RetractHeight), }, Exposure = new UVJFile.Exposure { LiftHeight = HeaderSettings.LiftHeight, LiftSpeed = HeaderSettings.LiftSpeed, - LightOnTime = LayerExposureTime, + LightOnTime = ExposureTime, LightOffTime = HeaderSettings.LightOffTime, - LightPWM = HeaderSettings.LayerLightPWM, + LightPWM = HeaderSettings.LightPWM, RetractSpeed = HeaderSettings.RetractSpeed, }, AntiAliasLevel = ValidateAntiAliasingLevel() diff --git a/UVtools.Core/FileFormats/FileFormat.cs b/UVtools.Core/FileFormats/FileFormat.cs index d62f8e7..82540e4 100644 --- a/UVtools.Core/FileFormats/FileFormat.cs +++ b/UVtools.Core/FileFormats/FileFormat.cs @@ -55,24 +55,24 @@ namespace UVtools.Core.FileFormats { #region Instances - public static PrintParameterModifier InitialLayerCount { get; } = new PrintParameterModifier("Initial Layer Count", @"Modify 'Initial Layer Count' value", "layers",0, ushort.MaxValue, 0); - public static PrintParameterModifier InitialExposureSeconds { get; } = new PrintParameterModifier("Initial Exposure Time", @"Modify 'Initial Exposure Time' seconds", "s", 0.1M, byte.MaxValue, 2); - public static PrintParameterModifier ExposureSeconds { get; } = new PrintParameterModifier("Exposure Time", @"Modify 'Exposure Time' seconds", "s", 0.1M, byte.MaxValue, 2); + public static PrintParameterModifier BottomLayerCount { get; } = new PrintParameterModifier("Bottom layer count", null, "layers",0, ushort.MaxValue, 0); + public static PrintParameterModifier BottomExposureSeconds { get; } = new PrintParameterModifier("Bottom exposure time", null, "s", 0.1M, byte.MaxValue, 2); + public static PrintParameterModifier ExposureSeconds { get; } = new PrintParameterModifier("Exposure time", null, "s", 0.1M, byte.MaxValue, 2); - public static PrintParameterModifier BottomLayerOffTime { get; } = new PrintParameterModifier("Bottom Layer Off Time", @"Modify 'Bottom Layer Off Time' seconds", "s"); - public static PrintParameterModifier LayerOffTime { get; } = new PrintParameterModifier("Layer Off Time", @"Modify 'Layer Off Time' seconds", "s"); - public static PrintParameterModifier BottomLiftHeight { get; } = new PrintParameterModifier("Bottom Lift Height", @"Modify 'Bottom Lift Height' millimeters between bottom layers", "mm", 1); - public static PrintParameterModifier BottomLiftSpeed { get; } = new PrintParameterModifier("Bottom Lift Speed", @"Modify 'Bottom Lift Speed' mm/min between bottom layers", "mm/min", 10); - public static PrintParameterModifier LiftHeight { get; } = new PrintParameterModifier("Lift Height", @"Modify 'Lift Height' millimeters between layers", "mm", 1); - public static PrintParameterModifier LiftSpeed { get; } = new PrintParameterModifier("Lift Speed", @"Modify 'Lift Speed' mm/min between layers", "mm/min", 10, 5000, 2); - public static PrintParameterModifier RetractSpeed { get; } = new PrintParameterModifier("Retract Speed", @"Modify 'Retract Speed' mm/min between layers", "mm/min", 10, 5000, 2); + public static PrintParameterModifier BottomLayerOffTime { get; } = new PrintParameterModifier("Bottom layer off seconds", null, "s"); + public static PrintParameterModifier LayerOffTime { get; } = new PrintParameterModifier("Layer off seconds", null, "s"); + public static PrintParameterModifier BottomLiftHeight { get; } = new PrintParameterModifier("Bottom lift height", @"Modify 'Bottom lift height' millimeters between bottom layers", "mm", 1); + public static PrintParameterModifier LiftHeight { get; } = new PrintParameterModifier("Lift height", @"Modify 'Lift height' millimeters between layers", "mm", 1); + public static PrintParameterModifier BottomLiftSpeed { get; } = new PrintParameterModifier("Bottom Lift Speed", @"Modify 'Bottom lift Speed' mm/min between bottom layers", "mm/min", 10); + public static PrintParameterModifier LiftSpeed { get; } = new PrintParameterModifier("Lift speed", @"Modify 'Lift speed' mm/min between layers", "mm/min", 10, 5000, 2); + public static PrintParameterModifier RetractSpeed { get; } = new PrintParameterModifier("Retract speed", @"Modify 'Retract speed' mm/min between layer", "mm/min", 10, 5000, 2); - public static PrintParameterModifier BottomLightPWM { get; } = new PrintParameterModifier("Bottom Light PWM", @"Modify 'Bottom Light PWM' value", null, 1, byte.MaxValue, 0); + public static PrintParameterModifier BottomLightPWM { get; } = new PrintParameterModifier("Bottom light PWM", @"Modify 'Bottom light PWM' value", null, 1, byte.MaxValue, 0); public static PrintParameterModifier LightPWM { get; } = new PrintParameterModifier("Light PWM", @"Modify 'Light PWM' value", null, 1, byte.MaxValue, 0); public static PrintParameterModifier[] Parameters = { - InitialLayerCount, - InitialExposureSeconds, + BottomLayerCount, + BottomExposureSeconds, ExposureSeconds, BottomLayerOffTime, @@ -130,6 +130,12 @@ namespace UVtools.Core.FileFormats /// public decimal NewValue { get; set; } + public decimal Value + { + get => NewValue; + set => OldValue = NewValue = value; + } + /// /// Gets if the value has changed /// @@ -137,10 +143,10 @@ namespace UVtools.Core.FileFormats #endregion #region Constructor - public PrintParameterModifier(string name, string description, string valueUnit = null, decimal minimum = 0, decimal maximum = 1000, byte decimalPlates = 2) + public PrintParameterModifier(string name, string description = null, string valueUnit = null, decimal minimum = 0, decimal maximum = 1000, byte decimalPlates = 2) { Name = name; - Description = description; + Description = description ?? $"Modify '{name}'"; ValueUnit = valueUnit ?? string.Empty; Minimum = minimum; Maximum = maximum; @@ -330,17 +336,19 @@ namespace UVtools.Core.FileFormats set => throw new NotImplementedException(); } - public abstract ushort InitialLayerCount { get; } - - public abstract float InitialExposureTime { get; } + public virtual ushort BottomLayerCount { get; set; } + 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; } + public virtual float LiftHeight { get; set; } + public virtual float BottomLiftSpeed { get; set; } + public virtual float LiftSpeed { get; set; } + public virtual float RetractSpeed { get; set; } + public virtual byte BottomLightPWM { get; set; } = 255; + public virtual byte LightPWM { get; set; } = 255; - public abstract float LayerExposureTime { get; } - - public abstract float LiftHeight { get; } - - public abstract float RetractSpeed { get; } - - public abstract float LiftSpeed { get; } public abstract float PrintTime { get; } @@ -685,44 +693,206 @@ namespace UVtools.Core.FileFormats } } - public virtual float GetHeightFromLayer(uint layerIndex, bool realHeight = true) + public float GetHeightFromLayer(uint layerIndex, bool realHeight = true) { return (float)Math.Round((layerIndex+(realHeight ? 1 : 0)) * LayerHeight, 2); } public T GetInitialLayerValueOrNormal(uint layerIndex, T initialLayerValue, T normalLayerValue) { - return layerIndex < InitialLayerCount ? initialLayerValue : normalLayerValue; + return layerIndex < BottomLayerCount ? initialLayerValue : normalLayerValue; } - public virtual object GetValueFromPrintParameterModifier(PrintParameterModifier modifier) + public void RefreshPrintParametersModifiersValues() { - if (ReferenceEquals(modifier, PrintParameterModifier.InitialLayerCount)) - return InitialLayerCount; - if (ReferenceEquals(modifier, PrintParameterModifier.InitialExposureSeconds)) - return InitialExposureTime; - if (ReferenceEquals(modifier, PrintParameterModifier.ExposureSeconds)) - return LayerExposureTime; + if (PrintParameterModifiers is null) return; + if (PrintParameterModifiers.Contains(PrintParameterModifier.BottomLayerCount)) + { + PrintParameterModifier.BottomLayerCount.OldValue = BottomLayerCount; + } + if (PrintParameterModifiers.Contains(PrintParameterModifier.BottomExposureSeconds)) + { + PrintParameterModifier.BottomExposureSeconds.OldValue = (decimal) BottomExposureTime; + } + + if (PrintParameterModifiers.Contains(PrintParameterModifier.ExposureSeconds)) + { + PrintParameterModifier.ExposureSeconds.OldValue = (decimal)ExposureTime; + } + + if (PrintParameterModifiers.Contains(PrintParameterModifier.BottomLayerOffTime)) + { + PrintParameterModifier.BottomLayerOffTime.OldValue = (decimal)BottomLayerOffTime; + } + + if (PrintParameterModifiers.Contains(PrintParameterModifier.LayerOffTime)) + { + PrintParameterModifier.LayerOffTime.OldValue = (decimal)LayerOffTime; + } + + if (PrintParameterModifiers.Contains(PrintParameterModifier.BottomLiftHeight)) + { + PrintParameterModifier.BottomLiftHeight.OldValue = (decimal)BottomLiftHeight; + } + + if (PrintParameterModifiers.Contains(PrintParameterModifier.LiftHeight)) + { + PrintParameterModifier.LiftHeight.OldValue = (decimal)LiftHeight; + } + + if (PrintParameterModifiers.Contains(PrintParameterModifier.BottomLiftSpeed)) + { + PrintParameterModifier.BottomLiftSpeed.OldValue = (decimal)BottomLiftSpeed; + } + + if (PrintParameterModifiers.Contains(PrintParameterModifier.LiftSpeed)) + { + PrintParameterModifier.LiftSpeed.OldValue = (decimal)LiftSpeed; + } + + if (PrintParameterModifiers.Contains(PrintParameterModifier.RetractSpeed)) + { + PrintParameterModifier.RetractSpeed.OldValue = (decimal)RetractSpeed; + } + + if (PrintParameterModifiers.Contains(PrintParameterModifier.BottomLightPWM)) + { + PrintParameterModifier.BottomLightPWM.OldValue = BottomLightPWM; + } + + if (PrintParameterModifiers.Contains(PrintParameterModifier.LightPWM)) + { + PrintParameterModifier.LightPWM.OldValue = LightPWM; + } + } + + public object GetValueFromPrintParameterModifier(PrintParameterModifier modifier) + { + if (ReferenceEquals(modifier, PrintParameterModifier.BottomLayerCount)) + return BottomLayerCount; + if (ReferenceEquals(modifier, PrintParameterModifier.BottomExposureSeconds)) + return BottomExposureTime; + if (ReferenceEquals(modifier, PrintParameterModifier.ExposureSeconds)) + return ExposureTime; + + if (ReferenceEquals(modifier, PrintParameterModifier.BottomLayerOffTime)) + return BottomLayerOffTime; + if (ReferenceEquals(modifier, PrintParameterModifier.LayerOffTime)) + return LayerOffTime; + + if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftHeight)) + return BottomLiftHeight; if (ReferenceEquals(modifier, PrintParameterModifier.LiftHeight)) return LiftHeight; + if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftSpeed)) + return BottomLiftSpeed; if (ReferenceEquals(modifier, PrintParameterModifier.LiftSpeed)) return LiftSpeed; if (ReferenceEquals(modifier, PrintParameterModifier.RetractSpeed)) return RetractSpeed; - + if (ReferenceEquals(modifier, PrintParameterModifier.BottomLightPWM)) + return BottomLightPWM; + if (ReferenceEquals(modifier, PrintParameterModifier.LightPWM)) + return LightPWM; return null; } - public virtual bool SetValueFromPrintParameterModifier(PrintParameterModifier modifier, object value) + public bool SetValueFromPrintParameterModifier(PrintParameterModifier modifier, decimal value) { - return SetValueFromPrintParameterModifier(modifier, value.ToString()); + if (ReferenceEquals(modifier, PrintParameterModifier.BottomLayerCount)) + { + BottomLayerCount = (ushort)value; + return true; + } + if (ReferenceEquals(modifier, PrintParameterModifier.BottomExposureSeconds)) + { + BottomExposureTime = (float) value; + return true; + } + if (ReferenceEquals(modifier, PrintParameterModifier.ExposureSeconds)) + { + ExposureTime = (float) value; + return true; + } + + if (ReferenceEquals(modifier, PrintParameterModifier.BottomLayerOffTime)) + { + BottomLayerOffTime = (float) value; + return true; + } + if (ReferenceEquals(modifier, PrintParameterModifier.LayerOffTime)) + { + LayerOffTime = (float) value; + return true; + } + + if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftHeight)) + { + BottomLiftHeight = (float) value; + return true; + } + if (ReferenceEquals(modifier, PrintParameterModifier.LiftHeight)) + { + LiftHeight = (float) value; + return true; + } + if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftSpeed)) + { + BottomLiftSpeed = (float) value; + return true; + } + if (ReferenceEquals(modifier, PrintParameterModifier.LiftSpeed)) + { + LiftSpeed = (float) value; + return true; + } + if (ReferenceEquals(modifier, PrintParameterModifier.RetractSpeed)) + { + RetractSpeed = (float) value; + return true; + } + + if (ReferenceEquals(modifier, PrintParameterModifier.BottomLightPWM)) + { + BottomLightPWM = (byte)value; + return true; + } + if (ReferenceEquals(modifier, PrintParameterModifier.LightPWM)) + { + LightPWM = (byte)value; + return true; + } + + return false; + } + + public virtual byte SetValuesFromPrintParametersModifiers() + { + if (PrintParameterModifiers is null) return 0; + byte changed = 0; + foreach (var modifier in PrintParameterModifiers) + { + if(!modifier.HasChanged) continue; + modifier.OldValue = modifier.NewValue; + SetValueFromPrintParameterModifier(modifier, modifier.NewValue); + changed++; + } + + if (changed == 0) return changed; + + for (uint layerIndex = 0; layerIndex < LayerCount; layerIndex++) + { + this[layerIndex].ExposureTime = GetInitialLayerValueOrNormal(layerIndex, BottomExposureTime, ExposureTime); + } + + RebuildGCode(); + + return changed; } - public abstract bool SetValueFromPrintParameterModifier(PrintParameterModifier modifier, string value); - public virtual void RebuildGCode() { } diff --git a/UVtools.Core/FileFormats/IFileFormat.cs b/UVtools.Core/FileFormats/IFileFormat.cs index fda3551..0ca1b84 100644 --- a/UVtools.Core/FileFormats/IFileFormat.cs +++ b/UVtools.Core/FileFormats/IFileFormat.cs @@ -109,41 +109,73 @@ namespace UVtools.Core.FileFormats /// float TotalHeight { get; } + #region Universal Properties + /// /// Gets the number of layers present in this file /// uint LayerCount { get; set; } /// - /// Gets the number of initial layer count + /// Gets or sets the number of initial layer count /// - /// - ushort InitialLayerCount { get; } + ushort BottomLayerCount { get; set; } /// - /// Gets the initial exposure time for + /// Gets or sets the initial exposure time for in seconds /// - float InitialExposureTime { get; } + float BottomExposureTime { get; set; } /// - /// Gets the normal layer exposure time + /// Gets or sets the normal layer exposure time in seconds /// - float LayerExposureTime { get; } + float ExposureTime { get; set; } /// - /// Gets the speed in mm/min for the detracts + /// Gets or sets the bottom layer off time in seconds /// - float LiftSpeed { get; } + float BottomLayerOffTime { get; set; } /// - /// Gets the height in mm to retract between layers + /// Gets or sets the layer off time in seconds /// - float LiftHeight { get; } + float LayerOffTime { get; set; } + + /// + /// Gets or sets the bottom lift height in mm + /// + float BottomLiftHeight { get; set; } + + /// + /// Gets or sets the lift height in mm + /// + float LiftHeight { get; set; } + + /// + /// Gets or sets the bottom lift speed in mm/min + /// + float BottomLiftSpeed { get; set; } + + /// + /// Gets or sets the speed in mm/min + /// + float LiftSpeed { get; set; } /// /// Gets the speed in mm/min for the retracts /// - float RetractSpeed { get; } + float RetractSpeed { get; set; } + + /// + /// Gets or sets the bottom pwm value from 0 to 255 + /// + byte BottomLightPWM { get; set; } + + /// + /// Gets or sets the pwm value from 0 to 255 + /// + byte LightPWM { get; set; } + #endregion /// /// Gets the estimate print time in seconds @@ -308,6 +340,8 @@ namespace UVtools.Core.FileFormats /// T GetInitialLayerValueOrNormal(uint layerIndex, T initialLayerValue, T normalLayerValue); + void RefreshPrintParametersModifiersValues(); + /// /// Gets the value attributed to /// @@ -321,15 +355,9 @@ namespace UVtools.Core.FileFormats /// Modifier to use /// Value to set /// True if set, otherwise false = not found - bool SetValueFromPrintParameterModifier(FileFormat.PrintParameterModifier modifier, object value); + bool SetValueFromPrintParameterModifier(FileFormat.PrintParameterModifier modifier, decimal value); - /// - /// Sets a property value attributed to - /// - /// Modifier to use - /// Value to set - /// True if set, otherwise false = not found - bool SetValueFromPrintParameterModifier(FileFormat.PrintParameterModifier modifier, string value); + byte SetValuesFromPrintParametersModifiers(); /// /// Rebuilds GCode based on current settings diff --git a/UVtools.Core/FileFormats/ImageFile.cs b/UVtools.Core/FileFormats/ImageFile.cs index 1102e78..3238cb7 100644 --- a/UVtools.Core/FileFormats/ImageFile.cs +++ b/UVtools.Core/FileFormats/ImageFile.cs @@ -39,12 +39,6 @@ namespace UVtools.Core.FileFormats public override byte AntiAliasing { get; } = 1; public override float LayerHeight { get; set; } = 0; - public override ushort InitialLayerCount { get; } = 1; - public override float InitialExposureTime { get; } = 0; - public override float LayerExposureTime { get; } = 0; - public override float LiftHeight { get; } = 0; - public override float RetractSpeed { get; } = 0; - public override float LiftSpeed { get; } = 0; public override float PrintTime { get; } = 0; public override float UsedMaterial { get; } = 0; public override float MaterialCost { get; } = 0; @@ -54,11 +48,6 @@ namespace UVtools.Core.FileFormats private Mat ImageMat { get; set; } - public override bool SetValueFromPrintParameterModifier(PrintParameterModifier modifier, string value) - { - throw new NotImplementedException(); - } - public override void Decode(string fileFullPath, OperationProgress progress = null) { base.Decode(fileFullPath, progress); diff --git a/UVtools.Core/FileFormats/LGSFile.cs b/UVtools.Core/FileFormats/LGSFile.cs index 1ab3e8c..4b23c41 100644 --- a/UVtools.Core/FileFormats/LGSFile.cs +++ b/UVtools.Core/FileFormats/LGSFile.cs @@ -216,8 +216,8 @@ namespace UVtools.Core.FileFormats public override PrintParameterModifier[] PrintParameterModifiers { get; } = { - PrintParameterModifier.InitialLayerCount, - PrintParameterModifier.InitialExposureSeconds, + PrintParameterModifier.BottomLayerCount, + PrintParameterModifier.BottomExposureSeconds, PrintParameterModifier.ExposureSeconds, PrintParameterModifier.BottomLayerOffTime, @@ -257,14 +257,59 @@ namespace UVtools.Core.FileFormats set => HeaderSettings.LayerCount = LayerCount; } - public override ushort InitialLayerCount => (ushort) (HeaderSettings.BottomHeight / LayerHeight); + public override ushort BottomLayerCount + { + get => (ushort)(HeaderSettings.BottomHeight / LayerHeight); + set => HeaderSettings.BottomHeight = value * LayerHeight; + } - public override float InitialExposureTime => (float) Math.Round(HeaderSettings.BottomExposureTimeMs/1000, 2); + public override float BottomExposureTime + { + get => (float)Math.Round(HeaderSettings.BottomExposureTimeMs / 1000, 2); + set => HeaderSettings.BottomExposureTimeMs = value * 1000; + } - public override float LayerExposureTime => (float) Math.Round(HeaderSettings.ExposureTimeMs/1000, 2); - public override float LiftHeight => HeaderSettings.LiftHeight; - public override float LiftSpeed => HeaderSettings.LiftSpeed; - public override float RetractSpeed => 0; + public override float ExposureTime + { + get => (float)Math.Round(HeaderSettings.ExposureTimeMs / 1000, 2); + set => HeaderSettings.ExposureTimeMs = value * 1000; + } + + public override float BottomLayerOffTime + { + get => HeaderSettings.BottomLightOffDelayMs; + set => HeaderSettings.BottomLightOffDelayMs = value; + } + + public override float LayerOffTime + { + get => HeaderSettings.LightOffDelayMs; + set => HeaderSettings.LightOffDelayMs = value; + } + + public override float BottomLiftHeight + { + get => HeaderSettings.BottomLiftHeight; + set => HeaderSettings.BottomLiftHeight = value; + } + + public override float LiftHeight + { + get => HeaderSettings.LiftHeight; + set => HeaderSettings.LiftHeight = value; + } + + public override float BottomLiftSpeed + { + get => HeaderSettings.BottomLiftSpeed; + set => HeaderSettings.BottomLiftSpeed = HeaderSettings.BottomLiftSpeed_ = value; + } + + public override float LiftSpeed + { + get => HeaderSettings.LiftSpeed; + set => HeaderSettings.LiftSpeed = HeaderSettings.LiftSpeed_ = value; + } public override float PrintTime => 0; @@ -443,70 +488,6 @@ namespace UVtools.Core.FileFormats progress.Token.ThrowIfCancellationRequested(); } - public override object GetValueFromPrintParameterModifier(PrintParameterModifier modifier) - { - var baseValue = base.GetValueFromPrintParameterModifier(modifier); - if (!ReferenceEquals(baseValue, null)) return baseValue; - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLayerOffTime)) return HeaderSettings.BottomLightOffDelayMs / 1000; - if (ReferenceEquals(modifier, PrintParameterModifier.LayerOffTime)) return HeaderSettings.LightOffDelayMs / 1000; - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftHeight)) return HeaderSettings.BottomLiftHeight; - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftSpeed)) return HeaderSettings.BottomLiftSpeed; - - return null; - } - - public override bool SetValueFromPrintParameterModifier(PrintParameterModifier modifier, string value) - { - if (ReferenceEquals(modifier, PrintParameterModifier.InitialLayerCount)) - { - HeaderSettings.BottomHeight = value.Convert() * LayerHeight; - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.InitialExposureSeconds)) - { - HeaderSettings.BottomExposureTimeMs = value.Convert() * 1000; - return true; - } - - if (ReferenceEquals(modifier, PrintParameterModifier.ExposureSeconds)) - { - HeaderSettings.ExposureTimeMs = value.Convert() * 1000; - return true; - } - - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLayerOffTime)) - { - HeaderSettings.BottomLightOffDelayMs = value.Convert() * 1000; - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LayerOffTime)) - { - HeaderSettings.LightOffDelayMs = value.Convert() * 1000; - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftHeight)) - { - HeaderSettings.BottomLiftHeight = value.Convert(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftSpeed)) - { - HeaderSettings.BottomLiftSpeed = HeaderSettings.BottomLiftSpeed_ = value.Convert(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LiftHeight)) - { - HeaderSettings.LiftHeight = value.Convert(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LiftSpeed)) - { - HeaderSettings.LiftSpeed = HeaderSettings.LiftSpeed_ = value.Convert(); - return true; - } - return false; - } - public override void SaveAs(string filePath = null, OperationProgress progress = null) { if (RequireFullEncode) diff --git a/UVtools.Core/FileFormats/MakerbaseFile.cs b/UVtools.Core/FileFormats/MakerbaseFile.cs index 84fcb65..3a6cd65 100644 --- a/UVtools.Core/FileFormats/MakerbaseFile.cs +++ b/UVtools.Core/FileFormats/MakerbaseFile.cs @@ -68,8 +68,8 @@ namespace UVtools.Core.FileFormats public override PrintParameterModifier[] PrintParameterModifiers { get; } = { - PrintParameterModifier.InitialLayerCount, - PrintParameterModifier.InitialExposureSeconds, + PrintParameterModifier.BottomLayerCount, + PrintParameterModifier.BottomExposureSeconds, PrintParameterModifier.ExposureSeconds, PrintParameterModifier.BottomLayerOffTime, @@ -118,11 +118,11 @@ namespace UVtools.Core.FileFormats } } - public override ushort InitialLayerCount => 0; + public override ushort BottomLayerCount => 0; - public override float InitialExposureTime => 0; + public override float BottomExposureTime => 0; - public override float LayerExposureTime => 0; + public override float ExposureTime => 0; public override float LiftHeight => 0; public override float LiftSpeed => 0; public override float RetractSpeed => 0; @@ -192,31 +192,6 @@ namespace UVtools.Core.FileFormats progress.Token.ThrowIfCancellationRequested(); } - public override object GetValueFromPrintParameterModifier(PrintParameterModifier modifier) - { - var baseValue = base.GetValueFromPrintParameterModifier(modifier); - if (!ReferenceEquals(baseValue, null)) return baseValue; - /*if (ReferenceEquals(modifier, PrintParameterModifier.BottomLayerOffTime)) return PrintParametersSettings.BottomLightOffDelay; - if (ReferenceEquals(modifier, PrintParameterModifier.LayerOffTime)) return PrintParametersSettings.LightOffDelay; - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftHeight)) return PrintParametersSettings.BottomLiftHeight; - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftSpeed)) return PrintParametersSettings.BottomLiftSpeed;*/ - /*if (ReferenceEquals(modifier, PrintParameterModifier.LiftHeight)) return PrintParametersSettings.LiftHeight; - if (ReferenceEquals(modifier, PrintParameterModifier.LiftSpeed)) return PrintParametersSettings.LiftingSpeed; - if (ReferenceEquals(modifier, PrintParameterModifier.RetractSpeed)) return PrintParametersSettings.RetractSpeed;*/ - - /*if (ReferenceEquals(modifier, PrintParameterModifier.BottomLightPWM)) return HeaderSettings.BottomLightPWM; - if (ReferenceEquals(modifier, PrintParameterModifier.LightPWM)) return HeaderSettings.LightPWM;*/ - - - - return null; - } - - public override bool SetValueFromPrintParameterModifier(PrintParameterModifier modifier, string value) - { - return false; - } - public override void SaveAs(string filePath = null, OperationProgress progress = null) { if (RequireFullEncode) diff --git a/UVtools.Core/FileFormats/PHZFile.cs b/UVtools.Core/FileFormats/PHZFile.cs index 85d81da..b331ace 100644 --- a/UVtools.Core/FileFormats/PHZFile.cs +++ b/UVtools.Core/FileFormats/PHZFile.cs @@ -691,8 +691,8 @@ namespace UVtools.Core.FileFormats public override PrintParameterModifier[] PrintParameterModifiers { get; } = { - PrintParameterModifier.InitialLayerCount, - PrintParameterModifier.InitialExposureSeconds, + PrintParameterModifier.BottomLayerCount, + PrintParameterModifier.BottomExposureSeconds, PrintParameterModifier.ExposureSeconds, PrintParameterModifier.BottomLayerOffTime, @@ -740,14 +740,77 @@ namespace UVtools.Core.FileFormats } } - public override ushort InitialLayerCount => (ushort)HeaderSettings.BottomLayersCount; + public override ushort BottomLayerCount + { + get => (ushort)HeaderSettings.BottomLayersCount; + set => HeaderSettings.BottomLayersCount = value; + } - public override float InitialExposureTime => HeaderSettings.BottomExposureSeconds; + public override float BottomExposureTime + { + get => HeaderSettings.BottomExposureSeconds; + set => HeaderSettings.BottomExposureSeconds = value; + } - public override float LayerExposureTime => HeaderSettings.LayerExposureSeconds; - public override float LiftHeight => HeaderSettings.LiftHeight; - public override float LiftSpeed => HeaderSettings.LiftSpeed; - public override float RetractSpeed => HeaderSettings.RetractSpeed; + public override float ExposureTime + { + get => HeaderSettings.LayerExposureSeconds; + set => HeaderSettings.LayerExposureSeconds = value; + } + + public override float BottomLayerOffTime + { + get => HeaderSettings.BottomLightOffDelay; + set => HeaderSettings.BottomLightOffDelay = value; + } + + public override float LayerOffTime + { + get => HeaderSettings.LayerOffTime; + set => HeaderSettings.LayerOffTime = value; + } + + public override float BottomLiftHeight + { + get => HeaderSettings.BottomLiftHeight; + set => HeaderSettings.BottomLiftHeight = value; + } + + public override float LiftHeight + { + get => HeaderSettings.LiftHeight; + set => HeaderSettings.LiftHeight = value; + } + + public override float BottomLiftSpeed + { + get => HeaderSettings.BottomLiftSpeed; + set => HeaderSettings.BottomLiftSpeed = value; + } + + public override float LiftSpeed + { + get => HeaderSettings.LiftSpeed; + set => HeaderSettings.LiftSpeed = value; + } + + public override float RetractSpeed + { + get => HeaderSettings.RetractSpeed; + set => HeaderSettings.RetractSpeed = value; + } + + public override byte BottomLightPWM + { + get => (byte)HeaderSettings.BottomLightPWM; + set => HeaderSettings.BottomLightPWM = value; + } + + public override byte LightPWM + { + get => (byte)HeaderSettings.BottomLightPWM; + set => HeaderSettings.BottomLightPWM = value; + } public override float PrintTime => HeaderSettings.PrintTime; @@ -1021,114 +1084,6 @@ namespace UVtools.Core.FileFormats progress.Token.ThrowIfCancellationRequested(); } - public override object GetValueFromPrintParameterModifier(PrintParameterModifier modifier) - { - var baseValue = base.GetValueFromPrintParameterModifier(modifier); - if (!ReferenceEquals(baseValue, null)) return baseValue; - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLayerOffTime)) return HeaderSettings.BottomLightOffDelay; - if (ReferenceEquals(modifier, PrintParameterModifier.LayerOffTime)) return HeaderSettings.LayerOffTime; - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftHeight)) return HeaderSettings.BottomLiftHeight; - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftSpeed)) return HeaderSettings.BottomLiftSpeed; - /*if (ReferenceEquals(modifier, PrintParameterModifier.LiftHeight)) return PrintParametersSettings.LiftHeight; - if (ReferenceEquals(modifier, PrintParameterModifier.LiftSpeed)) return PrintParametersSettings.LiftingSpeed; - if (ReferenceEquals(modifier, PrintParameterModifier.RetractSpeed)) return PrintParametersSettings.RetractSpeed;*/ - - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLightPWM)) return HeaderSettings.BottomLightPWM; - if (ReferenceEquals(modifier, PrintParameterModifier.LightPWM)) return HeaderSettings.LightPWM; - - - - return null; - } - - public override bool SetValueFromPrintParameterModifier(PrintParameterModifier modifier, string value) - { - void UpdateLayers() - { - for (uint layerIndex = 0; layerIndex < HeaderSettings.LayerCount; layerIndex++) - { - // Bottom : others - this[layerIndex].ExposureTime = - LayersDefinitions[layerIndex].LayerExposure = GetInitialLayerValueOrNormal(layerIndex, HeaderSettings.BottomExposureSeconds, HeaderSettings.LayerExposureSeconds); - - LayersDefinitions[layerIndex].LayerOffTimeSeconds = GetInitialLayerValueOrNormal(layerIndex, HeaderSettings.BottomLightOffDelay, HeaderSettings.LayerOffTime); - } - } - - if (ReferenceEquals(modifier, PrintParameterModifier.InitialLayerCount)) - { - HeaderSettings.BottomLayersCount = - HeaderSettings.BottomLayerCount = value.Convert(); - UpdateLayers(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.InitialExposureSeconds)) - { - HeaderSettings.BottomExposureSeconds = value.Convert(); - UpdateLayers(); - return true; - } - - if (ReferenceEquals(modifier, PrintParameterModifier.ExposureSeconds)) - { - HeaderSettings.LayerExposureSeconds = value.Convert(); - UpdateLayers(); - return true; - } - - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLayerOffTime)) - { - HeaderSettings.BottomLightOffDelay = value.Convert(); - UpdateLayers(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LayerOffTime)) - { - HeaderSettings.LayerOffTime = - HeaderSettings.LayerOffTime = value.Convert(); - UpdateLayers(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftHeight)) - { - HeaderSettings.BottomLiftHeight = value.Convert(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftSpeed)) - { - HeaderSettings.BottomLiftSpeed = value.Convert(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LiftHeight)) - { - HeaderSettings.LiftHeight = value.Convert(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LiftSpeed)) - { - HeaderSettings.LiftSpeed = value.Convert(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.RetractSpeed)) - { - HeaderSettings.RetractSpeed = value.Convert(); - return true; - } - - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLightPWM)) - { - HeaderSettings.BottomLightPWM = value.Convert(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LightPWM)) - { - HeaderSettings.LightPWM = value.Convert(); - return true; - } - - return false; - } - public override void SaveAs(string filePath = null, OperationProgress progress = null) { if (RequireFullEncode) @@ -1171,6 +1126,21 @@ namespace UVtools.Core.FileFormats //Decode(FileFullPath, progress); } + public override byte SetValuesFromPrintParametersModifiers() + { + var count = base.SetValuesFromPrintParametersModifiers(); + if (count == 0) return 0; + + for (uint layerIndex = 0; layerIndex < HeaderSettings.LayerCount; layerIndex++) + { + // Bottom : others + LayersDefinitions[layerIndex].LayerExposure = this[layerIndex].ExposureTime; + LayersDefinitions[layerIndex].LayerOffTimeSeconds = GetInitialLayerValueOrNormal(layerIndex, HeaderSettings.BottomLightOffDelay, HeaderSettings.LayerOffTime); + } + + return count; + } + public override bool Convert(Type to, string fileFullPath, OperationProgress progress = null) { if (to == typeof(ChituboxFile)) @@ -1186,11 +1156,11 @@ namespace UVtools.Core.FileFormats BedSizeY = HeaderSettings.BedSizeY, BedSizeZ = HeaderSettings.BedSizeZ, OverallHeightMilimeter = TotalHeight, - BottomExposureSeconds = InitialExposureTime, - BottomLayersCount = InitialLayerCount, + BottomExposureSeconds = BottomExposureTime, + BottomLayersCount = BottomLayerCount, BottomLightPWM = HeaderSettings.BottomLightPWM, LayerCount = LayerCount, - LayerExposureSeconds = LayerExposureTime, + LayerExposureSeconds = ExposureTime, LayerHeightMilimeter = LayerHeight, LayerOffTime = HeaderSettings.LayerOffTime, LightPWM = HeaderSettings.LightPWM, @@ -1202,7 +1172,7 @@ namespace UVtools.Core.FileFormats }, PrintParametersSettings = { - BottomLayerCount = InitialLayerCount, + BottomLayerCount = BottomLayerCount, BottomLiftHeight = HeaderSettings.BottomLiftHeight, BottomLiftSpeed = HeaderSettings.BottomLiftSpeed, BottomLightOffDelay = HeaderSettings.BottomLightOffDelay, @@ -1256,18 +1226,18 @@ namespace UVtools.Core.FileFormats BottomLiftSpeed = HeaderSettings.BottomLiftSpeed, LiftSpeed = HeaderSettings.LiftSpeed, RetractSpeed = HeaderSettings.RetractSpeed, - BottomLayCount = InitialLayerCount, - BottomLayerCount = InitialLayerCount, + BottomLayCount = BottomLayerCount, + BottomLayerCount = BottomLayerCount, BottomLightOffTime = HeaderSettings.BottomLightOffDelay, LightOffTime = HeaderSettings.LayerOffTime, - BottomLayExposureTime = InitialExposureTime, - BottomLayerExposureTime = InitialExposureTime, - LayerExposureTime = LayerExposureTime, + BottomLayExposureTime = BottomExposureTime, + BottomLayerExposureTime = BottomExposureTime, + LayerExposureTime = ExposureTime, LayerHeight = LayerHeight, LayerCount = LayerCount, AntiAliasing = ValidateAntiAliasingLevel(), BottomLightPWM = (byte) HeaderSettings.BottomLightPWM, - LayerLightPWM = (byte) HeaderSettings.LightPWM, + LightPWM = (byte) HeaderSettings.LightPWM, EstimatedPrintTime = PrintTime }, @@ -1289,13 +1259,13 @@ namespace UVtools.Core.FileFormats ResolutionX = ResolutionX, ResolutionY = ResolutionY, LayerHeight = LayerHeight, - LayerExposureTime = LayerExposureTime, + LayerExposureTime = ExposureTime, LiftHeight = LiftHeight, LiftSpeed = LiftSpeed / 60, RetractSpeed = RetractSpeed / 60, LayerOffTime = HeaderSettings.LayerOffTime, - BottomLayersCount = InitialLayerCount, - BottomExposureSeconds = InitialExposureTime, + BottomLayersCount = BottomLayerCount, + BottomExposureSeconds = BottomExposureTime, Price = MaterialCost, Volume = UsedMaterial, Weight = HeaderSettings.WeightG, @@ -1319,9 +1289,9 @@ namespace UVtools.Core.FileFormats MaterialId = 2, Material = MaterialName, AdditionalSupportLayerTime = 0, - BottomLayersNumber = InitialLayerCount, - BottomLayersTime = (uint)(InitialExposureTime * 1000), - LayerTime = (uint)(LayerExposureTime * 1000), + BottomLayersNumber = BottomLayerCount, + BottomLayersTime = (uint)(BottomExposureTime * 1000), + LayerTime = (uint)(ExposureTime * 1000), DisableSettingsChanges = false, LayerThickness = LayerHeight, PrintTime = (uint)PrintTime, @@ -1332,10 +1302,10 @@ namespace UVtools.Core.FileFormats UserSettings = new ZCodexFile.UserSettingsdata { Printer = MachineName, - BottomLayersCount = InitialLayerCount, + BottomLayersCount = BottomLayerCount, PrintTime = $"{ts.Hours}h {ts.Minutes}m", - LayerExposureTime = (uint)(LayerExposureTime * 1000), - BottomLayerExposureTime = (uint)(InitialExposureTime * 1000), + LayerExposureTime = (uint)(ExposureTime * 1000), + BottomLayerExposureTime = (uint)(BottomExposureTime * 1000), MaterialId = 2, LayerThickness = $"{LayerHeight} mm", AntiAliasing = (byte) (AntiAliasing > 1 ? 1 : 0), @@ -1406,9 +1376,9 @@ namespace UVtools.Core.FileFormats file.SliceSettings.Yres = file.OutputSettings.YResolution = (ushort)ResolutionY; file.SliceSettings.Thickness = file.OutputSettings.LayerThickness = LayerHeight; file.SliceSettings.LayersNum = file.OutputSettings.LayersNum = LayerCount; - file.SliceSettings.HeadLayersNum = file.OutputSettings.NumberBottomLayers = InitialLayerCount; - file.SliceSettings.LayersExpoMs = file.OutputSettings.LayerTime = (uint)LayerExposureTime * 1000; - file.SliceSettings.HeadLayersExpoMs = file.OutputSettings.BottomLayersTime = (uint)InitialExposureTime * 1000; + file.SliceSettings.HeadLayersNum = file.OutputSettings.NumberBottomLayers = BottomLayerCount; + file.SliceSettings.LayersExpoMs = file.OutputSettings.LayerTime = (uint)ExposureTime * 1000; + file.SliceSettings.HeadLayersExpoMs = file.OutputSettings.BottomLayersTime = (uint)BottomExposureTime * 1000; file.SliceSettings.WaitBeforeExpoMs = (uint)(HeaderSettings.LayerOffTime * 1000); file.SliceSettings.LiftDistance = file.OutputSettings.LiftDistance = LiftHeight; file.SliceSettings.LiftUpSpeed = file.OutputSettings.ZLiftFeedRate = LiftSpeed; @@ -1459,18 +1429,18 @@ namespace UVtools.Core.FileFormats { LiftHeight = HeaderSettings.BottomLiftHeight, LiftSpeed = HeaderSettings.BottomLiftSpeed, - LightOnTime = InitialExposureTime, + LightOnTime = BottomExposureTime, LightOffTime = HeaderSettings.BottomLightOffDelay, LightPWM = (byte)HeaderSettings.BottomLightPWM, RetractSpeed = HeaderSettings.RetractSpeed, - Count = InitialLayerCount + Count = BottomLayerCount //RetractHeight = LookupCustomValue(Keyword_LiftHeight, defaultFormat.JsonSettings.Properties.Bottom.RetractHeight), }, Exposure = new UVJFile.Exposure { LiftHeight = HeaderSettings.LiftHeight, LiftSpeed = HeaderSettings.LiftSpeed, - LightOnTime = LayerExposureTime, + LightOnTime = ExposureTime, LightOffTime = HeaderSettings.LayerOffTime, LightPWM = (byte)HeaderSettings.LightPWM, RetractSpeed = HeaderSettings.RetractSpeed, diff --git a/UVtools.Core/FileFormats/PWSFile.cs b/UVtools.Core/FileFormats/PWSFile.cs index e3a4523..85104cb 100644 --- a/UVtools.Core/FileFormats/PWSFile.cs +++ b/UVtools.Core/FileFormats/PWSFile.cs @@ -781,8 +781,8 @@ namespace UVtools.Core.FileFormats public override PrintParameterModifier[] PrintParameterModifiers { get; } = { - PrintParameterModifier.InitialLayerCount, - PrintParameterModifier.InitialExposureSeconds, + PrintParameterModifier.BottomLayerCount, + PrintParameterModifier.BottomExposureSeconds, PrintParameterModifier.ExposureSeconds, //PrintParameterModifier.BottomLayerOffTime, @@ -823,14 +823,47 @@ namespace UVtools.Core.FileFormats set => LayersDefinition.LayersCount = LayerCount; } - public override ushort InitialLayerCount => (ushort)HeaderSettings.BottomLayersCount; + public override ushort BottomLayerCount + { + get => (ushort)HeaderSettings.BottomLayersCount; + set => HeaderSettings.BottomLayersCount = value; + } - public override float InitialExposureTime => HeaderSettings.BottomExposureSeconds; + public override float BottomExposureTime + { + get => HeaderSettings.BottomExposureSeconds; + set => HeaderSettings.BottomExposureSeconds = value; + } - public override float LayerExposureTime => HeaderSettings.LayerExposureTime; - public override float LiftHeight => HeaderSettings.LiftHeight; - public override float LiftSpeed => HeaderSettings.LiftSpeed * 60; - public override float RetractSpeed => HeaderSettings.RetractSpeed * 60; + public override float ExposureTime + { + get => HeaderSettings.LayerExposureTime; + set => HeaderSettings.LayerExposureTime = value; + } + + public override float LayerOffTime + { + get => HeaderSettings.LayerOffTime; + set => HeaderSettings.LayerOffTime = value; + } + + public override float LiftHeight + { + get => HeaderSettings.LiftHeight; + set => HeaderSettings.LiftHeight = value; + } + + public override float LiftSpeed + { + get => (float) Math.Round(HeaderSettings.LiftSpeed * 60, 2); + set => HeaderSettings.LiftSpeed = (float) Math.Round(value / 60, 2); + } + + public override float RetractSpeed + { + get => (float)Math.Round(HeaderSettings.RetractSpeed * 60, 2); + set => HeaderSettings.RetractSpeed = (float)Math.Round(value / 60, 2); + } public override float PrintTime => 0; @@ -1066,78 +1099,6 @@ namespace UVtools.Core.FileFormats progress.Token.ThrowIfCancellationRequested(); } - public override object GetValueFromPrintParameterModifier(PrintParameterModifier modifier) - { - if (ReferenceEquals(modifier, PrintParameterModifier.LayerOffTime)) return HeaderSettings.LayerOffTime; - - var baseValue = base.GetValueFromPrintParameterModifier(modifier); - return baseValue; - } - - public override bool SetValueFromPrintParameterModifier(PrintParameterModifier modifier, string value) - { - void UpdateLayers() - { - for (uint layerIndex = 0; layerIndex < LayerCount; layerIndex++) - { - // Bottom : others - - this[layerIndex].ExposureTime = - LayersDefinition[layerIndex].LayerExposure = GetInitialLayerValueOrNormal(layerIndex, HeaderSettings.BottomExposureSeconds, HeaderSettings.LayerExposureTime); - } - } - - if (ReferenceEquals(modifier, PrintParameterModifier.InitialLayerCount)) - { - HeaderSettings.BottomLayersCount = - HeaderSettings.BottomLayersCount = value.Convert(); - UpdateLayers(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.InitialExposureSeconds)) - { - HeaderSettings.BottomExposureSeconds = value.Convert(); - UpdateLayers(); - return true; - } - - if (ReferenceEquals(modifier, PrintParameterModifier.ExposureSeconds)) - { - HeaderSettings.LayerExposureTime = value.Convert(); - UpdateLayers(); - return true; - } - - if (ReferenceEquals(modifier, PrintParameterModifier.LayerOffTime)) - { - HeaderSettings.LayerOffTime = value.Convert(); - UpdateLayers(); - return true; - } - - - if (ReferenceEquals(modifier, PrintParameterModifier.LiftHeight)) - { - HeaderSettings.LiftHeight = value.Convert(); - UpdateLayers(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LiftSpeed)) - { - HeaderSettings.LiftSpeed = value.Convert() / 60f; - UpdateLayers(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.RetractSpeed)) - { - HeaderSettings.RetractSpeed = value.Convert() / 60f; - UpdateLayers(); - return true; - } - - return false; - } - public override void SaveAs(string filePath = null, OperationProgress progress = null) { if (RequireFullEncode) @@ -1189,13 +1150,13 @@ namespace UVtools.Core.FileFormats ResolutionX = ResolutionX, ResolutionY = ResolutionY, LayerHeight = LayerHeight, - LayerExposureTime = LayerExposureTime, + LayerExposureTime = ExposureTime, LiftHeight = LiftHeight, LiftSpeed = LiftSpeed / 60, RetractSpeed = RetractSpeed / 60, LayerOffTime = HeaderSettings.LayerOffTime, - BottomLayersCount = InitialLayerCount, - BottomExposureSeconds = InitialExposureTime, + BottomLayersCount = BottomLayerCount, + BottomExposureSeconds = BottomExposureTime, Price = MaterialCost, Volume = UsedMaterial, Weight = HeaderSettings.Weight, @@ -1353,9 +1314,9 @@ namespace UVtools.Core.FileFormats file.SliceSettings.Yres = file.OutputSettings.YResolution = (ushort)ResolutionY; file.SliceSettings.Thickness = file.OutputSettings.LayerThickness = LayerHeight; file.SliceSettings.LayersNum = file.OutputSettings.LayersNum = LayerCount; - file.SliceSettings.HeadLayersNum = file.OutputSettings.NumberBottomLayers = InitialLayerCount; - file.SliceSettings.LayersExpoMs = file.OutputSettings.LayerTime = (uint)LayerExposureTime * 1000; - file.SliceSettings.HeadLayersExpoMs = file.OutputSettings.BottomLayersTime = (uint)InitialExposureTime * 1000; + file.SliceSettings.HeadLayersNum = file.OutputSettings.NumberBottomLayers = BottomLayerCount; + file.SliceSettings.LayersExpoMs = file.OutputSettings.LayerTime = (uint)ExposureTime * 1000; + file.SliceSettings.HeadLayersExpoMs = file.OutputSettings.BottomLayersTime = (uint)BottomExposureTime * 1000; file.SliceSettings.WaitBeforeExpoMs = (uint)(HeaderSettings.LayerOffTime * 1000); file.SliceSettings.LiftDistance = file.OutputSettings.LiftDistance = LiftHeight; file.SliceSettings.LiftUpSpeed = file.OutputSettings.ZLiftFeedRate = LiftSpeed; @@ -1406,18 +1367,18 @@ namespace UVtools.Core.FileFormats { LiftHeight = HeaderSettings.LiftHeight, LiftSpeed = HeaderSettings.LiftSpeed, - LightOnTime = InitialExposureTime, + LightOnTime = BottomExposureTime, LightOffTime = HeaderSettings.LayerOffTime, //LightPWM = (byte)HeaderSettings.LightPWM, RetractSpeed = HeaderSettings.RetractSpeed, - Count = InitialLayerCount + Count = BottomLayerCount //RetractHeight = LookupCustomValue(Keyword_LiftHeight, defaultFormat.JsonSettings.Properties.Bottom.RetractHeight), }, Exposure = new UVJFile.Exposure { LiftHeight = HeaderSettings.LiftHeight, LiftSpeed = HeaderSettings.LiftSpeed, - LightOnTime = LayerExposureTime, + LightOnTime = ExposureTime, LightOffTime = HeaderSettings.LayerOffTime, //LightPWM = (byte)HeaderSettings.LightPWM, RetractSpeed = HeaderSettings.RetractSpeed, @@ -1435,6 +1396,7 @@ namespace UVtools.Core.FileFormats return false; } + #endregion } } diff --git a/UVtools.Core/FileFormats/SL1File.cs b/UVtools.Core/FileFormats/SL1File.cs index e0d3f89..edbdc6c 100644 --- a/UVtools.Core/FileFormats/SL1File.cs +++ b/UVtools.Core/FileFormats/SL1File.cs @@ -164,7 +164,7 @@ namespace UVtools.Core.FileFormats #region Layers public float LayerHeight { get; set; } - public byte FadedLayers { get; set; } + public ushort FadedLayers { get; set; } #endregion #region Supports @@ -253,7 +253,7 @@ namespace UVtools.Core.FileFormats public string FileCreationTimestamp { get; set; } public float LayerHeight { get; set; } public string MaterialName { get; set; } - public byte NumFade { get; set; } + public ushort NumFade { get; set; } public ushort NumFast { get; set; } public byte NumSlow { get; set; } public string PrintProfile { get; set; } @@ -305,8 +305,8 @@ namespace UVtools.Core.FileFormats }; public override PrintParameterModifier[] PrintParameterModifiers { get; } = { - PrintParameterModifier.InitialLayerCount, - PrintParameterModifier.InitialExposureSeconds, + PrintParameterModifier.BottomLayerCount, + PrintParameterModifier.BottomExposureSeconds, PrintParameterModifier.ExposureSeconds, }; @@ -344,17 +344,23 @@ namespace UVtools.Core.FileFormats } } - public override ushort InitialLayerCount => OutputConfigSettings.NumFade; + public override ushort BottomLayerCount + { + get => OutputConfigSettings.NumFade; + set => OutputConfigSettings.NumFade = value; + } - public override float InitialExposureTime => OutputConfigSettings.ExpTimeFirst; + public override float BottomExposureTime + { + get => OutputConfigSettings.ExpTimeFirst; + set => OutputConfigSettings.ExpTimeFirst = value; + } - public override float LayerExposureTime => OutputConfigSettings.ExpTime; - - public override float LiftHeight { get; } = 0; - - public override float LiftSpeed { get; } = 0; - - public override float RetractSpeed { get; } = 0; + public override float ExposureTime + { + get => OutputConfigSettings.ExpTime; + set => OutputConfigSettings.ExpTime = value; + } public override float PrintTime => OutputConfigSettings.PrintTime; @@ -565,7 +571,7 @@ namespace UVtools.Core.FileFormats LayerManager[iLayer] = new Layer(iLayer, entity.Open(), entity.Name) { PositionZ = GetHeightFromLayer(iLayer), - ExposureTime = GetInitialLayerValueOrNormal(iLayer, InitialExposureTime, LayerExposureTime) + ExposureTime = GetInitialLayerValueOrNormal(iLayer, BottomExposureTime, ExposureTime) }; progress.ProcessedItems++; } @@ -589,45 +595,6 @@ namespace UVtools.Core.FileFormats //return layerIndex >= LayerCount ? null : Image.Load(DecompressLayer(Layers[layerIndex])); }*/ - public override bool SetValueFromPrintParameterModifier(PrintParameterModifier modifier, string value) - { - void UpdateLayers() - { - for (uint layerIndex = 0; layerIndex < LayerCount; layerIndex++) - { - this[layerIndex].ExposureTime = GetInitialLayerValueOrNormal(layerIndex, InitialExposureTime, LayerExposureTime); - } - } - - if (ReferenceEquals(modifier, PrintParameterModifier.InitialLayerCount)) - { - PrintSettings.FadedLayers = - OutputConfigSettings.NumFade = value.Convert(); - UpdateLayers(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.InitialExposureSeconds)) - { - MaterialSettings.InitialExposureTime = - OutputConfigSettings.ExpTimeFirst = value.Convert(); - - UpdateLayers(); - - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.ExposureSeconds)) - { - MaterialSettings.ExposureTime = - OutputConfigSettings.ExpTime = value.Convert(); - - UpdateLayers(); - - return true; - } - - return false; - } - public override void SaveAs(string filePath = null, OperationProgress progress = null) { if (RequireFullEncode) @@ -706,11 +673,11 @@ namespace UVtools.Core.FileFormats BedSizeY = PrinterSettings.DisplayHeight, BedSizeZ = PrinterSettings.MaxPrintHeight, OverallHeightMilimeter = TotalHeight, - BottomExposureSeconds = InitialExposureTime, - BottomLayersCount = InitialLayerCount, + BottomExposureSeconds = BottomExposureTime, + BottomLayersCount = BottomLayerCount, BottomLightPWM = LookupCustomValue(Keyword_BottomLightPWM, defaultFormat.HeaderSettings.BottomLightPWM), LayerCount = LayerCount, - LayerExposureSeconds = LayerExposureTime, + LayerExposureSeconds = ExposureTime, LayerHeightMilimeter = LayerHeight, LayerOffTime = LookupCustomValue(Keyword_LayerOffTime, defaultFormat.HeaderSettings.LayerOffTime), LightPWM = LookupCustomValue(Keyword_LightPWM, defaultFormat.HeaderSettings.LightPWM), @@ -788,18 +755,18 @@ namespace UVtools.Core.FileFormats BottomLiftSpeed = LookupCustomValue(Keyword_BottomLiftSpeed, defaultFormat.HeaderSettings.BottomLiftSpeed), LiftSpeed = LookupCustomValue(Keyword_LiftSpeed, defaultFormat.HeaderSettings.LiftSpeed), RetractSpeed = LookupCustomValue(Keyword_RetractSpeed, defaultFormat.HeaderSettings.RetractSpeed), - BottomLayCount = InitialLayerCount, - BottomLayerCount = InitialLayerCount, + BottomLayCount = BottomLayerCount, + BottomLayerCount = BottomLayerCount, BottomLightOffTime = LookupCustomValue(Keyword_BottomLightOffDelay, defaultFormat.HeaderSettings.BottomLightOffTime), LightOffTime = LookupCustomValue(Keyword_LightOffDelay, defaultFormat.HeaderSettings.LightOffTime), - BottomLayExposureTime = InitialExposureTime, - BottomLayerExposureTime = InitialExposureTime, - LayerExposureTime = LayerExposureTime, + BottomLayExposureTime = BottomExposureTime, + BottomLayerExposureTime = BottomExposureTime, + LayerExposureTime = ExposureTime, LayerHeight = LayerHeight, LayerCount = LayerCount, AntiAliasing = ValidateAntiAliasingLevel(), BottomLightPWM = LookupCustomValue(Keyword_BottomLightPWM, defaultFormat.HeaderSettings.BottomLightPWM), - LayerLightPWM = LookupCustomValue(Keyword_LightPWM, defaultFormat.HeaderSettings.LayerLightPWM), + LightPWM = LookupCustomValue(Keyword_LightPWM, defaultFormat.HeaderSettings.LightPWM), EstimatedPrintTime = PrintTime }, @@ -829,13 +796,13 @@ namespace UVtools.Core.FileFormats ResolutionX = ResolutionX, ResolutionY = ResolutionY, LayerHeight = LayerHeight, - LayerExposureTime = LayerExposureTime, + LayerExposureTime = ExposureTime, LiftHeight = LookupCustomValue(Keyword_LiftHeight, defaultFormat.HeaderSettings.LiftHeight), LiftSpeed = LookupCustomValue(Keyword_LiftSpeed, defaultFormat.HeaderSettings.LiftSpeed) / 60, RetractSpeed = LookupCustomValue(Keyword_RetractSpeed, defaultFormat.HeaderSettings.RetractSpeed) / 60, LayerOffTime = LookupCustomValue(Keyword_LayerOffTime, defaultFormat.HeaderSettings.LayerOffTime), - BottomLayersCount = InitialLayerCount, - BottomExposureSeconds = InitialExposureTime, + BottomLayersCount = BottomLayerCount, + BottomExposureSeconds = BottomExposureTime, Price = MaterialCost, Volume = UsedMaterial, Weight = (float) Math.Round(OutputConfigSettings.UsedMaterial * MaterialSettings.MaterialDensity, 2), @@ -920,9 +887,9 @@ namespace UVtools.Core.FileFormats MaterialId = 2, Material = MaterialName, AdditionalSupportLayerTime = 0, - BottomLayersNumber = InitialLayerCount, - BottomLayersTime = (uint)(InitialExposureTime*1000), - LayerTime = (uint)(LayerExposureTime * 1000), + BottomLayersNumber = BottomLayerCount, + BottomLayersTime = (uint)(BottomExposureTime*1000), + LayerTime = (uint)(ExposureTime * 1000), DisableSettingsChanges = false, LayerThickness = LayerHeight, PrintTime = (uint)PrintTime, @@ -933,10 +900,10 @@ namespace UVtools.Core.FileFormats UserSettings = new ZCodexFile.UserSettingsdata { Printer = MachineName, - BottomLayersCount = InitialLayerCount, + BottomLayersCount = BottomLayerCount, PrintTime = $"{ts.Hours}h {ts.Minutes}m", - LayerExposureTime = (uint)(LayerExposureTime * 1000), - BottomLayerExposureTime = (uint)(InitialExposureTime * 1000), + LayerExposureTime = (uint)(ExposureTime * 1000), + BottomLayerExposureTime = (uint)(BottomExposureTime * 1000), MaterialId = 2, LayerThickness = $"{LayerHeight} mm", AntiAliasing = (byte) (ValidateAntiAliasingLevel() > 1 ? 1 : 0), @@ -1010,9 +977,9 @@ namespace UVtools.Core.FileFormats file.OutputSettings.PlatformZSize = PrinterSettings.MaxPrintHeight; file.SliceSettings.Thickness = file.OutputSettings.LayerThickness = LayerHeight; file.SliceSettings.LayersNum = file.OutputSettings.LayersNum = LayerCount; - file.SliceSettings.HeadLayersNum = file.OutputSettings.NumberBottomLayers = InitialLayerCount; - file.SliceSettings.LayersExpoMs = file.OutputSettings.LayerTime = (uint) LayerExposureTime * 1000; - file.SliceSettings.HeadLayersExpoMs = file.OutputSettings.BottomLayersTime = (uint) InitialExposureTime * 1000; + file.SliceSettings.HeadLayersNum = file.OutputSettings.NumberBottomLayers = BottomLayerCount; + file.SliceSettings.LayersExpoMs = file.OutputSettings.LayerTime = (uint) ExposureTime * 1000; + file.SliceSettings.HeadLayersExpoMs = file.OutputSettings.BottomLayersTime = (uint) BottomExposureTime * 1000; file.SliceSettings.WaitBeforeExpoMs = LookupCustomValue("WaitBeforeExpoMs", defaultFormat.SliceSettings.WaitBeforeExpoMs); file.SliceSettings.LiftDistance = file.OutputSettings.LiftDistance = (float) Math.Round(LookupCustomValue(Keyword_LiftHeight, file.SliceSettings.LiftDistance), 2); file.SliceSettings.LiftUpSpeed = file.OutputSettings.ZLiftFeedRate = file.OutputSettings.ZBottomLiftFeedRate = (float) Math.Round(LookupCustomValue(Keyword_LiftSpeed, file.SliceSettings.LiftUpSpeed), 2); @@ -1061,13 +1028,13 @@ namespace UVtools.Core.FileFormats ResolutionX = ResolutionX, ResolutionY = ResolutionY, LayerHeight = LayerHeight, - ExposureTimeMs = LayerExposureTime * 1000, + ExposureTimeMs = ExposureTime * 1000, LiftHeight = LookupCustomValue(Keyword_LiftHeight, defaultFormat.HeaderSettings.LiftHeight), LiftSpeed = LookupCustomValue(Keyword_LiftSpeed, defaultFormat.HeaderSettings.LiftSpeed), LiftSpeed_ = LookupCustomValue(Keyword_LiftSpeed, defaultFormat.HeaderSettings.LiftSpeed), LightOffDelayMs = LookupCustomValue(Keyword_LayerOffTime, defaultFormat.HeaderSettings.LightOffDelayMs) * 1000, - BottomHeight = InitialLayerCount * LayerHeight, - BottomExposureTimeMs = InitialExposureTime * 1000, + BottomHeight = BottomLayerCount * LayerHeight, + BottomExposureTimeMs = BottomExposureTime * 1000, LayerCount = LayerCount, BottomLiftSpeed = LookupCustomValue(Keyword_BottomLiftSpeed, defaultFormat.HeaderSettings.BottomLiftSpeed), BottomLiftSpeed_ = LookupCustomValue(Keyword_BottomLiftSpeed, defaultFormat.HeaderSettings.BottomLiftSpeed_), @@ -1117,18 +1084,18 @@ namespace UVtools.Core.FileFormats { LiftHeight = LookupCustomValue(Keyword_BottomLiftHeight, defaultFormat.JsonSettings.Properties.Bottom.LiftHeight), LiftSpeed = LookupCustomValue(Keyword_BottomLiftSpeed, defaultFormat.JsonSettings.Properties.Bottom.LiftSpeed), - LightOnTime = InitialExposureTime, + LightOnTime = BottomExposureTime, LightOffTime = LookupCustomValue(Keyword_BottomLightOffDelay, defaultFormat.JsonSettings.Properties.Bottom.LightOffTime), LightPWM = LookupCustomValue(Keyword_BottomLightPWM, defaultFormat.JsonSettings.Properties.Bottom.LightPWM), RetractSpeed = LookupCustomValue(Keyword_RetractSpeed, defaultFormat.JsonSettings.Properties.Bottom.RetractSpeed), - Count = InitialLayerCount + Count = BottomLayerCount //RetractHeight = LookupCustomValue(Keyword_LiftHeight, defaultFormat.JsonSettings.Properties.Bottom.RetractHeight), }, Exposure = new UVJFile.Exposure { LiftHeight = LookupCustomValue(Keyword_LiftHeight, defaultFormat.JsonSettings.Properties.Exposure.LiftHeight), LiftSpeed = LookupCustomValue(Keyword_LiftSpeed, defaultFormat.JsonSettings.Properties.Exposure.LiftSpeed), - LightOnTime = LayerExposureTime, + LightOnTime = ExposureTime, LightOffTime = LookupCustomValue(Keyword_LightOffDelay, defaultFormat.JsonSettings.Properties.Exposure.LightOffTime), LightPWM = LookupCustomValue(Keyword_LightPWM, defaultFormat.JsonSettings.Properties.Exposure.LightPWM), RetractSpeed = LookupCustomValue(Keyword_RetractSpeed, defaultFormat.JsonSettings.Properties.Exposure.RetractSpeed), diff --git a/UVtools.Core/FileFormats/UVJFile.cs b/UVtools.Core/FileFormats/UVJFile.cs index cae035b..4b56d0c 100644 --- a/UVtools.Core/FileFormats/UVJFile.cs +++ b/UVtools.Core/FileFormats/UVJFile.cs @@ -136,8 +136,8 @@ namespace UVtools.Core.FileFormats public override Type[] ConvertToFormats { get; } = null; public override PrintParameterModifier[] PrintParameterModifiers { get; } = { - PrintParameterModifier.InitialLayerCount, - PrintParameterModifier.InitialExposureSeconds, + PrintParameterModifier.BottomLayerCount, + PrintParameterModifier.BottomExposureSeconds, PrintParameterModifier.ExposureSeconds, PrintParameterModifier.BottomLayerOffTime, @@ -185,16 +185,77 @@ namespace UVtools.Core.FileFormats } } - public override ushort InitialLayerCount => JsonSettings.Properties.Bottom.Count; + public override ushort BottomLayerCount + { + get => JsonSettings.Properties.Bottom.Count; + set => JsonSettings.Properties.Bottom.Count = value; + } - public override float InitialExposureTime => JsonSettings.Properties.Bottom.LightOnTime; + public override float BottomExposureTime + { + get => JsonSettings.Properties.Bottom.LightOnTime; + set => JsonSettings.Properties.Bottom.LightOnTime = value; + } - public override float LayerExposureTime => JsonSettings.Properties.Exposure.LightOnTime; - public override float LiftHeight => JsonSettings.Properties.Exposure.LiftHeight; + public override float ExposureTime + { + get => JsonSettings.Properties.Exposure.LightOnTime; + set => JsonSettings.Properties.Exposure.LightOnTime = value; + } - public override float LiftSpeed => JsonSettings.Properties.Exposure.LiftSpeed; + public override float BottomLayerOffTime + { + get => JsonSettings.Properties.Bottom.LightOffTime; + set => JsonSettings.Properties.Bottom.LightOffTime = value; + } - public override float RetractSpeed => JsonSettings.Properties.Exposure.RetractSpeed; + public override float LayerOffTime + { + get => JsonSettings.Properties.Exposure.LightOffTime; + set => JsonSettings.Properties.Exposure.LightOffTime = value; + } + + public override float BottomLiftHeight + { + get => JsonSettings.Properties.Bottom.LiftHeight; + set => JsonSettings.Properties.Bottom.LiftHeight = value; + } + + public override float LiftHeight + { + get => JsonSettings.Properties.Exposure.LiftHeight; + set => JsonSettings.Properties.Exposure.LiftHeight = value; + } + + public override float BottomLiftSpeed + { + get => JsonSettings.Properties.Bottom.LiftSpeed; + set => JsonSettings.Properties.Bottom.LiftSpeed = value; + } + + public override float LiftSpeed + { + get => JsonSettings.Properties.Exposure.LiftSpeed; + set => JsonSettings.Properties.Exposure.LiftSpeed = value; + } + + public override float RetractSpeed + { + get => JsonSettings.Properties.Exposure.RetractSpeed; + set => JsonSettings.Properties.Exposure.RetractSpeed = value; + } + + public override byte BottomLightPWM + { + get => JsonSettings.Properties.Bottom.LightPWM; + set => JsonSettings.Properties.Bottom.LightPWM = value; + } + + public override byte LightPWM + { + get => JsonSettings.Properties.Exposure.LightPWM; + set => JsonSettings.Properties.Exposure.LightPWM = value; + } public override float PrintTime => 0; @@ -232,7 +293,7 @@ namespace UVtools.Core.FileFormats { LiftHeight = GetInitialLayerValueOrNormal(layerIndex, JsonSettings.Properties.Bottom.LiftHeight, JsonSettings.Properties.Exposure.LiftHeight), LiftSpeed = GetInitialLayerValueOrNormal(layerIndex, JsonSettings.Properties.Bottom.LiftSpeed, JsonSettings.Properties.Exposure.LiftSpeed), - LightOnTime = GetInitialLayerValueOrNormal(layerIndex, InitialExposureTime, LayerExposureTime), + LightOnTime = GetInitialLayerValueOrNormal(layerIndex, BottomExposureTime, ExposureTime), LightOffTime = GetInitialLayerValueOrNormal(layerIndex, JsonSettings.Properties.Bottom.LightOffTime, JsonSettings.Properties.Exposure.LightOffTime), LightPWM = GetInitialLayerValueOrNormal(layerIndex, JsonSettings.Properties.Bottom.LightPWM, JsonSettings.Properties.Exposure.LightPWM), RetractSpeed = GetInitialLayerValueOrNormal(layerIndex, JsonSettings.Properties.Bottom.RetractSpeed, JsonSettings.Properties.Exposure.RetractSpeed), @@ -332,7 +393,7 @@ namespace UVtools.Core.FileFormats LayerManager[layerIndex] = new Layer(layerIndex, entry.Open(), entry.Name) { PositionZ = JsonSettings.Layers.Count >= layerIndex ? JsonSettings.Layers[(int) layerIndex].Z : GetHeightFromLayer(layerIndex), - ExposureTime = JsonSettings.Layers.Count >= layerIndex ? JsonSettings.Layers[(int)layerIndex].Exposure.LightOnTime : GetInitialLayerValueOrNormal(layerIndex, InitialExposureTime, LayerExposureTime) + ExposureTime = JsonSettings.Layers.Count >= layerIndex ? JsonSettings.Layers[(int)layerIndex].Exposure.LightOnTime : GetInitialLayerValueOrNormal(layerIndex, BottomExposureTime, ExposureTime) }; } @@ -342,124 +403,33 @@ namespace UVtools.Core.FileFormats LayerManager.GetBoundingRectangle(progress); } - public override object GetValueFromPrintParameterModifier(PrintParameterModifier modifier) + public override byte SetValuesFromPrintParametersModifiers() { - var baseValue = base.GetValueFromPrintParameterModifier(modifier); - if (!ReferenceEquals(baseValue, null)) return baseValue; - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLayerOffTime)) return JsonSettings.Properties.Bottom.LightOffTime; - if (ReferenceEquals(modifier, PrintParameterModifier.LayerOffTime)) return JsonSettings.Properties.Exposure.LightOffTime; - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftHeight)) return JsonSettings.Properties.Bottom.LiftHeight; - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftSpeed)) return JsonSettings.Properties.Bottom.LiftSpeed; + var count = base.SetValuesFromPrintParametersModifiers(); + if (count == 0) return 0; - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLightPWM)) return JsonSettings.Properties.Bottom.LightPWM; - if (ReferenceEquals(modifier, PrintParameterModifier.LightPWM)) return JsonSettings.Properties.Exposure.LightPWM; - - return null; - } - - public override bool SetValueFromPrintParameterModifier(PrintParameterModifier modifier, string value) - { - void UpdateLayers() + for (uint layerIndex = 0; layerIndex < LayerCount; layerIndex++) { - for (uint layerIndex = 0; layerIndex < LayerCount; layerIndex++) - { - // Bottom : others - if(JsonSettings.Layers.Count <= layerIndex) break; + // Bottom : others + if (JsonSettings.Layers.Count <= layerIndex) break; - JsonSettings.Layers[(int) layerIndex].Exposure.LiftHeight = - GetInitialLayerValueOrNormal(layerIndex, JsonSettings.Properties.Bottom.LiftHeight, JsonSettings.Properties.Exposure.LiftHeight); - JsonSettings.Layers[(int)layerIndex].Exposure.LightPWM = - GetInitialLayerValueOrNormal(layerIndex, JsonSettings.Properties.Bottom.LightPWM, JsonSettings.Properties.Exposure.LightPWM); - JsonSettings.Layers[(int)layerIndex].Exposure.LiftSpeed = - GetInitialLayerValueOrNormal(layerIndex, JsonSettings.Properties.Bottom.LiftSpeed, JsonSettings.Properties.Exposure.LiftSpeed); - JsonSettings.Layers[(int)layerIndex].Exposure.LightOnTime = - GetInitialLayerValueOrNormal(layerIndex, JsonSettings.Properties.Bottom.LightOnTime, JsonSettings.Properties.Exposure.LightOnTime); - JsonSettings.Layers[(int)layerIndex].Exposure.RetractSpeed = - GetInitialLayerValueOrNormal(layerIndex, JsonSettings.Properties.Bottom.RetractSpeed, JsonSettings.Properties.Exposure.RetractSpeed); - JsonSettings.Layers[(int)layerIndex].Exposure.LightOffTime = - GetInitialLayerValueOrNormal(layerIndex, JsonSettings.Properties.Bottom.LightOffTime, JsonSettings.Properties.Exposure.LightOffTime); - JsonSettings.Layers[(int)layerIndex].Exposure.RetractHeight = - GetInitialLayerValueOrNormal(layerIndex, JsonSettings.Properties.Bottom.RetractHeight, JsonSettings.Properties.Exposure.RetractHeight); - } + JsonSettings.Layers[(int)layerIndex].Exposure.LiftHeight = + GetInitialLayerValueOrNormal(layerIndex, JsonSettings.Properties.Bottom.LiftHeight, JsonSettings.Properties.Exposure.LiftHeight); + JsonSettings.Layers[(int)layerIndex].Exposure.LightPWM = + GetInitialLayerValueOrNormal(layerIndex, JsonSettings.Properties.Bottom.LightPWM, JsonSettings.Properties.Exposure.LightPWM); + JsonSettings.Layers[(int)layerIndex].Exposure.LiftSpeed = + GetInitialLayerValueOrNormal(layerIndex, JsonSettings.Properties.Bottom.LiftSpeed, JsonSettings.Properties.Exposure.LiftSpeed); + JsonSettings.Layers[(int)layerIndex].Exposure.LightOnTime = + GetInitialLayerValueOrNormal(layerIndex, JsonSettings.Properties.Bottom.LightOnTime, JsonSettings.Properties.Exposure.LightOnTime); + JsonSettings.Layers[(int)layerIndex].Exposure.RetractSpeed = + GetInitialLayerValueOrNormal(layerIndex, JsonSettings.Properties.Bottom.RetractSpeed, JsonSettings.Properties.Exposure.RetractSpeed); + JsonSettings.Layers[(int)layerIndex].Exposure.LightOffTime = + GetInitialLayerValueOrNormal(layerIndex, JsonSettings.Properties.Bottom.LightOffTime, JsonSettings.Properties.Exposure.LightOffTime); + JsonSettings.Layers[(int)layerIndex].Exposure.RetractHeight = + GetInitialLayerValueOrNormal(layerIndex, JsonSettings.Properties.Bottom.RetractHeight, JsonSettings.Properties.Exposure.RetractHeight); } - if (ReferenceEquals(modifier, PrintParameterModifier.InitialLayerCount)) - { - JsonSettings.Properties.Bottom.Count = value.Convert(); - UpdateLayers(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.InitialExposureSeconds)) - { - JsonSettings.Properties.Bottom.LightOnTime = value.Convert(); - UpdateLayers(); - return true; - } - - if (ReferenceEquals(modifier, PrintParameterModifier.ExposureSeconds)) - { - JsonSettings.Properties.Exposure.LightOnTime = value.Convert(); - UpdateLayers(); - return true; - } - - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLayerOffTime)) - { - JsonSettings.Properties.Bottom.LightOffTime = value.Convert(); - UpdateLayers(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LayerOffTime)) - { - JsonSettings.Properties.Exposure.LightOffTime = value.Convert(); - UpdateLayers(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftHeight)) - { - JsonSettings.Properties.Bottom.LiftHeight = value.Convert(); - UpdateLayers(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLiftSpeed)) - { - JsonSettings.Properties.Bottom.LiftSpeed = value.Convert(); - UpdateLayers(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LiftHeight)) - { - JsonSettings.Properties.Exposure.LiftHeight = value.Convert(); - UpdateLayers(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LiftSpeed)) - { - JsonSettings.Properties.Exposure.LiftSpeed = value.Convert(); - UpdateLayers(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.RetractSpeed)) - { - JsonSettings.Properties.Exposure.RetractSpeed = value.Convert(); - UpdateLayers(); - return true; - } - - if (ReferenceEquals(modifier, PrintParameterModifier.BottomLightPWM)) - { - JsonSettings.Properties.Bottom.LightPWM = value.Convert(); - UpdateLayers(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LightPWM)) - { - JsonSettings.Properties.Exposure.LightPWM = value.Convert(); - UpdateLayers(); - return true; - } - - return false; + return count; } public override void SaveAs(string filePath = null, OperationProgress progress = null) diff --git a/UVtools.Core/FileFormats/ZCodexFile.cs b/UVtools.Core/FileFormats/ZCodexFile.cs index 26dff7f..40d230d 100644 --- a/UVtools.Core/FileFormats/ZCodexFile.cs +++ b/UVtools.Core/FileFormats/ZCodexFile.cs @@ -153,8 +153,8 @@ namespace UVtools.Core.FileFormats public override Type[] ConvertToFormats { get; } = null; public override PrintParameterModifier[] PrintParameterModifiers { get; } = { - PrintParameterModifier.InitialLayerCount, - PrintParameterModifier.InitialExposureSeconds, + PrintParameterModifier.BottomLayerCount, + PrintParameterModifier.BottomExposureSeconds, PrintParameterModifier.ExposureSeconds, @@ -197,16 +197,41 @@ namespace UVtools.Core.FileFormats } } - public override ushort InitialLayerCount => ResinMetadataSettings.BottomLayersNumber; + public override ushort BottomLayerCount + { + get => ResinMetadataSettings.BottomLayersNumber; + set => ResinMetadataSettings.BottomLayersNumber = value; + } - public override float InitialExposureTime => UserSettings.BottomLayerExposureTime / 1000f; + public override float BottomExposureTime + { + get => (float) Math.Round(UserSettings.BottomLayerExposureTime / 1000f, 2); + set => UserSettings.BottomLayerExposureTime = (uint) (value * 1000f); + } - public override float LayerExposureTime => UserSettings.LayerExposureTime / 1000f; - public override float LiftHeight => UserSettings.ZLiftDistance; + public override float ExposureTime + { + get => (float) Math.Round(UserSettings.LayerExposureTime / 1000f, 2); + set => UserSettings.LayerExposureTime = (uint) (value * 1000f); + } - public override float LiftSpeed => UserSettings.ZLiftFeedRate; + public override float LiftHeight + { + get => UserSettings.ZLiftDistance; + set => UserSettings.ZLiftDistance = value; + } - public override float RetractSpeed => UserSettings.ZLiftRetractRate; + public override float LiftSpeed + { + get => UserSettings.ZLiftFeedRate; + set => UserSettings.ZLiftFeedRate = value; + } + + public override float RetractSpeed + { + get => UserSettings.ZLiftRetractRate; + set => UserSettings.ZLiftRetractRate = value; + } public override float PrintTime => ResinMetadataSettings.PrintTime; @@ -423,7 +448,7 @@ M106 S0 this[layerIndex] = new Layer((uint) layerIndex, LayersSettings[layerIndex].LayerEntry.Open(), LayersSettings[layerIndex].LayerEntry.Name) { PositionZ = currentHeight, - ExposureTime = GetInitialLayerValueOrNormal((uint) layerIndex, InitialExposureTime, LayerExposureTime) + ExposureTime = GetInitialLayerValueOrNormal((uint) layerIndex, BottomExposureTime, ExposureTime) }; layerIndex++; @@ -449,64 +474,6 @@ M106 S0 LayerManager.GetBoundingRectangle(progress); } - public override bool SetValueFromPrintParameterModifier(PrintParameterModifier modifier, string value) - { - void UpdateLayers() - { - for (uint layerIndex = 0; layerIndex < LayerCount; layerIndex++) - { - this[layerIndex].ExposureTime = GetInitialLayerValueOrNormal(layerIndex, InitialExposureTime, LayerExposureTime); - } - } - - if (ReferenceEquals(modifier, PrintParameterModifier.InitialLayerCount)) - { - UserSettings.BottomLayersCount = - ResinMetadataSettings.BottomLayersNumber = value.Convert(); - UpdateLayers(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.InitialExposureSeconds)) - { - ResinMetadataSettings.BottomLayersTime = - UserSettings.BottomLayerExposureTime = value.Convert()*1000; - - UpdateLayers(); - - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.ExposureSeconds)) - { - ResinMetadataSettings.LayerTime = - UserSettings.LayerExposureTime = value.Convert()*1000; - - UpdateLayers(); - - return true; - } - - if (ReferenceEquals(modifier, PrintParameterModifier.LiftHeight)) - { - UserSettings.ZLiftDistance = value.Convert(); - RebuildGCode(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.LiftSpeed)) - { - UserSettings.ZLiftFeedRate = value.Convert(); - RebuildGCode(); - return true; - } - if (ReferenceEquals(modifier, PrintParameterModifier.RetractSpeed)) - { - UserSettings.ZLiftRetractRate = value.Convert(); - RebuildGCode(); - return true; - } - - return false; - } - public override void RebuildGCode() { var gcode = GCode.ToString(); diff --git a/UVtools.Core/Layer/LayerManager.cs b/UVtools.Core/Layer/LayerManager.cs index d75960d..ad3e149 100644 --- a/UVtools.Core/Layer/LayerManager.cs +++ b/UVtools.Core/Layer/LayerManager.cs @@ -173,7 +173,7 @@ namespace UVtools.Core var layer = this[layerIndex]; layer.Index = layerIndex; layer.PositionZ = SlicerFile.GetHeightFromLayer(layerIndex); - layer.ExposureTime = SlicerFile.GetInitialLayerValueOrNormal(layerIndex, SlicerFile.InitialExposureTime, SlicerFile.LayerExposureTime); + layer.ExposureTime = SlicerFile.GetInitialLayerValueOrNormal(layerIndex, SlicerFile.BottomExposureTime, SlicerFile.ExposureTime); } } @@ -1771,6 +1771,8 @@ namespace UVtools.Core layerManager[layer.Index] = layer.Clone(); } + layerManager.BoundingRectangle = BoundingRectangle; + return layerManager; } diff --git a/UVtools.GUI/Controls/Tools/CtrlToolEditEditParameters.cs b/UVtools.GUI/Controls/Tools/CtrlToolEditEditParameters.cs index 228fcf0..0a93a3a 100644 --- a/UVtools.GUI/Controls/Tools/CtrlToolEditEditParameters.cs +++ b/UVtools.GUI/Controls/Tools/CtrlToolEditEditParameters.cs @@ -35,7 +35,6 @@ namespace UVtools.GUI.Controls.Tools public RowControl(FileFormat.PrintParameterModifier modifier) { Modifier = modifier; - modifier.OldValue = decimal.Parse(Program.SlicerFile.GetValueFromPrintParameterModifier(modifier).ToString()); Name = new Label { @@ -111,6 +110,8 @@ namespace UVtools.GUI.Controls.Tools public CtrlToolEditParameters() { InitializeComponent(); + + Program.SlicerFile.RefreshPrintParametersModifiersValues(); Operation = new OperationEditParameters(Program.SlicerFile.PrintParameterModifiers); SetOperation(Operation); diff --git a/UVtools.GUI/Forms/FrmToolWindow.cs b/UVtools.GUI/Forms/FrmToolWindow.cs index f9a3875..823c375 100644 --- a/UVtools.GUI/Forms/FrmToolWindow.cs +++ b/UVtools.GUI/Forms/FrmToolWindow.cs @@ -310,13 +310,13 @@ namespace UVtools.GUI.Forms if (ReferenceEquals(sender, btnLayerRangeBottomLayers)) { nmLayerRangeStart.Value = 0; - nmLayerRangeEnd.Value = Program.SlicerFile.InitialLayerCount-1; + nmLayerRangeEnd.Value = Program.SlicerFile.BottomLayerCount-1; return; } if (ReferenceEquals(sender, btnLayerRangeNormalLayers)) { - nmLayerRangeStart.Value = Program.SlicerFile.InitialLayerCount - 1; + nmLayerRangeStart.Value = Program.SlicerFile.BottomLayerCount - 1; nmLayerRangeEnd.Value = Program.SlicerFile.LayerCount - 1; return; } diff --git a/UVtools.GUI/FrmMain.cs b/UVtools.GUI/FrmMain.cs index 9ac592d..88d1853 100644 --- a/UVtools.GUI/FrmMain.cs +++ b/UVtools.GUI/FrmMain.cs @@ -1471,6 +1471,13 @@ namespace UVtools.GUI } } + private void pbLayer_SelectionRegionChanged(object sender, EventArgs e) + { + var roi = ROI; + btnLayerROI.Text = roi.IsEmpty ? "ROI: (NS)" : $"ROI: {roi}"; + btnLayerROI.Enabled = !roi.IsEmpty; + } + private void pbLayer_Zoomed(object sender, Cyotek.Windows.Forms.ImageBoxZoomEventArgs e) { if (SupressLayerZoomEvent) return; @@ -2129,9 +2136,9 @@ namespace UVtools.GUI statusBar.Items.Clear(); AddStatusBarItem(nameof(SlicerFile.LayerHeight), SlicerFile.LayerHeight, "mm"); - AddStatusBarItem(nameof(SlicerFile.InitialLayerCount), SlicerFile.InitialLayerCount); - AddStatusBarItem(nameof(SlicerFile.InitialExposureTime), SlicerFile.InitialExposureTime, "s"); - AddStatusBarItem(nameof(SlicerFile.LayerExposureTime), SlicerFile.LayerExposureTime, "s"); + AddStatusBarItem(nameof(SlicerFile.BottomLayerCount), SlicerFile.BottomLayerCount); + AddStatusBarItem(nameof(SlicerFile.BottomExposureTime), SlicerFile.BottomExposureTime, "s"); + AddStatusBarItem(nameof(SlicerFile.ExposureTime), SlicerFile.ExposureTime, "s"); AddStatusBarItem(nameof(SlicerFile.PrintTime), Math.Round(SlicerFile.PrintTime / 3600, 2), "h"); AddStatusBarItem(nameof(SlicerFile.UsedMaterial), Math.Round(SlicerFile.UsedMaterial, 2), "ml"); AddStatusBarItem(nameof(SlicerFile.MaterialCost), SlicerFile.MaterialCost, "€"); @@ -4137,10 +4144,11 @@ namespace UVtools.GUI switch (baseOperation) { case OperationEditParameters operation: - foreach (var modifier in operation.Modifiers.Where(modifier => modifier.HasChanged)) + /*foreach (var modifier in operation.Modifiers.Where(modifier => modifier.HasChanged)) { SlicerFile.SetValueFromPrintParameterModifier(modifier, modifier.NewValue); - } + }*/ + SlicerFile.SetValuesFromPrintParametersModifiers(); RefreshInfo(); menuFileSave.Enabled = true; @@ -4286,11 +4294,6 @@ namespace UVtools.GUI return true; } - private void pbLayer_SelectionRegionChanged(object sender, EventArgs e) - { - var roi = ROI; - btnLayerROI.Text = roi.IsEmpty ? "ROI: (NS)" : $"ROI: {roi}"; - btnLayerROI.Enabled = !roi.IsEmpty; - } + } }