Ejemplo n.º 1
0
        public static Space FromGBXML(this GBXML.Space space, GBXMLSettings settings = null)
        {
            Space bhomS = new oM.Environment.Elements.Space();

            bhomS.Name      = space.Name;
            bhomS.Perimeter = space.PlanarGeoemtry.PolyLoop.FromGBXML();

            OriginContextFragment f = new OriginContextFragment();

            f.ElementID = space.ID;
            bhomS.Fragments.Add(f);
            return(bhomS);
        }
Ejemplo n.º 2
0
        public static GBXML.Space ToGBXML(this List <Panel> panelsAsSpace, Level spaceLevel, GBXMLSettings settings)
        {
            GBXML.Space xmlSpace = new GBXML.Space();

            xmlSpace.Name        = panelsAsSpace.ConnectedSpaceName();
            xmlSpace.ID          = "Space" + xmlSpace.Name.Replace(" ", "").Replace("-", "");
            xmlSpace.CADObjectID = BH.Adapter.XML.Query.CADObjectID(panelsAsSpace);

            List <Polyline>       shellGeometry = panelsAsSpace.ClosedShellGeometry();
            List <GBXML.Polyloop> loopShell     = new List <GBXML.Polyloop>();

            foreach (Polyline p in shellGeometry)
            {
                if (p.NormalAwayFromSpace(panelsAsSpace, settings.PlanarTolerance))
                {
                    loopShell.Add(p.ToGBXML(settings));
                }
                else
                {
                    loopShell.Add(p.Flip().ToGBXML(settings));
                }
            }

            xmlSpace.ShellGeometry.ClosedShell.PolyLoop = loopShell.ToArray();
            xmlSpace.ShellGeometry.ID  = "SpaceShellGeometry-" + Guid.NewGuid().ToString().Replace("-", "").Substring(0, 10);
            xmlSpace.SpaceBoundary     = SpaceBoundaries(panelsAsSpace, settings, settings.PlanarTolerance);
            xmlSpace.PlanarGeoemtry.ID = "SpacePlanarGeometry-" + Guid.NewGuid().ToString().Replace("-", "").Substring(0, 10);
            if (BH.Engine.Environment.Query.FloorGeometry(panelsAsSpace) != null)
            {
                xmlSpace.PlanarGeoemtry.PolyLoop = ToGBXML(BH.Engine.Environment.Query.FloorGeometry(panelsAsSpace), settings);
                xmlSpace.Area   = BH.Engine.Environment.Query.FloorGeometry(panelsAsSpace).Area();
                xmlSpace.Volume = panelsAsSpace.Volume();
            }

            if (spaceLevel != null)
            {
                string levelName = "";
                if (spaceLevel.Name == "")
                {
                    levelName = spaceLevel.Elevation.ToString();
                }
                else
                {
                    levelName = spaceLevel.Name;
                }

                xmlSpace.BuildingStoreyIDRef = "Level-" + levelName.Replace(" ", "").ToLower();
            }

            return(xmlSpace);
        }