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

时间:2015-07-18 12:08:34

标签: revit revit-api revitpythonshell

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

1 个答案:

答案 0 :(得分:8)

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

  • 所有Revit API调用都应发生在“API上下文”
  • 这个“API上下文”存在于一个特殊的线程中
  • 您可能正在从其他线程访问API
  • 当您制作Form并从其中一个事件(Button.OnClick
  • 调用API时,通常会发生这种情况

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

  • 轮询Idling活动
  • 内的作业
  • 使用ExternalEvent

由于您在代码中提到了RevitPythonShell,为什么不查看我如何使用external events in my web server example

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