如何为 BIM 软件构建数据结构?

How to structure data for a BIM software?

我正在开发用于生成木结构的 BIM 应用程序。

我为第一次测试和试验编写了一些代码行,在进一步进行之前,我必须选择如何对数据建模。我想知道处理光束对象的最佳方法是什么。它们基本上是长的 3D 盒子,上面有任何形状的孔、中等深度切割等操作......

有很多方法可以对其属性进行建模:

以中心为导向或以角为导向:枢轴点在中心或角上

首先在 3D 中工作: 我的意思是处理顶点和面,生成 3D 对象,然后计算它们适合什么样的光束以及 CNC 机械应该采取哪些步骤来制造它们。

以 CNC 思维方式工作: 将梁建模为截面尺寸 + 长度,并对其进行操作。然后生成他们的 3D 对象以供屏幕查看。

我不会找任何人来做我的工作,无论如何我都会自己找到解决办法。但是,如果有人有使用该领域任何现有工具(Revit、Archicad、Woodwork 工具)的经验,并且可以提供一些关于各种方法的优缺点的反馈,那就太好了。

编辑: 我最终选择使用抽象指南来组织各个部分。梁总是沿着平面一起工作。想想一堵墙,或者地板下均匀分布的横梁。因此,我将创建一个 class 用于沿平面生成和定位光束。将梁数据存储为截面尺寸 + 长度 + 对它们的接头操作。枢轴点位于最短边之一的中间。通过这种方式将它们对齐在一个平面上是微不足道的,它还将包含有关木纤维在梁内如何定向的信息(芯必须放在顶部,纤维方向很重要)。 感谢 ArnoE 确认我的选择。

我会看看你在拥有模型时实际想用它做什么,然后从那里向后工作。例如,如果您知道您的架构师会经常更改他们的工作,那么将其表示为 triangles/tesselations 可能不是一个好主意。

一般来说,更容易将更抽象的表示(例如原始框加上破坏性操作)转换为更具体的表示(即您需要渲染的三角形)。更具表现力的将包括参数表达式,例如将盒子的面粘合在一起等等......虽然变得复杂。

另一方面,您是从角落还是中心开始可能是个人喜好问题,您会发现偶尔会同时需要这两个版本(即您的访问器方法中可能有访问器方法) 类 无论如何都可以即时转换这些东西)。

但除此之外,这实际上取决于您和您的主要用例。