0

不允许从在 API 上下文之外运行的外部应用程序启动事务。无法开始交易。

4

1 回答 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 回答