不允许从在 API 上下文之外运行的外部应用程序启动事务。无法开始交易。
问问题
4336 次
1 回答
9
使用我的魔法水晶球来猜测您是在询问如何避免在您的 Revit / RPS 插件中收到此错误消息,这里有一些额外的信息:
- 所有 Revit API 调用都应该发生在“API 上下文”中
- 这个“API 上下文”存在于一个特殊的线程中
- 您可能正在从另一个线程访问 API
- 当您
Form
从其中一个事件 (Button.OnClick
)中调用 API 时,通常会发生这种情况
你想要做的是弄清楚如何回到 API 上下文来执行你的代码。有两种主要方法可以做到这一点(假设您已经离开了IExternalCommand.Execute
上下文):
- 轮询
Idling
活动内的工作 - 使用
ExternalEvent
既然您在标签中提到了 RevitPythonShell,为什么不看看我在我的 Web 服务器示例中是如何使用外部事件的。
- 创建一个
IExternalEventHandler
- 实现它的
Execute
方法 - (该
Execute
方法在 Revit API 上下文中运行) - 创建一个
ExternalEvent
(使用刚刚创建的事件处理程序) - 当您需要在 Revit API 上下文中执行某些操作时,通知外部事件 (
my_external_event.Raise()
)
于 2015-07-20T07:35:00.713 回答