zoukankan      html  css  js  c++  java
  • xBIM 高级01 IFC多模型合并

    多模型合并可以实现以下功能:

    • 覆盖多个模型以表现得像一个模型
    • 统一访问数据,就像它是单个模型一样
    • 只读。要修改模型的内容,您必须使用特定模型
    • 不限于单个模式(联合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");
                }
            }
        }
    }

     控制台输出如下所示:

    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;
     
  • 相关阅读:
    Python 类中方法的内部变量,命名加'self.'变成 self.xxx 和不加直接 xxx 的区别
    用foreach遍历 datagridView 指定列所有的内容
    treeView1.SelectedNode.Level
    YES NO 上一个 下一个
    正则 单词全字匹配查找 reg 边界查找 精确匹配 只匹配字符 不含连续的字符
    抓取2个字符串中间的字符串
    sqlite 60000行 插入到数据库只用不到2秒
    将多行文本以单行的格式保存起来 读和写 ini
    将秒转换成时间格式
    richtextbox Ctrl+V只粘贴纯文本格式
  • 原文地址:https://www.cnblogs.com/SavionZhang/p/10983403.html
Copyright © 2011-2022 走看看