asp.net 如何在查看器中立即销毁模型

h5qlskok  于 2023-08-08  发布在  .NET
关注(0)|答案(1)|浏览(90)

目前我正在开发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();
}

字符串

cxfofazt

cxfofazt1#

要卸载当前加载的模型,我们可以调用viewer.impl.unloadCurrentModel()
要卸载特定的模型,我们可以调用viewer.impl.unloadModel( model )

let model = viewer.getAllModels()[1];

viewer.impl.unloadModel( model );

字符串

相关问题