摘要:本文章的原作是的在版的里引入了一個重大的變革,開始支持載入外部擴展,細節可以參考這篇文章重大變更。這個函數自此刻起的函數回傳值不在是布林值,取而代之的是一個實例,這表示開始支持使用非同步的方法在載入擴展。
本文章的原作是 Autodesk ADN 的 Philippe Leefsma
在 v2.15 版的 Forge Viewer API 里引入了一個重大的變革,Viewer開始支持載入外部擴展,細節可以參考這篇文章重大變更 - Forge Viewer.loadExtension。
Viewer3D.loadExtension()這個函數自此刻起的函數回傳值(Return Value)不在是布林值(Boolean),取而代之的是一個 Promise 實例,這表示 Viewer 開始支持使用非同步的方法在載入擴展。這個變革使得擴展的代碼可以被放置在外部文檔里,可以在被使用者要求或者觸發時在載入即可,那要怎麼做到呢?
開發者只要調用registerExternalExtension 這個函數來注冊外部擴展就可以讓 Viewer 知道這個擴展是必需額外載入的,它不被包含在現在網頁頁面里,像 Viewer 自帶的 Markups 和 BimWalker 兩個擴展都是這樣被載入的。但如果我想要將這個套用在自定擴展要怎么做?
下方示例代碼是我們的擴展本體,被放置在 external.js 這個文檔里,并將這個文檔放在我們網頁服務器的 /resources/extensions/ 路徑底下:
(function(){ "use strict"; function MyExternalExtension(viewer, options) { Autodesk.Viewing.Extension.call(this, viewer, options) } MyExternalExtension.prototype = Object.create(Autodesk.Viewing.Extension.prototype) MyExternalExtension.prototype.constructor = MyExternalExtension var proto = MyExternalExtension.prototype proto.load = function () { console.log("External Extension loaded!") return true } proto.unload = function () { console.log("External Extension unloaded!") return true } proto.sayHello = function (name) { console.log("Hi " + name + "!") return true } Autodesk.Viewing.theExtensionManager.registerExtension( "MyExternal.Extension.Id", MyExternalExtension) })()
現在假設我們的網頁服務器的位址是 localhost:3000,在我們的 Viewer 應用的代碼里可以加上下面這行來注冊 external.js 這個外部擴展:
Autodesk.Viewing.theExtensionManager.registerExternalExtension( "MyExternal.Extension.Id", "http://localhost:3000/resources/extensions/external.js")
在透過這些代碼將我們的外部擴展載入:
viewer.addEventListener( Autodesk.Viewing.GEOMETRY_LOADED_EVENT, () => { viewer.loadExtension("MyExternal.Extension.Id").then( function(externalExtension) { externalExtension.sayHello("Bob") }) });
一但擴展被載入后就可以透拓瀏覽器的 Console 看到下面的信息(實作在外部擴展里):
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/88902.html
摘要:有提供類似的功能,但這并不包含在里頭。條列清單或是切換視圖是非常容易的,你主要是要建立一個使用者介面讓使用者去選取他們想觀看的內容。我使用了來確保當前載入模型占用的內存可以都被釋出。 此篇文章原作是 Autodesk ADN Philippe Leefsma,以下以我簡稱。 這有一個簡易的博客用來說明一個我剛加入 https://forge-rcdb.autodesk.io 的一個新功...
摘要:但很不幸的,新功能要加入里頭這件事對于開發團隊而言絕非一件易事,是需要一些時間來完成的這篇文章將帶領大家用最少的工作量將上的新功能拿來上使用。在這個案例里頭,我們可以只將和其他相依文檔引入例如。 showImg(https://segmentfault.com/img/bV25af?w=1311&h=696); 對于 Forge Viewer 比較熟悉的朋友可能知道 Forge Vie...
摘要:但模型載入程序并不是同步執行的載入文檔和幾何等動作在里都是異步的,我們沒辦法知道哪一個模型是第一個被完整載入,和下個一個完全載入的是誰而在一些應用場景里是有可能需要在一個序列聚合多個模型。 showImg(https://segmentfault.com/img/bVVaPI?w=600&h=390); 此篇博客原著為 Autodesk ADN 的梁曉冬,以下以我簡稱。 我的同事創作了...
摘要:現在讓我們修改這個示例讓他可以展示兩個同項目但不同版號的模型及。示例執行結果如下這邊是這個比較模型的括展代碼英文原文 showImg(https://segmentfault.com/img/bVOmjp?w=1542&h=925); 熟悉 BIM360 Team 的朋友可能知道他有一個很牛的模型文檔版本比較的功能,但如果模型是放在 Google 云盤或是百度云盤上有可能做到嗎? Au...
閱讀 3741·2021-11-24 09:39
閱讀 3472·2019-08-30 15:56
閱讀 1375·2019-08-30 15:55
閱讀 1040·2019-08-30 15:53
閱讀 1927·2019-08-29 18:37
閱讀 3608·2019-08-29 18:32
閱讀 3135·2019-08-29 16:30
閱讀 2936·2019-08-29 15:14