下載app免費領(lǐng)取會員
在Revil里大部分命令在沒有打開文檔的時候是禁用的,有的在沒有打開文檔也是可以使用的。
而又一些在平面視圖是禁用的如 標高,有的在3D視圖里是禁用的 如 標高和軸網(wǎng),
而這些是否可用我們是可以自己控制的
在PushButton的屬性里有一個AvailabilityClassName屬性,通過這個就可實現(xiàn)命令在什么時候可用,禁用的控制。
這個屬性是個string,它需要設(shè)置為一個實現(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 selectedCategories)
{
return true;
}
}
那在創(chuàng)建按鈕的時候可以這樣指定
application.CreateRibbonTab(tabName);
RibbonPanel panel = application.CreateRibbonPanel(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,那這個命名就是任何時候都可以使用。
假設(shè)用戶有一個命令需要在平面視圖里禁用那可以如下實現(xiàn)
public bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories)
{
UIDocument uidoc = applicationData.ActiveUIDocument;
if (uidoc.ActiveGraphicalView is ViewPlan)
return false;
return true;
}
————————————————
版權(quán)聲明:本文為CSDN博主「魏無忌」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/The_Eyes/article/details/78142183
本文版權(quán)歸腿腿教學網(wǎng)及原創(chuàng)作者所有,未經(jīng)授權(quán),謝絕轉(zhuǎn)載。
上一篇:了解Revit的坐標系,測量坐標系和項目坐標系的區(qū)別
下一篇:Revit怎么添加過濾器?Revit如何設(shè)置分層過濾器
推薦專題