Autodesk.Revit.UI.IExternalCommandAvailability接口定义了Revit中外部命令的可用性检查。
此接口的实现确定外部命令是否在当前上下文中可用。如果实现方法返回false,则外部命令对用户不可见。实现此接口的类的实例必须返回true以允许外部命令在Revit中运行。
Autodesk.Revit.UI.IExternalCommandAvailability接口中包含一个方法:
方法签名如下:
bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories);
该方法确定当前上下文中是否允许执行外部命令。它的两个参数分别是当前应用程序的UIApplication实例和当前选定的构件类别集合。调用此方法时,如果外部命令应该可用,则返回true。如果它不应该可用则返回false。
要实现Autodesk.Revit.UI.IExternalCommandAvailability接口,需要创建一个实现程序集中的类。代码必须实现IsCommandAvailable方法。代码示例如下:
public class MyCommandAvailability : IExternalCommandAvailability
{
public bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories)
{
// Determine if the command should be available here.
// Return true if the command should be available or false if it should not be available.
}
}
在此示例中,MyCommandAvailability类是实现Autodesk.Revit.UI.IExternalCommandAvailability接口的类。它包含一个名为IsCommandAvailable的方法,该方法以UIApplication实例和CategorySet实例作为参数。
实现Autodesk.Revit.UI.IExternalCommandAvailability接口的类应该被谨慎地设计。在实现此接口时,必须仔细考虑命令的可用性,并确保返回正确的值。
此接口的另一个重要注意事项是,如果实现此接口的类的实例被缓存,则在运行Revit实例期间不应将其缓存。这是因为Revit可能会在运行期间多次请求可用性检查,每次使用不同的上下文,例如选择了不同的构件类别。为了避免不一致的结果,每次请求时都应重新创建类的实例。