Speckle+IFC.js 结合 ,碰出火花的产品

2023-12-27 11:52

本文主要是介绍Speckle+IFC.js 结合 ,碰出火花的产品,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        2021年12 月底,我有机会参加了一个关于两个开源工具的网络研讨会:Speckle 和 IFC.js。 该网络研讨会是由一个名为 Agile BIM 的社区组织的,我对此也一无所知。 然而,我所知道的事实是开源软件开发在任何领域的重要性,开发人员作为一个团队聚集在一起创建软件,这些软件可以免费提供以进行可能的修改和重新分发,从而允许它进一步开发 . 使用开源开发的技术通常是商业软件公司无法提供的,其业务是开发专有软件。

对于 AEC 行业,我们确实有开放设计联盟(ODA)和 buildingSMART International 等组织致力于促进开放性和互操作性,关于这一点请参阅最近的文章 ODA Summit 2021和 buildingSMART 标准概述。IFC 格式已为 OpenBIM 建立完善,几乎得到所有领先的 AEC 技术开发商的一致支持,以允许他们的应用程序交换彼此的数据 。

那么,Speckle 和 IFC.js 是什么,它们有什么作用,为什么需要它们? 2021 年 12 月 15 日举行的关于这两个开源工具的敏捷 BIM 网络研讨会让我有机会了解更多关于它们的信息。

首先是 IFC.js。

一、IFC.js

IFC.js 是一个正在开发的 JavaScript 库,旨在使 BIM 开发民主化并降低成本,这样 AEC 技术领域的小公司也可以获得开发 BIM 的机会,而不会被大公司垄断。 这不仅有利于小型企业,也有利于整个行业,因为更多 BIM 解决方案将以更实惠的价格在更多国家/地区推出。 反过来,这将导致 BIM 的采用率不断提高,从而提高整个行业的技术水平。 此外,降低开发 BIM 的成本也将刺激该领域的更多创新并加快改进步伐。 从本质上讲,这个想法不仅是为了创造公平的竞争环境,而且实际上是为了让更多的玩家能够参与进来。

IFC.js 背后的想法是通过免费提供 IFC 开发的源代码和文档来实现这一点,这样开发人员至少可以准备好这个起点并准备开始。 当然,前提是 IFC 格式对任何类型的 BIM 软件开发都至关重要;考虑到IFC的成熟程度——更不用说它是唯一可用的开放式 BIM 标准——这是一个安全的选择。 但是,实施起来非常困难。 凭借完全免费的现成实施,IFC.js 消除了进入障碍,使小型开发人员更容易快速启动他们的软件开发。

IFC.js 的当前功能包括以 3D 形式读取和写入 IFC 文件。 此外,由于它是一个 JavaScript 框架,它允许创建可在 Web 浏览器以及多个平台上的移动设备中运行的 BIM 工具。 IFC.js不仅易于使用,而且非常高效,如仅用 30 行 JavaScript 在 Twitter 中创建 BIM 工具的示例所示:

在上图中,使用 IFC.js 插入 Twitter 推文中的 BIM 模型。 可以在模型周围导航并执行其他操作,例如应用剖切平面、与其他 BIM 工具交互以及将模型导出为 DXF 工程图。

本质上,Twitter 在这种情况下充当 BIM 查看器。 它以相同的方式与任何其他网页一起工作,允许在任何地方显示 BIM 模型(IFC 格式)。

网络研讨会中演示的另一个示例是一个 BIM + GIS 应用程序,该应用程序是使用 IFC.js 和另一个名为 Harp.gl 的开源库在不到 48 小时内开发的,这个在最近的 AEC 黑客马拉松期间开发的 BIM + GIS 应用程序显示了位于旧金山的 BIM 模型:

然后是下图所示的 BIM 查看器示例,仅用 74 行代码创建了元素选择、环境遮挡、阴影、剪裁位置、相机动画等。 IFC.js 库的实现方式隐藏了代码的复杂性,允许根据正在开发的应用程序的需要轻松引用所需的功能:

上图中使用 IFC.js 创建的 BIM 查看器, 可以在右侧的开发者工具窗口中看到所选元素的属性。

IFC.js 的源代码位于 GitHub ,包括教程、用例等在内的文档可以在这里访问。随着更多开发人员加入该计划并添加到代码中,它的功能应该会继续得到增强。 不用说,作为一项非商业性的努力,它没有付费应用程序的花哨功能,但它是实用的,如BIM查看器中的示例所示,其中所选元素的属性可以在 Developers 工具中看到 窗口而不是集成的调色板。

此外还应注意,虽然 JavaScript 主要用于 Web 开发,但它也可用于创建桌面应用程序,因此 IFC.js 也可用于快速启动桌面 BIM 应用程序的开发,如下图 所示, 导入和使用 IFC 格式的 BIM 模型的基础知识得到处理后,开发人员可以专注于实现其 BIM 应用程序将提供的其他功能:

上图展示了使用 IFC.js 创建的测试桌面应用程序。 虽然此示例在 Windows 上运行,但 IFC.js 也适用于 Mac 和 Linux 平台。

二、Speckle

网络研讨会中介绍的第二个开源工具是 Speckle。 与 IFC.js 不同,IFC.js 不仅免费且开源,而且还由在不同公司工作的个人协作开发,Speckle 实际上是一家名为 Speckle Systems 的公司的产品,该公司拥有一些全职员工,其中许多人拥有之前曾在以尖端技术开发和实施而闻名的 AEC 公司从事计算设计工作,例如 Arup、Buro Happold 和 Foster+Partners。

事实上,我第一次听说 Speckle 是在 upFront.eZine 的第 1113 期,Arup Digital Technology 的高级顾问 Peter Debney 提到了为什么 Arup 帮助开发 Speckle 并作为开源产品来解决建筑中的数据传输问题 .

Speckle 是一种协作和互操作性解决方案,不同于使用 IFC 等通用文件格式在应用程序之间交换数据,Speckle通过为最流行的 AEC 应用程序提供连接器来工作,允许它们与其他连接的应用程序实时交换数据。 一旦为应用程序安装了连接器,它允许从模型中选择的元素被捕获为“流”,然后可以被任何其他具有 Speckle 连接器的应用程序接收。 下图显示了一个示例:

在 Revit 模型中选择元素以创建 Speckle 流

将其导入 Rhino + Grasshopper

目前,大约有 18 个连接器,还有更多连接器正在开发中,通常是与应用程序开发人员协作。 因此,例如,Speckle 正在与 Graphisoft 合作开发 Archicad 连接器; Tekla Structures 的连接器也在开发中。

除了能够实时启用 AEC 数据交换之外,需要注意的关键是 Speckle 不处理文件本身。 相反,数据是通过其 Speckle 连接器作为“流”从应用程序中捕获的。 Speckle 是一个基于 Web 的应用程序,所有这些捕获的流都在线托管,如下图所示。任何流都可以简单地通过 URL 发送到具有连接器的接收应用程序。 Speckle 跟踪对流中捕获的元素所做的任何修改,并向所有在其他应用程序中使用该流的人实时发送有关更新的通知。

所有保存的 Speckle 流都可以在线查看。

Speckle产品的长期愿景是超越成为最终用户的平台,同时也被开发人员部署。 由于 AEC 数据可以根据需要推入和推出 Speckle,因此可以开发需要处理模型中数据的工具,例如嵌入碳计算、数量报告、成本核算、调度等。 随着 AEC 数据现在从专有文件中“解放”出来,其他开发人员可以访问它并释放 BIM 模型的潜力,而无需开发 API(应用程序编程接口)来处理各个 AEC 应用程序。 他们只需要使用 Speckle 中的数据流,而且它是免费和开源的事实降低了进入门槛,就像使用 IFC.js 一样。

三、结束语

看到如此多的人聚集在一起,汇集他们的技能、兴趣和资源来开发对整个行业有用的开源软件解决方案,为商业软件解决方案提供急需的对比,真是太棒了。 通过免费提供,Speckle 和 IFC.js 允许较小规模的开发人员快速启动他们自己的解决方案的开发,这显着降低了进入门槛,并可以鼓励 AEC 技术行业的更多创新。

这些开源工作的许多贡献者都是以志愿者的身份这样做的,除了他们的有偿工作之外,他们还为此腾出了时间。 他们是开源软件的坚定支持者,并且希望分享他们编写的代码。 我发现它非常鼓舞人心。

这篇关于Speckle+IFC.js 结合 ,碰出火花的产品的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/543047

相关文章

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

Python结合requests和Cheerio处理网页内容的操作步骤

《Python结合requests和Cheerio处理网页内容的操作步骤》Python因其简洁明了的语法和强大的库支持,成为了编写爬虫程序的首选语言之一,requests库是Python中用于发送HT... 目录一、前言二、环境搭建三、requests库的基本使用四、Cheerio库的基本使用五、结合req

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

使用JS/Jquery获得父窗口的几个方法(笔记)

<pre name="code" class="javascript">取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);如题: $(selector, window.top.document);//获得顶级窗口里面的元素 $(