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

  • 覆盖多个模型以表现得像一个模型
  • 统一访问数据,就像它是单个模型一样
  • 只读。要修改模型的内容,您必须使用特定模型
  • 不限于单个模式(联合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:
Number of walls: Referenced model: SampleHouse.ifc
Referenced model organization: Bob The Builder
Number of walls: Referenced model: SampleHouseExtension.ifc
Referenced model organization: Tyna
Number of walls:

保存为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;
 

xBIM 高级01 IFC多模型合并的更多相关文章

  1. xBIM 多个IFC文件合并

    目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 x ...

  2. xBIM 基础15 IFC导出Excel报表

    系列目录    [已更新最新开发文章,点击查看详细]  IFC导出Excel空间报表文件 本篇将向您展示从IFC文件读取数据所需的一些概念.它使用IFC4接口,适用于IFC2x3和IFC4型号.要创建 ...

  3. xBIM 基础01 简介

    系列目录    [已更新最新开发文章,点击查看详细]  一.xBIM 简介 BIM(Building Information Modelling)建筑信息模型,xBIM(eXtensible Buil ...

  4. Zookeeper系列五:Master选举、ZK高级特性:基本模型

    一.Master选举 1. master选举原理: 有多个master,每次只能有一个master负责主要的工作,其他的master作为备份,同时对负责工作的master进行监听,一旦负责工作的mas ...

  5. Smart3D系列教程8之 《模型合并——相邻地区多次建模结果合并》

    迄今为止,Wish3D已经出品推出了7篇系列教程,从倾斜摄影的原理方法.采集照片的技巧.Smart3D各模块的功能应用.小物件的照片重建.大区域的地形重建到DSM及正射影像的处理生产,立足于建模软件的 ...

  6. 牛客2018国庆集训 DAY1 D Love Live!(01字典树+启发式合并)

    牛客2018国庆集训 DAY1 D Love Live!(01字典树+启发式合并) 题意:给你一颗树,要求找出简单路径上最大权值为1~n每个边权对应的最大异或和 题解: 根据异或的性质我们可以得到 \ ...

  7. xBIM 实战01 在浏览器中加载IFC模型文件

    系列目录    [已更新最新开发文章,点击查看详细]  一.创建Web项目 打开VS,新建Web项目,选择 .NET Framework 4.5  选择一个空的项目 新建完成后,项目结构如下: 二.添 ...

  8. xBIM 高级02 插入复制功能

    系列目录    [已更新最新开发文章,点击查看详细]  IFC 模型中的合并和删除实体是一个非常重要的任务,因为 IFC 不是一个分层结构.它是一个复杂的结构,具有潜在的循环关系,是一个双向导航.在单 ...

  9. xBIM 高级03 更改日志创建

    系列目录    [已更新最新开发文章,点击查看详细]  模型中发生的每一个变化都是事务的一部分,这是我们设计的核心.所有事务都是由 IModel 的实现创建的,并且从中被弱引用,因此当使用 using ...

随机推荐

  1. Swift - 获取应用名称、应用版本、设备型号、系统版本等信息

    有时我们在 App 中提交一些统计信息或者用户反馈信息时,为了能更好地进行分析,通常会附带上当前应用程序的名称.版本号.设备型号.以及设备系统版本.下面演示如何获取这些信息. 1,效果图 程序启动后自 ...

  2. Core Java(五)

    类和对象&方法 ——类的定义 现实世界的事物 属性:人的身高,体重等 行为:人可以学习,吃饭等 Java中用class描述事物也是如此 成员变量:就是事物的属性 成员方法:就是事物的行为    ...

  3. firstChild与firstElementChild

    相同点: 都是获取父元素下的第一个节点对象 不同点: firstChild: IE6.7.8 第一个元素节点; 非IE6.7.8:返回第一个元素节点或文本节点 firstElementChild: I ...

  4. Android PullToRrefresh 自定义下拉刷新动画 (listview、scrollview等)

    PullToRefreshScrollView 自定义下拉刷新动画,只需改一处. 以下部分转载自http://blog.csdn.net/superjunjin/article/details/450 ...

  5. R dataframe 去除行号

    原先的行号是这样的:

  6. WebApi笔记

    WebApi有一段时间没用了,这几天用webapi做了一个接口供第三方调用,又重新折腾了下,做个笔记记录下心得,防止遗忘. 1.webapi使用的RESTful风格的传参方式,其实就是充分利用HTTP ...

  7. Unity "Build failed : Asset is marked as don't save " 解决方案

    编译到Android时失败,是字体的原因: -- -- 摘自官方论坛排第二但点赞第一的回答. http://answers.unity3d.com/questions/363963/build-fai ...

  8. ZBrush 4R7中自定义笔刷

    为了便于雕刻,ZBrush®很人性化地设计了自定义笔刷.随着ZBrush软件版本不断更新,功能也在不断完善.只是在笔刷面板ZBrush软件就为用户提供了上百种之多,如果我们想要用某种笔刷,一个个找起来 ...

  9. ZBrush中Magnify膨胀笔刷介绍

    Magnify膨胀笔刷是ZBrush®笔刷中经常使用的,利用该笔刷可绘制中心向四周膨胀的效果.本文内容向大家介绍ZBrush®中膨胀笔刷以便大家熟悉它的用法和特性. Magnify膨胀笔刷 Magni ...

  10. Django框架详解之views

    一个简单的视图 一个视图函数,是一个简单的python函数,它接受web请求并且返回web响应.无论视图本身包含什么逻辑,都要返回响应.为了将代码放在某处,约定是将视图放置在项目或应用程序目录中的名为 ...