public GlazingConstruction Add(GlazingConstruction obj) { if (obj == null) { return(null); } if (GlazingConstructions == null) { GlazingConstructions = new List <GlazingConstruction>(); } foreach (var m in obj.Layers) { if (m.Material is GlazingMaterial) { this.Add((GlazingMaterial)m.Material); } } if (!GlazingConstructions.Any(i => i.Name == obj.Name)) { GlazingConstructions.Add(obj); return(obj); } else { var oc = GlazingConstructions.Single(o => o.Name == obj.Name); CopyObjectData(obj, oc, "", BindingFlags.Public | BindingFlags.Instance); return(oc); } }
public static string GetRadianceMaterial(GlazingConstruction c) { //return "void plastic White_50 0 0 5 0.5 0.5 0.5 0 0"; //return "void glass glass_70 0 0 3 0.77 0.77 0.77"; double trans = 1.0; foreach (var l in c.Layers) { GlazingMaterial gl = l.Material as GlazingMaterial; if (gl != null) { trans *= gl.VisibleTransmittance; } } double refractiveIndex = 1.52; double rad = (Math.Sqrt(0.8402528435 + 0.0072522239 * trans * trans) - 0.9166530661) / 0.0036261119 / trans; return(String.Format("void glass {2}_glazing 0 0 4 {0} {0} {0} {1}\n", rad, refractiveIndex, c.Name)); }