理想情况下,在查看器中,目标是在查看器中加载/卸载链接的模型。 这样,可以随意显示/隐藏不同的工程层(结构/水/电/...)。
为此,我尝试了几种选择,但据我所知,没有一种是完全合适的。
我尝试从zip文件上传“一切”。 Upload linked Revit models for Forge Viewer https://forge.autodesk.com/cloud_and_mobile/2016/07/translate-referenced-files-by-derivative-api.html 可以,例如[rst_advanced_sample_project.rvt + Technical_school-current_m.rvt]或Forge-Test-Harness-Node.js / Revit.zip等模型。
这种方式给我留下了两个问题:
我尝试手动创建引用 https://developer.autodesk.com/en/docs/model-derivative/v2/reference/http/urn-references-POST/
集合模型 https://forge.autodesk.com/blog/aggregate-multi-models-sequence-forge-viewer
元素是分开的,可能需要对齐,但是所有元素都会显示。 缺点是元素信息,尤其是模型浏览器显示无关紧要的东西。
无论采用哪种解决方案,都有没有办法在查看器中卸载模型/链接?
谢谢
答案 0 :(得分:0)
关于Revit模型中的模型聚合,您可能使用了错误的对齐设置。
通常,Forge查看器默认情况下将加载的模型放置在模型边界框中心的全局偏移处。因此,必须在第1次加载的所有模型都设置与第1次模型相同的globalOffset,这是我回答here的全局偏移对齐的代码段。
function _onGeometryLoaded( event ) {
if( urns.length <= 0 ) {
viewer.removeEventListener(
Autodesk.Viewing.GEOMETRY_LOADED_EVENT,
_onGeometryLoaded
);
return;
}
viewer.loadModel( urns[0], { globalOffset: event.model.getData().globalOffset } );
urns.splice( 0, 1 );
}
viewer.addEventListener(
Autodesk.Viewing.GEOMETRY_LOADED_EVENT,
_onGeometryLoaded
);
viewer.loadModel( urns[0] );
urns.splice( 0, 1 );
对于具有共享坐标的Revit模型,您可以通过这种方式加载模型,有关详细信息,请参见here。
var loadOptions = {
applyRefPoint: true,
globalOffset: { x:0, y:0, z:0 }
};
viewer.loadModel(
svfUrl,
loadOptions,
onLoadModelSuccess,
onLoadModelError
);