Example #1
0
        public static BbBuilding Create(
            string name,
            BbSite bbSite)
        {
            var b = new BbBuilding(name, bbSite);

            BbInstanceDB.AddToExport(b);
            return(b);
        }
Example #2
0
        public static BbFloor Create(
            string name,
            double elevation,
            BbBuilding building)
        {
            var f = new BbFloor(name, elevation, building);

            BbInstanceDB.AddToExport(f);
            return(f);
        }
Example #3
0
        public static bool Phase2Reader(string filename)
        {
            BbInstanceDB.Reset();

            EarlyBindingInstanceModel.Reset();

            if (!EarlyBindingInstanceModel.Read(RegisteredSchema.IFC2X3, filename))
            {
                return(false);
            }

            BbHeaderSetting.Retrieve();
            BbProject.Retrieve();
            BbSite.Retrieve();
            BbBuilding.Retrieve();
            BbFloor.Retrieve();


            return(false);
        }
Example #4
0
        BbFloor(
            string name,
            double elevation,
            BbBuilding building)
        {
            ObjectBbLocalPlacement = BbLocalPlacement3D.Create(building.ObjectBbLocalPlacement, BbHeaderSetting.Setting3D.DefaultBbPosition3D);

            IfcSpatialStructureElement = new IfcBuildingStorey
            {
                GlobalId = IfcGloballyUniqueId.NewGuid(),

                OwnerHistory = BbHeaderSetting.Setting3D.IfcOwnerHistory,
                Name         = name,
                //Description = "",
                //ObjectType = "",
                ObjectPlacement = ObjectBbLocalPlacement.IfcLocalPlacement,
                //Representation =
                //LongName = "",
                CompositionType = IfcElementCompositionEnum.ELEMENT,
                Elevation       = elevation,
            };

            //building.AddFloor(this);
            BbBuilding = building;

            if (true)
            {
                IfcRelAggregates = new IfcRelAggregates()
                {
                    GlobalId       = IfcGloballyUniqueId.NewGuid(),
                    OwnerHistory   = BbHeaderSetting.Setting3D.IfcOwnerHistory,
                    RelatingObject = BbBuilding.IfcSpatialStructureElement,
                    RelatedObjects = new List <IfcObjectDefinition>()
                    {
                        IfcSpatialStructureElement
                    },
                };
            }
        }
Example #5
0
        BbFloor(
            string name,
            double elevation,
            BbBuilding building)
        {
            ObjectBbLocalPlacement = BbLocalPlacement3D.Create(building.ObjectBbLocalPlacement, BbHeaderSetting.Setting3D.DefaultBbPosition3D);

            IfcSpatialStructureElement = new IfcBuildingStorey
            {
                GlobalId = IfcGloballyUniqueId.NewGuid(),

                OwnerHistory = BbHeaderSetting.Setting3D.IfcOwnerHistory,
                Name = name,
                //Description = "",
                //ObjectType = "",
                ObjectPlacement = ObjectBbLocalPlacement.IfcLocalPlacement,
                //Representation =
                //LongName = "",
                CompositionType = IfcElementCompositionEnum.ELEMENT,
                Elevation = elevation,
            };

            //building.AddFloor(this);
            BbBuilding = building;

            if (true)
            {
                IfcRelAggregates = new IfcRelAggregates()
                {
                    GlobalId = IfcGloballyUniqueId.NewGuid(),
                    OwnerHistory = BbHeaderSetting.Setting3D.IfcOwnerHistory,
                    RelatingObject = BbBuilding.IfcSpatialStructureElement,
                    RelatedObjects = new List<IfcObjectDefinition>() { IfcSpatialStructureElement },
                };
            }
        }
Example #6
0
        public static BbFloor Create(
			string name,
			double elevation,
			BbBuilding building)
        {
            var f = new BbFloor(name, elevation, building);
            BbInstanceDB.AddToExport(f);
            return f;
        }
Example #7
0
        public static ICollection<BbFloor> Retrieve(BbBuilding building)
        {
            /*
            var ret = new List<BbFloor>();

            if (!EarlyBindingInstanceModel.TheModel.DataByType.ContainsKey("IfcBuildingStorey")) return null;
            var collection = EarlyBindingInstanceModel.TheModel.DataByType["IfcBuildingStorey"].Values;
            foreach (var item in collection)
            {
                var buildingStorey = item as IfcBuildingStorey;
                if (buildingStorey == null) continue;
                foreach ( var floor in building.Floors)
                {
                    if (floor.IfcSpatialStructureElement.EIN == buildingStorey.EIN)
                    {
                        var semFloor = new BbFloor { _ifcBuildingStorey = buildingStorey };
                        var floorItem = RetrieveSpatialComponents(semFloor);
                        semFloor.SpatialComponents = floorItem;

                        BbInstanceDB.Add(semFloor);
                        ret.Add(semFloor);
                    }
                }
            }
            return ret;
            */

            var refed = EarlyBindingInstanceModel.GetReferencedEntities(building.IfcSpatialStructureElement.EIN);
            //if (refed.Count <= 0) throw new InvalidDataException();

            var ret = new List<BbFloor>();
            foreach (var p21Instance in refed)
            {
                if (p21Instance.Value.GetType() != typeof(IfcRelAggregates)) continue;
                var agg = p21Instance.Value as IfcRelAggregates;
                if (agg == null) continue;

                foreach (var instance in agg.RelatedObjects)
                {
                    if (instance.GetType() != typeof(IfcBuildingStorey)) continue;
                    var floor = instance as IfcBuildingStorey;
                    if (floor == null) continue;
                    var semFloor = new BbFloor(building, floor, agg);
                    ret.Add(semFloor);
                    BbInstanceDB.AddToExport(semFloor);
                }
            }
            return ret;
        }
Example #8
0
 protected BbFloor(BbBuilding building, IfcBuildingStorey floor, IfcRelAggregates ifcRelAggregates)
 {
     BbBuilding = building;
     IfcSpatialStructureElement = floor;
     IfcRelAggregates = ifcRelAggregates;
 }
Example #9
0
        public static ICollection <BbFloor> Retrieve(BbBuilding building)
        {
            /*
             * var ret = new List<BbFloor>();
             *
             * if (!EarlyBindingInstanceModel.TheModel.DataByType.ContainsKey("IfcBuildingStorey")) return null;
             * var collection = EarlyBindingInstanceModel.TheModel.DataByType["IfcBuildingStorey"].Values;
             * foreach (var item in collection)
             * {
             *  var buildingStorey = item as IfcBuildingStorey;
             *  if (buildingStorey == null) continue;
             *  foreach ( var floor in building.Floors)
             *  {
             *      if (floor.IfcSpatialStructureElement.EIN == buildingStorey.EIN)
             *      {
             *          var semFloor = new BbFloor { _ifcBuildingStorey = buildingStorey };
             *          var floorItem = RetrieveSpatialComponents(semFloor);
             *          semFloor.SpatialComponents = floorItem;
             *
             *          BbInstanceDB.Add(semFloor);
             *          ret.Add(semFloor);
             *      }
             *  }
             * }
             * return ret;
             */


            var refed = EarlyBindingInstanceModel.GetReferencedEntities(building.IfcSpatialStructureElement.EIN);
            //if (refed.Count <= 0) throw new InvalidDataException();

            var ret = new List <BbFloor>();

            foreach (var p21Instance in refed)
            {
                if (p21Instance.Value.GetType() != typeof(IfcRelAggregates))
                {
                    continue;
                }
                var agg = p21Instance.Value as IfcRelAggregates;
                if (agg == null)
                {
                    continue;
                }

                foreach (var instance in agg.RelatedObjects)
                {
                    if (instance.GetType() != typeof(IfcBuildingStorey))
                    {
                        continue;
                    }
                    var floor = instance as IfcBuildingStorey;
                    if (floor == null)
                    {
                        continue;
                    }
                    var semFloor = new BbFloor(building, floor, agg);
                    ret.Add(semFloor);
                    BbInstanceDB.AddToExport(semFloor);
                }
            }
            return(ret);
        }
Example #10
0
 protected BbFloor(BbBuilding building, IfcBuildingStorey floor, IfcRelAggregates ifcRelAggregates)
 {
     BbBuilding = building;
     IfcSpatialStructureElement = floor;
     IfcRelAggregates           = ifcRelAggregates;
 }
Example #11
0
        public static bool ReadTestV02(string filename)
        {
            BbInstanceDB.Reset();

            EarlyBindingInstanceModel.Reset();

            if (!EarlyBindingInstanceModel.Read(RegisteredSchema.IFC2X3, filename))
            {
                return(false);
            }

            BbHeaderSetting.Retrieve();
            BbProject.Retrieve();
            BbSite.Retrieve();
            BbBuilding.Retrieve();
            BbFloor.Retrieve();

//            var sites = BbSite.Retrieve(project);
//
//
//
//
//            ////retrieve SEMs out of sites
//            var semBuildings = new List<BbBuilding>();
//            foreach (var theSite in sites)
//            {
//                var buildings = BbBuilding.Retrieve(theSite);
//                foreach(var building in buildings)
//                { semBuildings.Add(building); }
//            }
//
//            ////retrieve SEMs out of buildings
//            var semFloors = new List<BbFloor>();
//            foreach (var theBuilding in semBuildings)
//            {
//                var floors = BbFloor.Retrieve(theBuilding);
//                foreach (var floor in floors)
//                { semFloors.Add(floor); }
//            }
//
//            ////retrieve SEMs out of floors
//            var semAssemblies = new List<BbAssembly>();
//            foreach (var theFloor in semFloors)
//            {
//                var assemblies = BbAssembly.Retrieve(theFloor);
//                foreach(var assem in assemblies)
//                { semAssemblies.Add(assem); }
//            }
//
//            ////retrieve SEMs out of Assemblies
//            var semElements = new List<BbMainPiece>();
//            foreach (var assembly in semAssemblies)
//            {
//                var semPaintFinishes = assembly.PaintFinishes;
//                //BbQuantityRequired
//                var elements = BbMainPiece.Retrieve(assembly);// all related SEMs are retrieved inside
//                foreach (var element in elements)
//                { semElements.Add(element); }
//                // Retrieve DiscreteAccessory
//            }
//
//            ////retrieve SEMs out of MainPieces
//            foreach (var mainPiece in semElements)
//            {
//                var beamType = SemBeamSemType.Retrieve(mainPiece);
//                var material = BbMaterial.Retrieve(mainPiece);
//                var pFinishPatches = mainPiece.PaintFinishes; // all related SEMs are retrieved inside
//                var annotation = SemAnnotation.Retrieve(mainPiece);
//                var skewedEnds = BbSkewedEnd.Retrieve(mainPiece); // all related SEMs are retrieved inside
//                var semCutCopes = BbCutCope.Retrieve(mainPiece); // all related SEMs are retrieved inside
//                var semDrillHoles = BbDrillHoles.Retrieve(mainPiece); // all related SEMs are retrieved inside
//                var semSlottedHoles = BbSlottedHole.Retrieve(mainPiece); // all related SEMs are retrieved inside
//
//                var welds = Weld.Retrieve(mainPiece);
//                foreach (var weld in welds)
//                {
//                    var weldType = SemWeldSemType.Retrieve(weld); // Q1: check if SemWeldType exist or not before adding to DB
//                    // Q2: semWeldType.DefinedElements inside SemWeldSemType
//
//                    var weldProp = BbWeldProperties.Retrieve(weld);
//
//                    var clipAngle = BbClipAngle.Retrieve(weld);// Q3: DiscreteAccessory vs. ClipAngle
//                    /////////////////////////////// G1 //////// alternative solution for retrieving profile of clipAngle
//                    var extGeometry = clipAngle.BbElementGeometry as BbExtrudedGeometry;
//                    var profile = BbMainPiece.RetrieveProfile(extGeometry);// Q8: Can't put retrieveProfile in any other place + clipAngle
//                    clipAngle.Profile = profile;
//
//                    var angleDrillHoles = BbDrillHoles.Retrieve(clipAngle);
//                    var AngleSlottedHoles = BbSlottedHole.Retrieve(clipAngle);
//                    // Q4 : add clipAngle to mainPiece to retrieve holes? retriving holes should be done seperately (mainPiece & clipAngle) now
//                    // Q5 : inside MainPiece.RetrieveProfile
//                    // Q6 : inside MainPiece, under extrudedGeometry
//                    // Q7 : inside MainPiece, under profile
//                    // Q9 : inside BbWeldProperties
//
//                }
//            }


            // SemConnectedElements

            // BbCoordinate2D, SemCoordinate3D, BbDirection3D

            // BbSingleProperty ...



            //foreach (var assem in assemblies)
            //{
            //    Console.WriteLine(assem.ToString());
            //}

            //return BbInstanceDB.Read(filename);
            return(false);
        }
Example #12
0
        public static ICollection<BbBuilding> Retrieve(BbSite site)
        {
            /*
            var ret = new List<BbBuilding>();
            if (!EarlyBindingInstanceModel.TheModel.DataByType.ContainsKey("IfcBuilding")) return null;
            var collection = EarlyBindingInstanceModel.TheModel.DataByType["IfcBuilding"].Values;

            foreach (var item in collection)
            {
                var theItem = item as IfcBuilding;
                if (theItem == null) continue;
                foreach (var building in site.Buildings)
                {
                    if (building.IfcSpatialStructureElement.EIN == theItem.EIN)
                    {
                        var semBuilding = new BbBuilding { _ifcBuilding = theItem };
                        var floor = RetrieveFloors(semBuilding);
                        semBuilding.Floors = floor;

                        BbInstanceDB.Add(semBuilding);
                        ret.Add(semBuilding);
                    }
                }
            }
            return ret;
             * */

            var refed = EarlyBindingInstanceModel.GetReferencedEntities(site.IfcSpatialStructureElement.EIN);
            //if (refed.Count <= 0) throw new InvalidDataException();

            var ret = new List<BbBuilding>();
            foreach (var p21Instance in refed)
            {
                if (p21Instance.Value.GetType() != typeof(IfcRelAggregates)) continue;
                var agg = p21Instance.Value as IfcRelAggregates;
                if (agg == null) continue;

                foreach (var instance in agg.RelatedObjects)
                {
                    if (instance.GetType() != typeof(IfcBuilding)) continue;
                    var building = instance as IfcBuilding;
                    if (building == null) continue;
                    var semBuilding = new BbBuilding(site, building, agg);
                    ret.Add(semBuilding);
                    BbInstanceDB.AddToExport(semBuilding);
                }
            }
            return ret;
        }
Example #13
0
 public static BbBuilding Create(
     string name,
     BbSite bbSite)
 {
     var b = new BbBuilding(name, bbSite);
     BbInstanceDB.AddToExport(b);
     return b;
 }
Example #14
0
        public static ICollection <BbBuilding> Retrieve(BbSite site)
        {
            /*
             * var ret = new List<BbBuilding>();
             * if (!EarlyBindingInstanceModel.TheModel.DataByType.ContainsKey("IfcBuilding")) return null;
             * var collection = EarlyBindingInstanceModel.TheModel.DataByType["IfcBuilding"].Values;
             *
             * foreach (var item in collection)
             * {
             *  var theItem = item as IfcBuilding;
             *  if (theItem == null) continue;
             *  foreach (var building in site.Buildings)
             *  {
             *      if (building.IfcSpatialStructureElement.EIN == theItem.EIN)
             *      {
             *          var semBuilding = new BbBuilding { _ifcBuilding = theItem };
             *          var floor = RetrieveFloors(semBuilding);
             *          semBuilding.Floors = floor;
             *
             *          BbInstanceDB.Add(semBuilding);
             *          ret.Add(semBuilding);
             *      }
             *  }
             * }
             * return ret;
             * */


            var refed = EarlyBindingInstanceModel.GetReferencedEntities(site.IfcSpatialStructureElement.EIN);
            //if (refed.Count <= 0) throw new InvalidDataException();

            var ret = new List <BbBuilding>();

            foreach (var p21Instance in refed)
            {
                if (p21Instance.Value.GetType() != typeof(IfcRelAggregates))
                {
                    continue;
                }
                var agg = p21Instance.Value as IfcRelAggregates;
                if (agg == null)
                {
                    continue;
                }

                foreach (var instance in agg.RelatedObjects)
                {
                    if (instance.GetType() != typeof(IfcBuilding))
                    {
                        continue;
                    }
                    var building = instance as IfcBuilding;
                    if (building == null)
                    {
                        continue;
                    }
                    var semBuilding = new BbBuilding(site, building, agg);
                    ret.Add(semBuilding);
                    BbInstanceDB.AddToExport(semBuilding);
                }
            }
            return(ret);
        }