国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Revit的排水溝快速建模插件開發(fā)

2021-12-08 06:13湖北理工學院土木建筑工程學院北京橄欖山軟件有限公司
智能建筑與智慧城市 2021年11期
關鍵詞:排水溝視圖實例

(1.湖北理工學院土木建筑工程學院;2.北京橄欖山軟件有限公司)

謝星星1,羅顯楓1,葉雄進2

1 引言

建筑信息模型簡稱BIM(Building Information Modeling),是一款先進的三維數字設計解決方案,應用在房屋建筑工程、結構、機電等領域,利用數字信息在三維平臺模擬建筑物的真實信息。BIM 技術有五大特點:可視化、協(xié)調性、模擬性、可出圖性、優(yōu)化性[1]。

雖然BIM技術給我們帶來了便利,但是依然有許多不便的地方,例如,在水利、交通等方面就存在諸多不便,需要工程師在Revit平臺進行二次開發(fā)。

2 Revit API的介紹

Autodesk Revit 不僅功能強大,而且還提供了應用程序接口API(Application Programming Interface)。軟件工程師可以通過調用API 對Revit 應用程序進行操作和使用,將繁瑣、重復的工作自動化[2]。

VB.NET、C++、C#等語言可以調用Revit API 進行BIM 軟件開發(fā)。利用Revit API進行二次開發(fā)的優(yōu)點:直接讀取模型的幾何參數;直接創(chuàng)建、修改、刪除圖元等操作。

3 開發(fā)環(huán)境配置

3.1 新建一個項目

在Visual Studio 里選擇項目類型并創(chuàng)造新的類庫,指定對應的命名空間和存儲位置,單擊ok即可。

3.2 添加相應的引用

在Revit的安裝程序中找到RevitAPI.dll和RevitAPIUI.dll文件,為減少成本,可將兩個文件的復制本地文件屬性改成false(見圖1)[3]。

圖1 開發(fā)流程

3.3 編寫代碼

在編寫代碼前需要引用相應的命名空間,根據需求判斷是實現IExternalApplication,還是IExternalCommand接口,同時,實現相應函數。

下列代碼是一個簡單的程序:

3.4 添 加AddInManager 和Revit-Lookup

AddInManager 的作用是在指定路徑加載腳本文件到Revit 平臺中運行,便于使用和調試,RevitLookup 的作用是查看元素的各個信息,便于查看和使用API。

將兩個文件的addin 文件和dll 文件放到指定文件夾中,將addin 文件中的路徑改為當前文件下AddInManager.dll文件路徑,保存關閉即可。圖2 是打開Revit后添加成功的效果。

圖2 添加成功后的Revit界面

4 排水溝快速建模開發(fā)

本節(jié)將利用前述配置的Revit開發(fā)環(huán)境進行排水溝快速建模的開發(fā)。

4.1 手動做族

排水溝在建筑物室外和停車場內部隨處可見,能有效解決城市的內澇問題,也能解決人們生活用水的正常排放處理。排水溝分為暗溝和明溝(見圖3)。左側是帶蓋排水溝,右側是無蓋排水溝。注意:需要勾選加載時剪切。

圖3 族效果圖

4.2 界面設計

如圖4 所示,該設計左側是一個treeview,右側是一個Plane 用來放previewcontrol 控件,設計簡單易懂,避免用戶的消極情緒。當用戶選擇了族類別時,右側的previewcontrol 就顯示該類型的截面形狀,讓用戶修改。

圖4 界面設計

4.3 開發(fā)思路

首先獲取指定文件夾里面的族文件,根據族名字過濾相應的族,例如,族文件名字是否含有“排水溝”。把族的名字和族類型的名字記錄下來,當程序運行時(Form.Loaded),填到treeview 里,部分代碼如下:

用戶點擊族類型時,首先加載族到當前項目中,打開族文檔并且找到族文檔里的剖面1(見圖5),用Dictionary 對象記錄當前族類型里面族參數名稱和ID和值的三者的關系,隨后previewcontrol 顯示這個剖面,該圖支持縮放,支持滑動修改操作。

圖5 加載族剖面圖界面

用戶切換視圖時,需要判斷當前previewcontrol 是否有視圖顯示,如果有,需要把當前顯示的視圖dispose(),隨后在加載其他的視圖,以下是加載和切換視圖的部分代碼:

當用戶點擊注釋的時候,判斷附近是否有參數,如果有,則顯示一個TextBox,如圖6。用戶輸入后回車即可修改族參數,其注冊事件代碼如下:

圖6 點擊事件效果

隨即點擊繪制線的按鈕,窗口關閉,程序調用Revit 自帶的繪制模型線API(PostCommand),在DocumentChanged 事件中獲取當前文檔中變化的元素,最后捕捉鍵盤的Esc 異常錯誤,使程序退出繪制,進入空閑事件,在空閑事件中開啟事務,創(chuàng)建族實例,圖7 就是創(chuàng)建的兩個族實例后的樣子,連接和剪切良好,事件注冊部分代碼如下:

圖7 通過繪制線創(chuàng)建排水溝效果

用戶點擊拾取邊線按鈕創(chuàng)建族實例時,先沿兩條線的中心線創(chuàng)建一條紅色的模型線,用來提示這個地方已經創(chuàng)建了,當選擇的兩條線不平行或者兩條線沒有交集時,應該提示用戶重新選擇(見圖8),創(chuàng)建良好。

圖8 拾取邊線創(chuàng)建族實例效果

5 研究的問題和未來展望

該研究的難點是當用戶切換previewcontrol界面時,要關閉當前還打開的文檔,會觸發(fā)將要打開的族文檔的載入事件,如果用document.close(),會報異常,但是用document.dispose()就切換正常。目前,剪切和連接板互相剪切時,API 會導致板連接進來,這一問題有待解決。

猜你喜歡
排水溝視圖實例
Thalidomide for refractory gastrointestinal bleeding from vascular malformations in patients with significant comorbidities
皇家?guī)旄霰I
5.3 視圖與投影
視圖
Y—20重型運輸機多視圖
SA2型76毫米車載高炮多視圖
動詞“Get”的用法
完形填空Ⅱ
完形填空Ⅰ