【问题标题】:Autodesk Forge Viewer : f2d get frag from dbidAutodesk Forge 查看器:f2d 从 dbid 获取 frag
【发布时间】:2017-02-13 03:59:39
【问题描述】:

我正在尝试用 revit 转换文件的 2d 查看器上的颜色填充房间。

我有一个定义了“房间”的 Revit 文件。 Revit 文件还包含定义为“一楼”、“二楼”的图纸。当我使用 Forge API 转换它时

我获得了 Revit 3D 视图的 svf 和“一楼”和“二楼”的 f2d 文件 床单。

对于 svf,我可以从 dbids other post 获得脆弱

现在我尝试对 f2d 文件做同样的事情。

如果我知道墙壁的形状,我可以通过使用来更改房间墙壁的颜色

viewer.setThemingColor(dbid, new THREE.Vector4(0, 1, 1,1));

我现在想要做的是能够在 2d 上获得形状的脆弱性,以便我可以获得它使用的线条的起点和终点。我想知道这些顶点,这样我就可以构建一个自定义网格并用颜色填充它以用于房间“孵化”。

我的问题是我不知道 f2d 格式。看起来它是一个网格,让着色器控制线条的颜色。谁能给我一些关于如何找到房间片段列表的指示?

这是我用于 3d svf 的内容

function getFragIdFromDbId(viewer, dbid) {
 var returnValue;
 var it = viewer.model.getData().instanceTree;
 it.enumNodeFragments(dbid, function (fragId) {
   //console.log("dbId: " + dbid + " FragId : " + fragId);
   returnValue = fragId;
 }, false);
  return returnValue;
}

当 f2d 具有 viewer.model.getData().instanceTree = undefined 时,我可以使用 f2d 做什么?

【问题讨论】:

  • 我正在为你研究。

标签: autodesk-forge autodesk-viewer autodesk-model-derivative


【解决方案1】:

片段可以具有多个 dbid 的几何结构,并且一个 dbid 的几何结构可以位于多个片段中。可以使用 Autodesk.Viewing.Private.VertexBufferReader 进行提取,2D snapper 使用它来提供帮助。你可以这样做:

  1. FragmentList.dbid2fragId[dbid] 将返回包含 dbid 几何图形的片段 ID 或片段 ID 数组。
  2. 遍历片段并获取每个片段的几何形状。
  3. 使用几何体创建 VertexBufferReader。
  4. 使用 VertexBufferReader 查找 dbid 的几何图形。

查找几何的最佳方法是使用 VertexBufferReader.enumGeomsForObject(dbid, callback)。它使用回调对象为 dbid 枚举几何。回调对象需要这些可选函数:

  • onLineSegment(x0, y0, x1, y1, viewport_id)
  • onCircularArc(centerX, centerY, startAngle, endAngle, radius, viewport_id)
  • onEllipticalArccenterX、centerY、startAngle、endAngle、major、minor、tilt、viewport_id)
  • onTriangleVertex(x, y, viewport_id)

如果您只需要原语而不需要它们在缓冲区中的位置,这没关系。

您还可以使用 VertexBufferReader 循环遍历缓冲区中的几何图形以查找 dbid。这需要您知道如果 .useInstancing() 为假,则顶点缓冲区中的图元为 4 个顶点,如果 .useInstancing() 为真,则为 1 个顶点。您需要从 .getVertexFlagsAt(vertexIndex) 解码原始类型,但我们没有任何公共值或方法来解码标志。

【讨论】:

  • 感谢您的回复。在我将其标记为正确答案之前,需要一些时间来实现它。
猜你喜欢
  • 2019-07-31
  • 2020-07-05
  • 2021-05-27
  • 2021-05-08
  • 2021-12-19
  • 2020-09-06
  • 2021-11-12
  • 1970-01-01
  • 2021-09-19
相关资源
最近更新 更多