完善主体资料,免费赠送VIP会员!
* 主体类型
* 企业名称
* 信用代码
* 所在行业
* 企业规模
* 所在职位
* 姓名
* 所在行业
* 学历
* 工作性质
请先选择行业
您还可以选择以下福利:
行业福利,领完即止!

下载app免费领取会员

NULL

ad.jpg

二次开发教程:Revit开发IExternalCommandAvailability的使用

发布于:2019-07-24 16:41:07

网友投稿

更多

在Revil里大部分命令在没有打开文档的时候是禁用的,有的在没有打开文档也是可以使用的。


而又一些在平面视图是禁用的如 标高,有的在3D视图里是禁用的 如 标高和轴网,


而这些是否可用我们是可以自己控制的


在PushButton的属性里有一个AvailabilityClassName属性,通过这个就可实现命令在什么时候可用,禁用的控制。


这个属性是个string,它需要设置为一个实现了IExternalCommandAvailability接口的类的全类名




比如这样一个命令,它实现了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;

        }

    }


 那在创建按钮的时候可以这样指定


            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,那这个命名就是任何时候都可以使用。


假设用户有一个命令需要在平面视图里禁用那可以如下实现


      public bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories)

        {

            UIDocument uidoc = applicationData.ActiveUIDocument;

            if (uidoc.ActiveGraphicalView is ViewPlan)

                return false;


            return true;

        }

本文版权归腿腿教学网及原创作者所有,未经授权,谢绝转载。

未标题-1.jpg

上一篇:二次开发教程:MyBatis配置

下一篇:二次开发教程:Revit开发ImageView

60acb4e0ef112.png