下載app免費(fèi)領(lǐng)取會(huì)員
在Revil里大部分命令在沒有打開文檔的時(shí)候是禁用的,有的在沒有打開文檔也是可以使用的。
而又一些在平面視圖是禁用的如 標(biāo)高,有的在3D視圖里是禁用的 如 標(biāo)高和軸網(wǎng),
而這些是否可用我們是可以自己控制的
在PushButton的屬性里有一個(gè)AvailabilityClassName屬性,通過這個(gè)就可實(shí)現(xiàn)命令在什么時(shí)候可用,禁用的控制。
這個(gè)屬性是個(gè)string,它需要設(shè)置為一個(gè)實(shí)現(xiàn)了IExternalCommandAvailability接口的類的全類名
比如這樣一個(gè)命令,它實(shí)現(xiàn)了IExternalCommand,IExternalCommandAvailability這兩個(gè)接口
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)建按鈕的時(shí)候可以這樣指定
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,那這個(gè)命名就是任何時(shí)候都可以使用。
假設(shè)用戶有一個(gè)命令需要在平面視圖里禁用那可以如下實(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)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/The_Eyes/article/details/78142183
本文版權(quán)歸腿腿教學(xué)網(wǎng)及原創(chuàng)作者所有,未經(jīng)授權(quán),謝絕轉(zhuǎn)載。
上一篇:了解Revit的坐標(biāo)系,測(cè)量坐標(biāo)系和項(xiàng)目坐標(biāo)系的區(qū)別
下一篇:Revit怎么添加過濾器?Revit如何設(shè)置分層過濾器
推薦專題