标签: autodesk-viewer

更改 Forge 中的材料

目前,我们正在让客户端在页面加载时检索对象状态(这将导致模型中的“待处理”对象变成不同的颜色)。然后我们轮询更改以更新着色(首先:当查看器加载时,挂起的对象会着色,然后我们继续轮询以再次检查和更改状态,以使 Forge 以不同的颜色渲染它们并存储它们的旧颜色/材质。当轮询收到一个对象不应再着色的更改时,它会告诉 Forge 再次使用旧的颜色/材质。

问题: 我们已经找到了问题所在,但不知道如何解决它。问题是,在 Forge 中更改材质在启动后不再起作用,它只在前 3 秒左右起作用(材质用于显示颜色)。

但是,即使在前约 3 秒后,设置叠加层仍然有效(显示叠加层而不是材质来显示颜色)。这不是我们想要实现的目标。这看起来未经优化,因为覆盖层将显示在所有内容中。

然而,这些材料似乎被“锁定”,即在前 3 秒后就无法再更改。好像没有刷新什么的

在示例中,我们发现他们使用viewer.impl.invalidate(true) 来刷新Forge 查看器,但在约3 秒后没有执行任何操作。

我们还尝试了viewer.impl.invalidate(true, true, true) 的每种组合以及将material.needsUpdate 设置为true,以及尝试重新渲染整个场景。

我们还发现了这个: https: //github.com/mrdoob/third.js/issues/790,但我们在 Forge 中找不到一个好的方法来做到这一点,我们尝试了viewer.requestSilentRender(),但没有成功做任何事。

不管怎样,我们已经尝试了一切我们能想到的并且可以在网上找到的材料来使材料发挥作用,但没有任何效果。我们正在寻找对 Forge 工作原理更有经验的人,能够看到材料代码哪里出了问题。

至于内容,这里是您需要了解正在发生的情况的所有代码: DROPBOX LINK

这是设置颜色的“index.html”文件的一小部分:

try
{
   viewer.restoreAllColorOverlays(); //for materials instead of overlays: viewer.restoreAllColorMaterials();
   $.each(colors, function(color, selectionIds)
   {
      viewer.setColorOverlay(selectionIds, color); //for materials instead of overlays: viewer.setColorMaterial(selectionIds, color);
   });
}
catch(error)
{
   console.error(error);
}
Run Code Online (Sandbox Code Playgroud)

autodesk-viewer autodesk-forge

6
推荐指数
1
解决办法
2066
查看次数

DWG无法加载新的查看器

以前我使用过这个查看器脚本,用于正确加载dwg

<script src="https://autodeskviewer.com/viewers/2.5/viewer3D.min.js"></script>

现在我按照本教程设置初始查看器:

https://developer.autodesk.com/en/docs/viewer/v2/tutorials/basic-viewer/

现在我的文件都没有加载到查看器上.Viewer只显示动画加载器,无法加载文件.当我改变观众时:

<script src="https://developer.api.autodesk.com/viewingservice/v1/viewers/viewer3D.min.js"></script>

至:

<script src="https://autodeskviewer.com/viewers/2.5/viewer3D.min.js"></script>

该文件在该查看器中加载.

他们不是关于如何使用Markup API的例子.任何人都可以提供一个例子.

autodesk-viewer autodesk-forge

5
推荐指数
1
解决办法
287
查看次数

autodesk-viewer 中的多层 CAD 文件标记

中为多层 CAD 文件绘制标记时,标记工具的字体大小或粗细比其他 CAD 文件大得多。该标记适用于除多层 3D 文件之外的其他 CAD 文件。这背后的原因是什么?我该如何解决这个问题?

标记单层 3D 文件。 这工作正常。

javascript autodesk autodesk-viewer autodesk-forge

5
推荐指数
1
解决办法
175
查看次数

在 Forge Viewer 中单击“全屏”按钮时 JavaScript 未捕获错误

我有一个嵌入到 Angular 9 应用程序中的Forge Viewer除了标准的全屏按钮之外,一切似乎都按预期工作。单击时,它会抛出一个未捕获的 JavaScript 错误,可以在浏览器的开发控制台中看到该错误:

\n
Uncaught (in promise) TypeError: fullscreen error\n    at u (compat.js:87)\n    at h.doScreenModeChange (ScreenModeDelegate.js:231)\n    at h.u.setMode (ScreenModeDelegate.js:83)\n    at T.setScreenMode (ScreenModeDelegate.js:337)\n    at T.nextScreenMode (ScreenModeDelegate.js:354)\n    at s.n.onClick (GuiViewer3D.js:737)\n    at HTMLDivElement.<anonymous> (Button.js:33)\n
Run Code Online (Sandbox Code Playgroud)\n

我查看了调用堆栈中引用的代码,得出的结论是,错误很可能发生在调用浏览器全屏 API 期间,并中断了切换到全屏模式的正确顺序。查看器容器的样式已成功应用,但未进入浏览器全屏。此外,未附加退出处理程序,因此从全屏退出也不起作用。

\n

我还没有在任何 Autodesk Forge 示例中看到过这样的问题,因此我推测该错误是由我的应用程序中的不同内容触发的。从控制台日志可以看出,错误明显发生在查看器代码中。

\n

autodesk-viewer autodesk-forge

3
推荐指数
1
解决办法
1万
查看次数

autodesk forge"无法触发此文件的翻译"

我正在尝试使用autodesk forge viewer教程

https://developer.autodesk.com/en/docs/model-derivative/v2/tutorials/prepare-file-for-viewer/

我已成功上传并下载了dwg文件

在我将它转换为svf的步骤,它似乎永远不会处理和失败

{"input":{"urn":"Safe Base64 encoded value of the output of the upload result"},"output":{"formats":[{"type":"svf","views":["2d","3d"]}]}}
HTTP/1.1 400 Bad Request
Result{"diagnostic":"Failed to trigger translation for this file."}
Run Code Online (Sandbox Code Playgroud)

第一个问题我需要删除urn:在Base64编码之前.其次,我可以看到更详细的错误结果.

注意我也尝试过使用rvt文件并尝试使用"type":"thumbnail"似乎没什么用.

我觉得我的编码URN不正确,但我不确定为什么会这样.在教程页面上,他们似乎有一个更长的原始urn不确定我是否应该在编码之前添加其他内容.他们有一个版本和一些其他数字

来自教程原始"urn:adsk.a360betadev:fs.file:business.lmvtest.DS5a730QTbf1122d07 51814909a776d191611?version = 12"

我的原始
"urn:adsk.objects:os.object:gregbimbucket/XXX"

编辑:这是我从上传dwg文件回来的

HTTP/1.1 200 OK
Result{
"bucketKey" : "gregbimbucket",
"objectId" : "urn:adsk.objects:os.object:gregbimbucket/XXX",
"objectKey" : "XXX",
"sha1" : "xxxx",
"size" : 57544,
"contentType" : "application/octet-stream",
"location" : "https://developer.api.autodesk.com/oss/v2/buckets/gregbimbucket/objects/XXX"
}
Run Code Online (Sandbox Code Playgroud)

这是我发送转换文件

{"input":{"urn":"dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6Z3JlZ2JpbWJ1Y2tldC9YWFg"},"output":{"formats":[{"type":"svf","views":["2d","3d"]}]}}
Run Code Online (Sandbox Code Playgroud)

这是我回来的错误

HTTP/1.1 400 Bad Request
Result{"diagnostic":"Failed to trigger translation for this file."}
Run Code Online (Sandbox Code Playgroud)

编辑2:解决方案看起来像上传文件时的object_id必须具有文件扩展名而不是以GUI或随机字符集结尾,以便知道它是什么文件类型.这样它就可以转换了.

"objectId" …
Run Code Online (Sandbox Code Playgroud)

java autodesk autodesk-viewer autodesk-forge autodesk-model-derivative

2
推荐指数
1
解决办法
870
查看次数

如何检索 Forge Viewer 对象树?

我的目标是根据我在 Revit 中创建的线条向查看器添加新的几何图形,以突出显示房间,就像它们在此处所做的那样链接

但我不知道如何访问这些线路 ID。我知道它们在 revit (element_id) 中是什么,但不知道它们如何映射为 dbid。

关注此博客文章

我想访问扩展中的 objectTree 来找出答案,但它总是返回为未定义。

var tree;
//old way - viewer is your viewer object - undefined
viewer.getObjectTree(function (objTree) {
 tree = objTree;
});
Run Code Online (Sandbox Code Playgroud)

//2.5 - 未定义

  var instanceTree = viewer.model.getData().instanceTree;
  var rootId = this.rootId = instanceTree.getRootId();
Run Code Online (Sandbox Code Playgroud)

//- 不明确的

  var objectTree = viewer.getObjectTree();
Run Code Online (Sandbox Code Playgroud)

谁能告诉我它是否仍然适用于他们我正在使用 API 的 v2 来将 rvt 转换为 svf 和viewer3D.js 的 2.9

注意如果我调用它,我可以看到 dbid 列表

var model = viewer.impl.model;
var data = model.getData();
var fragId2dbIdArray = data.fragments.fragId2dbId ; …
Run Code Online (Sandbox Code Playgroud)

autodesk-viewer autodesk-forge

2
推荐指数
1
解决办法
3404
查看次数

在 Autodesk Forge Viewer 中对齐坐标系

当绘图上传到 Forge 时,我想在查看器中显示一些默认情况下未显示的参考线。

我知道模型中定义的线的确切端点,但是,似乎查看器中的模型已被平移,因此 0,0 位于边界的中心。

有没有办法获得应用于模型的变换矩阵,以便我可以将参考线的坐标与查看器中模型的坐标对齐?

autodesk-viewer autodesk-forge

2
推荐指数
1
解决办法
1602
查看次数

如何调整对象大小 - Autodesk Forge Viewer

我怎样才能改变对象的大小?

我需要改变物体的高度

例如,我们需要更改门或窗帘的高度

在此代码中我的对象消失了

let change = function () {

    const viewer = oViewer;
    const model = viewer.model;

    const frags = [
        123,
        361,
    ];

    for(let i in frags){

        let fragId = frags[i];

        // Get mesh with frag id
        let mesh = viewer.impl.getRenderProxy(model, fragId);

        // Selection ID
        let dbId = 1280; // viewer.getSelection()[0]

        model.getData().instanceTree.enumNodeFragments(dbId, fragId => {
            mesh.scale.x += 0.5;
            // mesh.scale.y = 5;
            // mesh.scale.z = 5;

            model.getFragmentList().setMesh(fragId, mesh, true);
            viewer.impl.invalidate(true);
        });
    }
};
Run Code Online (Sandbox Code Playgroud)

以下代码调整了对象大小,但变得太大并且无法缩放

const viewer = oViewer; …
Run Code Online (Sandbox Code Playgroud)

javascript viewer autodesk autodesk-viewer autodesk-forge

2
推荐指数
1
解决办法
1150
查看次数

Forge Viewer:需要隐藏所有元素,就像在独立视图中一样

使用该isolate()方法,我可以隔离一些元素并隐藏其他所有内容,如下所示: viewer.isolate([65, 80, 83, 92]); 在此输入图像描述

但是是否可以像孤立视图的隐藏元素一样隐藏所有元素呢?

我尝试做viewer.isolate([]);

但这会显示所有元素。

我需要的是能够隐藏所有元素并仅显示半透明视图,就像在隔离状态下一样。

有没有办法做到这一点?

谢谢

autodesk autodesk-viewer autodesk-forge

0
推荐指数
1
解决办法
2563
查看次数

在同一查看器中加载多个URN

如何在查看器中加载多个URN或URN数组,以及如何使用第一个URN的GlobalOffest在同一查看器中加载第二个URN

autodesk autodesk-viewer autodesk-forge

0
推荐指数
1
解决办法
383
查看次数