未打开项目时在Revit Python Shell调用Revit API NewProjectDocument报错如何解决
Revit无已打开项目时调用
NewProjectDocument接口报错的解决方案 该报错的核心原因是默认场景下Revit Python Shell(RPS)的执行上下文绑定到当前活动文档对象,无已打开项目时
ActiveUIDocument为空值,直接调用NewProjectDocument会因上下文缺失触发异常。当存在已打开项目时,上下文有效所以调用正常。
可行解决办法
- 调用应用层(
Application)的NewProjectDocument方法而非UI层(UIApplication)的对应方法
无已打开项目时,Revit应用本身的实例对象始终有效,不需要依赖活动文档即可完成新项目创建,参考代码如下:import clr # 引入Revit API程序集 clr.AddReference('RevitAPI') clr.AddReference('RevitAPIUI') from Autodesk.Revit.DB import * from Autodesk.Revit.UI import * # 获取RPS内置的Revit UI应用实例 uiapp = __revit__ # 提取应用层实例 app = uiapp.Application # 替换为你本地对应Revit版本的项目模板路径 revit_template_path = r"C:\ProgramData\Autodesk\RVT 2024\Templates\Chinese\Architectural-DefaultCHSCHS.rte" # 直接调用应用层方法创建新项目 new_project_doc = app.NewProjectDocument(revit_template_path) - 调整RPS上下文绑定设置
旧版本RPS会强制校验活动文档存在性,可在RPS启动后的设置界面,关闭绑定执行上下文到活动文档选项,执行代码时仅调用应用层接口即可避免报错。 - 新增项目激活逻辑(如需后续UI操作)
如果你创建新项目后需要进行选择元素、调用UI命令等操作,可在创建完成后添加文档激活逻辑:# 保存新建项目到本地路径后激活 save_path = r"D:\Test\new_project.rvt" new_project_doc.SaveAs(save_path) uiapp.OpenAndActivateDocument(save_path)
内容的提问来源于stack exchange,提问作者ftroshani
相关产品推荐
相关产品推荐

