public static List <Construction> UpdateConstructions(this Building building, IEnumerable <Construction> constructions, MaterialLibrary materialLibrary) { if (constructions == null || building == null) { return(null); } List <Construction> result = new List <Construction>(); foreach (Construction construction in constructions) { if (construction == null) { continue; } string uniqueName = construction.UniqueName(); if (string.IsNullOrWhiteSpace(uniqueName)) { continue; } List <ConstructionLayer> constructionLayers = construction.ConstructionLayers; if (constructionLayers == null || constructionLayers.Count == 0) { continue; } TBD.Construction construction_TBD = building.GetConstructionByName(uniqueName); if (construction_TBD == null) { construction_TBD = building.AddConstruction(null); construction_TBD.name = uniqueName; } construction_TBD.type = Query.ConstructionTypes(constructionLayers, materialLibrary); if (construction_TBD.UpdateConstruction(constructionLayers, materialLibrary)) { result.Add(construction); } } return(result); }
public static List <ApertureConstruction> UpdateConstructions(this Building building, IEnumerable <ApertureConstruction> apertureConstructions, MaterialLibrary materialLibrary) { if (apertureConstructions == null || building == null) { return(null); } List <ApertureConstruction> result = new List <ApertureConstruction>(); foreach (ApertureConstruction apertureConstruction in apertureConstructions) { if (apertureConstruction == null) { continue; } string uniqueName = apertureConstruction.UniqueName(); if (string.IsNullOrWhiteSpace(uniqueName)) { continue; } TBD.Construction construction_TBD = null; List <ConstructionLayer> constructionLayers = null; ConstructionTypes constructionTypes; //Pane Construction string paneApertureConstructionUniqueName = apertureConstruction.PaneApertureConstructionUniqueName(); construction_TBD = building.GetConstructionByName(paneApertureConstructionUniqueName); if (construction_TBD == null) { construction_TBD = building.AddConstruction(null); construction_TBD.name = paneApertureConstructionUniqueName; } constructionTypes = ConstructionTypes.tcdTransparentConstruction; constructionLayers = apertureConstruction.PaneConstructionLayers; if (constructionLayers != null && constructionLayers.Count != 0) { constructionTypes = Query.ConstructionTypes(constructionLayers, materialLibrary); } construction_TBD.type = constructionTypes; if (construction_TBD.UpdateConstruction(constructionLayers, materialLibrary)) { result.Add(apertureConstruction); } //Frame Construction string frameApertureConstructionUniqueName = apertureConstruction.FrameApertureConstructionUniqueName(); construction_TBD = building.GetConstructionByName(frameApertureConstructionUniqueName); if (construction_TBD == null) { construction_TBD = building.AddConstruction(null); construction_TBD.name = frameApertureConstructionUniqueName; } constructionTypes = ConstructionTypes.tcdOpaqueConstruction; constructionLayers = apertureConstruction.FrameConstructionLayers; //Frame TBD.Construction cannot be empty if (constructionLayers == null || constructionLayers.Count == 0) { constructionLayers = apertureConstruction.PaneConstructionLayers; } if (constructionLayers != null && constructionLayers.Count != 0) { constructionTypes = Query.ConstructionTypes(constructionLayers, materialLibrary); } construction_TBD.type = constructionTypes; if (construction_TBD.UpdateConstruction(constructionLayers, materialLibrary)) { result.Add(apertureConstruction); } } return(result); }