我正在尝试用revit转换文件的2d浏览器填充颜色。
我有一个Revit文件,其中包含" rooms"定义。 Revit文件还定义了工作表"第一层","第二层"。当我使用Forge API
转换它时我获得了Revit 3D视图的svf和#34;第一层"的f2d文件和"二楼" 片材。
对于svf,我能够从dbids other post
中获得支持现在我试图为f2d文件做同样的事情。
如果我知道墙壁使用
形成dbid,我可以改变房间墙壁的颜色viewer.setThemingColor(dbid, new THREE.Vector4(0, 1, 1,1));
我现在要做的是能够在2d上获得形状的碎片,以便我可以获得它使用的线的起点和终点。我想知道这些顶点,所以我可以构建一个自定义网格,并用颜色填充它,以便进行空间和#34;孵化"。
我的问题是我不知道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()时,我可以使用f2d做同样的事情.instanceTree = undefined?
答案 0 :(得分:1)
片段可以具有多个dbid的几何体,并且dbid的几何体可以是多个片段。可以使用帮助的2D snapper使用的 Autodesk.Viewing.Private.VertexBufferReader 进行提取。你可以这样做:
查找几何的最佳方法是使用VertexBufferReader.enumGeomsForObject(dbid,callback)。它使用回调对象枚举dbid的几何。回调对象需要以下可选功能:
如果您只需要原语而不是它们在缓冲区中的位置,那就没问题。
您还可以使用 VertexBufferReader 循环缓冲区中的几何图形,以查找dbid。如果 .useInstancing()为false,则需要您知道顶点缓冲区中的基元是4个顶点,如果 .useInstancing()为真,则需要知道1个顶点。您需要从 .getVertexFlagsAt(vertexIndex)解码基本类型,但我们没有任何用于解码标志的公共值或方法。