成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

在 Forge Viewer 載入外部擴(kuò)展

LinkedME2016 / 980人閱讀

摘要:本文章的原作是的在版的里引入了一個(gè)重大的變革,開(kāi)始支持載入外部擴(kuò)展,細(xì)節(jié)可以參考這篇文章重大變更。這個(gè)函數(shù)自此刻起的函數(shù)回傳值不在是布林值,取而代之的是一個(gè)實(shí)例,這表示開(kāi)始支持使用非同步的方法在載入擴(kuò)展。

本文章的原作是 Autodesk ADN 的 Philippe Leefsma

在 v2.15 版的 Forge Viewer API 里引入了一個(gè)重大的變革,Viewer開(kāi)始支持載入外部擴(kuò)展,細(xì)節(jié)可以參考這篇文章重大變更 - Forge Viewer.loadExtension。

Viewer3D.loadExtension()這個(gè)函數(shù)自此刻起的函數(shù)回傳值(Return Value)不在是布林值(Boolean),取而代之的是一個(gè) Promise 實(shí)例,這表示 Viewer 開(kāi)始支持使用非同步的方法在載入擴(kuò)展。這個(gè)變革使得擴(kuò)展的代碼可以被放置在外部文檔里,可以在被使用者要求或者觸發(fā)時(shí)在載入即可,那要怎麼做到呢?

開(kāi)發(fā)者只要調(diào)用registerExternalExtension 這個(gè)函數(shù)來(lái)注冊(cè)外部擴(kuò)展就可以讓 Viewer 知道這個(gè)擴(kuò)展是必需額外載入的,它不被包含在現(xiàn)在網(wǎng)頁(yè)頁(yè)面里,像 Viewer 自帶的 Markups 和 BimWalker 兩個(gè)擴(kuò)展都是這樣被載入的。但如果我想要將這個(gè)套用在自定擴(kuò)展要怎么做?

下方示例代碼是我們的擴(kuò)展本體,被放置在 external.js 這個(gè)文檔里,并將這個(gè)文檔放在我們網(wǎng)頁(yè)服務(wù)器的 /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)
})()

現(xiàn)在假設(shè)我們的網(wǎng)頁(yè)服務(wù)器的位址是 localhost:3000,在我們的 Viewer 應(yīng)用的代碼里可以加上下面這行來(lái)注冊(cè) external.js 這個(gè)外部擴(kuò)展:

Autodesk.Viewing.theExtensionManager.registerExternalExtension(
  "MyExternal.Extension.Id",
  "http://localhost:3000/resources/extensions/external.js")

在透過(guò)這些代碼將我們的外部擴(kuò)展載入:

viewer.addEventListener(
  Autodesk.Viewing.GEOMETRY_LOADED_EVENT, () => {

    viewer.loadExtension("MyExternal.Extension.Id").then(
      function(externalExtension) {

        externalExtension.sayHello("Bob")
      })
  });

一但擴(kuò)展被載入后就可以透拓瀏覽器的 Console 看到下面的信息(實(shí)作在外部擴(kuò)展里):

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/88902.html

相關(guān)文章

  • Forge Viewer 里切換模型視圖(Viewables)

    摘要:有提供類似的功能,但這并不包含在里頭。條列清單或是切換視圖是非常容易的,你主要是要建立一個(gè)使用者介面讓使用者去選取他們想觀看的內(nèi)容。我使用了來(lái)確保當(dāng)前載入模型占用的內(nèi)存可以都被釋出。 此篇文章原作是 Autodesk ADN Philippe Leefsma,以下以我簡(jiǎn)稱。 這有一個(gè)簡(jiǎn)易的博客用來(lái)說(shuō)明一個(gè)我剛加入 https://forge-rcdb.autodesk.io 的一個(gè)新功...

    BlackHole1 評(píng)論0 收藏0
  • 透過(guò) three.js Forge Viewer 里頭創(chuàng)建 3D 文字(使用部份 r81 的功能

    摘要:但很不幸的,新功能要加入里頭這件事對(duì)于開(kāi)發(fā)團(tuán)隊(duì)而言絕非一件易事,是需要一些時(shí)間來(lái)完成的這篇文章將帶領(lǐng)大家用最少的工作量將上的新功能拿來(lái)上使用。在這個(gè)案例里頭,我們可以只將和其他相依文檔引入例如。 showImg(https://segmentfault.com/img/bV25af?w=1311&h=696); 對(duì)于 Forge Viewer 比較熟悉的朋友可能知道 Forge Vie...

    xuhong 評(píng)論0 收藏0
  • 使用 Forge Viewer 序列中聚合多模型

    摘要:但模型載入程序并不是同步執(zhí)行的載入文檔和幾何等動(dòng)作在里都是異步的,我們沒(méi)辦法知道哪一個(gè)模型是第一個(gè)被完整載入,和下個(gè)一個(gè)完全載入的是誰(shuí)而在一些應(yīng)用場(chǎng)景里是有可能需要在一個(gè)序列聚合多個(gè)模型。 showImg(https://segmentfault.com/img/bVVaPI?w=600&h=390); 此篇博客原著為 Autodesk ADN 的梁曉冬,以下以我簡(jiǎn)稱。 我的同事創(chuàng)作了...

    graf 評(píng)論0 收藏0
  • 「翻譯」Forge Viewer上實(shí)作簡(jiǎn)易的模型版本比較

    摘要:現(xiàn)在讓我們修改這個(gè)示例讓他可以展示兩個(gè)同項(xiàng)目但不同版號(hào)的模型及。示例執(zhí)行結(jié)果如下這邊是這個(gè)比較模型的括展代碼英文原文 showImg(https://segmentfault.com/img/bVOmjp?w=1542&h=925); 熟悉 BIM360 Team 的朋友可能知道他有一個(gè)很牛的模型文檔版本比較的功能,但如果模型是放在 Google 云盤或是百度云盤上有可能做到嗎? Au...

    JowayYoung 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<