Revit创建默认rebar bar type时报错Attempt to modify the model outside of transaction原因咨询
Revit 报错「Attempt to modify the model outside of transaction」解释说明
报错根本原因
Attempt to modify the model outside of transaction
- Revit API 对所有模型修改操作有强制事务约束:所有会变更模型数据的操作,包括创建、编辑、删除族类型、构件、参数等,都必须包裹在生效的事务(Transaction) 范围内执行,未启动事务就直接执行模型修改操作会直接触发该报错。
- 创建默认钢筋类型(Rebar Bar Type)属于明确的模型修改行为,该操作本质是向项目族库中新增可复用的带参数族类型,不受任何无需事务的例外规则覆盖。
标准修复逻辑
- 执行创建钢筋类型的操作前,先基于当前项目的 Document 实例创建 Transaction 对象
- 调用
Transaction.Start()方法启动事务 - 执行钢筋类型创建的相关逻辑
- 操作执行无异常时调用
Transaction.Commit()提交事务,修改正式写入模型 - 操作执行出现异常时调用
Transaction.RollBack()回滚事务,避免产生脏数据
代码示例(C#)
// doc 为当前激活项目的 Document 实例 using (Transaction newRebarTypeTrans = new Transaction(doc, "创建默认钢筋类型")) { newRebarTypeTrans.Start(); // 此处插入 Rebar Bar Type 初始化、参数赋值、注册到项目的相关代码 newRebarTypeTrans.Commit(); }
内容的提问来源于stack exchange,提问作者Diego Pham
相关产品推荐
相关产品推荐

