public static Location ToSAM(this gbXMLSerializer.Location location, double tolerance = Tolerance.MicroDistance) { if (location == null) { return(null); } double longitude; if (!double.TryParse(location.Longitude, out longitude)) { longitude = 0; } double latitude; if (!double.TryParse(location.Latitude, out latitude)) { latitude = 0; } Location result = new Location(location.Name, Core.Query.Round(longitude, tolerance), Core.Query.Round(latitude, tolerance), 0); return(result); }
public static gbXMLSerializer.Location TogbXML(this Location location, Address address = null, double tolerance = Core.Tolerance.MicroDistance) { if (location == null) { return(null); } gbXMLSerializer.Location location_gbXML = new gbXMLSerializer.Location(); location_gbXML.Latitude = Core.Query.Round(location.Latitude, tolerance).ToString(); location_gbXML.Longitude = Core.Query.Round(location.Longitude, tolerance).ToString(); location_gbXML.Name = location.Name; location_gbXML.CADModelAzimuth = 0; string postalCode = address?.PostalCode; if (!string.IsNullOrWhiteSpace(postalCode)) { location_gbXML.ZipcodeOrPostalCode = postalCode; } else { location_gbXML.ZipcodeOrPostalCode = "000000"; } return(location_gbXML); }
public static Address ToSAM_Address(this gbXMLSerializer.Location location) { if (location == null) { return(null); } Address result = new Address(string.Empty, string.Empty, location.ZipcodeOrPostalCode, CountryCode.Undefined); return(result); }
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; }