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); }
//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); }
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); }
/* * 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); }
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 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); } }
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 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); }
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); }
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; }
//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); } }
/// <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; }
/// <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); }
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; }
//public BbInstanceList<BbBase> Instances{ // get { return BbInstanceList; } //} /// <summary> /// Singleton for service /// </summary> public void ResetDb() { //_isP21Outdated = false; _bbInstanceList.Clear(); EarlyBindingInstanceModel.Reset(); }
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); }
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); }
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)); }
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); }
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); }
/// <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); }