Revit开发IExternal Command Availability的使用

image_print阅读模式

在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 edCategories)

        {

            return true;

        }

    }

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

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

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

      public bool IsCommandAvailable(UIApplication applicationData, CategorySet edCategories)

        {

            UIDocument uidoc = applicationData.ActiveUIDocument;

            if (uidoc.ActiveGraphicalView is ViewPlan)

                return false;

            return true;

        }

————————————————

版权声明:本文为CSDN博主「魏无忌」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/The_Eyes/article/details/78142183

0

评论0

请先
10kV配电线路杆塔结构图CAD全套打包-xycost.com
10kV配电线路杆塔结构图CAD全套打包-xycost.com
8分钟前 有人购买 去瞅瞅看
没有账号?注册  忘记密码?

社交账号快速登录

微信扫一扫关注
扫码关注后会自动登录网站