From c5da58cb77184dfa4a6e95b0ca5b5b93fe832e7c Mon Sep 17 00:00:00 2001 From: Lars Brubaker Date: Wed, 6 Apr 2022 17:53:41 -0700 Subject: [PATCH] Adding support for Fuzzy and starting to think about Holes --- .../ApplicationView/EditContext.cs | 6 +- .../ApplicationView/SceneOperations.cs | 62 +++++++++--------- .../EngineMappingsMatterSlice.cs | 8 +++ StaticData/Icons/fuzzy_region.png | Bin 0 -> 6167 bytes StaticData/Translations/Master.txt | 3 + Submodules/MatterSlice | 2 +- Submodules/agg-sharp | 2 +- 7 files changed, 48 insertions(+), 35 deletions(-) create mode 100644 StaticData/Icons/fuzzy_region.png diff --git a/MatterControlLib/ApplicationView/EditContext.cs b/MatterControlLib/ApplicationView/EditContext.cs index 183276bbb..23bb3f6dd 100644 --- a/MatterControlLib/ApplicationView/EditContext.cs +++ b/MatterControlLib/ApplicationView/EditContext.cs @@ -146,9 +146,9 @@ namespace MatterHackers.MatterControl } } } - - // Natural path - private async Task GCodePath(PrinterConfig printer) + + // Natural path + private async Task GCodePath(PrinterConfig printer) { if (File.Exists(this.SourceFilePath)) { diff --git a/MatterControlLib/ApplicationView/SceneOperations.cs b/MatterControlLib/ApplicationView/SceneOperations.cs index 58a373aa7..1f614bad3 100644 --- a/MatterControlLib/ApplicationView/SceneOperations.cs +++ b/MatterControlLib/ApplicationView/SceneOperations.cs @@ -857,11 +857,9 @@ namespace MatterHackers.MatterControl Visible = OperationGroup.GetVisible("Path", false), Operations = new List() { -#if DEBUG - AddSliceSettingsOperation(), -#endif ToggleSupportOperation(), ToggleWipeTowerOperation(), + ToggleFuzzyOperation(), } }, new OperationGroup("Design Apps") @@ -1443,33 +1441,6 @@ namespace MatterHackers.MatterControl }; } - private static SceneOperation AddSliceSettingsOperation() - { - var isExperimental = OemSettings.Instance.WindowTitleExtra == "Experimental"; - -#if !DEBUG - if (!isExperimental) - { - return null; - } -#endif - - return new SceneOperation("Add Slice Settings") - { - OperationType = typeof(IObject3D), - ResultType = typeof(SliceSettingsObject3D), - TitleGetter = () => "Add Slice Settings".Localize(), - Action = (sceneContext) => - { - var sliceSettings = new SliceSettingsObject3D(); - sliceSettings.WrapSelectedItemAndSelect(sceneContext.Scene); - }, - Icon = (theme) => StaticData.Instance.LoadIcon("settings.png", 16, 16).SetToColor(theme.TextColor), - HelpTextGetter = () => "At least 1 part must be selected".Localize().Stars(), - IsEnabled = (sceneContext) => IsMeshObject(sceneContext.Scene.SelectedItem), - }; - } - private static SceneOperation ToggleWipeTowerOperation() { return new SceneOperation("Convert to Wipe Tower") @@ -1501,6 +1472,37 @@ namespace MatterHackers.MatterControl }; } + private static SceneOperation ToggleFuzzyOperation() + { + return new SceneOperation("Convert to Fuzzy Region") + { + TitleGetter = () => "Convert to Fuzzy Region".Localize(), + Action = (sceneContext) => + { + var scene = sceneContext.Scene; + var selectedItem = scene.SelectedItem; + if (selectedItem != null) + { + bool allAreFuzzy = false; + + if (selectedItem is SelectionGroupObject3D) + { + allAreFuzzy = selectedItem.Children.All(i => i.OutputType == PrintOutputTypes.Fuzzy); + } + else + { + allAreFuzzy = selectedItem.OutputType == PrintOutputTypes.Fuzzy; + } + + scene.UndoBuffer.AddAndDo(new SetOutputType(selectedItem, allAreFuzzy ? PrintOutputTypes.Default : PrintOutputTypes.Fuzzy)); + } + }, + Icon = (theme) => StaticData.Instance.LoadIcon("fuzzy_region.png", 16, 16).SetToColor(theme.TextColor).SetPreMultiply(), + HelpTextGetter = () => "At least 1 part must be selected".Localize().Stars(), + IsEnabled = (sceneContext) => IsMeshObject(sceneContext.Scene.SelectedItem), + }; + } + private static SceneOperation TwistOperation() { return new SceneOperation("Twist") diff --git a/MatterControlLib/SlicerConfiguration/EngineMappingsMatterSlice.cs b/MatterControlLib/SlicerConfiguration/EngineMappingsMatterSlice.cs index 6ffc7fcf8..3bb6b42da 100644 --- a/MatterControlLib/SlicerConfiguration/EngineMappingsMatterSlice.cs +++ b/MatterControlLib/SlicerConfiguration/EngineMappingsMatterSlice.cs @@ -332,6 +332,14 @@ namespace MatterHackers.MatterControl.SlicerConfiguration mergeRules += ",W" + AddObjectsForExtruder(wipeTowerObjects, outputOptions, ref savedStlCount); } + var fuzzyObjects = meshItemsOnBuildPlate.Where((item) => item.WorldOutputType() == PrintOutputTypes.Fuzzy); + // if we added user generated wipe tower + if (fuzzyObjects.Any()) + { + // add a flag to the merge rules to let us know there was a wipe tower + mergeRules += ",F" + AddObjectsForExtruder(fuzzyObjects, outputOptions, ref savedStlCount); + } + mergeRules += " "; return outputOptions; diff --git a/StaticData/Icons/fuzzy_region.png b/StaticData/Icons/fuzzy_region.png new file mode 100644 index 0000000000000000000000000000000000000000..ceaf6bef236e2d241fcefa0ee0a94f3aec0ddb7f GIT binary patch literal 6167 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 UQo3z!p$5uNp00i_>zopr0Ql3an*aa+ literal 0 HcmV?d00001 diff --git a/StaticData/Translations/Master.txt b/StaticData/Translations/Master.txt index fc2b1517f..5e55ca919 100644 --- a/StaticData/Translations/Master.txt +++ b/StaticData/Translations/Master.txt @@ -1012,6 +1012,9 @@ Translated:Controls the amount of extrusion English:Controls the speed of printer moves Translated:Controls the speed of printer moves +English:Convert to Fuzzy Region +Translated:Convert to Fuzzy Region + English:Convert to Support Translated:Convert to Support diff --git a/Submodules/MatterSlice b/Submodules/MatterSlice index cf9cf3cd8..5aaffe675 160000 --- a/Submodules/MatterSlice +++ b/Submodules/MatterSlice @@ -1 +1 @@ -Subproject commit cf9cf3cd84dbfadf1ba221700ac269667cc5c27d +Subproject commit 5aaffe6755cb571da356678bcb468bd2b62c38f6 diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index a4a900756..93bcdc151 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit a4a900756db5e0c310c6ff49762aa4414320854c +Subproject commit 93bcdc151fc9a3916c321d0453a6b0ef33248a30