From ecdea63e56f0236918228d4fc5babb9283abc02f Mon Sep 17 00:00:00 2001 From: Lars Brubaker Date: Mon, 9 May 2022 15:08:00 -0700 Subject: [PATCH] Adding a hole primitive --- .../DesignTools/Primitives/CubeObject3D.cs | 18 ++++++++++++++++++ .../MatterControl/PrimitivesContainer.cs | 4 ++++ .../7375217172574943763-256x256.png | Bin 0 -> 11269 bytes .../9963651946799342786-256x256.png | Bin 0 -> 11269 bytes Submodules/agg-sharp | 2 +- 5 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 StaticData/Images/Thumbnails/7375217172574943763-256x256.png create mode 100644 StaticData/Images/Thumbnails/9963651946799342786-256x256.png diff --git a/MatterControlLib/DesignTools/Primitives/CubeObject3D.cs b/MatterControlLib/DesignTools/Primitives/CubeObject3D.cs index 732aee4eb..7770dfb59 100644 --- a/MatterControlLib/DesignTools/Primitives/CubeObject3D.cs +++ b/MatterControlLib/DesignTools/Primitives/CubeObject3D.cs @@ -159,4 +159,22 @@ namespace MatterHackers.MatterControl.DesignTools change.SetRowVisible(nameof(Radius), () => Round); } } + + public class CubeHoleObject3D : CubeObject3D + { + public override string ThumbnailName => "CubeHole"; + + public CubeHoleObject3D() + { + OutputType = PrintOutputTypes.Hole; + } + + public static async Task Create() + { + var item = new CubeHoleObject3D(); + await item.Rebuild(); + return item; + } + + } } \ No newline at end of file diff --git a/MatterControlLib/Library/Providers/MatterControl/PrimitivesContainer.cs b/MatterControlLib/Library/Providers/MatterControl/PrimitivesContainer.cs index a1431d2c2..d3ed518ac 100644 --- a/MatterControlLib/Library/Providers/MatterControl/PrimitivesContainer.cs +++ b/MatterControlLib/Library/Providers/MatterControl/PrimitivesContainer.cs @@ -63,6 +63,10 @@ namespace MatterHackers.MatterControl.Library "Cube".Localize(), async () => await CubeObject3D.Create()) { DateCreated = new DateTime(index++) }, + new GeneratorItem( + "Hole".Localize(), + async () => await CubeHoleObject3D.Create()) + { DateCreated = new DateTime(index++) }, new GeneratorItem( "Pyramid".Localize(), async () => await PyramidObject3D.Create()) diff --git a/StaticData/Images/Thumbnails/7375217172574943763-256x256.png b/StaticData/Images/Thumbnails/7375217172574943763-256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..bd2d9b7a16dd0c17cb4ff4ba372d09f6ddefbcf3 GIT binary patch literal 11269 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 PU62M(S3j3^P6