xBIM 高級01 IFC多模型合併

多模型合併能夠實現如下功能:html

  • 覆蓋多個模型以表現得像一個模型
  • 統一訪問數據,就像它是單個模型同樣
  • 只讀。要修改模型的內容,您必須使用特定模型
  • 不限於單個模式(聯合IFC2x3 + IFC4→將其做爲IFC4接口查詢)
  • IFC聯合能夠存儲爲單個IFC文件(在IfcStore中)
using System;
using Xbim.Common.Step21;
using Xbim.Ifc;
using Xbim.Ifc4.Interfaces;

namespace BasicExamples
{
    public class FederationExample
    {
        public void CreateFederation()
        {
            var editor = new XbimEditorCredentials
            {
                ApplicationDevelopersName = "You",
                ApplicationFullName = "Your app",
                ApplicationIdentifier = "Your app ID",
                ApplicationVersion = "4.0",
                
                EditorsFamilyName = "Santini Aichel",
                EditorsGivenName = "Johann Blasius",
                EditorsOrganisationName = "Independent Architecture"
            };
            using (var federation = IfcStore.Create(editor, IfcSchemaVersion.Ifc4, XbimStoreType.InMemoryModel))
            {
                federation.AddModelReference("SampleHouse.ifc", "Bob The Builder", "Original Constructor"); //IFC4
                federation.AddModelReference("SampleHouseExtension.ifc", "Tyna", "Extensions Builder"); //IFC2x3

                Console.WriteLine($"Model is federation: {federation.IsFederation}");
                Console.WriteLine($"Number of overall entities: {federation.FederatedInstances.Count}");
                Console.WriteLine($"Number of walls: {federation.FederatedInstances.CountOf<IIfcWall>()}");
                foreach (var refModel in federation.ReferencedModels)
                {
                    Console.WriteLine();
                    Console.WriteLine($"    Referenced model: {refModel.Name}");
                    Console.WriteLine($"    Referenced model organization: {refModel.OwningOrganisation}");
                    Console.WriteLine($"    Number of walls: {refModel.Model.Instances.CountOf<IIfcWall>()}");
                }

                // 保存爲單一文件,工其餘場景下使用
                federation.SaveAs("federation.ifc");
            }
        }
    }
}

 控制檯輸出以下所示:app

Model is federation: True
Number of overall entities: 50303
Number of walls: 8

    Referenced model: SampleHouse.ifc
    Referenced model organization: Bob The Builder
    Number of walls: 5

    Referenced model: SampleHouseExtension.ifc
    Referenced model organization: Tyna
    Number of walls: 3

保存爲IFC文件的聯合設置以下所示。這個慣例純粹是咱們的發明,因此它不適用於其餘工具。但它容許您在系統中建立聯合,並在須要時再次從新打開它們。工具

ISO-10303-21;
HEADER;
FILE_DESCRIPTION ((''), '2;1');
FILE_NAME ('', '2016-10-27T13:14:43', (''), (''), 'Xbim File Processor version 3.2.0.0', 'Xbim version 3.2.0.0', '');
FILE_SCHEMA (('IFC4'));
ENDSEC;
DATA;
#1=IFCACTORROLE(.USERDEFINED.,'Original Constructor',$);
#2=IFCORGANIZATION($,'Bob The Builder',$,(#1),$);
#3=IFCDOCUMENTINFORMATION('1','SampleHouse.ifc',$,$,$,'XbimReferencedModel',$,$,#2,$,$,$,$,$,$,$,$);
#4=IFCACTORROLE(.USERDEFINED.,'Extensions Builder',$);
#5=IFCORGANIZATION($,'Tyna',$,(#4),$);
#6=IFCDOCUMENTINFORMATION('2','SampleHouseExtension.ifc',$,$,$,'XbimReferencedModel',$,$,#5,$,$,$,$,$,$,$,$);
ENDSEC;
END-ISO-10303-21;
 
相關文章
相關標籤/搜索