Revit API如何使外部命令异步运行?

时间:2018-09-04 08:27:05

标签: multithreading asynchronous revit-api revit

我有一个外部命令来创建大约40个(甚至更多个)通用模型  在Revit中。我想让Revit异步运行命令,以根据以下流程加快处理速度:

加载命令->运行命令->加载族-> 异步生成族实例->结束命令。

我已经阅读了一些关于回合进行无模式对话的想法,但这不是我所需要的。我该怎么办?

3 个答案:

答案 0 :(得分:3)

Meiki是完全正确的。 Revit API只能在有效的Revit API上下文中使用,并且此类上下文仅由Revit事件提供。但是,您可以实现一个外部事件,并从外部触发该事件以获得对有效Revit API上下文的访问。在Idling and External Events for Modeless Access and Driving Revit from Outside主题组中,The Building Coder提供了许多解决方案,对此进行了详细讨论。

另一种方法可能是利用DocumentOpened Event。您可以使用它来触发所需的执行流程。

第三个但不受支持的方法可能是使用日志文件,例如IFC Import and Conversion Journal Script

我将开始阅读主题组中列出的众多解决方案,并且可能最终会利用外部事件。

祝你好运,玩得开心!

答案 1 :(得分:2)

由于事务,您不能异步运行外部命令来创建(或修改)某些内容,请记住Revit不支持Async方法或方法。您能描述一下您将要做什么吗?也许还有另一种方法。

答案 2 :(得分:0)

根据文档:

  

Autodesk Revit API仅支持单线程访问。这意味着您的API应用程序必须在主线程中执行所有Autodesk Revit API调用(由Autodesk Revit进程在各个API入口点调用),并且您的API应用程序无法维护其他线程中的操作并且希望它们能够随时致电Autodesk Revit。

但是,我相信您可以创建一个外部API并从命令中使用它。