diff options
20 files changed, 146 insertions, 270 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 81741cf..3336159 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Changelog +## 08/04/2021 - v2.8.4 + +* (Improvement) Layers: "IsBottomLayer" property will now computing the value taking the height into consideration instead of it index, this allow to identify the real bottom layers when using multiple layers with same heights +* (Fix) GCode Builder: Finish print lift to top was setting the incorrect feedrate if the file format is not in mm/m speed units +* **Operations:** + * **Exposure time finder:** + * Add option to "Also set light-off delay to zero" when "Do not perform the lifting sequence for layers with same Z positioning" is enabled + * Layers heights with more than 3 decimals was limiting the layer generation to 2 decimals leading to wrong the layer thickness + * Allow set layer heights with 3 decimals + * **Elephant foot:** + * Bottom and normal layers count was showing with decimals + * Allow set layer heights with 3 decimals + * XYZ Accuracy: Allow set layer heights with 3 decimals + * Tolerance XYZ: Allow set layer heights with 3 decimals + * Grayscale: Allow set layer heights with 3 decimals + * Stress tower: Allow set layer heights with 3 decimals + * Calculator - Optimal model tilt: Allow layer heights with 3 decimals + ## 07/04/2021 - v2.8.3 * File formats: Sanitize and check layers on encoding/saving file, will thrown a error and prevent the save if found any diff --git a/UVtools.Core/FileFormats/ZCodeFile.cs b/UVtools.Core/FileFormats/ZCodeFile.cs index 86e08e3..4d42c1d 100644 --- a/UVtools.Core/FileFormats/ZCodeFile.cs +++ b/UVtools.Core/FileFormats/ZCodeFile.cs @@ -426,6 +426,7 @@ namespace UVtools.Core.FileFormats #endregion + #region Constructor public ZCodeFile() { GCode.UseTailComma = true; @@ -435,7 +436,9 @@ namespace UVtools.Core.FileFormats GCode.GCodeTimeUnit = GCodeBuilder.GCodeTimeUnits.Milliseconds; GCode.GCodeShowImageType = GCodeBuilder.GCodeShowImageTypes.FilenameNonZeroPNG; GCode.MaxLEDPower = MaxLEDPower; + GCode.CommandClearImage.Enabled = false; } + #endregion #region Methods diff --git a/UVtools.Core/GCode/GCodeBuilder.cs b/UVtools.Core/GCode/GCodeBuilder.cs index ebe238b..c59bb56 100644 --- a/UVtools.Core/GCode/GCodeBuilder.cs +++ b/UVtools.Core/GCode/GCodeBuilder.cs @@ -554,7 +554,18 @@ namespace UVtools.Core.GCode break; } - AppendEndGCode(finalRaiseZPosition, slicerFile.LiftSpeed); + float endFeedRate = 0; + switch (GCodeSpeedUnit) + { + case GCodeSpeedUnits.MillimetersPerSecond: + endFeedRate = (float)Math.Round(slicerFile.RetractSpeed / 60, 2); + break; + case GCodeSpeedUnits.CentimetersPerMinute: + endFeedRate = (float)Math.Round(slicerFile.RetractSpeed / 10, 2); + break; + } + + AppendEndGCode(finalRaiseZPosition, endFeedRate); } public void RebuildGCode(FileFormat slicerFile, object[] configs, string separator = ":") @@ -769,7 +780,7 @@ namespace UVtools.Core.GCode if (bottomLayer.LightPWM > 0) slicerFile.BottomLightPWM = bottomLayer.LightPWM; } - var normalLayer = slicerFile[slicerFile.LastLayerIndex]; + var normalLayer = slicerFile.LastLayer; if (normalLayer is not null) { if (normalLayer.ExposureTime > 0) slicerFile.ExposureTime = normalLayer.ExposureTime; diff --git a/UVtools.Core/Layer/Layer.cs b/UVtools.Core/Layer/Layer.cs index b01fc52..a5dc4e9 100644 --- a/UVtools.Core/Layer/Layer.cs +++ b/UVtools.Core/Layer/Layer.cs @@ -26,6 +26,9 @@ namespace UVtools.Core { #region Constants public const byte HeightPrecision = 3; + public const decimal HeightPrecisionIncrement = 0.001M; + public const decimal MinimumHeight = 0.01M; + public const decimal MaximumHeight = 0.2M; #endregion #region Members @@ -113,7 +116,7 @@ namespace UVtools.Core } } - public bool IsBottomLayer => Index < ParentLayerManager.SlicerFile.BottomLayerCount; + public bool IsBottomLayer => (uint)(PositionZ / SlicerFile.LayerHeight) <= ParentLayerManager.SlicerFile.BottomLayerCount; public bool IsNormalLayer => !IsBottomLayer; /// <summary> diff --git a/UVtools.Core/Layer/LayerManager.cs b/UVtools.Core/Layer/LayerManager.cs index 1862223..1895bcd 100644 --- a/UVtools.Core/Layer/LayerManager.cs +++ b/UVtools.Core/Layer/LayerManager.cs @@ -520,7 +520,7 @@ namespace UVtools.Core var layer = this[layerIndex]; if (this[layerIndex - 1].PositionZ != layer.PositionZ) continue; layer.LiftHeight = 0; - //if(zeroLightOffDelay) layer.LightOffDelay = 0; + if(zeroLightOffDelay) layer.LightOffDelay = 0; } SlicerFile?.RebuildGCode(); } diff --git a/UVtools.Core/Operations/OperationCalculator.cs b/UVtools.Core/Operations/OperationCalculator.cs index 68aa251..d4c0384 100644 --- a/UVtools.Core/Operations/OperationCalculator.cs +++ b/UVtools.Core/Operations/OperationCalculator.cs @@ -390,7 +390,7 @@ namespace UVtools.Core.Operations get => _layerHeight; set { - if (!RaiseAndSetIfChanged(ref _layerHeight, value)) return; + if (!RaiseAndSetIfChanged(ref _layerHeight, Layer.RoundHeight(value))) return; RaisePropertyChanged(nameof(XYResolution)); RaisePropertyChanged(nameof(XYResolutionUm)); RaisePropertyChanged(nameof(TiltAngleDegrees)); diff --git a/UVtools.Core/Operations/OperationCalibrateExposureFinder.cs b/UVtools.Core/Operations/OperationCalibrateExposureFinder.cs index e9bdbb0..7f60893 100644 --- a/UVtools.Core/Operations/OperationCalibrateExposureFinder.cs +++ b/UVtools.Core/Operations/OperationCalibrateExposureFinder.cs @@ -78,6 +78,7 @@ namespace UVtools.Core.Operations private decimal _multipleLayerHeightStep = 0.01m; private bool _dontLiftSamePositionedLayers; + private bool _zeroLightOffSamePositionedLayers; private bool _multipleExposures; private ExposureGenTypes _exposureGenType = ExposureGenTypes.Linear; private bool _exposureGenIgnoreBaseExposure; @@ -600,6 +601,12 @@ namespace UVtools.Core.Operations set => RaiseAndSetIfChanged(ref _dontLiftSamePositionedLayers, value); } + public bool ZeroLightOffSamePositionedLayers + { + get => _zeroLightOffSamePositionedLayers; + set => RaiseAndSetIfChanged(ref _zeroLightOffSamePositionedLayers, value); + } + public bool MultipleExposures { get => _multipleExposures; @@ -758,7 +765,7 @@ namespace UVtools.Core.Operations private bool Equals(OperationCalibrateExposureFinder other) { - return _layerHeight == other._layerHeight && _bottomLayers == other._bottomLayers && _bottomExposure == other._bottomExposure && _normalExposure == other._normalExposure && _topBottomMargin == other._topBottomMargin && _leftRightMargin == other._leftRightMargin && _chamferLayers == other._chamferLayers && _erodeBottomIterations == other._erodeBottomIterations && _partMargin == other._partMargin && _enableAntiAliasing == other._enableAntiAliasing && _mirrorOutput == other._mirrorOutput && _baseHeight == other._baseHeight && _featuresHeight == other._featuresHeight && _featuresMargin == other._featuresMargin && _unitOfMeasure == other._unitOfMeasure && _holeDiametersPx == other._holeDiametersPx && _holeDiametersMm == other._holeDiametersMm && _barSpacing == other._barSpacing && _barLength == other._barLength && _barVerticalSplitter == other._barVerticalSplitter && _barThicknessesPx == other._barThicknessesPx && _barThicknessesMm == other._barThicknessesMm && _textFont == other._textFont && _textScale.Equals(other._textScale) && _textThickness == other._textThickness && _text == other._text && _multipleBrightness == other._multipleBrightness && _multipleBrightnessExcludeFrom == other._multipleBrightnessExcludeFrom && _multipleBrightnessValues == other._multipleBrightnessValues && _dontLiftSamePositionedLayers == other._dontLiftSamePositionedLayers && _multipleLayerHeight == other._multipleLayerHeight && _multipleLayerHeightMaximum == other._multipleLayerHeightMaximum && _multipleLayerHeightStep == other._multipleLayerHeightStep && _multipleExposures == other._multipleExposures && _exposureGenType == other._exposureGenType && _exposureGenIgnoreBaseExposure == other._exposureGenIgnoreBaseExposure && _exposureGenBottomStep == other._exposureGenBottomStep && _exposureGenNormalStep == other._exposureGenNormalStep && _exposureGenTests == other._exposureGenTests && Equals(_exposureTable, other._exposureTable) && _holeShape == other._holeShape; + return _layerHeight == other._layerHeight && _bottomLayers == other._bottomLayers && _bottomExposure == other._bottomExposure && _normalExposure == other._normalExposure && _topBottomMargin == other._topBottomMargin && _leftRightMargin == other._leftRightMargin && _chamferLayers == other._chamferLayers && _erodeBottomIterations == other._erodeBottomIterations && _partMargin == other._partMargin && _enableAntiAliasing == other._enableAntiAliasing && _mirrorOutput == other._mirrorOutput && _baseHeight == other._baseHeight && _featuresHeight == other._featuresHeight && _featuresMargin == other._featuresMargin && _unitOfMeasure == other._unitOfMeasure && _holeDiametersPx == other._holeDiametersPx && _holeDiametersMm == other._holeDiametersMm && _barSpacing == other._barSpacing && _barLength == other._barLength && _barVerticalSplitter == other._barVerticalSplitter && _barThicknessesPx == other._barThicknessesPx && _barThicknessesMm == other._barThicknessesMm && _textFont == other._textFont && _textScale.Equals(other._textScale) && _textThickness == other._textThickness && _text == other._text && _multipleBrightness == other._multipleBrightness && _multipleBrightnessExcludeFrom == other._multipleBrightnessExcludeFrom && _multipleBrightnessValues == other._multipleBrightnessValues && _dontLiftSamePositionedLayers == other._dontLiftSamePositionedLayers && _zeroLightOffSamePositionedLayers == other._zeroLightOffSamePositionedLayers && _multipleLayerHeight == other._multipleLayerHeight && _multipleLayerHeightMaximum == other._multipleLayerHeightMaximum && _multipleLayerHeightStep == other._multipleLayerHeightStep && _multipleExposures == other._multipleExposures && _exposureGenType == other._exposureGenType && _exposureGenIgnoreBaseExposure == other._exposureGenIgnoreBaseExposure && _exposureGenBottomStep == other._exposureGenBottomStep && _exposureGenNormalStep == other._exposureGenNormalStep && _exposureGenTests == other._exposureGenTests && Equals(_exposureTable, other._exposureTable) && _holeShape == other._holeShape; } public override bool Equals(object obj) @@ -802,6 +809,7 @@ namespace UVtools.Core.Operations hashCode.Add(_multipleLayerHeightMaximum); hashCode.Add(_multipleLayerHeightStep); hashCode.Add(_dontLiftSamePositionedLayers); + hashCode.Add(_zeroLightOffSamePositionedLayers); hashCode.Add(_multipleExposures); hashCode.Add((int) _exposureGenType); hashCode.Add(_exposureGenIgnoreBaseExposure); @@ -1156,7 +1164,7 @@ namespace UVtools.Core.Operations if (!layerDifference.IsInteger()) return; // Not at right height to process with layer height //Debug.WriteLine($"{currentHeight} / {layerHeight} = {layerDifference}, Floor={Math.Floor(layerDifference)}"); - using Mat mat = EmguExtensions.InitMat(SlicerFile.Resolution); + using var mat = EmguExtensions.InitMat(SlicerFile.Resolution); int layerCountOnHeight = (int)Math.Floor(currentHeight / layerHeight); bool isBottomLayer = layerCountOnHeight <= _bottomLayers; bool isBaseLayer = currentHeight <= _baseHeight; @@ -1263,7 +1271,7 @@ namespace UVtools.Core.Operations progress++; } - for (decimal currentHeight = _layerHeight; currentHeight <= totalHeight; currentHeight += 0.01m) + for (decimal currentHeight = _layerHeight; currentHeight <= totalHeight; currentHeight += Layer.HeightPrecisionIncrement) { currentHeight = Layer.RoundHeight(currentHeight); for (decimal layerHeight = _layerHeight; layerHeight <= endLayerHeight; layerHeight += _multipleLayerHeightStep) @@ -1302,7 +1310,7 @@ namespace UVtools.Core.Operations if (_dontLiftSamePositionedLayers) { - SlicerFile.LayerManager.SetNoLiftForSamePositionedLayers(); + SlicerFile.LayerManager.SetNoLiftForSamePositionedLayers(_zeroLightOffSamePositionedLayers); } if (_mirrorOutput) diff --git a/UVtools.Core/Operations/OperationLayerReHeight.cs b/UVtools.Core/Operations/OperationLayerReHeight.cs index 7b26095..a7fa89e 100644 --- a/UVtools.Core/Operations/OperationLayerReHeight.cs +++ b/UVtools.Core/Operations/OperationLayerReHeight.cs @@ -78,9 +78,9 @@ namespace UVtools.Core.Operations var list = new List<OperationLayerReHeightItem>(); for (byte i = 2; i < 255; i++) // Go lower heights { - if (layerHeight / i < 0.01m) break; + if (layerHeight / i < Layer.MinimumHeight) break; if ((layerCount * (decimal)i).DecimalDigits() > 0) continue; // Cant multiply layers, no half layers! - if ((layerHeight / i).DecimalDigits() > 3) continue; // Cant divide height, more than 3 digits + if ((layerHeight / i).DecimalDigits() > Layer.HeightPrecision) continue; // Cant divide height, more than 3 digits var item = new OperationLayerReHeightItem(false, i, Layer.RoundHeight(layerHeight / i), layerCount * i); list.Add(item); @@ -88,9 +88,9 @@ namespace UVtools.Core.Operations for (byte i = 2; i < 255; i++) // Go higher heights { - if (layerHeight * i > 0.20m) break; + if (layerHeight * i > Layer.MaximumHeight) break; if ((layerCount / (decimal)i).DecimalDigits() > 0) continue; // Cant divide layers, no half layers! - if ((layerHeight * i).DecimalDigits() > 3) continue; // Cant multiply height, more than 3 digits + if ((layerHeight * i).DecimalDigits() > Layer.HeightPrecision) continue; // Cant multiply height, more than 3 digits var item = new OperationLayerReHeightItem(true, i, Layer.RoundHeight(layerHeight * i), layerCount / i); list.Add(item); diff --git a/UVtools.Core/UVtools.Core.csproj b/UVtools.Core/UVtools.Core.csproj index e0cf444..01dd2dc 100644 --- a/UVtools.Core/UVtools.Core.csproj +++ b/UVtools.Core/UVtools.Core.csproj @@ -10,7 +10,7 @@ <RepositoryUrl>https://github.com/sn4k3/UVtools</RepositoryUrl> <PackageProjectUrl>https://github.com/sn4k3/UVtools</PackageProjectUrl> <Description>MSLA/DLP, file analysis, calibration, repair, conversion and manipulation</Description> - <Version>2.8.3</Version> + <Version>2.8.4</Version> <Copyright>Copyright © 2020 PTRTECH</Copyright> <PackageIcon>UVtools.png</PackageIcon> <Platforms>AnyCPU;x64</Platforms> diff --git a/UVtools.WPF/Controls/Calibrators/CalibrateElephantFootControl.axaml b/UVtools.WPF/Controls/Calibrators/CalibrateElephantFootControl.axaml index 416e9d9..82863cf 100644 --- a/UVtools.WPF/Controls/Calibrators/CalibrateElephantFootControl.axaml +++ b/UVtools.WPF/Controls/Calibrators/CalibrateElephantFootControl.axaml @@ -20,7 +20,7 @@ Increment="0.01" Minimum="0.01" Maximum="0.30" - FormatString="F02" + FormatString="F3" Value="{Binding Operation.LayerHeight}"/> <TextBlock Grid.Row="0" Grid.Column="4" VerticalAlignment="Center" @@ -39,9 +39,7 @@ Increment="1" Minimum="1" Maximum="1000" - FormatString="F02" - Value="{Binding Operation.BottomLayers}" - /> + Value="{Binding Operation.BottomLayers}"/> <TextBlock Grid.Row="2" Grid.Column="4" VerticalAlignment="Center" Text="{Binding Operation.BottomHeight, StringFormat=\{0:F3\}mm}"/> @@ -58,7 +56,6 @@ Increment="1" Minimum="1" Maximum="1000" - FormatString="F02" Value="{Binding Operation.NormalLayers}"/> <TextBlock Grid.Row="2" Grid.Column="10" IsEnabled="{Binding !Operation.SyncLayers}" diff --git a/UVtools.WPF/Controls/Calibrators/CalibrateExposureFinderControl.axaml b/UVtools.WPF/Controls/Calibrators/CalibrateExposureFinderControl.axaml index 4f428d7..5691f10 100644 --- a/UVtools.WPF/Controls/Calibrators/CalibrateExposureFinderControl.axaml +++ b/UVtools.WPF/Controls/Calibrators/CalibrateExposureFinderControl.axaml @@ -29,7 +29,7 @@ Increment="0.1" Minimum="0" Maximum="10000" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.DisplayWidth}"/> <TextBlock Grid.Row="0" Grid.Column="4" VerticalAlignment="Center" @@ -44,7 +44,7 @@ Increment="0.1" Minimum="0" Maximum="10000" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.DisplayHeight}"/> <TextBlock Grid.Row="0" Grid.Column="10" VerticalAlignment="Center" @@ -57,9 +57,8 @@ Increment="0.01" Minimum="0.01" Maximum="0.30" - FormatString="F02" - Value="{Binding Operation.LayerHeight}" - /> + FormatString="F3" + Value="{Binding Operation.LayerHeight}"/> <TextBlock Grid.Row="2" Grid.Column="4" VerticalAlignment="Center" Text="mm"/> @@ -85,7 +84,7 @@ Increment="0.5" Minimum="0.1" Maximum="200" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.BottomExposure}"/> <TextBlock Grid.Row="4" Grid.Column="4" VerticalAlignment="Center" @@ -99,7 +98,7 @@ Increment="0.5" Minimum="0.1" Maximum="200" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.NormalExposure}"/> <TextBlock Grid.Row="4" Grid.Column="10" VerticalAlignment="Center" @@ -201,7 +200,7 @@ Increment="0.5" Minimum="0.3" Maximum="100" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.BaseHeight}"/> <TextBlock Grid.Row="0" Grid.Column="4" VerticalAlignment="Center" @@ -215,7 +214,7 @@ Increment="0.5" Minimum="0.5" Maximum="100" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.FeaturesHeight}"/> <TextBlock Grid.Row="0" Grid.Column="10" VerticalAlignment="Center" @@ -229,7 +228,7 @@ Increment="0.5" Minimum="1" Maximum="100" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.FeaturesMargin}"/> <TextBlock Grid.Row="0" Grid.Column="16" VerticalAlignment="Center" @@ -302,7 +301,7 @@ Increment="0.5" Minimum="0.01" Maximum="100" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.BarSpacing}"/> <TextBlock Grid.Row="10" Grid.Column="4" VerticalAlignment="Center" @@ -317,7 +316,7 @@ Increment="0.5" Minimum="0.01" Maximum="100" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.BarLength}"/> <TextBlock Grid.Row="10" Grid.Column="10" VerticalAlignment="Center" @@ -383,7 +382,7 @@ Increment="0.5" Minimum="0.1" Maximum="100" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.TextScale}"/> <TextBlock Grid.Row="16" Grid.Column="10" VerticalAlignment="Center" @@ -463,7 +462,7 @@ Increment="0.10" Minimum="0.10" Maximum="{Binding Operation.NormalExposure}" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.MultipleBrightnessGenExposureTime}"/> <TextBlock Grid.Row="0" Grid.Column="10" @@ -560,7 +559,7 @@ Increment="0.01" Minimum="0.01" Maximum="0.30" - FormatString="F02" + FormatString="F3" Value="{Binding Operation.LayerHeight}"/> <TextBlock Grid.Row="0" Grid.Column="4" VerticalAlignment="Center" @@ -573,7 +572,7 @@ Increment="0.01" Minimum="0.01" Maximum="0.1" - FormatString="F02" + FormatString="F3" Value="{Binding Operation.MultipleLayerHeightStep}"/> <TextBlock Grid.Row="0" Grid.Column="10" VerticalAlignment="Center" @@ -586,7 +585,7 @@ Increment="0.01" Minimum="{Binding Operation.LayerHeight}" Maximum="0.3" - FormatString="F02" + FormatString="F3" Value="{Binding Operation.MultipleLayerHeightMaximum}"/> <TextBlock Grid.Row="0" Grid.Column="16" VerticalAlignment="Center" @@ -614,17 +613,25 @@ <TextBlock Text="Only few printers support this, make sure your is supported or else it will print a malformed model. 
After this, do not apply any modification which reconstruct the z positions of the layers."/> - <StackPanel Orientation="Horizontal" Spacing="20"> <CheckBox Content="Enable - For advanced users only!" IsChecked="{Binding Operation.MultipleExposures}"/> + <StackPanel Orientation="Horizontal" Spacing="20"> + <CheckBox - ToolTip.Tip="The lift height will be set to 0 for sequential layers that share same z position. -
Some printers may not support this and always require a lift after each layer." + ToolTip.Tip="The lift height will be set to 0 for sequential layers that share same z position, saving moves and time. +
Some printers may not support this and always require a lift after each layer, in that case turning this on will not affect the print." Content="Do not perform the lifting sequence for layers with same Z positioning" IsEnabled="{Binding Operation.MultipleExposures}" IsChecked="{Binding Operation.DontLiftSamePositionedLayers}"/> + + <CheckBox + ToolTip.Tip="Sets the light-off delay to zero for each sequential layers with no lift's to save that additional time. +
Note that without a lift and a delay the UV LED and LCD will be almost always ON, that can lead to overheat and wear the LCD faster." + Content="Also set light-off delay to zero" + IsEnabled="{Binding Operation.DontLiftSamePositionedLayers}" + IsChecked="{Binding Operation.ZeroLightOffSamePositionedLayers}"/> </StackPanel> <TextBlock Text="Automatic exposure generation:" @@ -668,7 +675,7 @@ Increment="0.01" Minimum="0" Maximum="1000" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.ExposureGenBottomStep}"/> <TextBlock Grid.Row="2" Grid.Column="4" VerticalAlignment="Center" @@ -682,7 +689,7 @@ Increment="0.01" Minimum="0.01" Maximum="1000" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.ExposureGenNormalStep}"/> <TextBlock Grid.Row="2" Grid.Column="10" VerticalAlignment="Center" @@ -729,7 +736,7 @@ Increment="0.1" Minimum="0.5" Maximum="1000" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.ExposureGenManualBottom}"/> <TextBlock Grid.Row="0" Grid.Column="10" VerticalAlignment="Center" @@ -742,7 +749,7 @@ Increment="0.1" Minimum="0.1" Maximum="1000" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.ExposureGenManualNormal}"/> <TextBlock Grid.Row="0" Grid.Column="16" VerticalAlignment="Center" diff --git a/UVtools.WPF/Controls/Calibrators/CalibrateGrayscaleControl.axaml b/UVtools.WPF/Controls/Calibrators/CalibrateGrayscaleControl.axaml index 76c82ff..a8de317 100644 --- a/UVtools.WPF/Controls/Calibrators/CalibrateGrayscaleControl.axaml +++ b/UVtools.WPF/Controls/Calibrators/CalibrateGrayscaleControl.axaml @@ -19,7 +19,7 @@ Increment="0.01" Minimum="0.01" Maximum="0.30" - FormatString="F02" + FormatString="F3" Value="{Binding Operation.LayerHeight}" /> <TextBlock Grid.Row="0" Grid.Column="4" @@ -100,7 +100,7 @@ Increment="0.5" Minimum="0.1" Maximum="200" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.BottomExposure}"/> <TextBlock Grid.Row="6" Grid.Column="4" VerticalAlignment="Center" @@ -114,7 +114,7 @@ Increment="0.5" Minimum="0.1" Maximum="200" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.NormalExposure}"/> <TextBlock Grid.Row="6" Grid.Column="10" VerticalAlignment="Center" diff --git a/UVtools.WPF/Controls/Calibrators/CalibrateStressTowerControl.axaml b/UVtools.WPF/Controls/Calibrators/CalibrateStressTowerControl.axaml index 584caa5..d409854 100644 --- a/UVtools.WPF/Controls/Calibrators/CalibrateStressTowerControl.axaml +++ b/UVtools.WPF/Controls/Calibrators/CalibrateStressTowerControl.axaml @@ -29,7 +29,7 @@ Increment="0.1" Minimum="0" Maximum="10000" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.DisplayWidth}"/> <TextBlock Grid.Row="0" Grid.Column="4" VerticalAlignment="Center" @@ -44,7 +44,7 @@ Increment="0.1" Minimum="0" Maximum="10000" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.DisplayHeight}"/> <TextBlock Grid.Row="0" Grid.Column="10" VerticalAlignment="Center" @@ -58,7 +58,7 @@ Increment="0.01" Minimum="0.01" Maximum="0.30" - FormatString="F02" + FormatString="F3" Value="{Binding Operation.LayerHeight}" /> <TextBlock Grid.Row="2" Grid.Column="4" @@ -86,7 +86,7 @@ Increment="0.5" Minimum="0.1" Maximum="200" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.BottomExposure}"/> <TextBlock Grid.Row="4" Grid.Column="4" VerticalAlignment="Center" @@ -100,7 +100,7 @@ Increment="0.5" Minimum="0.1" Maximum="200" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.NormalExposure}"/> <TextBlock Grid.Row="4" Grid.Column="10" VerticalAlignment="Center" @@ -114,7 +114,7 @@ Increment="1" Minimum="0" Maximum="100" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.BaseHeight}"/> <TextBlock Grid.Row="6" Grid.Column="4" VerticalAlignment="Center" @@ -128,7 +128,7 @@ Increment="1" Minimum="1" Maximum="10000" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.BaseDiameter}"/> <TextBlock Grid.Row="6" Grid.Column="10" VerticalAlignment="Center" @@ -142,7 +142,7 @@ Increment="1" Minimum="0" Maximum="100" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.CeilHeight}"/> <TextBlock Grid.Row="8" Grid.Column="4" VerticalAlignment="Center" @@ -157,7 +157,7 @@ Increment="1" Minimum="0" Maximum="10000" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.BodyHeight}"/> <TextBlock Grid.Row="8" Grid.Column="10" VerticalAlignment="Center" @@ -259,7 +259,7 @@ Increment="1" Minimum="0.1" Maximum="10000" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.SpiralDiameter}"/> <TextBlock Grid.Row="2" Grid.Column="4" Text="mm" @@ -274,7 +274,7 @@ Increment="1" Minimum="0.01" Maximum="359.99" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.SpiralAngleStepPerLayer}"/> <TextBlock Grid.Row="2" Grid.Column="10" Text="º/layer" diff --git a/UVtools.WPF/Controls/Calibrators/CalibrateToleranceControl.axaml b/UVtools.WPF/Controls/Calibrators/CalibrateToleranceControl.axaml index 909fe77..35a190e 100644 --- a/UVtools.WPF/Controls/Calibrators/CalibrateToleranceControl.axaml +++ b/UVtools.WPF/Controls/Calibrators/CalibrateToleranceControl.axaml @@ -29,7 +29,7 @@ Increment="0.1" Minimum="0" Maximum="10000" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.DisplayWidth}"/> <TextBlock Grid.Row="0" Grid.Column="4" VerticalAlignment="Center" @@ -44,7 +44,7 @@ Increment="0.1" Minimum="0" Maximum="10000" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.DisplayHeight}"/> <TextBlock Grid.Row="0" Grid.Column="10" VerticalAlignment="Center" @@ -58,7 +58,7 @@ Increment="0.01" Minimum="0.01" Maximum="0.30" - FormatString="F02" + FormatString="F3" Value="{Binding Operation.LayerHeight}" /> <TextBlock Grid.Row="2" Grid.Column="4" @@ -86,7 +86,7 @@ Increment="0.5" Minimum="0.1" Maximum="200" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.BottomExposure}"/> <TextBlock Grid.Row="4" Grid.Column="4" VerticalAlignment="Center" @@ -100,7 +100,7 @@ Increment="0.5" Minimum="0.1" Maximum="200" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.NormalExposure}"/> <TextBlock Grid.Row="4" Grid.Column="10" VerticalAlignment="Center" @@ -114,7 +114,7 @@ Increment="1" Minimum="5" Maximum="100" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.ZSize}"/> <TextBlock Grid.Row="6" Grid.Column="4" VerticalAlignment="Center" @@ -264,7 +264,7 @@ Increment="1.0" Minimum="2" Maximum="1000" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.FemaleDiameter}"/> <TextBlock Grid.Row="0" Grid.Column="4" VerticalAlignment="Center" @@ -278,7 +278,7 @@ Increment="1.0" Minimum="2" Maximum="1000" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.FemaleHoleDiameter}"/> <TextBlock Grid.Row="0" Grid.Column="10" VerticalAlignment="Center" @@ -335,7 +335,7 @@ Increment="0.01" Minimum="-1000" Maximum="0" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.MaleThinnerOffset}"/> <TextBlock Grid.Row="0" Grid.Column="10" VerticalAlignment="Center" @@ -349,7 +349,7 @@ Increment="0.01" Minimum="-1000" Maximum="-0.01" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.MaleThinnerStep}"/> <TextBlock Grid.Row="0" Grid.Column="16" VerticalAlignment="Center" @@ -376,7 +376,7 @@ Increment="0.01" Minimum="0" Maximum="1000" - FormatString="F02" + FormatString="F2" IsEnabled="{Binding !Operation.FuseParts}" Value="{Binding Operation.MaleThickerOffset}"/> <TextBlock Grid.Row="2" Grid.Column="10" @@ -394,7 +394,7 @@ Minimum="0.01" Maximum="1000" IsEnabled="{Binding !Operation.FuseParts}" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.MaleThickerStep}"/> <TextBlock Grid.Row="2" Grid.Column="16" VerticalAlignment="Center" @@ -409,144 +409,7 @@ </Expander> </Border> - <!-- - <Border BorderBrush="Black" BorderThickness="1" Padding="5"> - <Expander IsExpanded="True"> - <Expander.Header> - <TextBlock Text="Step 4: Validate the printed model with your measures" - FontWeight="Bold" - Cursor="Hand"/> - </Expander.Header> - - <StackPanel Spacing="10"> - - <StackPanel Orientation="Horizontal" Spacing="5"> - <TextBlock VerticalAlignment="Center" Text="X:"/> - <NumericUpDown - - Increment="1" - Minimum="0" - Maximum="100" - Width="100" - FormatString="F02" - Value="{Binding Operation.ObservedXSize}"/> - <TextBlock VerticalAlignment="Center" Text="mm"/> - - <TextBlock VerticalAlignment="Center" Text="Y:" - Margin="20,0,0,0"/> - <NumericUpDown - - Increment="1" - Minimum="0" - Maximum="100" - Width="100" - FormatString="F02" - Value="{Binding Operation.ObservedYSize}"/> - <TextBlock VerticalAlignment="Center" Text="mm"/> - - <TextBlock VerticalAlignment="Center" Text="Z:" - Margin="20,0,0,0"/> - <NumericUpDown - - Increment="1" - Minimum="0" - Maximum="100" - Width="100" - FormatString="F02" - Value="{Binding Operation.ObservedZSize}"/> - <TextBlock VerticalAlignment="Center" Text="mm"/> - </StackPanel> - - <Grid RowDefinitions="Auto,10,Auto,10,Auto" - ColumnDefinitions="Auto,10,Auto"> - <TextBlock Grid.Row="0" Grid.Column="0" - VerticalAlignment="Center" - FontWeight="Bold" - ToolTip.Tip="The calculated expected size for the part based on your input" - Text="Expected size:"/> - - <TextBlock Grid.Row="0" Grid.Column="2" FontWeight="Bold" - ToolTip.Tip="The calculated expected size for the part based on your input"> - <TextBlock.Text> - <MultiBinding StringFormat="\{0\}mm x \{1\}mm x \{2\}mm"> - <Binding Path="Operation.RealXSize"/> - <Binding Path="Operation.RealYSize"/> - <Binding Path="Operation.RealZSize"/> - </MultiBinding> - </TextBlock.Text> - </TextBlock> - - <TextBlock Grid.Row="2" Grid.Column="0" - VerticalAlignment="Center" - IsVisible="{Binding Operation.HollowModel}" - FontWeight="Bold" - ToolTip.Tip="The calculated expected wall thickness size for the part based on your input" - Text="Expected wall size:"/> - - <TextBlock Grid.Row="2" Grid.Column="2" FontWeight="Bold" - IsVisible="{Binding Operation.HollowModel}" - ToolTip.Tip="The calculated expected wall thickness size for the part based on your input"> - <TextBlock.Text> - <MultiBinding StringFormat="\{0\}mm x \{1\}mm"> - <Binding Path="Operation.WallThicknessRealXSize"/> - <Binding Path="Operation.WallThicknessRealYSize"/> - </MultiBinding> - </TextBlock.Text> - </TextBlock> - - <TextBlock Grid.Row="4" Grid.Column="0" - VerticalAlignment="Center" - FontWeight="Bold" - ToolTip.Tip="The resultant scale factor you should resize your model with" - Text="Resultant scale factor:"/> - - <TextBlock Grid.Row="4" Grid.Column="2" FontWeight="Bold" - ToolTip.Tip="The resultant scale factor you should resize your model with"> - <TextBlock.Text> - <MultiBinding StringFormat="\{0\}% x \{1\}% x \{2\}%"> - <Binding Path="Operation.ScaleXFactor"/> - <Binding Path="Operation.ScaleYFactor"/> - <Binding Path="Operation.ScaleZFactor"/> - </MultiBinding> - </TextBlock.Text> - </TextBlock> - </Grid> - </StackPanel> - - </Expander> - </Border> - - <Border BorderBrush="Black" BorderThickness="1" Padding="5"> - <Expander IsExpanded="True"> - <Expander.Header> - <TextBlock Text="Step 5: Save a resize profile with the results" - FontWeight="Bold" - Cursor="Hand"/> - </Expander.Header> - - <Grid ColumnDefinitions="Auto,10,*,5,Auto,5,Auto"> - <TextBlock VerticalAlignment="Center" - Text="Profile name:"/> - <TextBox Grid.Column="2" VerticalAlignment="Center" - IsEnabled="{Binding IsProfileAddEnabled}" - Text="{Binding ProfileName}"/> - <Button Grid.Column="4" VerticalAlignment="Center" - IsEnabled="{Binding IsProfileAddEnabled}" - Command="{Binding AutoNameProfile}" - ToolTip.Tip="Auto name the profile with the input values. -
Rename MyPrinterX to your printer name and MyResinX to your resin name." - Content="Auto name"/> - <Button Grid.Column="6" VerticalAlignment="Center" - IsEnabled="{Binding IsProfileAddEnabled}" - Command="{Binding AddProfile}"> - <Image Source="/Assets/Icons/plus-16x16.png"/> - </Button> - </Grid> - </Expander> - </Border> - !--> - - + </StackPanel> <Image Grid.Column="2" diff --git a/UVtools.WPF/Controls/Calibrators/CalibrateXYZAccuracyControl.axaml b/UVtools.WPF/Controls/Calibrators/CalibrateXYZAccuracyControl.axaml index 1d96018..97d2126 100644 --- a/UVtools.WPF/Controls/Calibrators/CalibrateXYZAccuracyControl.axaml +++ b/UVtools.WPF/Controls/Calibrators/CalibrateXYZAccuracyControl.axaml @@ -30,7 +30,7 @@ Increment="0.1" Minimum="0" Maximum="10000" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.DisplayWidth}"/> <TextBlock Grid.Row="0" Grid.Column="4" VerticalAlignment="Center" @@ -45,7 +45,7 @@ Increment="0.1" Minimum="0" Maximum="10000" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.DisplayHeight}"/> <TextBlock Grid.Row="0" Grid.Column="10" VerticalAlignment="Center" @@ -59,7 +59,7 @@ Increment="0.01" Minimum="0.01" Maximum="0.30" - FormatString="F02" + FormatString="F3" Value="{Binding Operation.LayerHeight}" /> <TextBlock Grid.Row="2" Grid.Column="4" @@ -87,7 +87,7 @@ Increment="0.5" Minimum="0.1" Maximum="200" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.BottomExposure}"/> <TextBlock Grid.Row="4" Grid.Column="4" VerticalAlignment="Center" @@ -101,7 +101,7 @@ Increment="0.5" Minimum="0.1" Maximum="200" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.NormalExposure}"/> <TextBlock Grid.Row="4" Grid.Column="10" VerticalAlignment="Center" @@ -115,7 +115,7 @@ Increment="1" Minimum="5" Maximum="100" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.XSize}"/> <TextBlock Grid.Row="6" Grid.Column="4" VerticalAlignment="Center" @@ -129,7 +129,7 @@ Increment="1" Minimum="5" Maximum="100" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.YSize}"/> <TextBlock Grid.Row="6" Grid.Column="10" VerticalAlignment="Center" @@ -143,7 +143,7 @@ Increment="1" Minimum="5" Maximum="100" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.ZSize}"/> <TextBlock Grid.Row="8" Grid.Column="4" VerticalAlignment="Center" @@ -213,7 +213,7 @@ Increment="0.5" Minimum="0" Maximum="100" - FormatString="F02" + FormatString="F2" IsEnabled="{Binding Operation.HollowModel}" Value="{Binding Operation.WallThickness}"/> <TextBlock Grid.Row="12" Grid.Column="10" @@ -362,7 +362,7 @@ Minimum="0" Maximum="100" Width="150" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.ObservedXSize}"/> <TextBlock VerticalAlignment="Center" Text="mm"/> @@ -374,7 +374,7 @@ Minimum="0" Maximum="100" Width="150" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.ObservedYSize}"/> <TextBlock VerticalAlignment="Center" Text="mm"/> @@ -386,7 +386,7 @@ Minimum="0" Maximum="100" Width="150" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.ObservedZSize}"/> <TextBlock VerticalAlignment="Center" Text="mm"/> </StackPanel> diff --git a/UVtools.WPF/Controls/Tools/ToolCalculatorControl.axaml b/UVtools.WPF/Controls/Tools/ToolCalculatorControl.axaml index 2610afd..c179b3b 100644 --- a/UVtools.WPF/Controls/Tools/ToolCalculatorControl.axaml +++ b/UVtools.WPF/Controls/Tools/ToolCalculatorControl.axaml @@ -85,7 +85,7 @@ Minimum="0" Maximum="100000" Increment="0.01" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.CalcMillimetersToPixels.DisplayWidth}" /> <TextBlock @@ -107,7 +107,7 @@ Minimum="0" Maximum="100000" Increment="0.01" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.CalcMillimetersToPixels.DisplayHeight}" /> <TextBlock @@ -136,7 +136,7 @@ Minimum="0" Maximum="100000" Increment="0.5" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.CalcMillimetersToPixels.Millimeters}" /> <TextBlock @@ -271,7 +271,7 @@ Minimum="0" Maximum="1000" Increment="1.0" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.CalcLightOffDelay.LiftHeight}"/> <TextBlock Grid.Row="0" @@ -292,7 +292,7 @@ Minimum="0" Maximum="1000" Increment="1.0" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.CalcLightOffDelay.LiftSpeed}"/> <TextBlock Grid.Row="2" @@ -313,7 +313,7 @@ Minimum="0" Maximum="1000" Increment="1.0" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.CalcLightOffDelay.RetractSpeed}"/> <TextBlock Grid.Row="4" @@ -334,7 +334,7 @@ Minimum="0" Maximum="1000" Increment="0.5" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.CalcLightOffDelay.WaitTime}"/> <TextBlock Grid.Row="6" @@ -413,7 +413,7 @@ Minimum="0" Maximum="1000" Increment="1.0" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.CalcLightOffDelay.BottomLiftHeight}"/> <TextBlock Grid.Row="0" @@ -434,7 +434,7 @@ Minimum="0" Maximum="1000" Increment="1.0" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.CalcLightOffDelay.BottomLiftSpeed}"/> <TextBlock Grid.Row="2" @@ -455,7 +455,7 @@ Minimum="0" Maximum="1000" Increment="0.5" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.CalcLightOffDelay.BottomWaitTime}"/> <TextBlock Grid.Row="6" @@ -587,7 +587,7 @@ Minimum="0" Maximum="100000" Increment="0.01" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.CalcOptimalModelTilt.DisplayWidth}" /> <TextBlock @@ -609,7 +609,7 @@ Minimum="0" Maximum="100000" Increment="0.01" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.CalcOptimalModelTilt.DisplayHeight}" /> <TextBlock @@ -638,8 +638,7 @@ Minimum="0.01" Maximum="0.20" Increment="0.01" - FormatString="F02" - + FormatString="F3" Value="{Binding Operation.CalcOptimalModelTilt.LayerHeight}" /> <TextBlock diff --git a/UVtools.WPF/Controls/Tools/ToolDynamicLayerHeightControl.axaml b/UVtools.WPF/Controls/Tools/ToolDynamicLayerHeightControl.axaml index 38e18af..731d1e6 100644 --- a/UVtools.WPF/Controls/Tools/ToolDynamicLayerHeightControl.axaml +++ b/UVtools.WPF/Controls/Tools/ToolDynamicLayerHeightControl.axaml @@ -10,39 +10,6 @@ <Grid RowDefinitions="Auto,0,Auto,10,Auto,10,Auto,10,Auto" ColumnDefinitions="Auto,10,150,5,Auto,20,Auto,10,150,5,Auto"> - <!-- - <TextBlock - Grid.Row="0" Grid.Column="0" - VerticalAlignment="Center" - ToolTip.Tip="The printer display width. Required to calculate the XY pixel resolution." - Text="Display width:"/> - <NumericUpDown Grid.Row="0" Grid.Column="2" - - Increment="0.1" - Minimum="0" - Maximum="10000" - FormatString="F02" - Value="{Binding Operation.DisplayWidth}"/> - <TextBlock Grid.Row="0" Grid.Column="4" - VerticalAlignment="Center" - Text="mm"/> - - <TextBlock Grid.Row="0" Grid.Column="6" - VerticalAlignment="Center" - ToolTip.Tip="The printer display height. Required to calculate the XY pixel resolution." - Text="Display height:"/> - <NumericUpDown Grid.Row="0" Grid.Column="8" - - Increment="0.1" - Minimum="0" - Maximum="10000" - FormatString="F02" - Value="{Binding Operation.DisplayHeight}"/> - <TextBlock Grid.Row="0" Grid.Column="10" - VerticalAlignment="Center" - Text="mm"/> - !--> - <TextBlock Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" ToolTip.Tip="Never use less than this minimum layer height, layers will always stack at least to this height." diff --git a/UVtools.WPF/Controls/Tools/ToolRotateControl.axaml b/UVtools.WPF/Controls/Tools/ToolRotateControl.axaml index 4181605..c83c242 100644 --- a/UVtools.WPF/Controls/Tools/ToolRotateControl.axaml +++ b/UVtools.WPF/Controls/Tools/ToolRotateControl.axaml @@ -11,7 +11,7 @@ Minimum="-359.99" Maximum="359.99" Increment="1.0" - FormatString="F02" + FormatString="F2" Value="{Binding Operation.AngleDegrees}" /> <TextBlock VerticalAlignment="Center" Text="degrees"/> diff --git a/UVtools.WPF/UVtools.WPF.csproj b/UVtools.WPF/UVtools.WPF.csproj index 192c8c1..14e4907 100644 --- a/UVtools.WPF/UVtools.WPF.csproj +++ b/UVtools.WPF/UVtools.WPF.csproj @@ -12,7 +12,7 @@ <PackageLicenseFile>LICENSE</PackageLicenseFile> <RepositoryUrl>https://github.com/sn4k3/UVtools</RepositoryUrl> <RepositoryType>Git</RepositoryType> - <Version>2.8.3</Version> + <Version>2.8.4</Version> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> diff --git a/UVtools.WPF/Windows/SettingsWindow.axaml b/UVtools.WPF/Windows/SettingsWindow.axaml index cd66987..1799cf3 100644 --- a/UVtools.WPF/Windows/SettingsWindow.axaml +++ b/UVtools.WPF/Windows/SettingsWindow.axaml @@ -1472,7 +1472,7 @@ Minimum="0" Maximum="255" Increment="0.5" - FormatString="F02" + FormatString="F2" Value="{Binding Settings.Automations.LightOffDelay}"/> <TextBlock Grid.Row="0" Grid.Column="4" VerticalAlignment="Center" @@ -1489,7 +1489,7 @@ Minimum="0" Maximum="255" Increment="0.5" - FormatString="F02" + FormatString="F2" Value="{Binding Settings.Automations.BottomLightOffDelay}"/> <TextBlock Grid.Row="0" Grid.Column="10" VerticalAlignment="Center" |