不允许从在API上下文之外运行的外部应用程序启动事务

Dhi*_*ake 0 revit revit-api revitpythonshell

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

Dar*_*mas 8

使用我的魔法通灵水晶球猜测你是如何避免在你的Revit/RPS插件中收到此错误信息,这里有一些额外的信息:

  • 所有Revit API调用都应该在"API上下文"中发生
  • 这个"API上下文"存在于一个特殊的线程中
  • 您可能正在从另一个线程访问API
  • 这种情况经常发生在你Form从其中一个事件中调用API时(Button.OnClick)

你想要做的是弄清楚如何回到API上下文来执行你的代码.执行此操作有两种主要方法(假设您已离开IExternalCommand.Execute上下文):

  • 调查Idling活动内的工作
  • 用一个 ExternalEvent

由于您在标签中提到了RevitPythonShell,为什么不查看我在Web服务器示例中如何使用外部事件.

  • 创造一个 IExternalEventHandler
  • 实现其Execute方法
  • (该Execute方法在Revit API上下文中运行)
  • 创建一个ExternalEvent(使用刚刚创建的事件处理程序)
  • 当您需要在Revit API上下文中执行某些操作时,请通知外部事件(my_external_event.Raise())

  • 此外,为了了解更多详细信息,The Building Coder 提供了有关此主题的完整主题组:http://thebuildingcoder.typepad.com/blog/about-the-author.html#5.28 (2认同)