Merge pull request #5323 from larsbrubaker/may_release

May release
This commit is contained in:
Lars Brubaker 2022-05-13 17:50:14 -07:00 committed by GitHub
commit f08b220c1e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 107 additions and 9 deletions

View file

@ -368,11 +368,17 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
void SetToSolid() void SetToSolid()
{ {
// make sure the render mode is set to shaded or outline // make sure the render mode is set to shaded or outline
if (sceneContext.ViewState.RenderType != RenderOpenGl.RenderTypes.Shaded switch(sceneContext.ViewState.RenderType)
&& sceneContext.ViewState.RenderType != RenderOpenGl.RenderTypes.Outlines) {
{ case RenderOpenGl.RenderTypes.Shaded:
// make sure the render mode is set to outline case RenderOpenGl.RenderTypes.Outlines:
sceneContext.ViewState.RenderType = RenderOpenGl.RenderTypes.Outlines; case RenderOpenGl.RenderTypes.Polygons:
break;
default:
// make sure the render mode is set to outline
sceneContext.ViewState.RenderType = RenderOpenGl.RenderTypes.Outlines;
break;
} }
var currentOutputType = selectedItem.WorldOutputType(); var currentOutputType = selectedItem.WorldOutputType();

View file

@ -142,7 +142,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
} }
else else
{ {
resultsMesh = Object3D.CombineParticipanets(SourceContainer, participants, cancellationToken, reporter); resultsMesh = Object3D.CombineParticipants(SourceContainer, participants, cancellationToken, reporter);
} }
var resultsItem = new Object3D() var resultsItem = new Object3D()
@ -152,7 +152,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
if (holes != null) if (holes != null)
{ {
var holesMesh = CombineParticipanets(SourceContainer, holes, cancellationToken, null); var holesMesh = CombineParticipants(SourceContainer, holes, cancellationToken, null);
if (holesMesh != null) if (holesMesh != null)
{ {
var holesItem = new Object3D() var holesItem = new Object3D()

@ -1 +1 @@
Subproject commit 8f4e9b969638d3c70ba81ac4f1a2d8faeda8c73b Subproject commit b64bd80cccc97bd8c0f9971d72c5b953588f6fa8

View file

@ -36,9 +36,12 @@ using MatterHackers.MatterControl.DesignTools;
using MatterHackers.MatterControl.DesignTools.Operations; using MatterHackers.MatterControl.DesignTools.Operations;
using MatterHackers.MatterControl.PartPreviewWindow.View3D; using MatterHackers.MatterControl.PartPreviewWindow.View3D;
using MatterHackers.MatterControl.Tests.Automation; using MatterHackers.MatterControl.Tests.Automation;
using MatterHackers.PolygonMesh;
using MatterHackers.PolygonMesh.Processors;
using MatterHackers.VectorMath; using MatterHackers.VectorMath;
using NUnit.Framework; using NUnit.Framework;
using System.Linq; using System.Linq;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace MatterControl.Tests.MatterControl namespace MatterControl.Tests.MatterControl
@ -280,6 +283,8 @@ namespace MatterControl.Tests.MatterControl
[Test, Category("InteractiveScene")] [Test, Category("InteractiveScene")]
public async Task SubtractTests() public async Task SubtractTests()
{ {
StartupMC();
// Subtract has correct number of results // Subtract has correct number of results
{ {
var root = new Object3D(); var root = new Object3D();
@ -287,7 +292,7 @@ namespace MatterControl.Tests.MatterControl
var cubeB = await CubeObject3D.Create(20, 20, 20); var cubeB = await CubeObject3D.Create(20, 20, 20);
var offsetCubeB = new TranslateObject3D(cubeB, 10); var offsetCubeB = new TranslateObject3D(cubeB, 10);
var subtract = new SubtractObject3D(); var subtract = new SubtractObject3D_2();
subtract.Children.Add(cubeA); subtract.Children.Add(cubeA);
subtract.Children.Add(offsetCubeB); subtract.Children.Add(offsetCubeB);
subtract.SelectedChildren.Add(offsetCubeB.ID); subtract.SelectedChildren.Add(offsetCubeB.ID);
@ -564,6 +569,93 @@ namespace MatterControl.Tests.MatterControl
Assert.IsTrue(rootAabb.Equals(new AxisAlignedBoundingBox(new Vector3(-10, -10, -10), new Vector3(10, 10, 11)), .01)); Assert.IsTrue(rootAabb.Equals(new AxisAlignedBoundingBox(new Vector3(-10, -10, -10), new Vector3(10, 10, 11)), .01));
} }
[Test]
public void CombineTests2()
{
// overlaping results in simple new mesh
{
var meshA = PlatonicSolids.CreateCube(10, 10, 10);
meshA.Translate(0, 0, 0);
var meshB = PlatonicSolids.CreateCube(10, 10, 10);
meshB.Translate(0, 5, 0);
var mesh = Object3D.CombineParticipants(null,
new IObject3D[]
{
new Object3D() { Mesh = meshA },
new Object3D() { Mesh = meshB },
},
new CancellationToken());
Assert.AreEqual(12, mesh.Faces.Count());
var aabb = mesh.GetAxisAlignedBoundingBox();
Assert.AreEqual(15, aabb.YSize, .001);
}
// multiple overlaping faces all combine
{
var meshA = PlatonicSolids.CreateCube(10, 10, 10);
meshA.Translate(0, 0, 0);
var meshB = PlatonicSolids.CreateCube(10, 10, 10);
meshB.Translate(0, -3, 0);
var meshC = PlatonicSolids.CreateCube(10, 10, 10);
meshC.Translate(0, 3, 0);
var mesh = Object3D.CombineParticipants(null,
new IObject3D[]
{
new Object3D() { Mesh = meshA },
new Object3D() { Mesh = meshB },
new Object3D() { Mesh = meshC },
},
new CancellationToken());
Assert.AreEqual(12, mesh.Faces.Count());
var aabb = mesh.GetAxisAlignedBoundingBox();
Assert.AreEqual(16, aabb.YSize, .001);
}
// a back face against a front face, both are removed
{
var meshA = PlatonicSolids.CreateCube(10, 10, 10);
meshA.Translate(0, -5, 0);
var meshB = PlatonicSolids.CreateCube(10, 10, 10);
meshB.Translate(0, 5, 0);
var mesh = Object3D.CombineParticipants(null,
new IObject3D[]
{
new Object3D() { Mesh = meshA },
new Object3D() { Mesh = meshB },
},
new CancellationToken());
Assert.AreEqual(12, mesh.Faces.Count());
var aabb = mesh.GetAxisAlignedBoundingBox();
Assert.AreEqual(20, aabb.YSize, .001);
}
// multiple overlaping faces all combine
{
// right side at 0
var meshA = PlatonicSolids.CreateCube(10, 5, 10);
meshA.Translate(-5, 0, 0);
// left side at -5
var meshB = PlatonicSolids.CreateCube(10, 5, 10);
meshB.Translate(0, 0, 0);
// right side at 0
var meshC = PlatonicSolids.CreateCube(5, 10, 10);
meshC.Translate(-2.5, 0, 0);
var mesh = Object3D.CombineParticipants(null,
new IObject3D[]
{
new Object3D() { Mesh = meshA },
new Object3D() { Mesh = meshB },
new Object3D() { Mesh = meshC },
},
new CancellationToken());
StlProcessing.Save(mesh, @"C:\temp\temp.stl", new CancellationToken());
Assert.AreEqual(20, mesh.Faces.Count());
var aabb = mesh.GetAxisAlignedBoundingBox();
Assert.AreEqual(16, aabb.YSize, .001);
}
}
[Test, Category("InteractiveScene")] [Test, Category("InteractiveScene")]
public async Task AlignObjectHasCorrectPositionsOnXAxis() public async Task AlignObjectHasCorrectPositionsOnXAxis()
{ {