方法 |
描述 |
bool OnFamilyFound(bool familyInUse, out bool overwriteParameterValues) |
当族实例在目标文档中被找到时,将被触发执行的回 调函数 |
bool OnSharedFamilyFound(Family sharedFamily, bool familyInUse, out FamilySource source, out bool overwriteParameterValues) |
当共享族实例在目标文档中被找到时,将被触发执行 的回调函数 |
class projectFamLoadOption : IFamilyLoadOptions
{
bool IFamilyLoadOptions.OnFamilyFound(bool familyInUse, out bool overwriteParameterValues)
{
overwriteParameterValues = true;
return true;
}
bool IFamilyLoadOptions.OnSharedFamilyFound(Family sharedFamily, bool familyInUse, out FamilySource source, out bool overwriteParameterValues)
{
source = FamilySource.Project;
overwriteParameterValues = true;
return true;
}
};
void EditAndLoadFamilyToDocument(Autodesk.Revit.DB.Document projectDoc, Autodesk.Revit.DB.Document RevitDoc, Element element)
{
// 这里是自定义族实例,比如门,窗,桌子…
FamilyInstance famInst = element as FamilyInstance;
// 编辑族,拿到族文档
Autodesk.Revit.DB.Document familyDoc = projectDoc.EditFamily(famInst.Symbol.Family);
// 在族文档中添加一个新的参数
using (Transaction tran = new Transaction(projectDoc, "Edit family Document."))
{
tran.Start();
string paramName = "MyParam ";
familyDoc.FamilyManager.AddParameter(paramName, BuiltInParameterGroup.PG_TEXT, ParameterType.Text, false);
tran.Commit();
}
// 将这些修改重新载入到工程文档中
Family loadedFamily = familyDoc.LoadFamily(RevitDoc, new projectFamLoadOption());
}
③ 在LoadFamily方法,可以用RevitUIFamilyLoadOptions弹出一个提示框来与用户进行交互。
=========【更多高级应用请关注公众号】========
==================================