【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的文档。

一些可能的应用场景

改变视图可见性后

https://blog.csdn.net/u011260401/article/details/82562537

posted @ 2024-06-03 12:09  greencode  阅读(40)  评论(0编辑  收藏  举报