Files
ShrlAlgoToolkit/ShrlAlgoToolkit.RevitCore/Extensions/FamilyInstanceExtensions.cs

61 lines
1.8 KiB
C#
Raw Normal View History

2026-02-22 20:03:42 +08:00
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 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;
// }
//}
}