从 Autodesk Forge 3D 查看器下载文件

Posted

技术标签:

【中文标题】从 Autodesk Forge 3D 查看器下载文件【英文标题】:Download file from Autodesk Forge 3D viewer 【发布时间】:2019-05-04 22:47:01 【问题描述】:

如何从 Autodesk Forge 中的 3D 查看器下载文件。我正在使用 2 腿授权,我可以将文件上传到存储桶,但我不确定如何在 3D 查看器中从它们下载文件。下面的代码下载文件,但其中没有任何内容:

var element = document.createElement('a');
element.setAttribute('href', '#');
element.setAttribute('download', node.text);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);

我已将此链接视为参考,但我不明白如何将其转换为 javascript 或 .NET 中的代码:https://forge.autodesk.com/en/docs/data/v2/tutorials/download-file/

【问题讨论】:

您参考的本教程是从 BIM 360 Docs 下载文件,而不是从您的 OSS Bucket 存储。让我更好地理解为什么需要从存储桶下载文件?通常,桶的使用是稍后请求翻译 CAD 文件以供 Forge 查看器使用,这不再是原始 CAD 格式,它将是查看器中可视化的 SVF(JSON 字符串)。 对不起,我还在学习如何使用 Autodesk Forge,我创建了一个按钮来将项目上传到存储桶中,所以我想创建一个按钮来下载相同的项目,但如果不可能的话我将尝试在我的 BIM 360 版本中实现它。谢谢 【参考方案1】:

我现在可以下载文件,从 Javascript 使用 $.ajaxurl 路径到 .NET 中的方法,然后使用:

WebClient client = new WebClient();
Uri address = new Uri(storageLocation);
fileName = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\" + fileName;
client.Headers.Add("Content-Type", "application/octet-stream");
client.Headers.Add("Authorization", "Bearer " + credentials.TokenInternal);
client.DownloadFileAsync(address, fileName);
return client;

这会将文件下载到桌面。

【讨论】:

【参考方案2】:

你也可以试试这个端点:

https://forge.autodesk.com/en/docs/data/v2/reference/http/buckets-:bucketKey-objects-:objectName-GET/

它将从您指定的存储桶位置下载一个对象。

这是一个 REST 端点,您可以检查 NPM 或 NuGet 我们必须查看该功能是否已经可用。如果不是,请提交包含它的请求。

【讨论】:

我正在尝试从 BIM 360 文档下载并已链接 Javascript 和 C# 以尝试从文件夹中下载项目,但是在使用代码时:client.DownloadFileAsync(storageLocation, fileName);,我收到错误 500,我我不知道为什么。

以上是关于从 Autodesk Forge 3D 查看器下载文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 AutoDesk Forge 合并多个 3D 文件

选择要在 Autodesk forge 查看器中显示的特定 3d 视图

将模型加载到 2D/3D 查看器中 - Autodesk Forge

如何使用 Autodesk Forge 查看器在 3D 模型中查找位置(x、y、z 坐标)

是否可以在 Autodesk forge for 3d 模型的查看器中添加谷歌地图或 Esri 地图?

Autodesk forge 查看其他 3d 视图和选项