1、在Revit 中,如果需要把一个已存在的族改个名字,那只能把这个族SaveAs后,然后再Load
2、这其中如果使用LoadFamilySymbol时会有时load的不进去。
3、那么这时候需要检查下SaveAs下面是否存在与其他FamilySymbol同名的,如果同名那么载入失败的。这时候需要先LoadFamily。
Family family2 = null;
ToolCommon.LoadFileFamily(FamilyName, ref family2, m_Cmd.Apc.VersionNumber, m_Cmd.Doc);
if (family2 != null)
{
List<FamilySymbol> list = new List<FamilySymbol>();
foreach (var item in family2.GetFamilySymbolIds().ToList())
{
FamilySymbol familySymbol = m_Cmd.Doc.GetElement(item) as FamilySymbol;
if (familySymbol == null) continue;
if (familySymbol.Name.Equals(FamilySymolName))
{
dafFamilySymbol = familySymbol;
break;
}
list.Add(familySymbol);
}
if (dafFamilySymbol == null)
{
dafFamilySymbol = list.FirstOrDefault();
try
{
SysTransaction.TransStart(m_Cmd.Doc, "载入族");
dafFamilySymbol.Family.Name = FamilyName;
dafFamilySymbol.Name = FamilySymolName;
var deleteIds = family.GetFamilySymbolIds().ToList().Where(m => m != dafFamilySymbol.Id).ToList();
m_Cmd.Doc.Delete(deleteIds);
SysTransaction.TransEnd();
}
catch (Exception)
{
SysTransaction.RollBack();
}
}
}