mirror of
https://github.com/eliasstepanik/OSCADSharpDotnet7.git
synced 2026-01-26 04:18:27 +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)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
var cube = new Cube(null, true).Translate(10, 0, 5).Scale(1, 1, 5);
|
var cube = new Cube();
|
||||||
var sphere = new Sphere().Mimic(cube).Translate(0, 0, 10);
|
var sphere = new Sphere().Translate(0, 0, 2);
|
||||||
string script = cube.Hull(sphere, new Cylinder()).ToString();
|
var hull = cube.Hull(sphere);
|
||||||
|
|
||||||
|
string script = hull.ToString();
|
||||||
|
|
||||||
File.WriteAllLines("test.scad", new string[] { script.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>
|
<ItemGroup>
|
||||||
<Compile Include="CubeTests.cs" />
|
<Compile Include="CubeTests.cs" />
|
||||||
<Compile Include="CylinderTests.cs" />
|
<Compile Include="CylinderTests.cs" />
|
||||||
|
<Compile Include="HullTests.cs" />
|
||||||
<Compile Include="OSCADObjectTests.cs" />
|
<Compile Include="OSCADObjectTests.cs" />
|
||||||
<Compile Include="SphereTests.cs" />
|
<Compile Include="SphereTests.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
|||||||
@ -139,9 +139,9 @@ namespace OSCADSharp
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="nodes">Nodes to sum with</param>
|
/// <param name="nodes">Nodes to sum with</param>
|
||||||
/// <returns>A minkowski sum</returns>
|
/// <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>
|
/// <summary>
|
||||||
@ -149,9 +149,9 @@ namespace OSCADSharp
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="nodes">Nodes to hull</param>
|
/// <param name="nodes">Nodes to hull</param>
|
||||||
/// <returns>Hull of nodes</returns>
|
/// <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
|
#endregion
|
||||||
|
|
||||||
@ -164,7 +164,7 @@ namespace OSCADSharp
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public OSCADObject Union(params OSCADObject[] objects)
|
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>
|
/// <summary>
|
||||||
@ -175,7 +175,7 @@ namespace OSCADSharp
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public OSCADObject Difference(params OSCADObject[] objects)
|
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>
|
/// <summary>
|
||||||
@ -187,10 +187,10 @@ namespace OSCADSharp
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public OSCADObject Intersection(params OSCADObject[] objects)
|
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)
|
if (objects == null || objects.Length < 1)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user