From 2fd226c15573238da9a8e860619a08e53208d083 Mon Sep 17 00:00:00 2001 From: LarsBrubaker Date: Tue, 3 May 2022 08:30:20 -0700 Subject: [PATCH] Improving hole handleing --- .../View3D/Actions/CombineObject3D_2.cs | 37 +++++++++++++------ Submodules/agg-sharp | 2 +- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/MatterControlLib/PartPreviewWindow/View3D/Actions/CombineObject3D_2.cs b/MatterControlLib/PartPreviewWindow/View3D/Actions/CombineObject3D_2.cs index 4434acc35..bcdb210eb 100644 --- a/MatterControlLib/PartPreviewWindow/View3D/Actions/CombineObject3D_2.cs +++ b/MatterControlLib/PartPreviewWindow/View3D/Actions/CombineObject3D_2.cs @@ -129,11 +129,16 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D SourceContainer.Visible = true; RemoveAllButSource(); + var holes = SourceContainer.VisibleMeshes().Where(m => m.WorldOutputType(this) == PrintOutputTypes.Hole); + Mesh resultsMesh = null; var participants = SourceContainer.VisibleMeshes().Where(m => m.WorldOutputType(this) != PrintOutputTypes.Hole); if (participants.Count() == 0) { - return; + if (holes.Count() == 0) + { + return; + } } else { @@ -145,23 +150,33 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D Mesh = resultsMesh }; - if (resultsMesh != null) + if (holes != null) { - var holes = SourceContainer.VisibleMeshes().Where(m => m.WorldOutputType(this) == PrintOutputTypes.Hole); - if (holes != null) + var holesMesh = CombineParticipanets(null, holes, cancellationToken); + if (holesMesh != null) { - var holesMesh = CombineParticipanets(null, holes, cancellationToken); var holesItem = new Object3D() { Mesh = holesMesh }; - var resultItems = SubtractObject3D_2.DoSubtract(null, - new List() { resultsItem }, - new List() { holesItem }, - null, - cancellationToken); - resultsItem.Mesh = resultItems.First().Mesh; + if (resultsMesh != null) + { + var resultItems = SubtractObject3D_2.DoSubtract(null, + new List() { resultsItem }, + new List() { holesItem }, + null, + cancellationToken); + + resultsItem.Mesh = resultItems.First().Mesh; + } + else + { + holesItem.CopyProperties(holes.First(), Object3DPropertyFlags.All & (~Object3DPropertyFlags.Matrix)); + this.Children.Add(holesItem); + SourceContainer.Visible = false; + return; + } } } diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index 54c34975d..816644eda 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit 54c34975dc6d03cfab7875582256030810254d69 +Subproject commit 816644eda817f2e36dd68e034ffa19eef6a5548b