【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
的文档。
一些可能的应用场景
改变视图可见性后
分类:
Revit .NET二次开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~