using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
namespace Sai.Toolkit.Revit.Helpers;
///
/// 已经打开文档
///
public class HasActiveDocument : IExternalCommandAvailability
{
public bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories) => applicationData.ActiveUIDocument != null;
}
///
/// 命令在平面视图可用
///
public class EnableInViewPlan : IExternalCommandAvailability
{
public bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories)
{
return applicationData.ActiveUIDocument?.Document.ActiveView is ViewPlan
&& applicationData.ActiveUIDocument?.Document.IsFamilyDocument == false;
}
}
///
/// 项目文档可用
///
public class OnProjectDocument : IExternalCommandAvailability
{
public bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories)
{
var doc = applicationData?.ActiveUIDocument?.Document;
if (doc != null) { return !doc.IsFamilyDocument; }
return false;
}
}
///
/// 图纸视图可用
///
internal class EnableInViewSheet : IExternalCommandAvailability
{
public bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories) =>
applicationData.ActiveUIDocument?.Document.ActiveView is ViewSheet && applicationData.ActiveUIDocument?.Document.IsFamilyDocument == false;
}
///
/// 三维视图可用
///
internal class EnableInView3D : IExternalCommandAvailability
{
public bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories) =>
applicationData.ActiveUIDocument?.Document.ActiveView is View3D && applicationData.ActiveUIDocument?.Document.IsFamilyDocument == false;
}
///
/// 命令在剖面、立面可用
///
internal class EnableInViewSection : IExternalCommandAvailability
{
public bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories) =>
applicationData.ActiveUIDocument?.Document.IsFamilyDocument == false && applicationData.ActiveUIDocument.Document.ActiveView is ViewSection;
}
///
/// 族文档可用
///
internal class EnableInFamilyDocument : IExternalCommandAvailability
{
public bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories) =>
applicationData.ActiveUIDocument?.Document.IsFamilyDocument == true;
}