public static Output <BH.oM.Environment.SAP.XML.BuildingParts, BH.oM.Environment.SAP.XML.OpeningTypes> ToXML(this List <oM.Environment.SAP.BuildingPart> sapBuildingPart) { List <BH.oM.Environment.SAP.XML.BuildingPart> xmlBuildingParts = new List <BH.oM.Environment.SAP.XML.BuildingPart>(); BH.oM.Environment.SAP.XML.OpeningTypes openingTypes = new oM.Environment.SAP.XML.OpeningTypes(); for (int i = 0; i < sapBuildingPart.Count; i++) { BH.oM.Environment.SAP.XML.BuildingPart xmlBuildingPart = new BH.oM.Environment.SAP.XML.BuildingPart(); xmlBuildingPart.BuildingPartNumber = (i + 1).ToString(); xmlBuildingPart.Identifier = sapBuildingPart[i].identifier; xmlBuildingPart.ConstructionYear = DateTime.Today.Year.ToString(); xmlBuildingPart.Overshading = sapBuildingPart[i].Overshading.FromSAPToXML(); List <oM.Environment.SAP.Opening> opening = new List <oM.Environment.SAP.Opening>(); if (sapBuildingPart[i].Walls.SelectMany(x => x.Openings).ToList() == null && sapBuildingPart[i].Roofs.SelectMany(x => x.Openings).ToList() == null) { xmlBuildingPart.Openings = null; } else { opening.AddRange(sapBuildingPart[i].Walls.SelectMany(x => x.Openings).ToList()); opening.AddRange(sapBuildingPart[i].Roofs.SelectMany(x => x.Openings).ToList()); for (int u = 0; u < opening.Count; u++) { openingTypes.OpeningType.AddRange(opening[u].OpeningType.ToXML().OpeningType); //method to only keep unique ones xmlBuildingPart.Openings = opening.ToXML(); } } List <oM.Environment.SAP.XML.FloorDimension> xmlFloorDimensions = new List <oM.Environment.SAP.XML.FloorDimension>(); xmlFloorDimensions.Add(ToXML(sapBuildingPart[i].Floor, sapBuildingPart[i].Storeys)); xmlBuildingPart.Floors = xmlFloorDimensions; xmlBuildingPart.Roofs = sapBuildingPart[i].Roofs.Select(x => x.ToXML()).ToList(); xmlBuildingPart.Walls = sapBuildingPart[i].Walls.Select(x => x.ToXML()).ToList(); xmlBuildingPart.ThermalBridges = sapBuildingPart[i].ThermalBridges.Select(x => x.ToXML()).ToList(); xmlBuildingParts.Add(xmlBuildingPart); } oM.Environment.SAP.XML.BuildingParts finalXML = new oM.Environment.SAP.XML.BuildingParts(); finalXML.BuildingPart = xmlBuildingParts; return(new Output <BH.oM.Environment.SAP.XML.BuildingParts, BH.oM.Environment.SAP.XML.OpeningTypes>() { Item1 = finalXML, Item2 = openingTypes }); }
public static BH.oM.Environment.SAP.XML.OpeningTypes ToXML(this BH.oM.Environment.SAP.OpeningType sapOpeningtype) { List <oM.Environment.SAP.XML.OpeningType> xmlOpeningTypes = new List <oM.Environment.SAP.XML.OpeningType>(); BH.oM.Environment.SAP.XML.OpeningType xmlOpeningType = new BH.oM.Environment.SAP.XML.OpeningType(); xmlOpeningType.Name = sapOpeningtype.Name; xmlOpeningType.Description = "Type-" + sapOpeningtype.Type.ToString() + "_Uvalue-" + sapOpeningtype.uValue.ToString();; xmlOpeningType.DataSource = sapOpeningtype.DataSource.FromSAPToXMLData(); xmlOpeningType.Type = sapOpeningtype.Type.FromSAPToXMLNumber(); xmlOpeningType.GlazingType = sapOpeningtype.GlazingType.FromSAPToXMLGlazing(); xmlOpeningType.gValue = sapOpeningtype.gValue; xmlOpeningType.FrameFactor = sapOpeningtype.FrameFactor; xmlOpeningType.uValue = sapOpeningtype.uValue; xmlOpeningTypes.Add(xmlOpeningType); oM.Environment.SAP.XML.OpeningTypes finalXML = new oM.Environment.SAP.XML.OpeningTypes(); finalXML.OpeningType = xmlOpeningTypes; return(finalXML); }