using System; using System.Collections.Generic; using System.Net; using System.Text; using Autodesk.Revit.DB; namespace ShrlAlgoToolkit.RevitCore.Extensions; internal static class FamilyInstanceExtensions { public static bool IsNested(this Autodesk.Revit.DB.FamilyInstance familyInstance) { return familyInstance.SuperComponent != null; } public static bool CanBeMove(this Autodesk.Revit.DB.FamilyInstance familyInstance) { return !(familyInstance.Symbol.Family.FamilyPlacementType == FamilyPlacementType.WorkPlaneBased && familyInstance.Host == null && familyInstance.HostFace == null); } public static void DeleteEmptyType(this Document famDocument) { if(famDocument == null) { throw new ArgumentNullException(nameof(famDocument)); } if(!famDocument.IsFamilyDocument) { throw new InvalidOperationException("该文档不是族文档"); } var fm = famDocument.FamilyManager; foreach (FamilyType item in fm.Types) { var b = string.IsNullOrWhiteSpace(item.Name); //MessageBox.Show(item.Name); if (b) { fm.CurrentType = item; fm.DeleteCurrentType(); } } } /// /// 是否已连接 /// /// /// public static bool IsConnectToSystem(this FamilyInstance ins) { bool hasConnectToSystem = false; if (ins.Category.CategoryType != CategoryType.Model) { return true; } if (ins.get_BoundingBox(null) != null && ins.MEPModel?.ConnectorManager != null) { var cons = ins.GetConnectors(false); foreach (Connector con in cons) { if (con.Domain != Domain.DomainElectrical && con.Domain != Domain.DomainUndefined) { try { if (con.IsConnected) { hasConnectToSystem = true; } } catch (Exception) { } } } } return hasConnectToSystem; } public static void Rotate(this Autodesk.Revit.DB.FamilyInstance familyInstance, double radian) { var axis = Line.CreateBound(familyInstance.GetTransform().Origin, familyInstance.GetTransform().Origin + XYZ.BasisZ); ElementTransformUtils.RotateElement(familyInstance.Document, familyInstance.Id, axis, radian); } //extension (Autodesk.Revit.DB.FamilyInstance familyInstance) //{ // public bool IsNested() // { // return familyInstance.SuperComponent != null; // } //} }