zoukankan      html  css  js  c++  java
  • xBIM IFC 墙壁案例

         目录

         一、使用代码生成IFC 模型

         其实使用代码的形式去生成模型一堵墙还是要做很多的工作。

    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Linq;
    using Xbim.Common;
    using Xbim.Common.Step21;
    using Xbim.Ifc;
    using Xbim.IO;
    using Xbim.Ifc4.ActorResource;
    using Xbim.Ifc4.DateTimeResource;
    using Xbim.Ifc4.ExternalReferenceResource;
    using Xbim.Ifc4.PresentationOrganizationResource;
    using Xbim.Ifc4.GeometricConstraintResource;
    using Xbim.Ifc4.GeometricModelResource;
    using Xbim.Ifc4.GeometryResource;
    using Xbim.Ifc4.Interfaces;
    using Xbim.Ifc4.Kernel;
    using Xbim.Ifc4.MaterialResource;
    using Xbim.Ifc4.MeasureResource;
    using Xbim.Ifc4.ProductExtension;
    using Xbim.Ifc4.ProfileResource;
    using Xbim.Ifc4.PropertyResource;
    using Xbim.Ifc4.QuantityResource;
    using Xbim.Ifc4.RepresentationResource;
    using Xbim.Ifc4.SharedBldgElements;
    namespace HelloWall
    {
        class Program 
        {
            /// <summary>
            /// 这个案例创建兼容IFC模型的最小步骤,创建一个标准墙
            /// </summary>
            static int Main()
            {
                //first create and initialise a model called Hello Wall
                Console.WriteLine("Initialising the IFC Project....");
                using (var model = CreateandInitModel("HelloWall"))
                {
                    if (model != null)
                    {
                        IfcBuilding building = CreateBuilding(model, "Default Building");
                        IfcWallStandardCase wall = CreateWall(model, 4000, 300, 2400);
    
                        if (wall != null) AddPropertiesToWall(model, wall);
                        using (var txn = model.BeginTransaction("Add Wall"))
                        {
                            building.AddElement(wall);
                            txn.Commit();
                        }
    
                        if (wall != null)
                        {
                            try
                            {
                                Console.WriteLine("Standard Wall successfully created....");
                                //保存到文件
                                model.SaveAs("HelloWallIfc4.ifc", IfcStorageType.Ifc);
                                Console.WriteLine("HelloWallIfc4.ifc has been successfully written");
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine("Failed to save HelloWall.ifc");
                                Console.WriteLine(e.Message);
                            }
                        }
                    }
                    else
                    {
                        Console.WriteLine("Failed to initialise the model");
                    }
                }
                Console.WriteLine("Press any key to exit to view the IFC file....");
                Console.ReadKey();
                LaunchNotepad("HelloWallIfc4.ifc");
                return 0;
            }
    
            private static void LaunchNotepad(string fileName)
            {
                Process p;
                try
                {
    
                    p = new Process {StartInfo = {FileName = fileName, CreateNoWindow = false}};
                    p.Start();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Exception Occurred :{0},{1}",
                              ex.Message, ex.StackTrace);
                }
            }
    
            private static IfcBuilding CreateBuilding(IfcStore model, string name)
            {
                //启动事务
                using (var txn = model.BeginTransaction("Create Building"))
                {
                    var building = model.Instances.New<IfcBuilding>();
                    building.Name = name;
    
                    building.CompositionType = IfcElementCompositionEnum.ELEMENT;
                    var localPlacement = model.Instances.New<IfcLocalPlacement>();                   
                    building.ObjectPlacement = localPlacement;
                    var placement = model.Instances.New<IfcAxis2Placement3D>();
                    localPlacement.RelativePlacement = placement;
                    placement.Location = model.Instances.New<IfcCartesianPoint>(p=>p.SetXYZ(0,0,0));
                    //获取项目
                    var project = model.Instances.OfType<IfcProject>().FirstOrDefault();
                    project?.AddBuilding(building);
                    txn.Commit();
                    return building;                               
                }          
            }
    
    
    
            /// <summary>
            /// 设置模型的基本参数、单元、所有权等
            /// </summary>
            /// <param name="projectName">项目名称</param>
            /// <returns></returns>
            private static IfcStore CreateandInitModel(string projectName)
            {
                //首先我们需要为模型创建凭证、这个在之前的文章都有解释
                var credentials = new XbimEditorCredentials
                {
                    ApplicationDevelopersName = "xBimTeam",
                    ApplicationFullName = "Hello Wall Application",
                    ApplicationIdentifier = "HelloWall.exe",
                    ApplicationVersion = "1.0",
                    EditorsFamilyName = "Team",
                    EditorsGivenName = "xBIM",
                    EditorsOrganisationName = "xBimTeam"
                };
                //那么先创建 IfcStore,IfcStore 是IFC4 格式存放在内存中而不是数据库
                //如果模型大于50MB的Ifc或者需要强大的事务处理,数据库在性能方面通常会更好
     
                var model = IfcStore.Create(credentials, IfcSchemaVersion.Ifc4,XbimStoreType.InMemoryModel);
                // 启动事务、将所有的模型更改为 ACID
                using (var txn = model.BeginTransaction("Initialise Model"))
                {
    
                    //常见项目信息
                    var project = model.Instances.New<IfcProject>();
                    //设置单位   这里是英制 
                    project.Initialize(ProjectUnits.SIUnitsUK);
                    project.Name = projectName;
                    //提交修改
                    txn.Commit();
                }
                return model; 
    
            }
    
            /// <summary>
            /// 创建墙
            /// </summary>
            /// <param name="model"></param>
            /// <param name="length">矩形的长度 </param>
            /// <param name="width">矩形占地面积的宽度(墙的宽度)</param>
            /// <param name="height">墙高度</param>
            /// <returns></returns>
            static private IfcWallStandardCase CreateWall(IfcStore model, double length, double width, double height)
            {
                
                //启动事务
                using (var txn = model.BeginTransaction("Create Wall"))
                {
                    var wall = model.Instances.New<IfcWallStandardCase>();
                    wall.Name = "A Standard rectangular wall";
                    // 墙的矩形剖面
                    var rectProf = model.Instances.New<IfcRectangleProfileDef>();
                    rectProf.ProfileType = IfcProfileTypeEnum.AREA;
                    rectProf.XDim = width;
                    rectProf.YDim = length;
    
                    var insertPoint = model.Instances.New<IfcCartesianPoint>();
                    insertPoint.SetXY(0, 400); //在任意位置插入
                    rectProf.Position = model.Instances.New<IfcAxis2Placement2D>();
                    rectProf.Position.Location = insertPoint;
    
                    //模型区域实心
                    var body = model.Instances.New<IfcExtrudedAreaSolid>();
                    body.Depth = height;
                    body.SweptArea = rectProf;
                    body.ExtrudedDirection = model.Instances.New<IfcDirection>();
                    body.ExtrudedDirection.SetXYZ(0, 0, 1);
    
                    //在模型中插入几何参数
                    var origin = model.Instances.New<IfcCartesianPoint>();
                    origin.SetXYZ(0, 0, 0);
                    body.Position = model.Instances.New<IfcAxis2Placement3D>();
                    body.Position.Location = origin;
    
                    //创建一个定义形状来保存几何
                    var shape = model.Instances.New<IfcShapeRepresentation>();
                    var modelContext = model.Instances.OfType<IfcGeometricRepresentationContext>().FirstOrDefault();
                    shape.ContextOfItems = modelContext;
                    shape.RepresentationType = "SweptSolid";
                    shape.RepresentationIdentifier = "Body";
                    shape.Items.Add(body);
    
                    //创建产品定义并将模型几何添加到墙上
                    var rep = model.Instances.New<IfcProductDefinitionShape>();
                    rep.Representations.Add(shape);                
                    wall.Representation = rep;
    
                    //把墙放到模型中
                    var lp = model.Instances.New<IfcLocalPlacement>();
                    var ax3D = model.Instances.New<IfcAxis2Placement3D>();
                    ax3D.Location = origin;
                    ax3D.RefDirection = model.Instances.New<IfcDirection>();
                    ax3D.RefDirection.SetXYZ(0, 1, 0);
                    ax3D.Axis = model.Instances.New<IfcDirection>();
                    ax3D.Axis.SetXYZ(0, 0, 1);
                    lp.RelativePlacement = ax3D;
                    wall.ObjectPlacement = lp;
                    //Where子句:IfcWallStandard依赖于提供一个IfcMaterialLayerSetUsage
                    var ifcMaterialLayerSetUsage = model.Instances.New<IfcMaterialLayerSetUsage>();
                    var ifcMaterialLayerSet = model.Instances.New<IfcMaterialLayerSet>();
                    var ifcMaterialLayer = model.Instances.New<IfcMaterialLayer>();
                    ifcMaterialLayer.LayerThickness = 10;
                    ifcMaterialLayerSet.MaterialLayers.Add(ifcMaterialLayer);
                    ifcMaterialLayerSetUsage.ForLayerSet = ifcMaterialLayerSet;
                    ifcMaterialLayerSetUsage.LayerSetDirection = IfcLayerSetDirectionEnum.AXIS2;
                    ifcMaterialLayerSetUsage.DirectionSense = IfcDirectionSenseEnum.NEGATIVE;
                    ifcMaterialLayerSetUsage.OffsetFromReferenceLine = 150;
    
                    //添加材料到墙上
                    var material = model.Instances.New<IfcMaterial>();
                    material.Name = "some material";
                    var ifcRelAssociatesMaterial = model.Instances.New<IfcRelAssociatesMaterial>();
                    ifcRelAssociatesMaterial.RelatingMaterial = material;
                    ifcRelAssociatesMaterial.RelatedObjects.Add(wall);
    
                    ifcRelAssociatesMaterial.RelatingMaterial = ifcMaterialLayerSetUsage;
    
                    //IfcPresentationLayerAssignment对于IfcWall或IfcWallStandardCase中的CAD演示是必需的 
                    var ifcPresentationLayerAssignment = model.Instances.New<IfcPresentationLayerAssignment>();
                    ifcPresentationLayerAssignment.Name = "some ifcPresentationLayerAssignment";
                    ifcPresentationLayerAssignment.AssignedItems.Add(shape);
                    // 如果IfcPolyline具有两个点,则对于IfcWall是必需的
                    var ifcPolyline = model.Instances.New<IfcPolyline>();
                    var startPoint = model.Instances.New<IfcCartesianPoint>();
                    startPoint.SetXY(0, 0);
                    var endPoint = model.Instances.New<IfcCartesianPoint>();
                    endPoint.SetXY(4000, 0);
                    ifcPolyline.Points.Add(startPoint);
                    ifcPolyline.Points.Add(endPoint);
    
                    var shape2D = model.Instances.New<IfcShapeRepresentation>();
                    shape2D.ContextOfItems = modelContext;
                    shape2D.RepresentationIdentifier = "Axis";
                    shape2D.RepresentationType = "Curve2D";
                    shape2D.Items.Add(ifcPolyline);
                    rep.Representations.Add(shape2D); 
                    txn.Commit();               
                    return wall;
                }
    
            }
    
            /// <summary>
            /// 给墙添加属性
            /// </summary>
            /// <param name="model">XbimModel</param>
            /// <param name="wall"></param>
            static private void AddPropertiesToWall(IfcStore model, IfcWallStandardCase wall)
            {
                using (var txn = model.BeginTransaction("Create Wall"))
                {
                    CreateElementQuantity(model, wall);
                    CreateSimpleProperty(model, wall); 
                    txn.Commit(); 
                }
            }
    
            private static void CreateSimpleProperty(IfcStore model, IfcWallStandardCase wall)
            {
                var ifcPropertySingleValue = model.Instances.New<IfcPropertySingleValue>(psv =>
                {
                    psv.Name = "IfcPropertySingleValue:Time";
                    psv.Description = "";
                    psv.NominalValue = new IfcTimeMeasure(150.0);
                    psv.Unit = model.Instances.New<IfcSIUnit>(siu =>
                    {
                        siu.UnitType = IfcUnitEnum.TIMEUNIT;
                        siu.Name = IfcSIUnitName.SECOND;
                    });
                });
                var ifcPropertyEnumeratedValue = model.Instances.New<IfcPropertyEnumeratedValue>(pev =>
                {
                    pev.Name = "IfcPropertyEnumeratedValue:Music";
                    pev.EnumerationReference = model.Instances.New<IfcPropertyEnumeration>(pe =>
                        {
                            pe.Name = "Notes";
                            pe.EnumerationValues.Add(new IfcLabel("Do"));
                            pe.EnumerationValues.Add(new IfcLabel("Re"));
                            pe.EnumerationValues.Add(new IfcLabel("Mi"));
                            pe.EnumerationValues.Add(new IfcLabel("Fa"));
                            pe.EnumerationValues.Add(new IfcLabel("So"));
                            pe.EnumerationValues.Add(new IfcLabel("La"));
                            pe.EnumerationValues.Add(new IfcLabel("Ti"));
                        });
                    pev.EnumerationValues.Add(new IfcLabel("Do"));
                    pev.EnumerationValues.Add(new IfcLabel("Re"));
                    pev.EnumerationValues.Add(new IfcLabel("Mi"));
    
                });
                var ifcPropertyBoundedValue = model.Instances.New<IfcPropertyBoundedValue>(pbv => 
                {
                    pbv.Name = "IfcPropertyBoundedValue:Mass";
                    pbv.Description = "";
                    pbv.UpperBoundValue = new IfcMassMeasure(5000.0);
                    pbv.LowerBoundValue = new IfcMassMeasure(1000.0);
                    pbv.Unit = model.Instances.New<IfcSIUnit>(siu =>
                    {
                        siu.UnitType = IfcUnitEnum.MASSUNIT;
                        siu.Name = IfcSIUnitName.GRAM;
                        siu.Prefix = IfcSIPrefix.KILO;                  
                    });
                });
    
                var definingValues = new List<IfcReal> { new IfcReal(100.0), new IfcReal(200.0), new IfcReal(400.0), new IfcReal(800.0), new IfcReal(1600.0), new IfcReal(3200.0), };
                var definedValues = new List<IfcReal> { new IfcReal(20.0), new IfcReal(42.0), new IfcReal(46.0), new IfcReal(56.0), new IfcReal(60.0), new IfcReal(65.0), };
                var ifcPropertyTableValue = model.Instances.New<IfcPropertyTableValue>(ptv =>
                {
                    ptv.Name = "IfcPropertyTableValue:Sound";
                    foreach (var item in definingValues)
                    {
                        ptv.DefiningValues.Add(item);
                    }
                    foreach (var item in definedValues)
                    {
                        ptv.DefinedValues.Add(item);
                    }
                    ptv.DefinedUnit = model.Instances.New<IfcContextDependentUnit>(cd =>
                    {
                        cd.Dimensions = model.Instances.New<IfcDimensionalExponents>(de =>
                        {
                            de.LengthExponent = 0;
                            de.MassExponent = 0;
                            de.TimeExponent = 0;
                            de.ElectricCurrentExponent = 0;
                            de.ThermodynamicTemperatureExponent = 0;
                            de.AmountOfSubstanceExponent = 0;
                            de.LuminousIntensityExponent = 0;
                        });
                        cd.UnitType = IfcUnitEnum.FREQUENCYUNIT;
                        cd.Name = "dB";
                    });
    
    
                });
    
                var listValues = new List<IfcLabel> { new IfcLabel("Red"), new IfcLabel("Green"), new IfcLabel("Blue"), new IfcLabel("Pink"), new IfcLabel("White"), new IfcLabel("Black"), };
                var ifcPropertyListValue = model.Instances.New<IfcPropertyListValue>(plv =>
                {
                    plv.Name = "IfcPropertyListValue:Colours";
                    foreach (var item in listValues)
                    {
                        plv.ListValues.Add(item);
                    }
                });
    
                var ifcMaterial = model.Instances.New<IfcMaterial>(m =>
                {
                    m.Name = "Brick";
                });
                var ifcPrValueMaterial = model.Instances.New<IfcPropertyReferenceValue>(prv =>
                {
                    prv.Name = "IfcPropertyReferenceValue:Material";
                    prv.PropertyReference = ifcMaterial;
                });
    
    
                var ifcMaterialList = model.Instances.New<IfcMaterialList>(ml =>
                    {
                        ml.Materials.Add(ifcMaterial);
                        ml.Materials.Add(model.Instances.New<IfcMaterial>(m =>{m.Name = "Cavity";}));
                        ml.Materials.Add(model.Instances.New<IfcMaterial>(m => { m.Name = "Block"; }));
                    });
    
    
                var ifcMaterialLayer = model.Instances.New<IfcMaterialLayer>(ml =>
                {
                    ml.Material = ifcMaterial;
                    ml.LayerThickness = 100.0;
                });
                var ifcPrValueMatLayer = model.Instances.New<IfcPropertyReferenceValue>(prv =>
                {
                    prv.Name = "IfcPropertyReferenceValue:MaterialLayer";
                    prv.PropertyReference = ifcMaterialLayer;
                });
    
                var ifcDocumentReference = model.Instances.New<IfcDocumentReference>(dr =>
                {
                    dr.Name = "Document";
                    dr.Location = "c://Documents//TheDoc.Txt";
                });
                var ifcPrValueRef = model.Instances.New<IfcPropertyReferenceValue>(prv =>
                {
                    prv.Name = "IfcPropertyReferenceValue:Document";
                    prv.PropertyReference = ifcDocumentReference;
                });
    
                var ifcTimeSeries = model.Instances.New<IfcRegularTimeSeries>(ts =>
                {
                    ts.Name = "Regular Time Series";
                    ts.Description = "Time series of events";
                    ts.StartTime = new IfcDateTime("2015-02-14T12:01:01");
                    ts.EndTime = new IfcDateTime("2015-05-15T12:01:01");
                    ts.TimeSeriesDataType = IfcTimeSeriesDataTypeEnum.CONTINUOUS;
                    ts.DataOrigin = IfcDataOriginEnum.MEASURED;
                    ts.TimeStep = 604800; //7 days in secs
                });
    
                var ifcPrValueTimeSeries = model.Instances.New<IfcPropertyReferenceValue>(prv =>
                {
                    prv.Name = "IfcPropertyReferenceValue:TimeSeries";
                    prv.PropertyReference = ifcTimeSeries;
                });
    
                var ifcAddress = model.Instances.New<IfcPostalAddress>(a =>
                {
                    a.InternalLocation = "Room 101";
                    a.AddressLines.AddRange(new[] { new IfcLabel("12 New road"), new IfcLabel("DoxField" ) });
                    a.Town = "Sunderland";
                    a.PostalCode = "DL01 6SX";
                });
                var ifcPrValueAddress = model.Instances.New<IfcPropertyReferenceValue>(prv =>
                {
                    prv.Name = "IfcPropertyReferenceValue:Address";
                    prv.PropertyReference = ifcAddress;
                });
                var ifcTelecomAddress = model.Instances.New<IfcTelecomAddress>(a =>
                {
                    a.TelephoneNumbers.Add(new IfcLabel("01325 6589965"));
                    a.ElectronicMailAddresses.Add(new IfcLabel("bob@bobsworks.com"));
                });
                var ifcPrValueTelecom = model.Instances.New<IfcPropertyReferenceValue>(prv =>
                {
                    prv.Name = "IfcPropertyReferenceValue:Telecom";
                    prv.PropertyReference = ifcTelecomAddress;
                });
    
    
    
                //设置模型元素数量
                var ifcPropertySet = model.Instances.New<IfcPropertySet>(ps =>
                {              
                    ps.Name = "Test:IfcPropertySet";
                    ps.Description = "Property Set";
                    ps.HasProperties.Add(ifcPropertySingleValue);
                    ps.HasProperties.Add(ifcPropertyEnumeratedValue);
                    ps.HasProperties.Add(ifcPropertyBoundedValue);
                    ps.HasProperties.Add(ifcPropertyTableValue);
                    ps.HasProperties.Add(ifcPropertyListValue);
                    ps.HasProperties.Add(ifcPrValueMaterial);
                    ps.HasProperties.Add(ifcPrValueMatLayer);
                    ps.HasProperties.Add(ifcPrValueRef);
                    ps.HasProperties.Add(ifcPrValueTimeSeries);
                    ps.HasProperties.Add(ifcPrValueAddress);
                    ps.HasProperties.Add(ifcPrValueTelecom);             
                });
    
                //需建立关系
                model.Instances.New<IfcRelDefinesByProperties>(rdbp =>
                {                
                    rdbp.Name = "Property Association";
                    rdbp.Description = "IfcPropertySet associated to wall";
                    rdbp.RelatedObjects.Add(wall);
                    rdbp.RelatingPropertyDefinition = ifcPropertySet;
                });
            }
    
            private static void CreateElementQuantity(IfcStore model, IfcWallStandardCase wall)
            {
                //创建模型元素数量
                //首先我们需模型简单物理量,首先将使用模型量长度
                var ifcQuantityArea = model.Instances.New<IfcQuantityLength>(qa =>
                {
                    qa.Name = "IfcQuantityArea:Area";
                    qa.Description = "";
                    qa.Unit = model.Instances.New<IfcSIUnit>(siu =>
                    {
                        siu.UnitType = IfcUnitEnum.LENGTHUNIT;
                        siu.Prefix = IfcSIPrefix.MILLI;
                        siu.Name = IfcSIUnitName.METRE;
                    });
                    qa.LengthValue = 100.0;
    
                });
                //上下文相关单元的数量计数
                var ifcContextDependentUnit = model.Instances.New<IfcContextDependentUnit>(cd =>
                    {
                        cd.Dimensions = model.Instances.New<IfcDimensionalExponents>(de =>
                            {
                                de.LengthExponent = 1;
                                de.MassExponent = 0;
                                de.TimeExponent = 0;
                                de.ElectricCurrentExponent = 0;
                                de.ThermodynamicTemperatureExponent = 0;
                                de.AmountOfSubstanceExponent = 0;
                                de.LuminousIntensityExponent = 0;
                            });
                        cd.UnitType = IfcUnitEnum.LENGTHUNIT;
                        cd.Name = "Elephants";
                    });
                    var ifcQuantityCount = model.Instances.New<IfcQuantityCount>(qc =>
                    {
                        qc.Name = "IfcQuantityCount:Elephant";
                        qc.CountValue = 12;
                        qc.Unit = ifcContextDependentUnit;
                    });
    
    
                 //使用转换单位
                var ifcConversionBasedUnit = model.Instances.New<IfcConversionBasedUnit>(cbu =>
                {
                    cbu.ConversionFactor = model.Instances.New<IfcMeasureWithUnit>(mu =>
                    {
                        mu.ValueComponent = new IfcRatioMeasure(25.4);
                        mu.UnitComponent = model.Instances.New<IfcSIUnit>(siu =>
                        {
                            siu.UnitType = IfcUnitEnum.LENGTHUNIT;
                            siu.Prefix = IfcSIPrefix.MILLI;
                            siu.Name = IfcSIUnitName.METRE;
                        });
    
                    });
                    cbu.Dimensions = model.Instances.New<IfcDimensionalExponents>(de =>
                    {
                        de.LengthExponent = 1;
                        de.MassExponent = 0;
                        de.TimeExponent = 0;
                        de.ElectricCurrentExponent = 0;
                        de.ThermodynamicTemperatureExponent = 0;
                        de.AmountOfSubstanceExponent = 0;
                        de.LuminousIntensityExponent = 0;
                    });
                    cbu.UnitType = IfcUnitEnum.LENGTHUNIT;
                    cbu.Name = "Inch";
                });
                var ifcQuantityLength = model.Instances.New<IfcQuantityLength>(qa =>
                {
                    qa.Name = "IfcQuantityLength:Length";
                    qa.Description = "";
                    qa.Unit = ifcConversionBasedUnit;
                    qa.LengthValue = 24.0;
                });
    
                //lets create the IfcElementQuantity
                var ifcElementQuantity = model.Instances.New<IfcElementQuantity>(eq =>
                {               
                    eq.Name = "Test:IfcElementQuantity";
                    eq.Description = "Measurement quantity";
                    eq.Quantities.Add(ifcQuantityArea);
                    eq.Quantities.Add(ifcQuantityCount);
                    eq.Quantities.Add(ifcQuantityLength);
                });
    
                //下步 建议关系
                model.Instances.New<IfcRelDefinesByProperties>(rdbp =>
                {              
                    rdbp.Name = "Area Association";
                    rdbp.Description = "IfcElementQuantity associated to wall";
                    rdbp.RelatedObjects.Add(wall);
                    rdbp.RelatingPropertyDefinition = ifcElementQuantity;
                });
            }
        }
    }

    二、生成后的IFC文件

    生成的IFC文件可以在您选择的查看器中打开:

    ISO-10303-21;
    HEADER;
    FILE_DESCRIPTION ((''), '2;1');
    FILE_NAME ('', '2016-10-31T10:18:08', (''), (''), 'Xbim File Processor version 4.0.0.0', 'Xbim version 4.0.0.0', '');
    FILE_SCHEMA (('IFC4'));
    ENDSEC;
    DATA;
    #1=IFCPROJECT('2MSHGQD897wuyjYHKVxtyf',#2,'HelloWall',$,$,$,$,(#20,#23),#8);
    #2=IFCOWNERHISTORY(#5,#6,$,.ADDED.,$,$,$,0);
    #3=IFCPERSON($,'Team','xBIM',$,$,$,$,$);
    #4=IFCORGANIZATION($,'xBimTeam',$,$,$);
    #5=IFCPERSONANDORGANIZATION(#3,#4,$);
    #7=IFCORGANIZATION($,'xBimTeam',$,$,$);
    #6=IFCAPPLICATION(#7,'1.0','Hello Wall Application','HelloWall.exe');
    #8=IFCUNITASSIGNMENT((#9,#10,#11,#12,#13,#14,#15,#16,#17));
    #9=IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.);
    #10=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.);
    #11=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.);
    #12=IFCSIUNIT(*,.SOLIDANGLEUNIT.,$,.STERADIAN.);
    #13=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.);
    #14=IFCSIUNIT(*,.MASSUNIT.,$,.GRAM.);
    #15=IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.);
    #16=IFCSIUNIT(*,.THERMODYNAMICTEMPERATUREUNIT.,$,.DEGREE_CELSIUS.);
    #17=IFCSIUNIT(*,.LUMINOUSINTENSITYUNIT.,$,.LUMEN.);
    #18=IFCCARTESIANPOINT((0.,0.,0.));
    #19=IFCAXIS2PLACEMENT3D(#18,$,$);
    #20=IFCGEOMETRICREPRESENTATIONCONTEXT('Building Model','Model',3,1.E-05,#19,$);
    #21=IFCCARTESIANPOINT((0.,0.));
    #22=IFCAXIS2PLACEMENT2D(#21,$);
    #23=IFCGEOMETRICREPRESENTATIONCONTEXT('Building Plan View','Plan',2,1.E-05,#22,$);
    #24=IFCBUILDING('0jQ$yvAIv6URCwLuvWnAo0',#2,'Default Building',$,$,#25,$,$,.ELEMENT.,$,$,$);
    #25=IFCLOCALPLACEMENT($,#26);
    #26=IFCAXIS2PLACEMENT3D(#27,$,$);
    #27=IFCCARTESIANPOINT((0.,0.,0.));
    #28=IFCRELAGGREGATES('3Qs6TKkPjASQ1ctGzUSQ7F',#2,$,$,#1,(#24));
    #29=IFCWALLSTANDARDCASE('3NBPkknun6EuV9fpeE6rFh',#2,'A Standard rectangular wall',$,$,#39,#38,$,$);
    #30=IFCRECTANGLEPROFILEDEF(.AREA.,$,#32,300.,4000.);
    #31=IFCCARTESIANPOINT((0.,400.));
    #32=IFCAXIS2PLACEMENT2D(#31,$);
    #33=IFCEXTRUDEDAREASOLID(#30,#36,#34,2400.);
    #34=IFCDIRECTION((0.,0.,1.));
    #35=IFCCARTESIANPOINT((0.,0.,0.));
    #36=IFCAXIS2PLACEMENT3D(#35,$,$);
    #37=IFCSHAPEREPRESENTATION(#20,'Body','SweptSolid',(#33));
    #38=IFCPRODUCTDEFINITIONSHAPE($,$,(#37,#52));
    #39=IFCLOCALPLACEMENT($,#40);
    #40=IFCAXIS2PLACEMENT3D(#35,#42,#41);
    #41=IFCDIRECTION((0.,1.,0.));
    #42=IFCDIRECTION((0.,0.,1.));
    #43=IFCMATERIALLAYERSETUSAGE(#44,.AXIS2.,.NEGATIVE.,150.,$);
    #44=IFCMATERIALLAYERSET((#45),$,$);
    #45=IFCMATERIALLAYER($,10.,$,$,$,$,$);
    #46=IFCMATERIAL('some material',$,$);
    #47=IFCRELASSOCIATESMATERIAL('0is_vsqtn9ouErH3XVg3O8',#2,$,$,(#29),#43);
    #48=IFCPRESENTATIONLAYERASSIGNMENT('some ifcPresentationLayerAssignment',$,(#37),$);
    #49=IFCPOLYLINE((#50,#51));
    #50=IFCCARTESIANPOINT((0.,0.));
    #51=IFCCARTESIANPOINT((4000.,0.));
    #52=IFCSHAPEREPRESENTATION(#20,'Axis','Curve2D',(#49));
    #54=IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.);
    #53=IFCQUANTITYLENGTH('IfcQuantityArea:Area','',#54,100.,$);
    #56=IFCDIMENSIONALEXPONENTS(1,0,0,0,0,0,0);
    #55=IFCCONTEXTDEPENDENTUNIT(#56,.LENGTHUNIT.,'Elephants');
    #57=IFCQUANTITYCOUNT('IfcQuantityCount:Elephant',$,#55,12.,$);
    #60=IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.);
    #59=IFCMEASUREWITHUNIT(IFCRATIOMEASURE(25.4),#60);
    #61=IFCDIMENSIONALEXPONENTS(1,0,0,0,0,0,0);
    #58=IFCCONVERSIONBASEDUNIT(#61,.LENGTHUNIT.,'Inch',#59);
    #62=IFCQUANTITYLENGTH('IfcQuantityLength:Length','',#58,24.,$);
    #63=IFCELEMENTQUANTITY('2NzDD6BkfDFAUH5zVe3vf0',#2,'Test:IfcElementQuantity','Measurement quantity',$,(#53,#57,#62));
    #64=IFCRELDEFINESBYPROPERTIES('2rxEDLnp59XvLpgGjoNnBQ',#2,'Area Association','IfcElementQuantity associated to wall',(#29),#63);
    #66=IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.);
    #65=IFCPROPERTYSINGLEVALUE('IfcPropertySingleValue:Time','',IFCTIMEMEASURE(150.),#66);
    #68=IFCPROPERTYENUMERATION('Notes',(IFCLABEL('Do'),IFCLABEL('Re'),IFCLABEL('Mi'),IFCLABEL('Fa'),IFCLABEL('So'),IFCLABEL('La'),IFCLABEL('Ti')),$);
    #67=IFCPROPERTYENUMERATEDVALUE('IfcPropertyEnumeratedValue:Music',$,(IFCLABEL('Do'),IFCLABEL('Re'),IFCLABEL('Mi')),#68);
    #70=IFCSIUNIT(*,.MASSUNIT.,.KILO.,.GRAM.);
    #69=IFCPROPERTYBOUNDEDVALUE('IfcPropertyBoundedValue:Mass','',IFCMASSMEASURE(5000.),IFCMASSMEASURE(1000.),#70,$);
    #73=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0);
    #72=IFCCONTEXTDEPENDENTUNIT(#73,.FREQUENCYUNIT.,'dB');
    #71=IFCPROPERTYTABLEVALUE('IfcPropertyTableValue:Sound',$,(IFCREAL(100.),IFCREAL(200.),IFCREAL(400.),IFCREAL(800.),IFCREAL(1600.),IFCREAL(3200.)),(IFCREAL(20.),IFCREAL(42.),IFCREAL(46.),IFCREAL(56.),IFCREAL(60.),IFCREAL(65.)),$,$,#72,$);
    #74=IFCPROPERTYLISTVALUE('IfcPropertyListValue:Colours',$,(IFCLABEL('Red'),IFCLABEL('Green'),IFCLABEL('Blue'),IFCLABEL('Pink'),IFCLABEL('White'),IFCLABEL('Black')),$);
    #75=IFCMATERIAL('Brick',$,$);
    #76=IFCPROPERTYREFERENCEVALUE('IfcPropertyReferenceValue:Material',$,$,#75);
    #78=IFCMATERIAL('Cavity',$,$);
    #79=IFCMATERIAL('Block',$,$);
    #77=IFCMATERIALLIST((#75,#78,#79));
    #80=IFCMATERIALLAYER(#75,100.,$,$,$,$,$);
    #81=IFCPROPERTYREFERENCEVALUE('IfcPropertyReferenceValue:MaterialLayer',$,$,#80);
    #82=IFCDOCUMENTREFERENCE('c://Documents//TheDoc.Txt',$,'Document',$,$);
    #83=IFCPROPERTYREFERENCEVALUE('IfcPropertyReferenceValue:Document',$,$,#82);
    #84=IFCREGULARTIMESERIES('Regular Time Series','Time series of events','2015-02-14T12:01:01','2015-05-15T12:01:01',.CONTINUOUS.,.MEASURED.,$,$,604800.,());
    #85=IFCPROPERTYREFERENCEVALUE('IfcPropertyReferenceValue:TimeSeries',$,$,#84);
    #86=IFCPOSTALADDRESS($,$,$,'Room 101',('12 New road','DoxField'),$,'Sunderland',$,'DL01 6SX',$);
    #87=IFCPROPERTYREFERENCEVALUE('IfcPropertyReferenceValue:Address',$,$,#86);
    #88=IFCTELECOMADDRESS($,$,$,('01325 6589965'),$,$,('bob@bobsworks.com'),$,$);
    #89=IFCPROPERTYREFERENCEVALUE('IfcPropertyReferenceValue:Telecom',$,$,#88);
    #90=IFCPROPERTYSET('2qJSTdQSj0wQKmIdFVroG2',#2,'Test:IfcPropertySet','Property Set',(#65,#67,#69,#71,#74,#76,#81,#83,#85,#87,#89));
    #91=IFCRELDEFINESBYPROPERTIES('3n83nuxoj0gA5F$UnucPP3',#2,'Property Association','IfcPropertySet associated to wall',(#29),#90);
    #92=IFCRELCONTAINEDINSPATIALSTRUCTURE('1mefbELBn5JQeF1AH4vA0$',#2,$,$,(#29),#24);
    ENDSEC;
    END-ISO-10303-21;
  • 相关阅读:
    2019 SDN第六次作业
    第07组 Beta冲刺(2/4)
    第07组 Beta冲刺(1/4)
    2019 SDN第5次作业
    SDN课程阅读作业(2)
    第08组 Beta版本演示
    第08组 Beta冲刺(4/4)
    第08组 Beta冲刺(3/4)
    第08组 Beta冲刺(2/4)
    第08组 Beta冲刺(1/4)
  • 原文地址:https://www.cnblogs.com/w2011/p/8407286.html
Copyright © 2011-2022 走看看