예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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;
        }