IExternalCommandAvailability的用法

来源:互联网 发布:人力资源管理专业 知乎 编辑:程序博客网 时间:2024/05/24 06:34

        #region 实现IExternalCommandAvailability接口        /// Revit启动时按钮可用,打开文档后不可用        /// <summary>        /// Revit启动时按钮可用,打开文档后不可用        /// </summary>        /// <param name="applicationData"></param>        /// <param name="selectedCategories"></param>        /// <returns>true或false表示按钮是否可用</returns>        public bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories)        {            return ((applicationData.ActiveUIDocument == null) ? true : false);        }         #endregion

最近在做Revit二次开发,遇到需要实现按钮是否可用的问题,查了一些资料发现Revit API中有接口IExternalCommandAvailability全完可以满足我的要求,并且可以根据自己的需要设置,比如,我想有这样一个按钮,Revit启动后不可用,当文档打开后也不可用,只有当某一按钮额可用时他才可用,类似这样的问题,我们就可以通过传参数或其他方法来控制按钮是否可用。比如传来的参数为_isAvailable(表示某一按钮是否可用,用true或false表示),则可以做如下操作:

        #region 实现IExternalCommandAvailability接口        /// Revit启动时按钮不可用,打开文档后不可用,_isAvailable为true时可用        /// <summary>        /// Revit启动时按钮不可用,打开文档后不可用,_isAvailable为true时可用        /// </summary>        /// <param name="applicationData"></param>        /// <param name="selectedCategories"></param>        /// <returns>true或false表示按钮是否可用</returns>        public bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories)        {            return (_isAvailable ? true : false);        }         #endregion
你甚至可以不用考虑文档是否打开,当然也可以加上,哪一种情况满足你的要求你就选择哪一种情况,如:

return ((applicationData.ActiveUIDocument == null) && _isAvailable ? true : false);


原创粉丝点击