上一講中,我們利用WPF創(chuàng)建簡單的界面,并通過點(diǎn)擊按鈕選擇族,來顯示族的信息,但如果我們想通過點(diǎn)擊按鈕建立事務(wù)實現(xiàn)對Revit文檔的修改,就沒有那么容易了,Revit從2013版之后就不允許在外部窗體下直接開啟事務(wù),這時,我們可以使用模態(tài)窗體阻止線程的運(yùn)行解決此問題,窗體本質(zhì)上就是用戶與程序的交互界面,在窗體上設(shè)置好數(shù)據(jù)然后傳遞給主程序,但如果我們需要頻繁的數(shù)據(jù)交互,模態(tài)窗體顯然是很不方便的,RevitAPI為我們提供了外部事件ExternalEvent的方法,接下來我們使用ExternalEvent實現(xiàn)非模態(tài)窗體命令。
知識點(diǎn)介紹(關(guān)于模態(tài)與非模態(tài)窗體)
模態(tài)與非模態(tài)窗體的主要區(qū)別是窗體顯示的時候是否可以操作其他窗體。模態(tài)窗體不允許操作其他窗體,非模態(tài)窗體可以操作其他窗體。
呈上代碼
首先創(chuàng)建一個新類并繼承IExternalEventHandler
注冊一個通用外部事件可直接在窗體中使用事務(wù)
編寫代碼如下:
Class1類中修改代碼如下:
窗體代碼:
添加字段如下
添加構(gòu)造函數(shù)重載
調(diào)用外部事件方法并建立事務(wù)
將之前創(chuàng)建基于標(biāo)高實例的代碼移動到點(diǎn)擊按鈕的事件下
窗體界面如圖
運(yùn)行結(jié)果:
點(diǎn)擊創(chuàng)建族實例按鈕
Revit中會出現(xiàn)通過點(diǎn)擊按鈕創(chuàng)建的樹的實例
小編有話說
到目前為止,我們的第一個Revit二次開發(fā) 小案例就完成了,在案例中介紹了Revit二次開發(fā)很基本也非常重要的知識,其中第一講介紹了創(chuàng)建族實例的方法,第二講介紹了修改族參數(shù)與創(chuàng)建基于標(biāo)高族實例的方法,第三講介紹了WPF的基本知識,并通過實現(xiàn)了通過選擇元素,在界面顯示元素信息的功能,第四講介紹了建立外部事件來實現(xiàn)在外部窗體下開啟事務(wù)修改Revit文檔。
本次小案例旨在能夠激發(fā)大家對Revit二次開發(fā)的興趣,幫助大家快速熟悉二次開發(fā)的過程。
艾三維學(xué)院最近剛完成一個五星酒店精裝修項目,部分公共區(qū)域需要出精裝修深化圖紙,現(xiàn)在與大家交流Revit導(dǎo)出DWG格式的操作步驟。
小艾看看周圍同事用著的Revit2019,再看看自己用著的Revit2017, 不禁感慨,真是吃那啥都沒趕上熱乎的。終于,小艾了解到一些Revit2020的信息廢話不多說直接上干貨,改進(jìn)電氣部分的箭頭和刻度線