mirror of
https://github.com/eliasstepanik/OSCADSharpDotnet7.git
synced 2026-01-11 21:48:34 +00:00
Fix for Hull and Minkowski not adding the basis object to the children affected by the Hull/Minkowski operation.
This commit is contained in:
parent
1402690f2d
commit
5a61dd2199
@ -13,12 +13,14 @@ namespace OSCADSharp.ConsoleTests
|
||||
{
|
||||
static void Main(string[] args)
|
||||
{
|
||||
var cube = new Cube(null, true).Translate(10, 0, 5).Scale(1, 1, 5);
|
||||
var sphere = new Sphere().Mimic(cube).Translate(0, 0, 10);
|
||||
string script = cube.Hull(sphere, new Cylinder()).ToString();
|
||||
var cube = new Cube();
|
||||
var sphere = new Sphere().Translate(0, 0, 2);
|
||||
var hull = cube.Hull(sphere);
|
||||
|
||||
string script = hull.ToString();
|
||||
|
||||
File.WriteAllLines("test.scad", new string[] { script.ToString() });
|
||||
Console.ReadKey();
|
||||
//Console.ReadKey();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
28
OSCADSharp/OSCADSharp.UnitTests/HullTests.cs
Normal file
28
OSCADSharp/OSCADSharp.UnitTests/HullTests.cs
Normal file
@ -0,0 +1,28 @@
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using OSCADSharp.Solids;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace OSCADSharp.UnitTests
|
||||
{
|
||||
|
||||
[TestClass]
|
||||
public class HullTests
|
||||
{
|
||||
[TestMethod]
|
||||
public void Hull_BasisObjectAppearsInHullChildren()
|
||||
{
|
||||
var cube = new Cube();
|
||||
var sphere = new Sphere().Translate(0, 0, 2);
|
||||
var hull = cube.Hull(sphere);
|
||||
|
||||
var children = hull.Children();
|
||||
|
||||
Assert.IsTrue(children.Contains(cube));
|
||||
Assert.IsTrue(children.Contains(sphere));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -54,6 +54,7 @@
|
||||
<ItemGroup>
|
||||
<Compile Include="CubeTests.cs" />
|
||||
<Compile Include="CylinderTests.cs" />
|
||||
<Compile Include="HullTests.cs" />
|
||||
<Compile Include="OSCADObjectTests.cs" />
|
||||
<Compile Include="SphereTests.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
|
||||
@ -139,9 +139,9 @@ namespace OSCADSharp
|
||||
/// </summary>
|
||||
/// <param name="nodes">Nodes to sum with</param>
|
||||
/// <returns>A minkowski sum</returns>
|
||||
public OSCADObject Minkowski(params OSCADObject[] nodes)
|
||||
public OSCADObject Minkowski(params OSCADObject[] objects)
|
||||
{
|
||||
return new MinkowskiedObject(nodes);
|
||||
return doBlockStatement("Minkowski", objects, (children) => { return new MinkowskiedObject(children); });
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -149,9 +149,9 @@ namespace OSCADSharp
|
||||
/// </summary>
|
||||
/// <param name="nodes">Nodes to hull</param>
|
||||
/// <returns>Hull of nodes</returns>
|
||||
public OSCADObject Hull(params OSCADObject[] nodes)
|
||||
public OSCADObject Hull(params OSCADObject[] objects)
|
||||
{
|
||||
return new HulledObject(nodes);
|
||||
return doBlockStatement("Hull", objects, (children) => { return new HulledObject(children); });
|
||||
}
|
||||
#endregion
|
||||
|
||||
@ -164,7 +164,7 @@ namespace OSCADSharp
|
||||
/// <returns></returns>
|
||||
public OSCADObject Union(params OSCADObject[] objects)
|
||||
{
|
||||
return doBoolean("Union", objects, (children) => { return new Union(children); });
|
||||
return doBlockStatement("Union", objects, (children) => { return new Union(children); });
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -175,7 +175,7 @@ namespace OSCADSharp
|
||||
/// <returns></returns>
|
||||
public OSCADObject Difference(params OSCADObject[] objects)
|
||||
{
|
||||
return doBoolean("Difference", objects, (children) => { return new Difference(children); });
|
||||
return doBlockStatement("Difference", objects, (children) => { return new Difference(children); });
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -187,10 +187,10 @@ namespace OSCADSharp
|
||||
/// <returns></returns>
|
||||
public OSCADObject Intersection(params OSCADObject[] objects)
|
||||
{
|
||||
return doBoolean("Intersection", objects, (children) => { return new Intersection(children); });
|
||||
return doBlockStatement("Intersection", objects, (children) => { return new Intersection(children); });
|
||||
}
|
||||
|
||||
private OSCADObject doBoolean(string name, OSCADObject[] objects, Func<IEnumerable<OSCADObject>, OSCADObject> factory)
|
||||
private OSCADObject doBlockStatement(string name, OSCADObject[] objects, Func<IEnumerable<OSCADObject>, OSCADObject> factory)
|
||||
{
|
||||
if (objects == null || objects.Length < 1)
|
||||
{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user