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