999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Revit二次開發的模板工程量提取應用研究

2024-04-07 06:46:18牛立軍王宇斌
海河水利 2024年3期
關鍵詞:二次開發可視化模型

牛立軍,王宇斌

(華北水利水電大學,河南 鄭州 450046)

隨著水利行業設計施工能力的不斷提升,模板工程的發展在水利工程建設中扮演著重要角色。在現澆混凝土結構工程中,模板工程造價一般占混凝土結構工程造價的20%~30%,占工程用工量的30%~40%,模板工程工期一般占50%左右,有著舉足輕重的地位[1]。傳統模板工程量的計算,主要依靠造價人員利用已有的圖紙結合造價軟件進行手工計算,由于模板工程計量公式復雜、手工計算量大等原因,存在計量不準、重復計量等問題[2,3]。本文通過Visual Studio 軟件利用Revit 平臺所提供的API 接口和C#編程語言進行二次開發,實現了基于Revit的三維可視化模板工程量統計,為解決上述問題提供了新思路。

Revit 三維模型創建,主要由用戶繪制模型輪廓進行拉伸、放樣、融合等操作,實現模型輪廓的三維實體創建,因此其更加重視模型構件體積的工程量而忽視了三維模型各個表面的面積。國內學者針對BIM 計量的研究,大多以構件實體體積為數據基礎提取工程量或利用二次開發進行擴展實現自動設計,針對模型構件表面面積的統計還有待深入研究。王茹等[4]為實現基于Revit 平臺工程量提取的本地化,利用二次開發技術對模型構件體積扣減規則重置,并按規范進行構件編碼,實現了項目工程量清單快速準確的提取。武桂芝等[5]基于Revit二次開發針對噴灌工程中工程量統計困難等問題實現了對噴灌系統工程量的提取,為后期的概算編制、進度計劃制定及資源配置提供數據支撐。郭峰等[6]針對傳統算量精度差效率低等問題利用二次開發實現模型的自動布置與清單計量,提高了工程量統計的速度和效率。同時,在模板工程的應用方面國內外學者也展開了研究。穆文奇等[7]以具體工程為實例,闡述了利用BIM技術在模板工程施工精細化管理方面的優勢,為施工過程中BIM 技術的應用提供了參考。邢莉燕等[8]基于灰色關聯分析法針對不同因素對模板造價的影響程度明確“精確模板工程量”等造價控制與管理建議。Changtaek Hyun 等[9]針對現澆混凝土工程中的模板設計、規劃現狀,提出新的模板設計方法使用IFC 擴展實現模板設計的自動化,提高了設計效率。

本文通過分析BIM 計量存在的短板,結合Revit二次開發優勢對模型構件數據進行訪問、修改、提取等操作,最終實現模板工程量信息提取的可視化交互,為BIM 技術在水利行業模板工程的深度應用提供一定技術參照。

1 開發目標

受制于Revit軟件自身的模型創建方式,即通過用戶創建閉合輪廓并經過拉伸、旋轉得到實體模型,在Revit軟件中只能通過模型實體提取其體積,不能對各個面的面積進行分類計算,這就導致在實際工程項目中提取模板工程量仍然需要依賴傳統手算的方法獲取信息數據,不能在Revit軟件中一步到位實現模板工程量信息獲取的可視化交互式過程。通過Revit 軟件所提供的API 對模型構件進行解析調用實體幾何屬性并進行預處理,實現了使用代碼統計構件各表面面積的功能,解決了插件開發過程中的難點。Revit API(Application Programming Interface),即Autodesk 公司提供的具有明確定義且可以實現Revit 軟件中各個組件之間的通信方法。使用C#語言調用其中的方法實現對所創建的三維實體構件中每個面的面積提取,并結合BIM 優勢使模板工程計量全套流程可視化。插件開發技術路線,如圖1所示。

圖1 二次開發技術路線

使用Revit 平臺和Visual Studio2019 軟件,利用C#編程語言將模板工程量統計流程進行抽象封裝,通過Revit API 接口掛接到Revit 軟件當中實現模板工程量的可視化統計。首先,需要進行二次開發環境搭建,創建類庫項目并添加Windows Form 窗體進行用戶界面設計,通過添加Revit API程序集引用和空間事務創建模式完成二次開發初始編程環境搭建。其次,根據功能需要將所需進行編程的功能進行模塊化封裝以方便進行二次調用,其中“UI Design”模塊包含程序界面設計與Revit 相鏈接的交互界面開發;“打開窗體”與“模型預覽”模塊為程序的三維可視化運行提供支持;“創建面的模型線”作為主程序的核心模塊實現提取三維模型構件表面的主要功能;參數模塊則將Revit 模型與用戶界面進行深度的參數綁定,實現參數獲取、參數傳遞、參數判斷、參數修改等功能。最后,在完成環境搭建與模塊化程序開發后生成解決方案使用GUID 注冊插件并附加到Revit 進程中進行調試,若調試成功將成果進行保存,否則返回模塊化程序開發環節進行程序功能修改直至調試成功。

2 模板工程量計算插件開發和實現過程

Revit API 本質上是一個類庫,提供2 種接口即外部命令(IExternal Command)和外部應用(IExternal Application)來訪問和擴展Revit。其接口實現路線,如圖2所示。

圖2 接口實現路線

外部命令(IExternal Command)接口只有一個抽象函數Excute,重載這個函數來實現IExternal Command。Excute 函數作為外部命令的主函數被調用具有3 個參數:輸入參數Command Data、輸出參數Message、輸出參數Elements。它們分別被用來獲取Revit 目標對象的數據信息、返回命令執行的反饋信息和顯示對應錯誤的參數信息。外部應用(IExternal Application)是為了實現個性化菜單選項的定制,其接口有2 個抽象函數,可以通過重載OnStartup()和OnShutdown()2 種方法將定制開發的代碼添加在2 個抽象函數之間,利用外部應用命令實現函數的重載,以達到Revit軟件加載個性化定制菜單選項實現功能區擴展。

2.1 界面設計

Winfrom 作為微軟公司基于.NET框架下的應用程序開發平臺,有著控件豐富、開發簡單等特點,具有大量可用于窗體設計的可視化控件能夠滿足各種界面設計開發。它完全繼承自公共語言運行庫(Common Language Runtime),保證了插件運行過程中的安全問題。使用“模態窗體”通過二次開發實現與Revit的交互操作,在提高插件使用優先級的同時保證插件的順利運行。

界面設計主要使用ElementHost、ListView 和TreeView 控件,分別用于可視化操作與控件展示,其架構設計如圖3 所示。其中,ElemenHost 控件通過ElementHost.Child 屬性來調用WPF 控件到Windows窗口,PreviewControl 作為WPF 的自定義控件由UserControl 繼承而來,可被當作WPF 控件用來在Revit 界面外顯示Document 的活動視圖。ListView控件將活動視圖中所展示的構件元素id 號及名稱獲取并展示,同時增加選中居中功能,增強其可視化交互性。TreeView 控件顯示Node 對象的分層列表,每個Node 對象均由一個標簽和一個可選的位圖組成,用于模板面積統計時將各個面單獨排列展示并通過所調用的Document 活動視圖居中展示實現交互,給用戶提供可視化選擇。

圖3 界面與架構設計

2.2 創建面的模型線

模板工程的模板面積統計與構件的表面積相關,在Revit 軟件中可以創建出構件的三維模型,但在其屬性中沒有表面積屬性且若使用Dynamo 將構件轉化為Solid 實體只能得到構件的總表面積。而在實際工程中模板面積的統計通常需要和實際的施工情況結合,更需要結合一定的施工經驗進行模板面積的統計。通過二次開發將模型Solid 實體的各個面進行篩選得到PlaneFace 集合,其中篩選的目的是剔除無法轉換的曲線并根據PlaneFace 創建平面模型線。創建模型線可以使用Document.Create.NewModelCurve(Curve,SketchPlane)方法。其中,第一個參數是Curve,可以是任何Curve 的子類,比如Line(線)、NurbSpline(樣條曲線)、Arc(弧線)、Ellipse(橢圓)等,那么對應創建出來的實例就是Model-Line、ModelNurbSpline、ModelArc 和ModelEllipse;第二個參數是SketchPlane 草圖平面,可以使用Sketch-Plane.Create(Docment,Plane)方法來創建工作平面。其中,Plane平面的創建使用“過一點并垂直其法線”來創建,由元素幾何對象中的Face 屬性為基礎。由此可以創建出面的模型線用以在模板統計的選擇交互中實現可視化交互。其具體實現過程及部分代碼,如圖4所示。

圖4 創建面的模型線模塊代碼實現過程

首先通過定義一個名為listMline的空List<ModelCurve>列表,用于存儲后續創建的模型線。Face-NewModelLine 方法被定義為公共靜態方法,該方法接收2 個參數:一個是Revit 文檔對象(Document),另一個是引用(Reference),后者通常指向文檔中的一個元素。在方法內部首先通過引用獲取對應的元素對象,然后它會清空之前存儲的模型線列表,以便為新的模型線做準備。接下來,嘗試獲取給定元素的幾何信息,特別是其中可能存在的變換矩陣。這個變換矩陣用于在創建模型線時將其坐標從元素的局部坐標系轉換到全局坐標系,從而確保模型線的位置正確。隨后獲取給定平面中“面”的幾何信息。它遍歷了“面”的邊界循環,這些邊界循環可能包含多個閉合邊界。在每個邊界循環內再次進行循環遍歷,這次遍歷的對象是邊界循環中的每一條邊。對于每條邊,代碼檢查是否為直線。如果是直線,它將提取出該直線,并在有變換矩陣的情況下對直線的端點進行坐標變換。接下來將創建一個平面對象,如果目標“面”存在變換矩陣,那么它將使用變換后的法線和原點來創建平面,否則使用原始平面的法線和原點。最后將進入Revit事務的范圍,在該事務內使用創建的平面和直線來創建一個SketchPlane對象。使用該SketchPlane 創建模型線(Model-Curve),用于表示在平面上的這段直線。創建的模型線被添加到listMline列表中,以便后續引用。

該功能模塊通過二次開發實現了在指定平面面上根據邊界信息創建模型線的功能。在創建模型線的同時還考慮了元素的變換和坐標的轉換,以確保模型線的正確位置。所創建的模型線被收集到一個列表中,以備后續進行工程量的提取操作使用。

2.3 提取工程量

調用“創建面的模型線”類中的FaceNewModel-Line 方法,通過傳入Revit 文檔對象與“面”的Reference 在給定面上創建模型線,并且將創建的模型線列表賦值給listMline 變量,用來在Revit 軟件中批量創建多個面的模型線。通過控件的事件點擊處理程序,當用戶點擊界面樹狀視圖節點時觸發該事件。首先聲明面積變量用于存儲計算得到的總面積,同時使用Textbox文本框將計算得到的節點用于顯示。遍歷樹狀圖所有子節點是否被勾選,若子節點被勾選則進行單位轉換將對應某個平面的面積轉換為平方米并累加到之前聲明的面積變量中。其具體實現過程及部分代碼,如圖5所示。

圖5 提取工程量部分代碼實現過程

2.4 參數化驅動

FamilyManager 類代表了編輯族類型的最重要的工具,它與族類型類(FamilyType)和族參數類(FamilyParameter)一起實現了“族類型”系列參數的添加、修改和刪除的功能操作。每個族類型都有一組屬性值即族參數,包括帶標簽的尺寸標注或文字說明等參數屬性如圖6所示。在同一項目中針對不同構件的族參數進行修改和讀取就實現了在工程中提取工程量的功能。族參數(FamilyParameter)是族文檔中的核心,也是Revit 軟件的核心概念,利用它可以實現模型的參數化驅動。利用FamilyManager類中的AddParameter 方法,可實現對構件的參數名稱、參數分組方式、參數類型的創建,同時可區分該構件參數為類型(Type)或實例(Instance)。

圖6 參數屬性

利用Revit API 所提供的有關方法,通過重寫“添加參數”和“修改參數”類并通過該類實現對Revit 族文件中的參數屬性修改,將我們所創建的模板統計基本信息和數據寫入構件中。以三維實體模型作為數據底板存儲項目數據,通過這種方法實現點擊模型構件即可查看該模型的混凝土模板工程量,方便造價與施工人員提取工程量。

3 實例應用

本實例利用二次開發的模板統計插件實現對閘室閘墩混凝土模板工程量的可視化交互統計,并將工程量信息存入三維模型構件形成數據底板為接下來概預算編制提供依據,同時為驗證其數據準確性同傳統算量方法進行對比。

3.1 可視化統計

選中需要進行模板統計的構件,插件右側將三維構件實體實時地展示在窗口中,同時用戶可以通過窗口進行模型的查看、放大、旋轉。左側列表同時統計出構件的各個表面及面積并進行編號統計過程,如圖7所示。

圖7 閘墩表面統計

根據實際工程需要對將要進行支護模板的混凝土表面進行選擇,選擇過后的表面面積及總面積合計將會展示在窗體上方,同時選中的表面也會居中高亮展示于可視化窗口處方便用于進行查看、核實。其選取的交互界面,如圖8所示。

圖8 模板統計交互界面

在對構件進行模板工程量統計完成之后,所統計的數據會寫入構件的屬性中且可隨構件進行復制與查看,閘室閘墩的混凝土工程模板工程量與所需支護模板的表面編號均被保存到構件的屬性中,在項目的全過程中可以隨時查詢調用。其三維模型展示及屬性,如圖9所示。

圖9 閘墩屬性

3.2 對比驗證

工程量提取是基于BIM的建設工程項目的重要部分,將Revit 模型導入現有算量軟件如廣聯達、魯班等,與傳統手工圖紙算量進行對比,在工程量準確性、便捷性和可視化程度方面的評估結果,詳見表1。該插件在工程量統計方面與傳統計量方式基本一致,但其可視化程度明顯優于傳統方法。該插件從一定程度上緩解了傳統方式下面對圖紙進行算量容易發生少算、漏算的問題。與傳統方法對比,該插件可視化程度高,在提升造價人員工作效率的同時也結合BIM模型創建數據底板幫助項目進一步深化。

表1 統計結果對比

4 結論

基于Revit API 并結合二次開發技術實現了對現澆混凝土構件的模板統計可視化交互過程,并可將統計結果作為數據底板儲存在構件中方便隨時查看和瀏覽。主要成果有:通過創建窗口實現模型與數據可視化交互,模型和數據的實時映射操作提高了計量的準確性;將提取工程量數據寫入模型數據形成數據底板方便后續施工與管理;通過實例驗證取得了良好的效果,有效避免了在工程量統計過程中因為計算過程繁瑣復雜而造成的返工,大大提高了造價人員的效率;實現了模型與數據可視化交互與實時映射,拓展了在針對復雜構件模板工程量的提取方法,同時形成數據底板為后續管理提供了參照。

猜你喜歡
二次開發可視化模型
一半模型
基于CiteSpace的足三里穴研究可視化分析
基于Power BI的油田注水運行動態分析與可視化展示
云南化工(2021年8期)2021-12-21 06:37:54
重要模型『一線三等角』
基于CGAL和OpenGL的海底地形三維可視化
重尾非線性自回歸模型自加權M-估計的漸近分布
淺談基于Revit平臺的二次開發
甘肅科技(2020年20期)2020-04-13 00:30:02
“融評”:黨媒評論的可視化創新
傳媒評論(2019年4期)2019-07-13 05:49:14
淺談Mastercam后處理器的二次開發
模具制造(2019年3期)2019-06-06 02:11:02
西門子Easy Screen對倒棱機床界面二次開發
主站蜘蛛池模板: 在线中文字幕日韩| 天堂岛国av无码免费无禁网站| 色综合五月| 综合五月天网| 亚洲成人网在线播放| 亚洲精品制服丝袜二区| 亚洲a级毛片| 日韩小视频在线播放| 欧美伦理一区| 九色在线观看视频| 性色生活片在线观看| 国产69囗曝护士吞精在线视频| 亚洲中文字幕手机在线第一页| 在线色综合| 国产成人精品一区二区秒拍1o| v天堂中文在线| 国产精品美女免费视频大全| 亚洲国产高清精品线久久| 亚洲欧洲免费视频| 久久国产精品77777| 在线观看91香蕉国产免费| 91无码视频在线观看| 伊人久久福利中文字幕| 美女潮喷出白浆在线观看视频| 99热免费在线| 国产在线一二三区| jizz在线观看| 亚洲国产成人超福利久久精品| 91福利国产成人精品导航| 国产精品国产三级国产专业不| 毛片网站在线看| 中文字幕乱码二三区免费| 国产成人毛片| 超薄丝袜足j国产在线视频| 亚洲高清在线播放| 亚洲AV无码久久天堂| 少妇高潮惨叫久久久久久| 亚洲区第一页| 国产大片黄在线观看| 97国产在线观看| 日韩高清欧美| 女高中生自慰污污网站| 少妇精品网站| 色综合狠狠操| 亚洲日韩AV无码一区二区三区人 | 亚洲天堂视频网| 久久久久无码国产精品不卡| 日韩美一区二区| 亚洲最黄视频| 最新痴汉在线无码AV| 国产亚洲美日韩AV中文字幕无码成人| 91麻豆国产视频| 亚洲AV电影不卡在线观看| 亚洲天天更新| 2021天堂在线亚洲精品专区| 最新无码专区超级碰碰碰| 国产在线一二三区| 亚洲国产精品VA在线看黑人| 69av在线| 91最新精品视频发布页| 日韩免费成人| 免费国产无遮挡又黄又爽| 狠狠色狠狠综合久久| 欧美日本二区| 亚洲天堂久久| 国产精品久线在线观看| 视频二区亚洲精品| 黄色在线不卡| 真人免费一级毛片一区二区| 国产无码在线调教| 少妇高潮惨叫久久久久久| 日韩欧美高清视频| 午夜福利在线观看成人| 久操线在视频在线观看| 国产黑丝视频在线观看| 国产日韩丝袜一二三区| 自慰高潮喷白浆在线观看| jizz国产在线| 欧美日韩专区| 色偷偷综合网| 高清国产va日韩亚洲免费午夜电影| 国产青榴视频|