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); }
/* * 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 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); }
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); }
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); } }
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); }
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); }
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); }
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); }
/* * 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); }
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); }
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); }
//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); }
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); } }