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; }