原创 使用ThreeJs搭建BIM模型瀏覽器-第十步 加載優化

最近在嘗試了新的傳輸方式。不過對QModel而言,影響不是很大,因爲QModel這個產品只有首次加載是需要從服務器下載模型數據的。   首先,把原本的模型文件拆分成多份了。原本只有一個zip數據壓縮包,現在改爲在服務端拆解爲N份,根據構件

原创 使用ThreeJs搭建BIM模型瀏覽器-Revit篇-構件顏色

Revit的構件顏色常見有三種。 1、材質顏色 2、視圖的可見性過濾器 3、管道系統的特殊顏色 從我的作品中摘抄片段吧 1、獲取構件材質 必須按面去獲取  material = m_Document.GetElement(face.Mat

原创 javascript的異步傳遞

異步這東西很令人討厭啊,尤其是對我一個Java和C#的程序員來說,經常直來直往的衝進坑裏。 各種各樣的異步回調這裏就不枚舉了。自定義一般使用promise實現,這裏舉例直接用setTimeout。 比如下面段代碼,會輸出什麼呢:     

原创 使用ThreeJs搭建BIM模型瀏覽器 QModel的誕生記

QModel模型瀏覽器展示頁面:QModel鏈接入口,支持Revit文件上傳,在Web端瀏覽,並集成與模型相關的業務。 首先關於筆者的介紹: 2010年機緣巧合進行建築信息化行業,當時主要還是在做工程造價相關的軟件。 2015年BIM概念

原创 使用ThreeJs搭建BIM模型瀏覽器,第七步-測量

前面說到構件選擇,實現了點擊時與界面記錄的焦點。《使用ThreeJs搭建BIM模型瀏覽器,第二步-構件選擇》 主要的實現思路是:通過一個全局標記,記錄前一次點擊(作爲起點)和後一次點擊(作爲終點),求兩點之前的距離。 然後在終點附近插件一

原创 Revit二次開發-幾何信息導出爲JSON的方法和源碼分享

在此聲明這份原代碼是在git上下載到的,國內某位大神分享的東西,我調試的時候略微改過一點東西,我當年也是從這一份源碼入坑的。下載地址:https://download.csdn.net/download/ztz87/12516773 這個

原创 JSON.parse反序列化與split的效率對比

最新在封裝自己的BIM模型瀏覽器,定義一個符合自己需求的輕量BIM模型文件。其中有一個問題,當構件數量達到數十萬,頂點數量達到億級,JSON序列化與反序列化的效率實在讓人難以接受。 在某些場合,JSON對象跟字符串都能符合需求。例如一個T

原创 使用ThreeJs搭建BIM模型瀏覽器,第九步-內存優化(1)

添加到場景的mesh,是通過geometry+materail生成的。如果場景內大量重複的構件,或者大量的構件的材質都是相同的,threejs提供這種方案節省內存:共享geometry 和materail。舉例說明: 創建300個一樣的圓

原创 使用ThreeJs搭建BIM模型瀏覽器,第八步-邊緣線

這個輔助線條,一般稱爲輔助線,類似草圖裏的草稿線條。下面分別是有線條和沒有線條的對比。 在Threejs對面的邊緣添加線條,其實很簡單。可以從官方示例中找到。 var geometry = new THREE.BoxBufferGe

原创 使用ThreeJs搭建BIM模型瀏覽器 第六步 紋理貼圖(材質)

上效果圖 解決思路: Threejs上沒啥好說的。看郭老師的博客:http://www.yanhuangxueyuan.com/Three.js_course/texture.html Revit上如何導出呢,不好意思,這次真不能貼核心代

原创 使用ThreeJs搭建BIM模型瀏覽器 IFC篇

前面提到的模型瀏覽器所瀏覽的文件,都是基於自己對Revit文件的進行解析,所導出的蹭文件是JSON結構的。有朋友 提到可否瀏覽IFC文件呢? 小作嘗試確認是可以的。但是IFC存在非常大的問題: 第一,沒有模型結構樹。 第二,沒有構件屬性信

原创 Revit文件導出二維視圖(view2D)

不廢話,直接上源代碼。 如果有設置了二維視圖的生成設置,請添加setupName進行過濾。如果沒有,請直接按第一個設置選項導出。 private bool ExportDWGF(Document document,Vie

原创 使用ThreeJs搭建BIM模型瀏覽器 第五步 漫遊

基礎的鍵盤操作漫遊其實很好解決。Threejs有一個FlyControl這個控制器,就是完成鍵盤操作的。 廢話不說,上圖   關鍵代碼   <script src="js/controls/FlyControls.js"></scr

原创 使用ThreeJs搭建BIM模型瀏覽器 第四步 剖切

技術方案:threejs的剖切,是由renderer.clippingPlanes實現的。 this.clipHelpers = new THREE.Group(); this.clipHelpers.add(

原创 jhipster-架構優化技巧總結

經過一段時間的部門動盪,框架的事終於轉交給其他部門了。雖然以後不再是我操心的事,但是我要把這些經歷記錄下來,與朋友們分享。個別jhipster的配置問題不要讓新手們花太多時間了。   一、關於UAA 建議採用OAuth2的模式。安全性較