public static string CreateXML(string filename, gbXML gbx) { try { XmlSerializer szer = new XmlSerializer(typeof(gbXML)); TextWriter tw = new StreamWriter(filename); szer.Serialize(tw, gbx); tw.Close(); return "Ok"; } catch (Exception e) { return e.ToString(); } }
public static bool CreateSerial(string filepath) { //place an in memory object here that represents your class representation of the building List<EPObj.MemorySafe_Spaces> myspace = new List<EPObj.MemorySafe_Spaces>(); myspace = EnergyPlusClass.EPlusSpacestoObjectList(@"C:\Users\Chiensi\Documents\C\Buro Happold\Oregon Sustainability Center\Run 1 + Daylighting Only\Run 1 new.idf"); gb.gbci = new CultureInfo(String.Empty); bool ret = false; //the basics //constructor to define the basics gbXML gbx = new gbXML(); gbx.lengthUnit = lengthUnitEnum.Feet; gbx.temperatureUnit = temperatureUnitEnum.F; string id = "cmps-1"; Campus cmp = CreateCampus(id); cmp.Buildings = new Building[10000]; gbx.Campus = cmp; //where does this location information from? it could be smartly inferred somehow, but otherwise specified by the user/programmer Location zeloc = new Location(); zeloc.Name = "San Francisco, CA"; zeloc.Latitude = "37.795"; zeloc.Longitude = "-122.394"; //end the basics //tie location and campus back to the gbXML file cmp.Location = zeloc; //Define the building(s) on the site //CHarriman Septempber 19 2013 cmp.Buildings[0] = MakeBuilding(2000,"bldg-1",buildingTypeEnum.DiningBarLoungeOrLeisure); //CHarriman September 19 2013 //define the stories for each building //several ways to do this List<List<double>> points = prod.MakeFakeList(5); BuildingStorey bs = MakeStorey(1, points); //CHarriman Jan 15 2014 //define the spaces for each building (these come from a space object elsewhere List<Space> gbSpaces = new List<Space>(); gbSpaces = MakeSpacesFromEPObj(myspace); for (int spacecount = 0; spacecount < gbSpaces.Count(); spacecount++) { cmp.Buildings[0].Spaces[spacecount] = gbSpaces[spacecount]; } //after making all the spaces, I make the surfaces cmp.Surface = new Surface[uniquesurfaces.Count()]; int surfcount = 0; foreach (KeyValuePair<string, Surface> pair in uniquesurfaces) { Surface surf = new Surface(); surf.id = pair.Key; //this is a hard one, how to deal with this? For now, everything is external, and idf can sort of tell me surf.surfaceType = pair.Value.surfaceType; surf.constructionIdRef = pair.Value.constructionIdRef; surf.Name = pair.Value.Name; AdjacentSpaceId[] adjspaces = new AdjacentSpaceId[pair.Value.AdjacentSpaceId.Count()]; int counter = 0; foreach (AdjacentSpaceId adj in pair.Value.AdjacentSpaceId) { adjspaces[counter] = adj; counter++; } surf.AdjacentSpaceId = adjspaces; RectangularGeometry rg = new RectangularGeometry(); rg = pair.Value.RectangularGeometry; surf.RectangularGeometry = rg; surf.PlanarGeometry = pair.Value.PlanarGeometry; cmp.Surface[surfcount] = surf; surfcount++; } cmp.Buildings[0].bldgStories[0] = bs; //write xml to the file XmlSerializer szer = new XmlSerializer(typeof(gbXML)); TextWriter tw = new StreamWriter(filepath); szer.Serialize(tw, gbx); tw.Close(); return ret; }