如何使用纯 Javascript Autodesk 在查看器中离线显示 2d (.dwg) 文件
Posted
技术标签:
【中文标题】如何使用纯 Javascript Autodesk 在查看器中离线显示 2d (.dwg) 文件【英文标题】:How to display 2d (.dwg) files offline in viewer using pure Javascript Autodesk 【发布时间】:2018-11-21 18:25:12 【问题描述】:我正在尝试使用纯 javascript 在离线模式下在查看器中显示 2d 文件。我已经使用 https://extract.autodesk.io/ 上传并提取了 dwg。 提取的文件包含许多 json.gz 文件和一个文件夹。在这个文件夹中,它有清单、元数据(json.gz 文件)和一个 .f2d 文件
我已将此文件位置提供给查看器选项
var docs = [ "path": "./foldername/primaryGraphics.f2d", "name": "2D view" ];
var options = 'docid': docs[0].path, env: 'Local' ;
我的查看器初始化是
viewer = new Autodesk.Viewing.Private.GuiViewer3D(document.getElementById('MyViewerDiv'), );
Autodesk.Viewing.Initializer(options, function ()
viewer.initialize();
viewer.loadModel(options.docid);
);
它在查看器中给我错误消息说“我们无法显示您正在寻找的项目。它可能尚未被处理......”并给我错误代码为 5(指定类型无效)。
请帮忙。
【问题讨论】:
我尝试在选项中提供文件“路径”:“developer-autodesk.github.io/translated-models/shaver/0.svf”,它显示在查看器中。但这是一个 3d 文件,我的是 2d。提取为 f2d 文件,不支持此文件格式。请需要帮助 【参考方案1】:请确保您已完全下载所有提取的 DWG 可视气泡,并且您要加载的模型的路径正确,因为错误代码 5 代表 NETWORK_FILE_NOT_FOUND
。
我刚刚用下面的代码 sn-p 从AutoCAD Sample Files 测试了这个blocks_and_tables_-_metric.dwg,它工作正常。
var options =
env: 'Local',
;
var doc = 'rootFolder': 'Model', 'path': '29c9e407-f76f-a1c0-0972-dcb5b496fff9_f2d/primaryGraphics.f2d', 'name': '2D view' ;
var viewerDiv = document.getElementById( 'MyViewerDiv' );
var viewer = new Autodesk.Viewing.Private.GuiViewer3D( viewerDiv );
Autodesk.Viewing.Initializer(options, function()
if( viewer.initialize() != 0 ) return console.error( 'Failed to initialize viewer' );
var basePath = getCurrentBaseURL();
var modelFolderPath = basePath + doc.rootFolder + '/';
var modelFilePath = modelFolderPath + doc.path;
var modelOptions =
sharedPropertyDbPath: modelFolderPath
;
viewer.loadModel( modelFilePath, modelOptions, onLoadModelSuccess, onLoadModelError );
);
function getCurrentBaseURL()
var basePath = '';
var lastSlash = document.location.href.lastIndexOf( '/' );
if( lastSlash != -1 )
basePath = document.location.href.substr( 0, lastSlash + 1 );
return basePath;
/**
* viewer.loadModel() success callback.
* Invoked after the model's SVF has been initially loaded.
* It may trigger before any geometry has been downloaded and displayed on-screen.
*/
function onLoadModelSuccess( model )
console.log( 'onLoadModelSuccess()!' );
console.log( 'Validate model loaded: ' + ( viewer.model === model ) );
console.log( model );
/**
* viewer.loadModel() failure callback.
* Invoked when there's an error fetching the SVF file.
*/
function onLoadModelError( viewerErrorCode )
console.error( 'onLoadModelError() - errorCode:' + viewerErrorCode );
blocks_and_tables_-_metric.dwg提取模型的文件结构如下图所示:
我使用的2D模型的文件结构是:
【讨论】:
非常感谢@Eason,我错过了复制项目文件夹中的 manifest.json.gz 和 metadata.json.gz 文件。是否有任何 api 可以从中获取这些 .json.gz 文件?我已经使用developer.api.autodesk.com/modelderivative/v2/designdata/:urn/… api 来获取清单,这仅显示了一些 img 文件和 f2d 文件。 是的,Manifest API 响应中隐藏了这些文件,但请查看此博客,了解如何通过 Node.js 中的简单进度下载可见气泡:forge.autodesk.com/blog/…以上是关于如何使用纯 Javascript Autodesk 在查看器中离线显示 2d (.dwg) 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Autodesk Forge 查看器扩展添加到 React?
如何使用 Autodesk Forge 查看器离线查看模型?