Revit 2016及以上版本调用NewFamilyIntance的时候抛出异常The symbol is not active. Parameter name: symbol.
原因:2016为了提升性能,把没有用到的Symbol就不加载。
这个问题解决办法是,在调用NewFamilyInstance之前,需要先判断FamilySymbol.IsActive,如果返回false的话,就要调用FamilySymbol.Activate(),把这个类型激活。
且要将激活的代码放在事务里面
Transaction trans = new Transaction(doc, "Create");
trans.Start();
if (!symbol.IsActive)
{
symbol.Activate();
}
FamilyInstance column = doc.Create.NewFamilyInstance(p, symbol, btmLevel, StructuralType.NonStructural);
// 提交事务
trans.Commit();