成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

添加自定義屬性到Viewer的屬性面板

AJie / 651人閱讀

摘要:另一個(gè)相關(guān)的是屬性檢查器這篇博客,其是通過(guò)建立一個(gè)工具欄按鈕的方式來(lái)新增面板,它是可以正常運(yùn)作的,但它的做法并非取代現(xiàn)有的屬性面板,不在今天要討論的范圍。

這是一個(gè)常被提起的問(wèn)題,第一次是在「添加自定義屬性到Viewer的屬性面板」這篇博客被提出,但因自V4開(kāi)始,Viewer的CSS有重大變更,導(dǎo)致該方法在新版的 Viewer已無(wú)法使用。另一個(gè)相關(guān)的是「Viewer屬性檢查器」這篇博客,其是通過(guò)建立一個(gè)工具欄按鈕的方式來(lái)新增面板,它是可以正常運(yùn)作的,但它的做法并非取代現(xiàn)有的屬性面板,不在今天要討論的范圍。

那我們?cè)撛趺醋霾拍苋〈F(xiàn)有的屬性面板呢?

事實(shí)上,我們有一個(gè)接受內(nèi)建面板 ViewerPropertyPanel 對(duì)象的方法叫 viewer.setPropertyPanel 可以使用。因此,最簡(jiǎn)單的操作方式是使用 setPropertyPanel 這個(gè)方法,再替換 setProperties 這方法的內(nèi)容。為了新增更多我們想要的屬性數(shù)據(jù),讓我們也復(fù)寫(xiě)setNodeProperties 這個(gè)接受dbId作為函數(shù)變量的方法,以下是部分程序代碼:

// *******************************************
// Custom Property Panel
// *******************************************
function CustomPropertyPanel(viewer, options) {
    this.viewer = viewer; 
    this.options = options; 
    this.nodeId = -1; // dbId of the current element showing properties
    Autodesk.Viewing.Extensions.ViewerPropertyPanel.call(this, this.viewer);
}
CustomPropertyPanel.prototype = Object.create(Autodesk.Viewing.Extensions.ViewerPropertyPanel.prototype);
CustomPropertyPanel.prototype.constructor = CustomPropertyPanel;

CustomPropertyPanel.prototype.setProperties = function (properties, options) {
    Autodesk.Viewing.Extensions.ViewerPropertyPanel.prototype.setProperties.call(this, properties, options);

    // add your custom properties here
    // for example, let"s show the dbId and externalId
    var _this = this;
    // dbId is right here as nodeId
    this.addProperty("dbId", this.nodeId, "Custom Properties");
    // externalId is under all properties, let"s get it!
    this.viewer.getProperties(this.nodeId, function(props){
        _this.addProperty("externalId", props.externalId, "Custom Properties");
    })
}

CustomPropertyPanel.prototype.setNodeProperties = function (nodeId) {
    Autodesk.Viewing.Extensions.ViewerPropertyPanel.prototype.setNodeProperties.call(this, nodeId);
    this.nodeId = nodeId; // store the dbId for later use
};

為了方便使用,我們將之包裝在Viewer擴(kuò)展中。這里有篇博客「擴(kuò)展概念:工具欄與面板」在討論擴(kuò)充展架的基本概念,這里我們只使用它創(chuàng)建擴(kuò)展的部分(不是工具欄或面板的部分)。以下擴(kuò)展代碼使用剛才建立的面板,并通過(guò) setPropertyPanel 使之與 Viewer 連結(jié)。(這個(gè)擴(kuò)充將負(fù)責(zé)注冊(cè)和取消注冊(cè)我們的自定義屬性面板。)

// *******************************************
// Custom Property Panel Extension
// *******************************************
function CustomPropertyPanelExtension(viewer, options) {
    Autodesk.Viewing.Extension.call(this, viewer, options);

    this.viewer = viewer;
    this.options = options;
    this.panel = null;
}

CustomPropertyPanelExtension.prototype = Object.create(Autodesk.Viewing.Extension.prototype);
CustomPropertyPanelExtension.prototype.constructor = CustomPropertyPanelExtension;

CustomPropertyPanelExtension.prototype.load = function () {
    this.panel = new CustomPropertyPanel(this.viewer, this.options);
    this.viewer.setPropertyPanel(this.panel);
    return true;
};

CustomPropertyPanelExtension.prototype.unload = function () {
    this.viewer.setPropertyPanel(null);
    this.panel = null;
    return true;
};

Autodesk.Viewing.theExtensionManager.registerExtension("CustomPropertyPanelExtension", CustomPropertyPanelExtension);

最后一步是載入這個(gè)擴(kuò)展。如果您的應(yīng)用程序依照「基本應(yīng)用程序教學(xué)」建立的,在你的程序代碼里會(huì)有一行像這個(gè)樣子的,這里我們只需加入擴(kuò)充設(shè)定即可:

// 從這樣
viewerApp.registerViewer(viewerApp.k3D, Autodesk.Viewing.Private.GuiViewer3D);

// 改成這樣
viewerApp.registerViewer(viewerApp.k3D, Autodesk.Viewing.Private.GuiViewer3D, { extensions: ["CustomPropertyPanelExtension"] });

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/104014.html

相關(guān)文章

  • 在Forge Viewer上顯示訂義屬性

    摘要:最近有的小伙伴們都在詢問(wèn)要怎么在里顯示自訂義屬性,要做到這個(gè)是挺容易的。在來(lái)我們透過(guò)繼承來(lái)創(chuàng)建自個(gè)的屬性面板使用的語(yǔ)法,部份代碼來(lái)自的無(wú)法從服務(wù)器獲取屬性透過(guò)撰寫(xiě)括展讓自定義屬性窗取代自帶的以上希望對(duì)各為小伙伴有幫助參考 最近有 Autodesk Forge 的小伙伴們都在詢問(wèn)要怎么在 Viewer 里顯示自訂義屬性,要做到這個(gè)是挺容易的。目前有兩種方式可以做到這個(gè)效果,一種是直接添加...

    seasonley 評(píng)論0 收藏0
  • 訂義 Forge Viewer ModelStructurePanel 交互行為

    摘要:在官方釋出版的同時(shí)發(fā)布了新版本的,這個(gè)面版已被整個(gè)重新改寫(xiě),這次更新也加入一些新的交互行為,下面我們將會(huì)稍作解釋。 這禮拜的小技巧是關(guān)于如何以不加入太多的 JavaScript 的方式自訂義 ModelStructurePanel 的交互行為,這個(gè)小技巧受到這篇問(wèn)與答的啟發(fā):Prevent zoom in Forge viewer when clicking in Model Brow...

    xialong 評(píng)論0 收藏0
  • 前端技術(shù) 博客文章、書(shū)籍 積累

    摘要:好多編輯器例如等都支持這樣的語(yǔ)法來(lái)快速的編寫(xiě)代碼如何優(yōu)雅地使用把標(biāo)簽放在結(jié)束標(biāo)簽之后結(jié)束標(biāo)簽之前的差別什么是響應(yīng)式設(shè)計(jì)怎樣進(jìn)行 書(shū)籍 《JavaScriptDOM編程藝術(shù)》《JavaScript高級(jí)程序設(shè)計(jì)》《JavaScript框架設(shè)計(jì)》《JavaScript專家編程》《JavaScript Ninjia》《JavaScript語(yǔ)言精粹(修訂版)》《JavaScript設(shè)計(jì)模式》《J...

    LiangJ 評(píng)論0 收藏0
  • 前端技術(shù) 博客文章、書(shū)籍 積累

    摘要:好多編輯器例如等都支持這樣的語(yǔ)法來(lái)快速的編寫(xiě)代碼如何優(yōu)雅地使用把標(biāo)簽放在結(jié)束標(biāo)簽之后結(jié)束標(biāo)簽之前的差別什么是響應(yīng)式設(shè)計(jì)怎樣進(jìn)行 書(shū)籍 《JavaScriptDOM編程藝術(shù)》《JavaScript高級(jí)程序設(shè)計(jì)》《JavaScript框架設(shè)計(jì)》《JavaScript專家編程》《JavaScript Ninjia》《JavaScript語(yǔ)言精粹(修訂版)》《JavaScript設(shè)計(jì)模式》《J...

    codercao 評(píng)論0 收藏0
  • 前端技術(shù) 博客文章、書(shū)籍 積累

    摘要:好多編輯器例如等都支持這樣的語(yǔ)法來(lái)快速的編寫(xiě)代碼如何優(yōu)雅地使用把標(biāo)簽放在結(jié)束標(biāo)簽之后結(jié)束標(biāo)簽之前的差別什么是響應(yīng)式設(shè)計(jì)怎樣進(jìn)行 書(shū)籍 《JavaScriptDOM編程藝術(shù)》《JavaScript高級(jí)程序設(shè)計(jì)》《JavaScript框架設(shè)計(jì)》《JavaScript專家編程》《JavaScript Ninjia》《JavaScript語(yǔ)言精粹(修訂版)》《JavaScript設(shè)計(jì)模式》《J...

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

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<