From d765fe4b3d4e963d978f33d231f23516bd4de13d Mon Sep 17 00:00:00 2001 From: tslater2006 Date: Tue, 21 Sep 2021 14:15:18 -0500 Subject: [PATCH] Add additional setting for Suction Cups to only report those over a certain height --- UVtools.Core/Layers/LayerIssueConfiguration.cs | 6 ++++++ UVtools.Core/Managers/IssueManager.cs | 8 +++++++- UVtools.WPF/MainWindow.Issues.cs | 3 ++- UVtools.WPF/UserSettings.cs | 7 +++++++ UVtools.WPF/Windows/SettingsWindow.axaml | 12 ++++++++++++ 5 files changed, 34 insertions(+), 2 deletions(-) diff --git a/UVtools.Core/Layers/LayerIssueConfiguration.cs b/UVtools.Core/Layers/LayerIssueConfiguration.cs index 334513c..947b10c 100644 --- a/UVtools.Core/Layers/LayerIssueConfiguration.cs +++ b/UVtools.Core/Layers/LayerIssueConfiguration.cs @@ -190,6 +190,12 @@ namespace UVtools.Core.Layers /// public uint RequiredAreaToConsiderSuctionCup { get; set; } = 100; + /// + /// Required minimum height (in mm) to be considered a suction cup + /// + public decimal RequiredHeightToConsiderSuctionCup { get; set; } = 0.5m; + + public ResinTrapDetectionConfiguration(bool enabled = true) { Enabled = enabled; diff --git a/UVtools.Core/Managers/IssueManager.cs b/UVtools.Core/Managers/IssueManager.cs index d146050..0d2288b 100644 --- a/UVtools.Core/Managers/IssueManager.cs +++ b/UVtools.Core/Managers/IssueManager.cs @@ -961,9 +961,15 @@ namespace UVtools.Core.Managers progress.LockAndIncrement(); } + var minSuctionHeight = resinTrapConfig.RequiredHeightToConsiderSuctionCup; + var minNumLayers = Math.Ceiling((minSuctionHeight / (decimal)SlicerFile.LayerHeight)); + foreach (var group in suctionGroups) { - AddIssue(new MainIssue(MainIssue.IssueType.SuctionCup, group)); + if (group.Count >= minNumLayers) + { + AddIssue(new MainIssue(MainIssue.IssueType.SuctionCup, group)); + } } } }); diff --git a/UVtools.WPF/MainWindow.Issues.cs b/UVtools.WPF/MainWindow.Issues.cs index dfdd747..5a63de2 100644 --- a/UVtools.WPF/MainWindow.Issues.cs +++ b/UVtools.WPF/MainWindow.Issues.cs @@ -698,7 +698,8 @@ namespace UVtools.WPF RequiredBlackPixelsToDrain = Settings.Issues.ResinTrapRequiredBlackPixelsToDrain, MaximumPixelBrightnessToDrain = Settings.Issues.ResinTrapMaximumPixelBrightnessToDrain, DetectSuctionCups = Settings.Issues.ComputeSuctionCups, - RequiredAreaToConsiderSuctionCup = Settings.Issues.SuctionCupRequiredAreaToConsider + RequiredAreaToConsiderSuctionCup = Settings.Issues.SuctionCupRequiredAreaToConsider, + RequiredHeightToConsiderSuctionCup = Settings.Issues.SuctionCupRequiredHeightToConsider }; } public ResinTrapDetectionConfiguration GetResinTrapDetectionConfiguration() => GetResinTrapDetectionConfiguration(Settings.Issues.ComputeResinTraps); diff --git a/UVtools.WPF/UserSettings.cs b/UVtools.WPF/UserSettings.cs index 730c1d3..7e62c94 100644 --- a/UVtools.WPF/UserSettings.cs +++ b/UVtools.WPF/UserSettings.cs @@ -798,6 +798,7 @@ namespace UVtools.WPF private byte _resinTrapRequiredBlackPixelsToDrain = 10; private byte _resinTrapMaximumPixelBrightnessToDrain = 30; private uint _suctionCupRequiredAreaToConsider = 10000; + private decimal _suctionCupRequiredHeightToConsider = 0.5m; private byte _touchingBoundMinimumPixelBrightness = 127; private byte _touchingBoundMarginLeft = 5; private byte _touchingBoundMarginTop = 5; @@ -968,6 +969,12 @@ namespace UVtools.WPF set => RaiseAndSetIfChanged(ref _suctionCupRequiredAreaToConsider, value); } + public decimal SuctionCupRequiredHeightToConsider + { + get => _suctionCupRequiredHeightToConsider; + set => RaiseAndSetIfChanged(ref _suctionCupRequiredHeightToConsider, value); + } + public byte TouchingBoundMinimumPixelBrightness { get => _touchingBoundMinimumPixelBrightness; diff --git a/UVtools.WPF/Windows/SettingsWindow.axaml b/UVtools.WPF/Windows/SettingsWindow.axaml index cbfaa16..171bdf0 100644 --- a/UVtools.WPF/Windows/SettingsWindow.axaml +++ b/UVtools.WPF/Windows/SettingsWindow.axaml @@ -1315,6 +1315,18 @@ Text="Bounding area required for an object to be processed during suction cup detection" ToolTip.Tip="Objects with bounding area smaller than this value will not be processed during suction cup detection."/> + + + +