【Revit二次开发】Document.Regenerate方法(更新Revit文档中所有的图元)
出处
https://www.revitapidocs.com/2015/22468e2c-9772-8478-0816-c9759aa43428.htm
功能
更新Revit文档中的图元以反映所有更改。
注意
使用此方法可以在一组更改后强制更新文档。请注意,当事务被提交时,会自动调用以重新生成文档。
用法
FamilyInstance instance = doc.Create.NewFamilyInstance(new XYZ(15, 20, 0), familySymbol, StructuralType.NonStructural);
FamilyInstance instance2 = doc.Create.NewFamilyInstance(new XYZ(25, 30, 0), familySymbol, StructuralType.NonStructural);
// faster to create multiple instances without calling Regenerate after each one
LocationPoint point = instance.Location as LocationPoint;
// this data is incorrect because the new geometry has not yet been regenerated
doc.Regenerate();
point = instance.Location as LocationPoint;
// now it is correct
异常
Autodesk.Revit.Exceptions RegenerationFailedException
操作失败时抛出:
-
如果重新生成失败,则会发布严重性为DocumentCorruption的错误,该错误将在事务结束时传递给最终用户,解释具体发生了什么。
-
若重新生成失败,说明文档已损坏,甚至读取文档也是非法的。
-
调用重新生成并获得此异常的代码不应捕获并忽略它,相反,它只应进行内部清理,并将控制权返回给当前活动事务/子事务的所有者,这必须中止。
Autodesk.Revit.Exceptions InvalidOperationException
文件修改被禁止。通常,这是因为没有公开的事务;查阅关于Document.IsModified
的文档。