目前我正在开发forge IDA,到目前为止我的代码运行得非常好,我可以在查看器上销毁和显示模型。工作流程是,如果我第一次点击按钮,它将从桶中获取文件,转换为svf,然后在查看器上显示它&对于下一个按钮,点击它将首先销毁上一个模型,然后在查看器上显示下一个模型。
从存储桶中获取文件、转换为svf然后在查看器上显示文件大约需要45到60秒
显示和销毁模型的代码写在viewer.js文件中。
但是函数show model和destroy model都是在Button1_Click事件之后执行的。
我想在执行第12行时销毁模型,使查看器为空,直到显示下一个模型(即直到执行第14至18行)。
在网页上的第13行销毁模型,而不是在第20行完成后销毁(即,Button1_Click()事件完成后),欢迎任何回复。谢谢你
#default.aspx.cs
1.protected void Button1_Click(object sender, EventArgs e)
2.{
3. if (counter == 1)
4. {
5. ///////////////
6. // code to get file from bucket and translate file to svf
7. ////////////////
8. //to display model on viewer
9. Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowModel", string.Format("<script>showModel('{0}');</script>", objectIdBase64));
10. }
11. else
11. {
12. //to destroy model on viewer
13. Page.ClientScript.RegisterStartupScript(this.GetType(), "destroyModel", string.Format("<script>destroyModel('{0}');</script>", objectIdBase64));
14. ///////////////
15. // code to get file from bucket and translate file to svf
16. ////////////////
17. //to display model on viewer
18. Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowModel", string.Format("<script>showModel('{0}');</script>", objectIdBase64));
19. }
20.}
#viewer.js
function showModel(urn) {
var options = {
env: 'AutodeskProduction',
getAccessToken: getForgeToken
};
Autodesk.Viewing.Initializer(options, () => {
viewer = new Autodesk.Viewing.GuiViewer3D(document.getElementById('forgeViewer'));
viewer.start();
var documentId = 'urn:' + urn;
Autodesk.Viewing.endpoint.HTTP_REQUEST_HEADERS['If-Modified-Since'] = "Sat, 29 Oct 1994 19:43:31 GMT"
Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
});
}
function onDocumentLoadSuccess(doc) {
var defaultModel = doc.getRoot().getDefaultGeometry();
viewer.loadDocumentNode(doc, defaultModel);
}
function onDocumentLoadFailure(viewerErrorCode) {
console.error('onDocumentLoadFailure() - errorCode:' + viewerErrorCode);
}
function destroyModel() {
viewer.finish();
viewer = null;
Autodesk.Viewing.shutdown();
}
字符串
1条答案
按热度按时间cxfofazt1#
要卸载当前加载的模型,我们可以调用
viewer.impl.unloadCurrentModel()
。要卸载特定的模型,我们可以调用
viewer.impl.unloadModel( model )
字符串