using Autodesk.Revit.DB;
using FWindSoft.Revit.Extension;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FWindSoft.Revit.FamilyManager
{
public static class FamilyManagerExtension
{
#region 族加载
///
/// 获取项目中的族
///
///
///
public static List GetFamilys(this Document doc)
{
return doc.GetElements();
}
///
/// 加载族文件ljy
///
///
///
///
public static Family LoadFamilyT(this Document doc, string familyFile)
{
Family family = null;
doc.LoadFamily(familyFile, new FamilyLoadOptions(), out family);
return family;
}
///
/// 加载族文件ljy
///
///
///
///
///
public static Family LoadFamilyT(this Document doc, string familyFile, string familyName)
{
var strFamilyName = string.IsNullOrWhiteSpace(familyName)?Path.GetFileNameWithoutExtension(familyFile):familyName;
Family family = doc.FindFamily(strFamilyName);
if (family == null)
{
family = doc.LoadFamilyT(familyFile);
}
return family;
}
///
/// 加载制定文件的族,加载之前判断族名称是否存在
///
///
///
///
public static Family LoadFamilyCheckName(this Document doc, string familyFile)
{
return doc.LoadFamilyT(familyFile, null);
}
public static Family FindFamily(this Document doc, string familyName)
{
Family family = null;
List listFamily = doc.GetFamilys();
foreach (var f in listFamily)
{
if (f.Name == familyName)
{
family = f;
break;
}
}
return family;
}
#endregion
///
/// 获取指定文件的默认族类型
///
///
///
///
public static FamilySymbol LoadSysmbol(this Document doc,string familyFile)
{
var family = doc.LoadFamilyCheckName(familyFile);
if (family == null)
return null;
return family.GetFamilySymbol();
}
}
}