完善主體資料,免費(fèi)贈(zèng)送VIP會(huì)員!
* 主體類型
* 企業(yè)名稱
* 信用代碼
* 所在行業(yè)
* 企業(yè)規(guī)模
* 所在職位
* 姓名
* 所在行業(yè)
* 學(xué)歷
* 工作性質(zhì)
請(qǐng)先選擇行業(yè)
您還可以選擇以下福利:
行業(yè)福利,領(lǐng)完即止!

下載app免費(fèi)領(lǐng)取會(huì)員

NULL

ad.jpg

Revit開(kāi)發(fā)IExternal Command Availability的使用

發(fā)布于:2020-03-27 17:05:51

網(wǎng)友投稿

更多

在Revil里大部分命令在沒(méi)有打開(kāi)文檔的時(shí)候是禁用的,有的在沒(méi)有打開(kāi)文檔也是可以使用的。

而又一些在平面視圖是禁用的如 標(biāo)高,有的在3D視圖里是禁用的 如 標(biāo)高和軸網(wǎng),

而這些是否可用我們是可以自己控制的

在PushButton的屬性里有一個(gè)AvailabilityClassName屬性,通過(guò)這個(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博主「魏無(wú)忌」的原創(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)載。

未標(biāo)題-1.jpg

上一篇:了解Revit的坐標(biāo)系,測(cè)量坐標(biāo)系和項(xiàng)目坐標(biāo)系的區(qū)別

下一篇:Revit怎么添加過(guò)濾器?Revit如何設(shè)置分層過(guò)濾器

60acb4e0ef112.png