下載app免費領取會員
在Revil里大部分命令在沒有打開文檔的時候是禁用的,有的在沒有打開文檔也是可以使用的。
而又一些在平面視圖是禁用的如 標高,有的在3D視圖里是禁用的 如 標高和軸網,
而這些是否可用我們是可以自己控制的
在PushButton的屬性里有一個AvailabilityClassName屬性,通過這個就可實現(xiàn)命令在什么時候可用,禁用的控制。
這個屬性是個string,它需要設置為一個實現(xiàn)了IExternalCommandAvailability接口的類的全類名
比如這樣一個命令,它實現(xiàn)了IExternalCommand,IExternalCommandAvailability這兩個接口
public class ExternalCommandAvailability : IExternalCommand,IExternalCommandAvailability
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
TaskDialog.Show("test", "test ok");
return Result.Succeeded;
}
public bool IsCommandAvailable(UIApplication applicationData, CategorySet edCategories)
{
return true;
}
}
那在創(chuàng)建按鈕的時候可以這樣指定
application.RibbonTab(tabName);
RibbonPanel panel = application.RibbonPanel(tabName, panelName);
PushButtonData btnData = new PushButtonData("testcmd", "cmd", this.GetType().Assembly.Location, "RevitApiTest.TestCommand");
PushButton btn =(PushButton)panel.AddItem(btnData);
btn.AvailabilityClassName = "RevitApiTest.TestCommand";
如果在IsCommandAvailable里直接返回true,那這個命名就是任何時候都可以使用。
假設用戶有一個命令需要在平面視圖里禁用那可以如下實現(xiàn)
public bool IsCommandAvailable(UIApplication applicationData, CategorySet edCategories)
{
UIDocument uidoc = applicationData.ActiveUIDocument;
if (uidoc.ActiveGraphicalView is ViewPlan)
return false;
return true;
}
————————————————
版權聲明:本文為CSDN博主「魏無忌」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權協(xié)議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/The_Eyes/article/details/78142183
本文版權歸腿腿教學網及原創(chuàng)作者所有,未經授權,謝絕轉載。