// 判断是不是柱族模板 [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)] public class cmdCheckFamily : IExternalCommand { bool ValidateDocument(Document rvtDoc) { if (!rvtDoc.IsFamilyDocument) // 判断是不是族文档 { TaskDialog.Show( " Family API ", " This command works only in the family editor. "); return false; } Family ownerFamily = rvtDoc.OwnerFamily; if (ownerFamily == null) // 判断是否使用了族模板 { TaskDialog.Show( " Family API ", " This document does not have Owner Family. "); return false; } // 取得族类别的方法 Category catColumn = rvtDoc.Settings.Categories.get_Item(BuiltInCategory.OST_Columns); if (!ownerFamily.FamilyCategory.Id.Equals(catColumn.Id)) { TaskDialog.Show( " Family API ", " The category of this document does not match the context of this commands. Please open Metric Column.rft "); return false; } return true; } public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements) { UIApplication app = commandData.Application; Document doc = app.ActiveUIDocument.Document; Selection sel = app.ActiveUIDocument.Selection; ValidateDocument(doc); return Result.Succeeded; } }