Reworked Sphere to support binding either Diameter or Radius

This commit is contained in:
Michael Smith 2016-02-29 18:34:19 -08:00
parent 0994750fb4
commit 5487af3d95
2 changed files with 31 additions and 2 deletions

View File

@ -132,5 +132,21 @@ namespace OSCADSharp.UnitTests
string script = sphere.ToString();
Assert.IsTrue(script.Contains("r = mySphereRadius"));
}
[TestMethod]
public void Sphere_BindingDiameterSetsDiameterInOutput()
{
string variableName = "diam";
double diam = 20;
Variables.Global.Add(variableName, diam);
var sphere = new Sphere();
sphere.Bind("Diameter", Variables.Global["diam"]);
Assert.IsTrue(sphere.Diameter == diam);
string script = sphere.ToString();
Assert.IsTrue(script.Contains("d = diam"));
}
}
}

View File

@ -75,7 +75,16 @@ namespace OSCADSharp.Solids
{
StatementBuilder sb = new StatementBuilder(this.bindings);
sb.Append("sphere(");
sb.AppendValuePairIfExists("r", this.Radius);
if (this.bindings.Contains("d"))
{
sb.AppendValuePairIfExists("d", this.Diameter);
}
else
{
sb.AppendValuePairIfExists("r", this.Radius);
}
sb.AppendValuePairIfExists("$fn", this.Resolution, true);
sb.AppendValuePairIfExists("$fa", this.MinimumAngle, true);
sb.AppendValuePairIfExists("$fs", this.MinimumFragmentSize, true);
@ -123,7 +132,11 @@ namespace OSCADSharp.Solids
private Bindings bindings = new Bindings(new Dictionary<string, string>()
{
{ "radius", "r" }
{ "radius", "r" },
{ "minimumangle", "$fa" },
{ "minimumFragmentsize", "$fs" },
{ "resolution", "$fn" },
{ "diameter", "d" }
});
/// <summary>