当前位置: 首页 > news >正文

关于extract.autodesk.io的一些说明

在Autodesk Forge 学习简谈 - 4中提到了 https://extract.autodesk.io/。由于围绕着这个网站经常有很多咨询的问题,特以此文做进一步的说明:

1.大家知道Forge的【数据提取和转换】服务能够将众多原始CAD格式转换为浏览器能浏览的格式。这是Autodesk设计的一种文件格式,它不是单一文件,而是一个引导文件*.SVF 和很多支持文件,包括几何信息,属性信息,光照,材质,等等,通常我们也把这个文件格式(数据包)简称为SVF。

理论上我们可以通过引导文件列出的文件列表,把那些文件都一个个下载下来,放到本地,就是所谓的【离线部署】。但可惜的是,目前【数据提取和转换】只是提供了下载*.SVF的端口,而非整个数据包。这个小编也比较郁闷。

所以,Forge支持部门的Cyrille撰写了一套代码,帮助下载数据包。也就是大家现在看到的https://extract.autodesk.io/,具体用法见Autodesk Forge 学习简谈 - 4

注:其实SVF这个称呼更多适用用3D的模型,对于2D的图纸,其引导文件是*.F2D。而又注意,此F2D非彼F2D (Fusion 360的二维图纸格式)。

2.https://extract.autodesk.io/ 的基本原理是:上载本地文件到其服务器,然后用Forge的【数据管理API】上载到Forge的服务器,再调用Forge的【数据提取和转换】进行转换,转换成功后,即能在浏览器中加载看到模型。最后Extract提供了一个功能,去Forge的服务器端,遍历一个个转换好的文件,再一一下载下来打包,并且配上兼容的【Forge Viewer】的相关文件。这样就可以拿到整个包到本地测试了。

3.https://extract.autodesk.io/ 是部署在国外的服务器,而且它导入了一些放在google上的js或css库,因此,大多数情况下,在没有VPN的时候访问,容易失败。但这并不等于 Forge 需要VPN 。Forge的服务访问是不需要VPN也可以连上的。只是如果性能好的VPN是会传输速度快点。

4.https://extract.autodesk.io/ 只是一个工具,而非Autodesk正式的一个产品。并没有系统的支持体系。因此,如果偶尔发生了故障,需要等作者有时间才能修复。作者把这个工具的源代码都奉献出来了,网站的右上角可以访问。我们是建议朋友们把源代码自己部署到自己的机器上,这样可以自己调试,修改,也方便自己部署使用。切勿只是依赖这个网站本身的运转。如前面所述,假设偶尔网络性能不佳,甚至VPN也不佳,网站无法访问就麻烦了。

5.前面提到https://extract.autodesk.io/用到了一些放在google的内容,当自己部署的时候,可以先用一些手段(例如VPN)把有关文件下载下来,集成到工程中。这个工作我已经做了,放到了我自己的Github空间。

6.前面提到,Extract的流程是先要将本地文件传到Extract服务器,这个过程由一些第三方库完成了稳定上传,一般没有问题。但从其服务器传到Forge,它使用的是Forge的【数据管理API】的直传端口,就是无论大小,一口气传上去,可以想象,在国内的网络条件下,大文件直传美国服务器成功的可能性有多大。所以经常听到朋友说Forge无法上传,Extract无法用,大多是和这个环节有关系。

无论是Extract还是其它任何Forge上传文件有关的应用程序,都务必使用分块上传的端口,就是把文件切成很小的单元块(例如每个10M),再一一上传。这个的好处是极大降低对网络的要求,而且成功率很高,即便某个块失败,可以依据分块上传的唯一ID,再次上传,也就是所谓的断点续传。

亲自试验一个客户发来的200多M模型,说到自己直接传,没有PVN基本没戏,总是10%就失败了。但经过分块改造后,在家里普通网络情况下,只用了5分钟。当然,转换模型花了较多时间。

大家可以参考我改造后的Extract代码,暂时还未区分小文件和大文件。都用了分块。

7.Extract的源码是用Node写的,对于有些朋友可能理解和使用上有点困难。我看到有朋友自己根据原理写了C#的版本。看看他分享出来,我再附加上。
我们同事Adam撰写了一篇C#的文章,相当简练,具体参见这篇博客
https://forge.autodesk.com/bl...

相关文章:

  • 密码学中的爱丽丝与鲍勃
  • 产业新低:杜拜太阳能得标价跌破3美分!
  • 网络客户端
  • FFmpeg深入分析之零-基础
  • linux 查看文件数
  • Android Studio中架包打包和依赖冲突解决
  • 二十三、oracle pl/sql分类三 包
  • 自己写的一部分斗地主的程序,没有去写界面,临时是用黑框来显示的
  • 《计算机网络(第五版)》中学习理论与实践
  • ADB操作命令相关
  • IBM云对象存储Cleversafe 大力拓展全新战场
  • ETHERCHANNEL的配置
  • 使用 FreeMarker 替换 JSP 的 10 个理由
  • flex中textinput限制输入长度与某些字符
  • RxJava 2.x 使用最佳实践
  • php的引用
  • JavaScript 如何正确处理 Unicode 编码问题!
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【5+】跨webview多页面 触发事件(二)
  • crontab执行失败的多种原因
  • GitUp, 你不可错过的秀外慧中的git工具
  • Hibernate最全面试题
  • JavaWeb(学习笔记二)
  • k个最大的数及变种小结
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Vue2.x学习三:事件处理生命周期钩子
  • yii2中session跨域名的问题
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 全栈开发——Linux
  • 设计模式走一遍---观察者模式
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 微信小程序开发问题汇总
  • 函数计算新功能-----支持C#函数
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (分布式缓存)Redis哨兵
  • (九)c52学习之旅-定时器
  • (六)vue-router+UI组件库
  • (区间dp) (经典例题) 石子合并
  • (四)库存超卖案例实战——优化redis分布式锁
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET Core 中插件式开发实现
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .net 流——流的类型体系简单介绍
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • :=
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • []T 还是 []*T, 这是一个问题
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory
  • [ACTF2020 新生赛]Upload 1