下載app免費領取會員
文章來源:慧航BIM匯
來源:徐振
很多人對Revit軟件可能已經非常熟悉,軟件上上下下各項功能已經滾瓜爛熟了,但是很多人卻一直有一個疑問:軟件管理選項卡中最后兩個按鈕“宏管理器”、“宏安全性”是什么東西,是做什么用的,宏是什么,宏可以做什么?接下來我們將了解Revit中宏的定義與宏的作用,并給出一個案例,展示宏在實際工作中的用處。最后給出一些常用的操作代碼片段。
首先宏可以理解為是一種程序,用戶可以一些將重復性的工作交給計算機自動完成,節省用戶的時間,這些預定義的操作流程是可以自由設計的,并且操作流程是可預見的。當然宏是基于RevitAPI來編寫制作的,使用宏需要通過編寫簡單的代碼,定義操作邏輯和調用RevitAPI的接口,但是一些簡單的操作也是很好實現的,并不需要系統完整的去編寫一個插件,一個軟件。
No.1 如何創建一個宏
點擊“宏管理器”按鈕,彈出宏管理器窗口。窗口中有應用程序選項卡和一個名為PC的選項卡,其中應用程序選項卡中包含的宏是可以在該Revit打開的所有的項目中運行的,是應用程序級別的,而PC選項卡中所包含的宏只能在PC這個項目中運行,它是文檔級別的,如果軟件打開多個項目,那么相應的在宏管理器中也會出現多個選項卡。
(宏管理器)
點擊模塊按鈕,彈出創建新模塊窗口,窗口中輸入模塊名稱(模塊名稱盡量使用英文,命名不規范軟件會提示),語言默認選擇C#即可,說明可根據需求填寫一些提示文字,確定后,軟件將自動打開編輯器,初始狀態下如圖所示,兩側為解決方案中的文件,中間為代碼編寫區域。
(編輯器)
No.2 如何制作一個宏
完成宏的創建后便可開始制作一個簡單的程序,我們在編輯器中找到Module_Startup這個代碼片段,如圖所示,這個可以理解模塊啟動時會運行的一個方法,在花括號里面則是需要運行的代碼。
我們在花括號內部寫入代碼:TaskDialog.Show("Revit","我的第一個宏程序");如圖所示,這句話的含義是彈出一個提示窗口,窗口中的內容是“我的第一個宏程序”。
No.3 如何運行一個宏
我們在代碼片段中寫入了一條執行的語句,然后點擊編輯器中編譯按鈕,即編譯按鈕,編譯完成后程序會自動運行。然后你就會發現Revit軟件中果然彈出一個提示窗口,內容是“我的第一個宏程序”。
(程序運行結果)
需要注意的是,每寫完一個程序,編譯后需關注錯誤欄,如果代碼編寫有誤,那么程序將不會被編譯,也實現不了所寫的內容,如果程序沒有錯誤的話,該窗口中錯誤顯示為0,則代表編譯成功,可以開始運行程序。
(編譯錯誤列表)
當然將程序直接寫在模塊啟動事件中是不實用的,回到宏管理器窗口,會發現創建下面除了創建模塊,還可以創建宏,我們選中剛剛創建的Study模塊,點擊創建宏按鈕,同樣彈出創建窗口,輸入完宏名稱后,會發現Study模塊中多出了一個宏的子目。如下圖所示。
我們回到編輯器,會發現代碼的下面增加了publicvoidtest()方法,并且在宏管理器中選擇子目后,右側運行按鈕居然亮顯了,因此我們可以這樣理解,如果點擊允許了某個子節點,那么接下來就會允許這個子節點所對應的代碼中的方法。大家可以將上面彈出提示框的代碼寫到下面的方法中,點擊運行后,是否會出現同樣的效果。
案例:
接下來我們通過一個實用的案例來更加直觀的學習宏的功能,案例代碼量會更多,但是我會詳細解釋每行代碼的含義,沒有revit開發經驗的也不要擔心,為了簡化,我們只實現功能,盡量減少流程。
案例:給項目模型中所有的墻模型名稱統一增加加前綴
我們的案例就不再新建宏了,寫在直接publicvoidtest()方法中。
首先理一理思路,首先需要獲取到模型中所有的墻的模型,并且通過這些墻獲取到所有的墻類型,最后再統一修改墻類型的類型名稱即可,思路相當簡單。
獲取模型中的所有墻體模型,實現代碼如圖所示,其中第42行是將Revit軟件中正在編輯的模型的文檔數據獲取到并賦值給revitdoc變量,然后在43行是直接調用API將該項目文檔中激活的視圖中的所有模型實例獲取到collects中,最后通過過濾器將所有的Wall類型過濾出來,也就是墻類型。
(得到所有墻實例)
獲取到所有的墻類型,以上我們只是獲取到墻的實例,接下來則是通過這些取到所有的墻類型,如圖所示。其中wallTypes是一個數組,可理解為是用來臨時存放所有墻類型的,WallType是墻類型的類名稱,foreach是一個循環語句,即依次遍歷所有的墻實例,然后將墻實例的墻類型獲取下來。第56行是判斷語句,判斷數組中是否已存在此時遍歷到的族實例的類型,如果已經存在,那么直接continue跳過,如果不存在那么就通過List數組的Add方法添加一項。
(提取所有墻類型)
修改族類型,RevitAPI中要求所有對模型文檔的做出修改的操作均需放置在事務中,圖中65行出定義了一個事務,然后在操作前啟動了事務,運行完成后通過Commit()方法隨即關閉了事務,第72行則是具體修改墻前綴的代碼,通過遍歷數組中每個墻類型,為每個墻類型名稱前面增加了”1F”這個字符串。當然最好的方式是彈出一個輸入框,輸入具體前綴的值,該案例為簡化流程則直接在代碼中定義前綴名稱。
(修改前綴)
如下圖所示為案例的所有代碼:
(增加前綴墻)
(完整實現代碼)
常用操作代碼片段:
總結:
合理的使用宏程序,積累一些常用的程序功能有助于提高工作效率的,宏的使用難度相對于Revit是簡單的,因為用宏實現的操作也是相對簡單的,當然也可以實現像插件一樣的復雜完整的程序。對于初學者來說,難點主要在于對調用RevitAPI不是特別熟悉。
Revit中文網作為國內知名BIM軟件培訓交流平臺,幾十萬Revit軟件愛好者和你一起學習Revit,不僅僅為廣大用戶提供相關BIM軟件下載與相關行業資訊,同時也有部分網絡培訓與在線培訓,歡迎廣大用戶咨詢。
網校包含各類BIM課程320余套,各類學習資源270余種,是目前國內BIM類網校中課程最有深度、涵蓋性最廣、資源最為齊全的網校。網校課程包含Revit、Dynamo、Lumion、Navisworks、Civil 3D等幾十種BIM相關軟件的教學課程,專業涵蓋土建、機電、裝飾、市政、后期、開發等多個領域。
需要更多BIM考試教程或BIM視頻教程,可以咨詢客服獲得更多免費Revit教學視頻。
本文版權歸腿腿教學網及原創作者所有,未經授權,謝絕轉載。
上一篇:Revit技巧 | revit畫水管步驟:revit中管道繪制的前提工作
下一篇:Revit技巧 | revit套管明細表怎么做?管綜易套管使用技巧(四)套管洞口如何統計
推薦專題