Esempio n. 1
0
        public void AddToHostObject(BbProduct hostObject)
        {
            HostObject = hostObject;
            var a = EarlyBindingInstanceModel.GetReferencedEntities(hostObject.IfcObject.EIN).Values;

            var b = (from x in a.OfType <IfcRelAggregates>()
                     where x.RelatingObject.EIN == hostObject.IfcObject.EIN
                     select x).ToList();

            switch (b.Count)
            {
            case 0:
                IfcRelAggregates = new IfcRelAggregates
                {
                    GlobalId       = IfcGloballyUniqueId.NewGuid(),
                    OwnerHistory   = hostObject.IfcObject.OwnerHistory,
                    RelatingObject = hostObject.IfcObject,
                    RelatedObjects = new List <IfcObjectDefinition>()
                    {
                    },
                };
                break;

            case 1:
                IfcRelAggregates = b[0];
                break;

            default:
                throw new NotImplementedException();
            }
            var aa = GetType().GetProperty("IfcObject").GetValue(this, null) as IfcObject;

            IfcRelAggregates.RelatedObjects.Add(aa);
        }
Esempio n. 2
0
        //public List<BbPaintFinish> PaintFinishes { get; protected set; }


        //public void AddPaintFinish(BbPaintFinish paintFinish)
        //{
        //    if (PaintFinishes == null)
        //    {
        //        PaintFinishes = new List<BbPaintFinish>();
        //    }

        //    if (IfcRelCoversBldgElements == null)
        //    {
        //        IfcRelCoversBldgElements = new IfcRelCoversBldgElements
        //            {
        //                GlobalId = IfcGloballyUniqueId.NewGuid(),
        //                OwnerHistory = BbHeaderSetting.Setting3D.IfcOwnerHistory,
        //                RelatingBuildingElement = IfcObject as IfcElement,
        //                RelatedCoverings = new List<IfcCovering>(),
        //            };
        //    }

        //    IfcRelCoversBldgElements.RelatedCoverings.Add(paintFinish.IfcCovering);


        //    PaintFinishes.Add(paintFinish);
        //}

        //public void AddPaintFinish(SemPaintFinishPatch semPaintFinish, BbLocalPlacement3D semLocalPlacement3D)
        //{
        //    AddPaintFinish(semPaintFinish);
        //    semPaintFinish.BbLocalPlacement3D = semLocalPlacement3D;
        //}

        //public ICollection<BbElement> Retrieve();

        public void AddToSpatialElement(BbSpatialElement bbSpatialElement)
        {
            BbSpatialElement = bbSpatialElement;
            var a = EarlyBindingInstanceModel.GetReferencedEntities(bbSpatialElement.IfcSpatialStructureElement.EIN).Values;

            var b = (from x in a.OfType <IfcRelContainedInSpatialStructure>()
                     where x.RelatingStructure.EIN == bbSpatialElement.IfcSpatialStructureElement.EIN
                     select x).ToList();

            switch (b.Count)
            {
            case 0:
                IfcRelContainedInSpatialStructure = new IfcRelContainedInSpatialStructure
                {
                    GlobalId          = IfcGloballyUniqueId.NewGuid(),
                    OwnerHistory      = IfcObject.OwnerHistory,
                    RelatingStructure = bbSpatialElement.IfcSpatialStructureElement,
                    RelatedElements   = new List <IfcProduct>()
                    {
                    },
                };
                break;

            case 1:
                IfcRelContainedInSpatialStructure = b[0];
                break;

            default:
                throw new NotImplementedException();
            }

            IfcRelContainedInSpatialStructure.RelatedElements.Add(IfcObject as IfcElement);
        }
Esempio n. 3
0
        public static ICollection <BbSite> Retrieve(BbProject project)
        {
            var refed = EarlyBindingInstanceModel.GetReferencedEntities(project.IfcObject.EIN);

            if (refed.Count <= 0)
            {
                throw new InvalidDataException();
            }

            var list =
                (from agg in
                 (
                     from p21Instance in refed
                     where p21Instance.Value.GetType() == typeof(IfcRelAggregates)
                     select p21Instance.Value).OfType <IfcRelAggregates>()
                 from instance in agg.RelatedObjects
                 where instance.GetType() == typeof(IfcSite)
                 let site = instance as IfcSite
                            where site != null
                            select new BbSite(project, site, agg))
                .ToList();

            BbInstanceDB.AddToImport(list);

            return(list);
        }
Esempio n. 4
0
        /*
         * public static ICollection<BbPolyline2D> RetrievePolylines(BbElementGeometry surfaceGeometry)
         * {
         *  if (!EarlyBindingInstanceModel.TheModel.DataByType.ContainsKey("IfcPolyline")) return null;
         *
         *  var collection = EarlyBindingInstanceModel.TheModel.DataByType["IfcPolyline"].Values;
         *
         *  var ret = new List<BbPolyline2D>();
         *  foreach (var item in collection)
         *  {
         *      if (item.EIN == surfaceGeometry.ifcCurveBoundedPlane.OuterBoundary.EIN)
         *      {
         *          var polyLine = item as IfcPolyline;
         *          if (polyLine == null) continue;
         *          var semPolyLine = new BbPolyline2D { ifcPolyline = polyLine };
         *          BbInstanceDB.Add(semPolyLine);
         *          ret.Add(semPolyLine);
         *      }
         *
         *      var innerBoundries = surfaceGeometry.ifcCurveBoundedPlane.InnerBoundaries;
         *      foreach (var innerBoundry in innerBoundries)
         *      {
         *          if (item.EIN == innerBoundry.EIN)
         *          {
         *              var polyLine = item as IfcPolyline;
         *              if (polyLine == null) continue;
         *              var semPolyLine = new BbPolyline2D { ifcPolyline = polyLine };
         *              BbInstanceDB.Add(semPolyLine);
         *              ret.Add(semPolyLine);
         *          }
         *      }
         *  }
         *  return ret;
         * }
         */


        /// <summary>
        /// wrong implementation, do not use constructor
        /// </summary>
        /// <param name="polyLine"></param>
        /// <returns></returns>
        public static ICollection <BbCoordinate2D> RetrieveCartesianPoints(BbPolyline2D polyLine)
        {
            //if (!EarlyBindingInstanceModel.TheModel.DataByType.ContainsKey("IfcCartesianPoint")) return null;

            var collection = EarlyBindingInstanceModel.GetDataByType("IfcCartesianPoint").Values;

            var ret = new List <BbCoordinate2D>();

            foreach (var item in collection)
            {
                var points = polyLine.ifcPolyline.Points;
                foreach (var point in points)
                {
                    if (item.EIN == point.EIN)
                    {
                        var pt = item as IfcCartesianPoint;
                        if (pt == null)
                        {
                            continue;
                        }
                        //var semPoint = new BbCoordinate2D { ifcCartesianPoint = pt };
                        //BbInstanceDB.AddToExport(semPoint);
                        //ret.Add(semPoint);
                    }
                }
            }
            return(ret);
        }
        public static ICollection <SemConnectedElements> Retrieve(SemElement assembly)
        {
            var ret = new List <SemConnectedElements>();

            //if (!EarlyBindingInstanceModel.TheModel.DataByType.ContainsKey("IfcRelConnectsElements")) return null;
            var collection = EarlyBindingInstanceModel.GetDataByType("IfcRelConnectsElements").Values;

            //if (collection.Count != 1) throw new NotImplementedException();
            foreach (var item in collection)
            {
                var theItem = item as IfcRelConnectsElements;
                if (theItem == null)
                {
                    continue;
                }
                if (theItem.RelatingElement.EIN == assembly.IfcObject.EIN)
                {
                    var connected = theItem as IfcRelConnectsElements;
                    if (connected == null)
                    {
                        continue;
                    }
                    var semConnected = new SemConnectedElements {
                        IfcRelConnectsElements = connected
                    };
                    SemInstanceDB.AddToExport(semConnected);
                    ret.Add(semConnected);
                }
            }
            return(ret);
        }
Esempio n. 6
0
        public static BbWeldProperties Retrieve(BbWeld weld)
        {
            var ret = new BbWeldProperties();
            // Retrieving PropertySet
            //if (! EarlyBindingInstanceModel.TheModel.DataByType.ContainsKey("IfcRelDefinesByProperties")) return null;
            var collection = EarlyBindingInstanceModel.GetDataByType("IfcRelDefinesByProperties").Values;

            foreach (var item in collection)
            {
                var theItem = item as IfcRelDefinesByProperties;
                var pSet    = theItem.RelatingPropertyDefinition as IfcPropertySet;
                if (theItem == null)
                {
                    continue;
                }
                var relatedObjects = theItem.RelatedObjects;
                foreach (var relatedObject in relatedObjects)
                {
                    if (relatedObject.EIN == weld.IfcObject.EIN)
                    {
                        throw new NotImplementedException();

                        // wrong implementation
                        //var BbPropertySet = new BbPropertySet { _ifcRelDefinesByProperties = theItem, _ifcPropertySet = pSet };

                        ////Retrieving relevant attributes
                        //BbPropertySet.AssignTo(weld);
                        //ret.BbPropertySet = BbPropertySet;
                        //BbPropertySet.Name = pSet.Name;
                        //BbPropertySet.Description = pSet.Description;

                        //var properties = BbPropertySet._ifcPropertySet.HasProperties;
                        //foreach (var property in properties)
                        //{
                        //    var sProp = property as IfcPropertySingleValue;
                        //    var semSingleProperty = new BbSingleProperty { _ifcPropertySingleValue = sProp };
                        //    //BbInstanceDB.Add(semSingleProperty);
                        //    var iValue = sProp.NominalValue.Value;
                        //    var value = iValue as IfcLengthMeasure;

                        //    if (sProp.Name == "Throat Thickness")
                        //    { ret.ThroatThickness = value.Value; }
                        //    if (sProp.Name == "Leg Length")
                        //    { ret.LegLength = value.Value; }
                        //    BbPropertySet.Properties.Add(semSingleProperty);
                        //}
                        //// Check if this BbPropertySet already exist before adding to DB, if so add weld to its _assignedElements
                        //BbInstanceDB.AddToExport(BbPropertySet);
                    }
                }
            }
            return(ret);
        }
Esempio n. 7
0
        public static ICollection <BbSite> Retrieve()
        {
            var ifcList = (from p21 in EarlyBindingInstanceModel.GetDataByType("IfcSite").Values
                           select p21 as IfcSite).ToList();

            var sites = (
                from site in ifcList
                select new BbSite(site))
                        .ToList();

            BbInstanceDB.AddToImport(sites);

            return(sites);
        }
Esempio n. 8
0
        public static SemBeamType Retrieve(SemMainPiece mainPiece)
        {
            if (mainPiece.IfcObject.GetType() == typeof(IfcBeam))
            {
                var ret = new SemBeamType();
                //if (!EarlyBindingInstanceModel.TheModel.DataByType.ContainsKey("IfcRelDefinesByType")) return null;
                var collection1 = EarlyBindingInstanceModel.GetDataByType("IfcRelDefinesByType").Values;
                //if (collection.Count != 1) throw new NotImplementedException();
                foreach (var item in collection1)
                {
                    var theItem = item as IfcRelDefinesByType;
                    if (theItem == null)
                    {
                        continue;
                    }

                    foreach (var a in theItem.RelatedObjects)
                    {
                        if (a.EIN == mainPiece.IfcObject.EIN)
                        {
                            //if (!EarlyBindingInstanceModel.TheModel.DataByType.ContainsKey("IfcBeamType")) return null;
                            var collection2 = EarlyBindingInstanceModel.GetDataByType("IfcBeamType").Values;
                            foreach (var item2 in collection2)
                            {
                                if (item2.EIN == theItem.RelatingType.EIN)
                                {
                                    var type = item2 as IfcBeamType;
                                    if (type == null)
                                    {
                                        continue;
                                    }
                                    var beamType = new SemBeamType {
                                        IfcTypeProduct = type, IfcRelDefinesByType = theItem
                                    };
                                    beamType.DefinedElements.Add(mainPiece);
                                    SemInstanceDB.AddToExport(beamType);
                                    ret = beamType;
                                }
                            }
                        }
                    }
                }
                return(ret);
            }
            else
            {
                return(null);
            }
        }
Esempio n. 9
0
        public static BbMaterial Retrieve(BbElement element)
        {
            var ret = new BbMaterial();
            //if (!EarlyBindingInstanceModel.TheModel.DataByType.ContainsKey("IfcRelAssociatesMaterial")) return null;

            var collection = EarlyBindingInstanceModel.GetDataByType("IfcRelAssociatesMaterial").Values;

            //if (collection.Count != 1) throw new NotImplementedException();
            foreach (var item in collection)
            {
                var theItem = item as IfcRelAssociatesMaterial;
                if (theItem == null)
                {
                    continue;
                }
                //if (theItem.RelatingMaterial.AIfcMaterial.EIN == element.IfcElement.EIN)
                foreach (var a in theItem.RelatedObjects)
                {
                    if (a.EIN == element.IfcObject.EIN)
                    {
                        //if (!EarlyBindingInstanceModel.TheModel.DataByType.ContainsKey("IfcMaterial")) return null;

                        var collection2 = EarlyBindingInstanceModel.GetDataByType("IfcMaterial").Values;
                        foreach (var item2 in collection2)
                        {
                            if (item2.EIN == theItem.RelatingMaterial.AIfcMaterial.EIN)
                            {
                                var material = item as IfcMaterial;
                                if (material == null)
                                {
                                    continue;
                                }
                                var pieceMaterial = new BbMaterial {
                                    IfcMaterial = material
                                };
                                BbInstanceDB.AddToExport(pieceMaterial);
                                ret = pieceMaterial;
                            }
                        }
                    }
                    else
                    {
                        ret = null;
                    }
                }
            }

            return(ret);
        }
Esempio n. 10
0
        public static ICollection <BbWeld> Retrieve(BbElement mainPiece)
        {
            var ret = new List <BbWeld>();
            //if (!EarlyBindingInstanceModel.TheModel.DataByType.ContainsKey("IfcRelConnectsWithRealizingElements")) return null;
            var collection = EarlyBindingInstanceModel.GetDataByType("IfcRelConnectsWithRealizingElements").Values;

            foreach (var theItem in collection)
            {
                var rel = theItem as IfcRelConnectsWithRealizingElements;
                if (rel == null)
                {
                    continue;
                }
                if (rel.RelatingElement.EIN == mainPiece.IfcObject.EIN)
                {
                    //if (!EarlyBindingInstanceModel.TheModel.DataByType.ContainsKey("IfcFastener")) return null;
                    var collection1 = EarlyBindingInstanceModel.GetDataByType("IfcFastener").Values;
                    foreach (var item in collection1)
                    {
                        var relElements = rel.RealizingElements;
                        foreach (var relElement in relElements)
                        {
                            if (relElement.EIN == item.EIN)
                            {
                                var fastener = item as IfcFastener;
                                if (fastener == null)
                                {
                                    continue;
                                }
                                var weld = new BbWeld {
                                    _ifcElement = fastener, IfcRelConnectsElements = rel
                                };
                                //BbInstanceDB.Add(weld);
                                ret.Add(weld);

                                // Retrieve MainElement
                                weld.MainElement = mainPiece;
                                // Retrieve AttachedElement
                                var relatedElement = weld.IfcRelConnectsElements.RelatedElement as IfcElement;
                                // wrong implementation, need to revise, donghoon 20131205
                                //weld.AttachedElement = new BbElement { IfcElement = relatedElement };
                            }
                        }
                    }
                }
            }
            return(ret);
        }
Esempio n. 11
0
        public static ICollection <BbFloor> Retrieve()
        {
            var ifcList = (from p21Instance in EarlyBindingInstanceModel.GetDataByType("IfcBuildingStorey").Values
                           select p21Instance).ToList();


            var buildings = (
                from building in ifcList
                let si = building as IfcBuildingStorey
                         where building != null
                         select new BbFloor(si))
                            .ToList();

            BbInstanceDB.AddToImport(buildings);

            return(buildings);
        }
Esempio n. 12
0
        public static ICollection <BbAssembly> Retrieve()
        {
            var ifcList = (from p21Instance in EarlyBindingInstanceModel.GetDataByType("IfcElementAssembly").Values
                           select p21Instance).ToList();



            var assemblies = (
                from building in ifcList
                let si = building as IfcElementAssembly
                         where building != null
                         select new BbAssembly(si))
                             .ToList();

            BbInstanceDB.AddToImport(assemblies);

            return(assemblies);
        }
Esempio n. 13
0
        /*
         * public static ICollection<BbSurfaceGeometry> Retrieve(PaintFinish )
         * {
         *  if (!EarlyBindingInstanceModel.TheModel.DataByType.ContainsKey("IfcCurveBoundedPlane")) return null;
         *  //IfcShapeRepresentation
         *  //IfcProductDefinitionShape
         *  var collection = EarlyBindingInstanceModel.TheModel.DataByType["IfcCurveBoundedPlane"].Values;
         *
         *  var ret = new List<BbSurfaceGeometry>(); //sem BbSurfaceGeometry list nist
         *  foreach (var item in collection)
         *  {
         *      var curvePlane = item as IfcCurveBoundedPlane;
         *      if (curvePlane == null) continue;
         *      var surfaceGeometry = new BbSurfaceGeometry { ifcCurveBoundedPlane = curvePlane };
         *      BbInstanceDB.Add(surfaceGeometry);
         *      ret.Add(surfaceGeometry); //sem BbSurfaceGeometry list nist
         *  }
         *  return ret;
         * }
         */

        public static ICollection <BbPolyline2D> RetrievePolylines(BbSurfaceGeometry surfaceGeometry)
        {
            //if (!EarlyBindingInstanceModel.TheModel.DataByType.ContainsKey("IfcPolyline")) return null;

            var collection = EarlyBindingInstanceModel.GetDataByType("IfcPolyline").Values;

            var ret = new List <BbPolyline2D>();

            foreach (var item in collection)
            {
                if (item.EIN == surfaceGeometry.ifcCurveBoundedPlane.OuterBoundary.EIN)
                {
                    var polyLine = item as IfcPolyline;
                    if (polyLine == null)
                    {
                        continue;
                    }
                    var semPolyLine = new BbPolyline2D {
                        ifcPolyline = polyLine
                    };
                    BbInstanceDB.AddToExport(semPolyLine);
                    ret.Add(semPolyLine);
                }

                var innerBoundries = surfaceGeometry.ifcCurveBoundedPlane.InnerBoundaries;
                foreach (var innerBoundry in innerBoundries)
                {
                    if (item.EIN == innerBoundry.EIN)
                    {
                        var polyLine = item as IfcPolyline;
                        if (polyLine == null)
                        {
                            continue;
                        }
                        var semPolyLine = new BbPolyline2D {
                            ifcPolyline = polyLine
                        };
                        BbInstanceDB.AddToExport(semPolyLine);
                        ret.Add(semPolyLine);
                    }
                }
            }
            return(ret);
        }
Esempio n. 14
0
 public bool WriteDbToP21File(string filename)
 {
     try
     {
         //BbInstanceList.FillP21InstanceDB();
         //HeaderSection.SetHeader("mvdname", "filename", "test", "schemaversion");
         HeaderSection.SetHeader(EbConstants.Em11MvdName, Path.GetFileName(filename),
                                 EbConstants.DefaultOrganization, SchemaModel.RegisteredSchema.IFC2X3.ToString());
         return(EarlyBindingInstanceModel.Write(filename));
     }
     catch (Exception ex)
     {
         var fileInfo = new StackFrame(true);
         //Logger.Debug(string.Format("File : {0}\nLine : {1}\nException : {2}\nTrace : {3}",
         //                           fileInfo.GetFileName(), fileInfo.GetFileLineNumber(), ex.Message,
         //                           ex.StackTrace));
         return(false);
     }
 }
Esempio n. 15
0
        public static SemAnnotation Retrieve(SemMainPiece mainPiece)
        {
            var ret        = new SemAnnotation();
            var collection = EarlyBindingInstanceModel.GetDataByType("IfcRelAssignsToProduct").Values;

            //if (collection.Count != 1) throw new NotImplementedException();
            foreach (var item in collection)
            {
                var theItem = item as IfcRelAssignsToProduct;
                if (theItem == null)
                {
                    continue;
                }
                var relatedObjects = theItem.RelatedObjects;
                foreach (var relatedObject in relatedObjects)
                {
                    if (relatedObject.EIN == mainPiece.IfcObject.EIN)
                    {
                        //if (!EarlyBindingInstanceModel.TheModel.DataByType.ContainsKey("IfcAnnotation")) return null;
                        var annCollection = EarlyBindingInstanceModel.GetDataByType("IfcAnnotation").Values;
                        foreach (var annItem in annCollection)
                        {
                            if (annItem.EIN == theItem.RelatingProduct.EIN)
                            {
                                var annotation = annItem as IfcAnnotation;
                                if (annotation == null)
                                {
                                    continue;
                                }
                                var semAnnotation = new SemAnnotation {
                                    IfcAnnotation = annotation, IfcRelAssignsToProduct = theItem
                                };
                                SemInstanceDB.AddToExport(semAnnotation);
                                ret = semAnnotation;
                                semAnnotation.Element = mainPiece;
                            }
                        }
                    }
                }
            }
            return(ret);
        }
Esempio n. 16
0
        public static bool Phase2Reader(string filename)
        {
            SemInstanceDB.Reset();

            EarlyBindingInstanceModel.Reset();

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

            SemHeaderSetting.Retrieve();
            SemProject.Retrieve();
            SemSite.Retrieve();
            SemBuilding.Retrieve();
            SemFloor.Retrieve();


            return(false);
        }
Esempio n. 17
0
        public static SemWeldType Retrieve(SemFastener weld)
        {
            var ret = new SemWeldType();

            //if (!EarlyBindingInstanceModel.TheModel.DataByType.ContainsKey("IfcRelDefinesByType")) return null;
            var collection = EarlyBindingInstanceModel.GetDataByType("IfcRelDefinesByType").Values;

            foreach (var theItem in collection)
            {
                var relType    = theItem as IfcRelDefinesByType;
                var relObjects = relType.RelatedObjects;
                foreach (var relObject in relObjects)
                {
                    if (relObject.EIN == weld.IfcObject.EIN)
                    {
                        //if (!EarlyBindingInstanceModel.TheModel.DataByType.ContainsKey("IfcFastenerType")) return null;
                        var collection1 = EarlyBindingInstanceModel.GetDataByType("IfcFastenerType").Values;
                        foreach (var item in collection1)
                        {
                            if (relType.RelatingType.EIN == item.EIN)
                            {
                                var weldType = item as IfcFastenerType;
                                if (weldType == null)
                                {
                                    continue;
                                }
                                var semWeldType = new SemWeldType {
                                    IfcTypeProduct = weldType, IfcRelDefinesByType = relType
                                };
                                semWeldType.DefinedElements.Add(weld);

                                // check if this SemWeldSemType exist or not before adding to DB and add weld to its DefinedElements
                                //SemInstanceDB.Add(semWeldType);// Q1
                                ret = semWeldType;
                            }
                        }
                    }
                }
            }
            return(ret);
        }
Esempio n. 18
0
        protected BbFloor(IfcBuildingStorey ifcBuildingStorey)

        {
            var a = EarlyBindingInstanceModel.GetReferencedEntities(ifcBuildingStorey.EIN).Values;

            var b = (from x in a.OfType <IfcRelAggregates>()
                     where x.RelatingObject.GetType() == typeof(IfcBuilding)
                     select x).First() as IfcRelAggregates;

            IfcRelAggregates = b;


            if (b != null)
            {
                var sPrjGuid = BbInstanceDB.GetSemIdListByEin(b.RelatingObject.EIN).First();
                var aa       = BbInstanceDB.GetSemById(sPrjGuid) as BbBuilding;
                BbBuilding = aa;
            }

            IfcSpatialStructureElement = ifcBuildingStorey;
        }
Esempio n. 19
0
        //public static BbDrillHoles Create(BbElement hostElement,
        //                                BbCoordinate2D position,
        //                                double radius,
        //                                SemHoleLocation location,
        //                                bool through,
        //                                BbPropertySet semPropertySet,
        //                                string featureSubType,
        //                                double partialHoleDepth)
        //{
        //    var hole = new BbDrillHoles(hostElement, position, radius, location, through);
        //    hole.AddDrillHoleProperty(semPropertySet, featureSubType, (radius * 2), through, partialHoleDepth);
        //    BbInstanceDB.AddToExport(hole);
        //    return hole;
        //}

        //public void AddDrillHoleProperty(BbPropertySet semPropertySet, string featureSubType,
        //                        double boltHoleDiameter,
        //                        bool partialHoleIndicator,
        //                        double partialHoleDepth)
        //{
        //    semPropertySet.AddProperty(BbPropertyEnumerated.Create("FeatureSubtype", featureSubType, true));
        //    semPropertySet.AddProperty(BbSingleProperty.Create("BoltHoleDiameter", boltHoleDiameter, typeof(IfcPositiveLengthMeasure)));
        //    semPropertySet.AddProperty(BbSingleProperty.Create("PartialHoleIndicator", partialHoleIndicator));
        //    semPropertySet.AddProperty(BbSingleProperty.Create("PartialHoleDepth", partialHoleDepth, typeof(IfcPositiveLengthMeasure)));

        //}


        public static ICollection <BbDrillHoles> Retrieve(BbElement element)
        {
            var ret = new List <BbDrillHoles>();
            //if (!EarlyBindingInstanceModel.TheModel.DataByType.ContainsKey("IfcRelVoidsElement")) return null;
            var collection = EarlyBindingInstanceModel.GetDataByType("IfcRelVoidsElement").Values;

            //if (collection.Count != 1) throw new NotImplementedException();
            foreach (var item in collection)
            {
                var theItem = item as IfcRelVoidsElement;
                if (theItem == null)
                {
                    continue;
                }

                // need modification
                //if (theItem.RelatingBuildingElement.EIN == element.IfcObject.EIN)
                //{
                //    var OpeningElement = theItem.RelatedOpeningElement as IfcOpeningElement;
                //    if (theItem.Name == "Drill Hole")
                //    {
                //        var semDrillHole = new BbDrillHoles { ifcOpeningElement = OpeningElement, ifcRelVoidsElement = theItem };
                //        //BbInstanceDB.Add(semDrillHole);
                //        ret.Add(semDrillHole);

                //        // Retrieve localPlacement of BbDrillHoles
                //        var placement = semDrillHole.ifcOpeningElement.ObjectPlacement as IfcLocalPlacement;
                //        var objectLocalPlacement = new BbLocalPlacement3D { IfcLocalPlacement = placement };
                //        semDrillHole.ObjectBbLocalPlacement = objectLocalPlacement;

                //        // Retrieve related Sems
                //        var semPosition3D = BbFeature.RetrievePosition(semDrillHole);
                //        var semExtrudedGeometry = BbExtrudedGeometry.RetrieveFromFeature(semDrillHole);
                //        var semCircleProfile = BbBbNamedCircleProfile.Retrieve(semExtrudedGeometry);
                //        //BbCoordinate2D
                //    }
                //}
            }
            return(ret);
        }
Esempio n. 20
0
        public static void Retrieve()
        {
            var collection = EarlyBindingInstanceModel.GetDataByType("IfcProject");

            //if (collection.Count <= 0) throw new InvalidDataException();

            //if (collection.Count != 1)
            //    throw new InvalidDataException();

            //var theItem = collection.First();

            //var proj = theItem.Value as IfcProject;
            //var sProj = new BbProject(proj);
            //BbInstanceDB.Add(sProj);
            //return sProj;


            foreach (var sproject in collection.Select(kvp => kvp.Value).OfType <IfcProject>().Select(project => new BbProject(project)))
            {
                BbInstanceDB.AddToImport(sproject);
            }
        }
Esempio n. 21
0
        /// <summary>
        /// only for import
        /// </summary>
        /// <param name="ifcSite"></param>
        protected BbSite(IfcSite ifcSite)
        {
            Guid = IfcGloballyUniqueId.ConvertToGuid(ifcSite.GlobalId);

            var a = EarlyBindingInstanceModel.GetReferencedEntities(ifcSite.EIN).Values;

            var b = (from x in a.OfType <IfcRelAggregates>()
                     where x.RelatingObject.GetType() == typeof(IfcProject)
                     select x).First() as IfcRelAggregates;

            IfcRelAggregates = b;


            if (b != null)
            {
                var sPrjGuid = BbInstanceDB.GetSemIdListByEin(b.RelatingObject.EIN).First();
                var aa       = BbInstanceDB.GetSemById(sPrjGuid) as BbProject;
                BbProject = aa;
            }


            IfcSpatialStructureElement = ifcSite;
        }
Esempio n. 22
0
        /// <summary>
        /// not working anymore
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            string ins = instanceFilename.Text;


            FileInfo fileInfo = new FileInfo(ins);

            if (!fileInfo.Exists)
            {
                return;
            }

            EarlyBindingInstanceModel.Read(ins);

            string outFile = fileInfo.DirectoryName + "\\" + "out.ifc";

            fileInfo = new FileInfo(outFile);
            if (fileInfo.Exists)
            {
                fileInfo.Delete();
            }

            EarlyBindingInstanceModel.Write(outFile);
        }
Esempio n. 23
0
        protected BbAssembly(IfcElementAssembly ifcElementAssembly)
        {
            var a = EarlyBindingInstanceModel.GetReferencedEntities(ifcElementAssembly.EIN).Values;

            var b = (from x in a.OfType <IfcRelContainedInSpatialStructure>()
                     where x.RelatingStructure.GetType() == typeof(IfcBuildingStorey)
                     select x).First();

            IfcRelContainedInSpatialStructure = b;



            //if (b != null)
            //{
            //    var sPrjGuid = BbInstanceDB.GetSemIdListByEin(b.RelatingObject.EIN).First();

            //    var aa = BbInstanceDB.GetSemById(sPrjGuid) as BbBuilding;
            //    BbBuilding = aa;


            //}

            //IfcSpatialStructureElement = ifcElementAssembly;
        }
Esempio n. 24
0
        //public BbInstanceList<BbBase> Instances{
        //    get { return BbInstanceList; }
        //}

        /// <summary>
        /// Singleton for service
        /// </summary>

        public void ResetDb()
        {
            //_isP21Outdated = false;
            _bbInstanceList.Clear();
            EarlyBindingInstanceModel.Reset();
        }
Esempio n. 25
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);
        }
Esempio n. 26
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);
        }
Esempio n. 27
0
        public static bool Tester4Writer(string filename)
        {
            EarlyBindingInstanceModel.Reset();
            BbInstanceDB.Reset();
            //var em11PsetName = @"AISC_EM11_Pset_Status";
            BbHeaderSetting.Create(
                "donghoon", "Georgia Tech", "sem Tool", "alpha 1", "gatech", BbUnit.Metric);
            var floor = BbFloor.CreateSingleStoreyProject(
                "project", "site", "building", "1st floor", 0);

            // assembly 1-Beam-------------------------------------------------------------------------------------

            var assembly = BbAssembly.Create(
                "assid001",
                "Steel Assembly",
                "ASS01",
                "client_marker",
                "prelim_marker",
                "ship_mark",
                "102301123423", floor,
                BbCoordinate3D.Create(0, 0, 6000), BbHeaderSetting.Setting3D.ZAxis, BbHeaderSetting.Setting3D.XAxis);

            // assembly 1 properties
            //Quantity
            var qAssemBeam = BbQuantityRequired.Create();

            qAssemBeam.Add(assembly);
            //Finish/tearment
            //var paintAssem = BbPaintFinish.Create();
            //var paintAssem = BbPaintFinish.Create("Paint", "PAINTED", assembly);
            //paintAssem.AddToElement(assembly);
//            assembly.AddPaintFinish(paintAssem);

            var pSetAssemSTr01  = BbPropertySet.Create(@"AISC_EM11_Pset_SurfaceTreatment");
            var paintAssem1Pset = BbSurfaceTreatmentProperty.Create(pSetAssemSTr01, new List <string> {
                "Painted"
            });

            paintAssem1Pset.AssignTo(assembly);
            //Scheduling
            var pSetAssemSc01 = BbPropertySet.Create(@"AISC_EM11_Pset_Schedule");
            var AssemSch01    = BbSchedule.Create(pSetAssemSc01, "seq01", "seqLevel 01", DateTime.Now);

            AssemSch01.AssignTo(assembly);
            //Status
            var pSetAssemSt01 = BbPropertySet.Create(@"AISC_EM11_Pset_StatusInformation");
            var AssemStat01   = BbStatus.Create(pSetAssemSt01, "Default", "Default", true);

            AssemStat01.AssignTo(assembly);
            //Drawing number
            var pSetAssemDN01     = BbPropertySet.Create(@"AISC_EM11_Pset_DrawingNumber");
            var DnumberAssem1Pset = BbDrawingNumber.Create(pSetAssemDN01, new List <string> {
                "DR001PH1005", "DR001PH1004"
            });

            DnumberAssem1Pset.AssignTo(assembly);
            //Version
            var pSetAssemVr01  = BbPropertySet.Create(@"AISC_EM11_Pset_VersionInformation");
            var versionAssem01 = BbVersion.Create(pSetAssemVr01, "versionAssem01");

            versionAssem01.AssignTo(assembly);


            // main piece 1- Beam------------------------------------------------------------------------------------
            var profile  = BbNamedIProfile.Create("AISC", "W460X260", 260, 508, 22.6, 40.4);
            var mainPart = BbMainPiece.Create(
                "P0001",
                "main piece", profile, 6000,
                BbCoordinate3D.Create(0, 0, -254),
                BbHeaderSetting.Setting3D.XAxis,
                BbHeaderSetting.Setting3D.YAxis,
                assembly);
            //var beamType = SemBeamType.Create("wideflange", "pm0001", IfcBeamTypeEnum.BEAM);
            //beamType.Defines(mainPart);

            // Main piece 1-Beam properties
            //Identification
            var pieceIdBeam01 = BbPieceIdentity.Create("indMark001", "pieceMark001", "prelimMark001", "barcode123456890", true);

            pieceIdBeam01.AssignTo(mainPart);
            //Material

            var pSetMat2       = BbPropertySet.Create(@"AISC_EM11_Pset_MaterialProperty");
            var materialBeam01 = BbMaterial.Create("ASTM A992", pSetMat2, "materialID001", "materialCert001", "materialGrade001", "materialType001");

            materialBeam01.AssociateTo(mainPart);

            //Quantity
            var qBeam = BbQuantityRequired.Create();

            qBeam.Add(mainPart);
            //Finish/treatment
            ////var paint2 = PaintFinish.Create("p1001", "antirust", "paint");
            var coord2d00 = BbCoordinate2D.Create(-100, 0);
            var coord2d01 = BbCoordinate2D.Create(100, 0);
            var coord2d02 = BbCoordinate2D.Create(100, 3400);
            var coord2d03 = BbCoordinate2D.Create(-100, 3400);
            var poly2d0   = BbPolyline2D.Create(new[] { coord2d00, coord2d01, coord2d02, coord2d03 });

            var coord2d10 = BbCoordinate2D.Create(-40, 1500);
            var coord2d11 = BbCoordinate2D.Create(40, 1500);
            var coord2d12 = BbCoordinate2D.Create(40, 2500);
            var coord2d13 = BbCoordinate2D.Create(-40, 2500);
            var poly2d1   = BbPolyline2D.Create(new[] { coord2d10, coord2d11, coord2d12, coord2d13 });

            var sg = BbSurfaceGeometry.Create(poly2d0, new[] { poly2d1 });
            //var paint3 = SemPaintFinishPatch.Create("ANTIRUST", "PAINTED", sg);

            var ploc = BbLocalPlacement3D.Create(
                mainPart.ObjectBbLocalPlacement,
                BbPosition3D.Create(
                    BbCoordinate3D.Create(0, 254, 100),
                    BbHeaderSetting.Setting3D.YAxis,
                    BbHeaderSetting.Setting3D.XAxisMinus)
                );

            //paint3.AddToElement(mainPart, ploc);

            var pSetBeamSTr01  = BbPropertySet.Create(@"AISC_EM11_Pset_SurfaceTreatment");
            var paintBeam1Pset = BbSurfaceTreatmentProperty.Create(pSetBeamSTr01, new List <string> {
                "GALVANIZED"
            });

            paintBeam1Pset.AssignTo(mainPart);
            //Status
            var pSetBeamSt01 = BbPropertySet.Create(@"AISC_EM11_Pset_StatusInformation");
            var statusBeam01 = BbStatus.Create(pSetBeamSt01, "Default", "Default", false);

            statusBeam01.AssignTo(mainPart);
            //Version
            var pSetBeamVr01  = BbPropertySet.Create(@"AISC_EM11_Pset_VersionInformation");
            var versionBeam01 = BbVersion.Create(pSetBeamVr01, "versionBeam01");

            versionBeam01.AssignTo(mainPart);
            //Tolerance
            var pSetBeamLT01    = BbPropertySet.Create(@"AISC_EM11_Pset_ToleranceForLayout");
            var toleranceBeam01 = BbLayoutTolerance.Create(pSetBeamLT01, 0.01);

            toleranceBeam01.AssignTo(mainPart);
            //Catellation
            //No castellation needed

            //Feature

            //SemAnnotation.Create
            //    ("north", "LocationOfMark", mainPart, BbCoordinate3D.Create(0, 254, 5), BbDirection3D.YAxis2D,
            //        BbDirection3D.XAxisMinus2D);

            //BbPosition3D pos = BbPosition3D.Create(
            //    BbCoordinate3D.Create(0, 0, 100),
            //    BbDirection3D.Create(0.215665546, -0.107832773, -0.970494959),
            //    BbDirection3D.Create(-0.970494959, 0.107832773, -0.215665546)
            //    );

            //BbSkewedEnd.Create(mainPart, pos);


            ////            var arb = ArbitraryProfile.Create(poly2d0);
            ////
            ////            ExtrudedElement.Create(
            ////                "new", arb, 10, Coordinate3D.Create(0, 254, 100),
            ////                Direction3D.YAxis2D, Direction3D.XAxisMinus2D,
            ////                mainPart, typeof(IfcPlate));

            ////// TypeProduct.Create(mainPart, "main piece", typeof(IfcBeam));


            //BbCutCope.Create(mainPart, 210, 50, 10, SemCopeLocation.BottomRight);
            //BbCutCope.Create(mainPart, 210, 50, 10, SemCopeLocation.TopRight);
            ////CutCope.Create(mainPart, 210, 50, 10, CopeLocation.BottomLeft);
            ////CutCope.Create(mainPart, 210, 50, 10, CopeLocation.TopLeft);

            var bHoleBeam01 = BbDrillHoles.Create(mainPart, BbCoordinate2D.Create(1100, 60), 30, SemHoleLocation.Bottom, false);
            var bHoleBeam02 = BbDrillHoles.Create(mainPart, BbCoordinate2D.Create(1100, -60), 30, SemHoleLocation.Bottom, true);
            var bHoleBeam03 = BbDrillHoles.Create(mainPart, BbCoordinate2D.Create(1200, 60), 30, SemHoleLocation.Top, true);
            var bHoleBeam04 = BbDrillHoles.Create(mainPart, BbCoordinate2D.Create(1200, -60), 30, SemHoleLocation.Top, false);
            //DrillHoles.Create(mainPart, Coordinate2D.Create(300, 60), 15, HoleLocation.Left, false);
            //DrillHoles.Create(mainPart, Coordinate2D.Create(400, -60), 15, HoleLocation.Left, true);
            //DrillHoles.Create(mainPart, Coordinate2D.Create(500, 60), 15, HoleLocation.Right, false);
            //DrillHoles.Create(mainPart, Coordinate2D.Create(600, -60), 15, HoleLocation.Right, true);
            var bHoleBeam05 = BbDrillHoles.Create(mainPart, BbCoordinate2D.Create(700, 60), 15, SemHoleLocation.Web, false);
            var bHoleBeam06 = BbDrillHoles.Create(mainPart, BbCoordinate2D.Create(800, -60), 15, SemHoleLocation.Web, true);
            //DrillHoles.Create(mainPart, Coordinate2D.Create(6000 - 106.5, -100), 15, HoleLocation.Web, true);
            //DrillHoles.Create(mainPart, Coordinate2D.Create(6000 - 91.5, 100), 20, HoleLocation.Web, true);
            //DrillHoles.Create(mainPart, Coordinate2D.Create(101.5 + 5, -100), 15, HoleLocation.Web, true);
            //DrillHoles.Create(mainPart, Coordinate2D.Create(101.5 + 5, 100), 15, HoleLocation.Web, true);

            //Beam Bolt Hole properties
            var pSetBeamBH01      = BbPropertySet.Create(@"AISC_EM11_Pset_BoltHole");
            var boltHoleBeamPset1 = BbBoltHoleProperties.Create(pSetBeamBH01, "Drilling", "Top", "No design constraint", "Tapped Hole", 30, false, 0);

            boltHoleBeamPset1.AssignTo(bHoleBeam01);
            boltHoleBeamPset1.AssignTo(bHoleBeam02);
            boltHoleBeamPset1.AssignTo(bHoleBeam03);
            boltHoleBeamPset1.AssignTo(bHoleBeam04);
            boltHoleBeamPset1.AssignTo(bHoleBeam05);
            boltHoleBeamPset1.AssignTo(bHoleBeam06);

            // Stiffeners-------------------------------------------------------------------------------------------
            //Stiffener1
            var stiffener1 = BbStiffener.Create("st00102", "stiffener", 100, 425, 35,
                                                BbCoordinate3D.Create(65, 0, 5000), BbHeaderSetting.Setting3D.ZAxis, BbHeaderSetting.Setting3D.XAxis, mainPart);
            //Stifenner1 properties
            //Identification
            var stiffIdentity1 = BbPieceIdentity.Create("indMark002", "pieceMark002", "prelimMark002", "barcode123456892", false);

            stiffIdentity1.AssignTo(stiffener1);
            //Status
            var pSetStstiff01 = BbPropertySet.Create(@"AISC_EM11_Pset_StatusInformation");
            var statusstiff01 = BbStatus.Create(pSetStstiff01, "ReadyForProcurement", "Default", true);

            statusstiff01.AssignTo(stiffener1);
            //Version
            var pSetVrstiff01  = BbPropertySet.Create(@"AISC_EM11_Pset_VersionInformation");
            var versionstiff01 = BbVersion.Create(pSetVrstiff01, "versionStiff01");

            versionstiff01.AssignTo(stiffener1);
            //Tolerance
            var pSetLystiff01    = BbPropertySet.Create(@"AISC_EM11_Pset_ToleranceForLayout");
            var tolerancestiff01 = BbLayoutTolerance.Create(pSetLystiff01, 0.01);

            tolerancestiff01.AssignTo(stiffener1);
            //Quantity
            var qStiff = BbQuantityRequired.Create();

            qStiff.Add(stiffener1);
            //Material
            var pSetMat1      = BbPropertySet.Create(@"AISC_EM11_Pset_MaterialProperty");
            var materialStiff = BbMaterial.Create("ASTM A992", pSetMat1, "materialID002",
                                                  "materialCert002", "materialGrade002", "materialType002");

            materialStiff.AssociateTo(stiffener1);
            //Finish/treatment
            //var paintStiff = BbPaintFinish.Create("stiffener paint", "PAINTED", stiffener1);
            //paintStiff.AddToElement(stiffener1);

            var pSetSTstiff01  = BbPropertySet.Create(@"AISC_EM11_Pset_SurfaceTreatment");
            var paintStiffPset = BbSurfaceTreatmentProperty.Create(pSetSTstiff01, new List <string> {
                "Galvanized"
            });

            paintStiffPset.AssignTo(stiffener1);

            //Stiffener2-------------------------------
            var stiffener2 = BbStiffener.Create("st00102", "stiffener", 100, 425, 35,
                                                BbCoordinate3D.Create(-65, 0, 5000), BbHeaderSetting.Setting3D.ZAxis, BbHeaderSetting.Setting3D.XAxis, mainPart);
            //Stifenner2 properties
            //Identification
            var stiffIdentity2 = BbPieceIdentity.Create("indMark003", "pieceMark003", "prelimMark003", "barcode123456893", false);

            stiffIdentity2.AssignTo(stiffener2);
            //Status
            statusstiff01.AssignTo(stiffener2);
            //Version
            versionstiff01.AssignTo(stiffener2);
            //Tolerance
            tolerancestiff01.AssignTo(stiffener2);
            //Quantity
            qStiff.Add(stiffener2);
            //Material
            materialStiff.AssociateTo(stiffener2);
            //Finish/treatment
            //paintStiff.AddToOtherElement(stiffener2);
//            stiffener2.AddPaintFinish(paintStiff);
            //paintStiffPset.AssignTo(stiffener2);

            //Stiffener3-------------------------------
            var stiffener3 = BbStiffener.Create("st00102", "stiffener", 100, 425, 35,
                                                BbCoordinate3D.Create(65, 0, 4600), BbHeaderSetting.Setting3D.ZAxis, BbHeaderSetting.Setting3D.XAxis, mainPart);
            //Stifenner3 properties
            //Identification
            var stiffIdentity3 = BbPieceIdentity.Create("indMark004", "pieceMark004", "prelimMark004", "barcode123456894", false);

            stiffIdentity3.AssignTo(stiffener3);
            //Status
            statusstiff01.AssignTo(stiffener3);
            //Version
            versionstiff01.AssignTo(stiffener3);
            //Tolerance
            tolerancestiff01.AssignTo(stiffener3);
            //Quantity
            qStiff.Add(stiffener3);
            //Material
            materialStiff.AssociateTo(stiffener3);
            //Finish/treatment
            //paintStiff.AddToOtherElement(stiffener3);
            //stiffener3.AddPaintFinish(paintStiff);
            //paintStiffPset.AssignTo(stiffener3);

            //Stiffener4-------------------------------
            var stiffener4 = BbStiffener.Create("st00102", "stiffener", 100, 425, 35,
                                                BbCoordinate3D.Create(-65, 0, 4600), BbHeaderSetting.Setting3D.ZAxis, BbHeaderSetting.Setting3D.XAxis, mainPart);
            //Stifenner4 properties
            //Identification
            var stiffIdentity4 = BbPieceIdentity.Create("indMark005", "pieceMark005", "prelimMark005", "barcode123456895", false);

            stiffIdentity4.AssignTo(stiffener4);
            //Status
            statusstiff01.AssignTo(stiffener4);
            //Version
            versionstiff01.AssignTo(stiffener4);
            //Tolerance
            tolerancestiff01.AssignTo(stiffener4);
            //Quantity
            qStiff.Add(stiffener4);
            //Material
            materialStiff.AssociateTo(stiffener4);
            //Finish/treatment
            //paintStiff.AddToOtherElement(stiffener4);
            //stiffener4.AddPaintFinish(paintStiff);
            //paintStiffPset.AssignTo(stiffener4);

            // welding stiffeners with beam //DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD


            //BbSlottedHole.Create(mainPart, BbCoordinate2D.Create(3000, 50), 70, 30, BbDirection2D.RefDirection2D,
            //    SemHoleLocation.Web, true);

            //2 Clip angles for column1----------------------------------------------------------------------------------

            var aProfile = BbNamedLProfile.Create("AISC", "L203X152X19", 203, 152, 19);

            var derived1 = BbDerivedProfile.Create(aProfile, false, true);
            // -90.3 for showing gap between elements
            var angle = BbClipAngle.Create(
                "a00102",
                "angle",
                derived1, 360,
                //BbCoordinate3D.Create(5898.5, 90.3, -180 - 254),
                BbCoordinate3D.Create(90.3, -180, 5898.5),
                BbHeaderSetting.Setting3D.YAxis, BbHeaderSetting.Setting3D.Axis,
                mainPart
                );

            //var w000 = BbCoordinate3D.Create(5898.5, 0, 0);
            //var w001 = BbCoordinate3D.Create(5898.5, 0, 200);
            var w000          = BbCoordinate3D.Create(5898.5, 0, 0);
            var w001          = BbCoordinate3D.Create(5898.5, 0, 200);
            var curve         = BbPolyline3D.Create(new BbCoordinate3D[] { w000, w001 });
            var curveGeometry = BbCurveGeometry.Create(curve);

            //Clip angle 1 properties
            //Identification
            var angleIdentity1 = BbPieceIdentity.Create("indMark006", "pieceMark006", "prelimMark006", "barcode123456896", false);

            angleIdentity1.AssignTo(angle);
            //Status
            var pSetStAngle01 = BbPropertySet.Create(@"AISC_EM11_Pset_StatusInformation");
            var statusAngle01 = BbStatus.Create(pSetStAngle01, "ReadyForProcurement", "Default", false);

            statusAngle01.AssignTo(angle);
            //Version
            var pSetVrAngle01  = BbPropertySet.Create(@"AISC_EM11_Pset_VersionInformation");
            var versionAngle01 = BbVersion.Create(pSetVrAngle01, "versionAngle001");

            versionAngle01.AssignTo(angle);
            //Tolerance
            var pSetLyAngle01    = BbPropertySet.Create(@"AISC_EM11_Pset_ToleranceForLayout");
            var toleranceAngle01 = BbLayoutTolerance.Create(pSetLyAngle01, 0.01);

            toleranceAngle01.AssignTo(angle);
            //Quantity
            var qAngle = BbQuantityRequired.Create();

            qAngle.Add(angle);
            //Material

            var pSetMat3      = BbPropertySet.Create(@"AISC_EM11_Pset_MaterialProperty");
            var materialAngle = BbMaterial.Create("ASTM A992", pSetMat3, "materialID003",
                                                  "materialCert003", "materialGrade003", "materialType003");

            materialAngle.AssociateTo(angle);
            //Finish/treatment
            //var paintAngle = BbPaintFinish.Create("angle blasted", "BLASTED", angle);
            //angle.AddPaintFinish(paintAngle);
            //paintAngle.AddToElement(angle);
            var pSetSTAngle01  = BbPropertySet.Create(@"AISC_EM11_Pset_SurfaceTreatment");
            var paintAnglePset = BbSurfaceTreatmentProperty.Create(pSetSTAngle01, new List <string> {
                "Galvanized"
            });

            paintAnglePset.AssignTo(angle);

            //Feature
            //DrillHoles.Create(angle, Coordinate2D.Create(100, -5), 15, HoleLocation.Bottom, false);
            //DrillHoles.Create(angle, Coordinate2D.Create(300, 10), 20, HoleLocation.Bottom, false);
            var bHoleAngle01 = BbDrillHoles.Create(angle, BbCoordinate2D.Create(80, 9.5), 15, SemHoleLocation.Right, false);
            var bHoleAngle02 = BbDrillHoles.Create(angle, BbCoordinate2D.Create(280, 9.5), 20, SemHoleLocation.Right, false);
            //Clip Angle1 Bolt Hole properties
            var pSetAngleBH01      = BbPropertySet.Create(@"AISC_EM11_Pset_BoltHole");
            var boltHoleAnglePset1 = BbBoltHoleProperties.Create(pSetAngleBH01, "Drilling", "Top", "No design constraint", "Tapped Hole", 30, false, 0);

            boltHoleAnglePset1.AssignTo(bHoleAngle01);
            boltHoleAnglePset1.AssignTo(bHoleAngle02);


            var derived = BbDerivedProfile.Create(aProfile, true, true);
            var angle2  = BbClipAngle.Create("a00103",
                                             "angle", derived, 360,
                                             //BbCoordinate3D.Create(5898.5, -90.3, -180 - 254),
                                             BbCoordinate3D.Create(-90.3, -180, 5898.5),
                                             //BbDirection3D.ZAxis, BbDirection3D.XAxis2D,
                                             BbHeaderSetting.Setting3D.YAxis, BbHeaderSetting.Setting3D.Axis,
                                             mainPart);

            //Clip angle 2 properties
            //Identification
            var angleIdentity2 = BbPieceIdentity.Create("indMark007", "pieceMark007", "prelimMark007", "barcode123456897", false);

            angleIdentity2.AssignTo(angle2);
            //Status
            statusAngle01.AssignTo(angle2);
            //Version
            versionAngle01.AssignTo(angle2);
            //Tolerance
            toleranceAngle01.AssignTo(angle2);
            //Quantity
            qAngle.Add(angle2);
            //Material
            materialAngle.AssociateTo(angle2);
            //Finish/treatment
            //angle2.AddPaintFinish(paintAngle);
            //paintAngle.AddToOtherElement(angle2);
            //paintAnglePset.AssignTo(angle2);

            //DrillHoles.Create(angle2, Coordinate2D.Create(100, -5), 15, HoleLocation.Top, false);
            //DrillHoles.Create(angle2, Coordinate2D.Create(300, 10), 20, HoleLocation.Top, false);
            var bHoleAngle03 = BbDrillHoles.Create(angle2, BbCoordinate2D.Create(80, -9.5), 15, SemHoleLocation.Right, false);
            var bHoleAngle04 = BbDrillHoles.Create(angle2, BbCoordinate2D.Create(280, -9.5), 20, SemHoleLocation.Right, false);

            //Clip Angle2 Bolt Hole properties
            boltHoleAnglePset1.AssignTo(bHoleAngle03);
            boltHoleAnglePset1.AssignTo(bHoleAngle04);



            var w1 = BbWeld.Create(mainPart, angle);

            //var w1 = BbWeld.Create("Tee Joint", mainPart, angle);
            //var w2 = Weld.Create("Tee Joint", mainPart, angle2);
            w1.AddWeldingPath(curveGeometry, BbCoordinate3D.Create(0.0, 0.0, 0.0));

            var pSetw1 = BbPropertySet.Create(@"AISC_EM11_Pset_Weld");

            w1.AddProperties(pSetw1, "weld id", "weld description", "wps code", "category", "weld grade", 100, false);
            w1.AddProperties(pSetw1, "weld type1", "weld type2", "weld surface1", "weld surface 2", 123, "weld process",
                             1, 2, 3, 4, 5, 6, 7, 8, false, false);

            pSetw1.AssignTo(w1);


            var wc000          = BbCoordinate3D.Create(5898.5, 0, 0);
            var wc001          = BbCoordinate3D.Create(5898.5, 0, 200);
            var ccurve         = BbPolyline3D.Create(new BbCoordinate3D[] { wc000, wc001 });
            var ccurveGeometry = BbCurveGeometry.Create(ccurve);

            var boltAss = BbBoltAssembly.Create(mainPart, angle, ccurveGeometry, BbCoordinate3D.Create(1200, 60, 0));

            var nut = BbNut.Create(boltAss);

            var nutPSetw1 = BbPropertySet.Create(@"AISC_EM11_Pset_Nut");

            nut.AddProperties(nutPSetw1, "nut standard", "nut type", 5, 3, false);
            nutPSetw1.AssignTo(nut);

            var washer1 = BbWasher.Create(boltAss);

            var washerPSetw1 = BbPropertySet.Create(@"AISC_EM11_Pset_Washer");

            nut.AddProperties(washerPSetw1, "washer standard", "washer type", 5, 2, false);
            washerPSetw1.AssignTo(washer1);

            var washer2      = BbWasher.Create(boltAss);
            var washerPSetw2 = BbPropertySet.Create(@"AISC_EM11_Pset_Washer");

            nut.AddProperties(washerPSetw2, "washer standard", "washer type", 5, 1, true);
            washerPSetw2.AssignTo(washer2);

            //w1.AddProperties();


            //var wtype = SemWeldType.Create("Tee Joint", "tj0001");
            //wtype.Defines(w1);
            //wtype.Defines(w2);


            ////var derived2 = DerivedProfile.Create(aProfile, true, false);
            ////var angle3 = SteelPiece.Create("a00104",
            ////    "angle", derived2, 400,
            ////    Coordinate3D.Create(101.5, -90.3, -200 - 254), Direction3D.ZAxis, Direction3D.XAxis2D, assembly,
            ////    typeof(IfcDiscreteAccessory));



            //////DrillHoles.Create(angle3, Coordinate2D.Create(100, 5), 15, HoleLocation.Top, false);
            //////DrillHoles.Create(angle3, Coordinate2D.Create(300, 5), 15, HoleLocation.Top, false);
            ////DrillHoles.Create(angle3, Coordinate2D.Create(100, -10), 15, HoleLocation.Left, false);
            ////DrillHoles.Create(angle3, Coordinate2D.Create(300, -10), 15, HoleLocation.Left, false);

            ////var angle4 = SteelPiece.Create("a00105",
            ////    "angle",  aProfile, 400,
            ////    Coordinate3D.Create(101.5, 90.3, -200 - 254), Direction3D.ZAxis, Direction3D.XAxis2D, assembly,
            ////    typeof(IfcDiscreteAccessory));

            //////DrillHoles.Create(angle4, Coordinate2D.Create(100, 5), 15, HoleLocation.Bottom, false);
            //////DrillHoles.Create(angle4, Coordinate2D.Create(300, 5), 15, HoleLocation.Bottom, false);
            ////DrillHoles.Create(angle4, Coordinate2D.Create(100, 10), 15, HoleLocation.Left, false);
            ////DrillHoles.Create(angle4, Coordinate2D.Create(300, 10), 15, HoleLocation.Left, false);



            //Clip angle for column2----------------------------------------------------------------------------------

            var derived3 = BbDerivedProfile.Create(aProfile, true, false);
            var angle3   = BbClipAngle.Create(
                "a00103",
                "angle",
                derived3, 360,
                BbCoordinate3D.Create(-90.3, -180, 5898.5 - 5798.5),
                BbHeaderSetting.Setting3D.YAxis, BbHeaderSetting.Setting3D.Axis,
                mainPart
                );

            //Clip angle 3 properties
            //Identification
            var angleIdentity3 = BbPieceIdentity.Create("indMark008", "pieceMark008", "prelimMark008", "barcode123456898", false);

            angleIdentity3.AssignTo(angle3);
            //Status
            statusAngle01.AssignTo(angle3);
            //Version
            versionAngle01.AssignTo(angle3);
            //Tolerance
            toleranceAngle01.AssignTo(angle3);
            //Quantity
            qAngle.Add(angle3);
            //Material
            materialAngle.AssociateTo(angle3);
            //Finish/treatment
            //angle3.AddPaintFinish(paintAngle);
            //paintAngle.AddToOtherElement(angle3);
            //paintAnglePset.AssignTo(angle3);

            var bHoleAngle05 = BbDrillHoles.Create(angle3, BbCoordinate2D.Create(80, -10), 15, SemHoleLocation.Left, false);
            var bHoleAngle06 = BbDrillHoles.Create(angle3, BbCoordinate2D.Create(280, -10), 15, SemHoleLocation.Left, false);

            //Clip Angle3 Bolt Hole properties
            boltHoleAnglePset1.AssignTo(bHoleAngle05);
            boltHoleAnglePset1.AssignTo(bHoleAngle06);


            var derived4 = BbDerivedProfile.Create(aProfile, false, false);
            var angle4   = BbClipAngle.Create(
                "a00104",
                "angle",
                derived4, 360,
                BbCoordinate3D.Create(90.3, -180, 5898.5 - 5798.5),
                BbHeaderSetting.Setting3D.YAxis, BbHeaderSetting.Setting3D.Axis,
                mainPart
                );

            //Clip angle 4 properties
            //Identification
            var angleIdentity4 = BbPieceIdentity.Create("indMark009", "pieceMark009", "prelimMark009", "barcode123456899", false);

            angleIdentity4.AssignTo(angle4);
            //Status
            statusAngle01.AssignTo(angle4);
            //Version
            versionAngle01.AssignTo(angle4);
            //Tolerance
            toleranceAngle01.AssignTo(angle4);
            //Quantity
            qAngle.Add(angle4);
            //Material
            materialAngle.AssociateTo(angle4);
            //Finish/treatment
            //angle4.AddPaintFinish(paintAngle);
            //paintAngle.AddToOtherElement(angle4);
            //paintAnglePset.AssignTo(angle4);

            var bHoleAngle07 = BbDrillHoles.Create(angle4, BbCoordinate2D.Create(80, 10), 15, SemHoleLocation.Left, false);
            var bHoleAngle08 = BbDrillHoles.Create(angle4, BbCoordinate2D.Create(280, 10), 15, SemHoleLocation.Left, false);

            boltHoleAnglePset1.AssignTo(bHoleAngle07);
            boltHoleAnglePset1.AssignTo(bHoleAngle08);

            // welding column 2 & beam with angle 3,4//DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD


            // Assembly 2- Column1-------------------------------------------------------------------------------------
            var assembly2 = BbAssembly.Create(
                "assid003",
                "Steel Assembly",
                "ASS02", "client_marker2",
                "prelim_marker2",
                "ship_mark2",
                "202301123433",
                floor,
                BbCoordinate3D.Create(6014.3, 0, 0),
                BbHeaderSetting.Setting3D.ZAxis,
                BbHeaderSetting.Setting3D.XAxis);

            // assembly 2 properties
            //Quantity
            var qAssemCol1 = BbQuantityRequired.Create();

            qAssemCol1.Add(assembly2);
            //Finish/tearment
            //var paintAssem2 = BbPaintFinish.Create("Assy gal", "GALVANIZED",assembly2);
            //assembly2.AddPaintFinish(paintAssem2);
            //paintAssem2.AddToElement(assembly2);

            var pSetAssemSTr02  = BbPropertySet.Create(@"AISC_EM11_Pset_SurfaceTreatment");
            var paintAssem2Pset = BbSurfaceTreatmentProperty.Create(pSetAssemSTr02, new List <string> {
                "Galvanized"
            });

            paintAssem2Pset.AssignTo(assembly2);
            //Scheduling
            var pSetAssemSc02 = BbPropertySet.Create(@"AISC_EM11_Pset_Schedule");
            var AssemSch02    = BbSchedule.Create(pSetAssemSc02, "seq01", "seqLevel 01", DateTime.Now);

            AssemSch02.AssignTo(assembly2);
            //Status
            var pSetAssemSt02 = BbPropertySet.Create(@"AISC_EM11_Pset_StatusInformation");
            var AssemStat02   = BbStatus.Create(pSetAssemSt02, "Default", "Default", true);

            AssemStat02.AssignTo(assembly2);
            //Drawing number
            var pSetAssemDN02     = BbPropertySet.Create(@"AISC_EM11_Pset_DrawingNumber");
            var DnumberAssem2Pset = BbDrawingNumber.Create(pSetAssemDN02, new List <string> {
                "DR001PH1006", "DR001PH1005"
            });

            DnumberAssem2Pset.AssignTo(assembly2);
            //Version
            var pSetAssemVr02  = BbPropertySet.Create(@"AISC_EM11_Pset_VersionInformation");
            var versionAssem02 = BbVersion.Create(pSetAssemVr02, "versionAssem02");

            versionAssem02.AssignTo(assembly2);

            //Main Piece 2- Column1
            var mainPart2 = BbMainPiece.Create(
                "c00102",
                "main piece",
                profile, 6000,
                BbHeaderSetting.Setting3D.DefaultOrigin,
                BbHeaderSetting.Setting3D.ZAxis,
                BbHeaderSetting.Setting3D.XAxis,
                assembly2);

            // Column1 properties
            //Identification
            var pieceIdCol01 = BbPieceIdentity.Create("indMark010", "pieceMark010", "prelimMark010", "barcode123456880", true);

            pieceIdCol01.AssignTo(mainPart2);
            //Status
            var pSetColSt01 = BbPropertySet.Create(@"AISC_EM11_Pset_StatusInformation");
            var statusCol01 = BbStatus.Create(pSetColSt01, "ReadyForProcurement", "Default", true);

            statusCol01.AssignTo(mainPart2);
            //Version
            var pSetColVr01  = BbPropertySet.Create(@"AISC_EM11_Pset_VersionInformation");
            var versionCol01 = BbVersion.Create(pSetColVr01, "versionCol001");

            versionCol01.AssignTo(mainPart2);
            //Tolerance
            var pSetColLy01    = BbPropertySet.Create(@"AISC_EM11_Pset_ToleranceForLayout");
            var toleranceCol01 = BbLayoutTolerance.Create(pSetColLy01, 0.002);

            toleranceCol01.AssignTo(mainPart2);
            //Quantity
            var qPieceCol = BbQuantityRequired.Create();

            qPieceCol.Add(mainPart2);
            //Material

            var pSetMat4 = BbPropertySet.Create(@"AISC_EM11_Pset_MaterialProperty");

            var materialCol1 = BbMaterial.Create("ASTM A992", pSetMat4, "materialID004",
                                                 "materialCert004", "materialGrade004", "materialType004");

            materialCol1.AssociateTo(mainPart2);
            //Finish/treatment
            //var paintCol1 = BbPaintFinish.Create("paint col", "PAINTED", mainPart2);
            //mainPart2.AddPaintFinish(paintCol1);
            //paintCol1.AddToElement(mainPart2);

            var pSetColST01  = BbPropertySet.Create(@"AISC_EM11_Pset_SurfaceTreatment");
            var paintColPset = BbSurfaceTreatmentProperty.Create(pSetColST01, new List <string> {
                "Blast"
            });

            paintColPset.AssignTo(mainPart2);
            //Castellation
            //var pSetCt02 = BbPropertySet.Create(@"AISC_EM11_Pset_Castellation");
            //var castellation2 = BbCastellation.Create(pSetCt02, "Circular", 0.002, 0.002, 0.001, 0.002, 0.01, 0.001);
            //castellation2.AssignTo(mainPart2);

            //Features
            var bHoleCol01 = BbDrillHoles.Create(mainPart2, BbCoordinate2D.Create(6000 - 508 / 2 - 100, 100), 15, SemHoleLocation.Web,
                                                 false);
            var bHoleCol02 = BbDrillHoles.Create(mainPart2, BbCoordinate2D.Create(6000 - 508 / 2 + 100, 100), 15, SemHoleLocation.Web,
                                                 false);
            var bHoleCol03 = BbDrillHoles.Create(mainPart2, BbCoordinate2D.Create(6000 - 508 / 2 - 100, -100), 15, SemHoleLocation.Web,
                                                 false);
            var bHoleCol04 = BbDrillHoles.Create(mainPart2, BbCoordinate2D.Create(6000 - 508 / 2 + 100, -100), 15, SemHoleLocation.Web,
                                                 false);

            var pSetColBH01      = BbPropertySet.Create(@"AISC_EM11_Pset_BoltHole");
            var boltHoleColPset1 = BbBoltHoleProperties.Create(pSetColBH01, "Drilling", "Top", "No design constraint", "Tapped Hole", 20, false, 0);

            boltHoleColPset1.AssignTo(bHoleCol01);
            boltHoleColPset1.AssignTo(bHoleCol02);
            boltHoleColPset1.AssignTo(bHoleCol03);
            boltHoleColPset1.AssignTo(bHoleCol04);

            BbSlottedHole.Create(mainPart2, BbCoordinate2D.Create(5000, 50), 100, 30, BbDirection2D.Create(0.9, 0.3),
                                 SemHoleLocation.Web, true);
            //Slotted Hole properties


            // welding colum 1 with angle//DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

            //SemConnectedElements.Create(assembly, assembly2);

            ///////////////////////////////////////////weld

            //var wp = BbWeldProperties.Create(10, 14);
            //wp.AssignTo(w1);
            //wp.AssignTo(w2);


            // Assembly 3- Column2----------------------------------------------------------------------------------------
            var assembly3 = BbAssembly.Create(
                "assid003", "Steel Assembly", "ASS02", "client_marker3", "prelim_marker3", "ship_mark3", "302301123425",
                floor,
                BbCoordinate3D.Create(-14.3, 0, 0), BbHeaderSetting.Setting3D.ZAxis, BbHeaderSetting.Setting3D.XAxis);

            // Assembly 3 properties
            //Quantity
            qAssemCol1.Add(assembly3);
            //Finish/tearment
            //assembly3.AddPaintFinish(paintAssem2);
            //paintAssem2.AddToOtherElement(assembly3);

            //paintAssem2Pset.AssignTo(assembly3);
            //Scheduling
            AssemSch02.AssignTo(assembly3);
            //Status
            AssemStat02.AssignTo(assembly3);
            //Drawing number
            var pSetAssemDN03     = BbPropertySet.Create(@"AISC_EM11_Pset_DrawingNumber");
            var DnumberAssem3Pset = BbDrawingNumber.Create(pSetAssemDN03, new List <string> {
                "DR001PH1006", "DR001PH1005", "DR001PH1008"
            });

            DnumberAssem3Pset.AssignTo(assembly3);
            //Version
            versionAssem02.AssignTo(assembly3);

            //Main Piece 3- Column 2
            var mainPart3 = BbMainPiece.Create("c20010",
                                               "main piece", profile, 6000,
                                               BbHeaderSetting.Setting3D.DefaultOrigin, BbHeaderSetting.Setting3D.ZAxis, BbHeaderSetting.Setting3D.XAxis, assembly3);


            //Column2 properties
            //Identification
            var pieceIdCol02 = BbPieceIdentity.Create("indMark011", "pieceMark011", "prelimMark011", "barcode123456881", true);

            pieceIdCol02.AssignTo(mainPart3);
            //Status
            var pSetColSt02 = BbPropertySet.Create(@"AISC_EM11_Pset_StatusInformation");
            var statusCol02 = BbStatus.Create(pSetColSt02, "ReadyForMill", "Default", true);

            statusCol02.AssignTo(mainPart3);
            //Version
            var pSetColVr02  = BbPropertySet.Create(@"AISC_EM11_Pset_VersionInformation");
            var versionCol02 = BbVersion.Create(pSetColVr02, "versionCol002");

            versionCol02.AssignTo(mainPart3);
            //Tolerance
            toleranceCol01.AssignTo(mainPart3);
            //Quantity
            qPieceCol.Add(mainPart3);
            //Material
            materialCol1.AssociateTo(mainPart3);
            //Finish/treatment
            //mainPart3.AddPaintFinish(paintCol1);
            //paintCol1.AddToOtherElement(mainPart3);
            //paintColPset.AssignTo(mainPart3);

            //Castellation- not required
            //var pSetCt02 = BbPropertySet.Create(@"AISC_EM11_Pset_Castellation");
            //var castellation2 = BbCastellation.Create(pSetCt02, "Circular", 0.002, 0.002, 0.001, 0.002, 0.01, 0.001);
            //castellation2.AssignTo(mainPart2);


            // Column2 features
            var bHoleCol05 = BbDrillHoles.Create(mainPart3, BbCoordinate2D.Create(6000 - 508 / 2 - 100, 100), 15, SemHoleLocation.Web,
                                                 false);
            var bHoleCol06 = BbDrillHoles.Create(mainPart3, BbCoordinate2D.Create(6000 - 508 / 2 + 100, 100), 15, SemHoleLocation.Web,
                                                 false);
            var bHoleCol07 = BbDrillHoles.Create(mainPart3, BbCoordinate2D.Create(6000 - 508 / 2 - 100, -100), 15, SemHoleLocation.Web,
                                                 false);
            var bHoleCol08 = BbDrillHoles.Create(mainPart3, BbCoordinate2D.Create(6000 - 508 / 2 + 100, -100), 15, SemHoleLocation.Web,
                                                 false);

            boltHoleColPset1.AssignTo(bHoleCol05);
            boltHoleColPset1.AssignTo(bHoleCol06);
            boltHoleColPset1.AssignTo(bHoleCol07);
            boltHoleColPset1.AssignTo(bHoleCol08);


            return(BbInstanceDB.Write(filename));
        }
Esempio n. 28
0
        public static bool ReadTestV02(string filename)
        {
            SemInstanceDB.Reset();

            EarlyBindingInstanceModel.Reset();

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

            SemHeaderSetting.Retrieve();
            SemProject.Retrieve();
            SemSite.Retrieve();
            SemBuilding.Retrieve();
            SemFloor.Retrieve();

//            var sites = SemSite.Retrieve(project);
//
//
//
//
//            ////retrieve SEMs out of sites
//            var semBuildings = new List<SemBuilding>();
//            foreach (var theSite in sites)
//            {
//                var buildings = SemBuilding.Retrieve(theSite);
//                foreach(var building in buildings)
//                { semBuildings.Add(building); }
//            }
//
//            ////retrieve SEMs out of buildings
//            var semFloors = new List<SemFloor>();
//            foreach (var theBuilding in semBuildings)
//            {
//                var floors = SemFloor.Retrieve(theBuilding);
//                foreach (var floor in floors)
//                { semFloors.Add(floor); }
//            }
//
//            ////retrieve SEMs out of floors
//            var semAssemblies = new List<SemAssembly>();
//            foreach (var theFloor in semFloors)
//            {
//                var assemblies = SemAssembly.Retrieve(theFloor);
//                foreach(var assem in assemblies)
//                { semAssemblies.Add(assem); }
//            }
//
//            ////retrieve SEMs out of Assemblies
//            var semElements = new List<SemMainPiece>();
//            foreach (var assembly in semAssemblies)
//            {
//                var semPaintFinishes = assembly.PaintFinishes;
//                //SemQuantityRequired
//                var elements = SemMainPiece.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 = SemMaterial.Retrieve(mainPiece);
//                var pFinishPatches = mainPiece.PaintFinishes; // all related SEMs are retrieved inside
//                var annotation = SemAnnotation.Retrieve(mainPiece);
//                var skewedEnds = SemSkewedEnd.Retrieve(mainPiece); // all related SEMs are retrieved inside
//                var semCutCopes = SemCutCope.Retrieve(mainPiece); // all related SEMs are retrieved inside
//                var semDrillHoles = SemDrillHoles.Retrieve(mainPiece); // all related SEMs are retrieved inside
//                var semSlottedHoles = SemSlottedHole.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 = SemWeldProperties.Retrieve(weld);
//
//                    var clipAngle = SemClipAngle.Retrieve(weld);// Q3: DiscreteAccessory vs. ClipAngle
//                    /////////////////////////////// G1 //////// alternative solution for retrieving profile of clipAngle
//                    var extGeometry = clipAngle.SemElementGeometry as SemExtrudedGeometry;
//                    var profile = SemMainPiece.RetrieveProfile(extGeometry);// Q8: Can't put retrieveProfile in any other place + clipAngle
//                    clipAngle.Profile = profile;
//
//                    var angleDrillHoles = SemDrillHoles.Retrieve(clipAngle);
//                    var AngleSlottedHoles = SemSlottedHole.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 SemWeldProperties
//
//                }
//            }


            // SemConnectedElements

            // SemCoordinate2D, SemCoordinate3D, SemDirection3D

            // SemSingleProperty ...



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

            //return SemInstanceDB.Read(filename);
            return(false);
        }
Esempio n. 29
0
        private uint AddSemToExport(BbBase bbBase)
        {
            uint retValue = 0;

            if (bbBase == null)
            {
                return(0);
            }

            foreach (PropertyInfo propertyInfo in bbBase.GetType().GetProperties())
            {
                if (IsEarlyBindingInstance(propertyInfo))
                {
                    var ins = propertyInfo.GetValue(bbBase, null) as P21Instance;
                    if (ins == null)
                    {
                        continue;
                    }
                    //if (ins.EIN > 0) continue;
                    retValue = EarlyBindingInstanceModel.Add(ins);
                    if (!_semToIfcDictionary.ContainsKey(bbBase.Guid))
                    {
                        _semToIfcDictionary.Add(bbBase.Guid, new SortedSet <uint>()
                        {
                            ins.EIN
                        });
                    }
                    _semToIfcDictionary[bbBase.Guid].Add(ins.EIN);
                    if (!_ifcToSemDictionary.ContainsKey(ins.EIN))
                    {
                        _ifcToSemDictionary.Add(ins.EIN, new SortedSet <Guid>()
                        {
                            bbBase.Guid
                        });
                    }
                    _ifcToSemDictionary[ins.EIN].Add(bbBase.Guid);

                    continue;
                }

                if (IsBbComponents(propertyInfo))
                {
                    var lists = propertyInfo.GetValue(bbBase, null) as IList;
                    if (lists == null)
                    {
                        continue;
                    }
                    if (lists.Count <= 0)
                    {
                        continue;
                    }
                    foreach (var list in lists)
                    {
                        var sem = list as BbBase;
                        if (sem == null)
                        {
                            continue;
                        }
                        retValue = AddSemToExport(sem);
                        //continue;
                    }
                }
            }
            return(retValue);
        }
Esempio n. 30
0
        /// <summary>
        /// wrong implementation, revise needed, donghoon 20131205
        /// </summary>
        /// <param name="assembly"></param>
        /// <returns></returns>
        public static ICollection <BbMainPiece> Retrieve(BbAssembly assembly)
        {
            var refed = EarlyBindingInstanceModel.GetReferencedEntities(assembly.IfcObject.EIN);
            //if (refed.Count <= 0) throw new InvalidDataException();

            var ret = new List <BbMainPiece>();



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

            //    //added
            //    //var a = assembly._ifcRelContainedInSpatialStructure.RelatedElements;
            //    //foreach (var aa in a)
            //    //{
            //    //if (aa.EIN == agg.RelatingObject.EIN)
            //    //{


            //    foreach (var instance in agg.RelatedObjects)
            //    {
            //        if (instance.GetType() == typeof(IfcColumn))
            //        {
            //            var piece = instance as IfcColumn;
            //            if (piece == null) continue;
            //            var semMainPiece = new BbMainPiece(assembly, piece, agg);
            //            ret.Add(semMainPiece);
            //            //assembly.IfcRelAggregates = agg;
            //            BbInstanceDB.AddToExport(semMainPiece);

            //            //Retrieve attributes
            //            var paints = RetrievePaintFinishPatch(semMainPiece);
            //            semMainPiece.PaintFinishes = paints;
            //            var extrudedGeometry = BbExtrudedGeometry.RetrieveFromMainPiece(semMainPiece);
            //            semMainPiece.BbElementGeometry = extrudedGeometry;
            //            var profile = BbProfile.Retrieve(extrudedGeometry);
            //            semMainPiece.Profile = profile;
            //        }


            //        if (instance.GetType() == typeof(IfcBeam))
            //        {

            //            var piece = instance as IfcBeam;
            //            if (piece == null) continue;
            //            var semMainPiece = new BbMainPiece(assembly, piece, agg);
            //            ret.Add(semMainPiece);
            //            //assembly.IfcRelAggregates = agg;
            //            BbInstanceDB.AddToExport(semMainPiece);
            //            //Retrieve attributes
            //            var paints = RetrievePaintFinishPatch(semMainPiece);
            //            semMainPiece.PaintFinishes = paints;
            //            var extrudedGeometry = BbExtrudedGeometry.RetrieveFromMainPiece(semMainPiece);
            //            semMainPiece.BbElementGeometry = extrudedGeometry;
            //            var profile = BbProfile.Retrieve(extrudedGeometry);
            //            semMainPiece.Profile = profile;

            //        }

            //        if (instance.GetType() == typeof(IfcMember))
            //        {
            //            var piece = instance as IfcMember;
            //            if (piece == null) continue;
            //            var semMainPiece = new BbMainPiece(assembly, piece, agg);
            //            ret.Add(semMainPiece);
            //            // assembly.IfcRelAggregates = agg;
            //            BbInstanceDB.AddToExport(semMainPiece);
            //            //Retrieve attributes
            //            var paints = RetrievePaintFinishPatch(semMainPiece);
            //            semMainPiece.PaintFinishes = paints;
            //            var extrudedGeometry = BbExtrudedGeometry.RetrieveFromMainPiece(semMainPiece);
            //            semMainPiece.BbElementGeometry = extrudedGeometry;
            //            var profile = BbProfile.Retrieve(extrudedGeometry);
            //            semMainPiece.Profile = profile;

            //        }
            //    }
            //    //}
            //    //}
            //}


            return(ret);
        }