2016-01-14 72 views
3

我正在嘗試使用Revit API激活視圖。我想要做的就是提示用戶選擇一些牆,但是當用戶被問到時,他不能切換視圖來選擇更多的牆(在這一點上所有東西都是灰色的)。 所以我想要激活的視圖(我的意思是,我希望這個視圖實際顯示在屏幕上)已經存在,我可以訪問它的Id。如何使用Revit API激活(顯示)視圖?

我已經看到有關創建,瀏覽,過濾視圖的線程,但沒有激活它......這是一個平面圖視圖。

到目前爲止,我可以訪問其關聯的ViewPlan對象和關聯的參數(名稱,ID,..)。

可以嗎?

非常感謝!

Arnaud。

+0

我有一個我開發的(使用Dynamo + Python)調用PickObjects()的插件。用戶可以切換視圖。 分享一些代碼,這樣我可以幫助更好。 我的代碼調用ActiveUIDocument並使用我篩選用戶選擇的ISelectionFilter類。 正如下面的答案所述,大多數API使用是「無模式」,您應該避免使API做UI更改(例如切換視圖),因爲控制權已經離開Revit主線程。 –

回答

4

我認爲最好的方式是UIDocument.RequestViewChange()方法。關於這個棘手的部分是,除非你設計你的應用程序是無模式的,沒有外部事件或怠速,否則直到稍後當控制權從你的插件返回到Revit時纔可能發生。 (還有設置UIDocument.ActiveView屬性 - 如果這有不同的約束,則不是正值)。

歷史上我完成它的另一種方式是通過使用UIDocument.ShowElements()命令。這裏的訣竅是,你不能控制確切的視圖 - 但是如果你可以找出只出現在視圖中的元素,通常可以做到這一點(即使你必須做一個單獨的查詢來獲得只有在給定的平面圖視圖中的一堆元素)。

祝你好運!

+0

非常感謝!我想我會用ShowElements()來試試你的方法! – Arnaud