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

Revit API How to make a external command run asynchrously?

我有一个外部命令可以创建大约 40 个(或更多)通用模型 在 Revit 中。我想使 Revit 运行 异步命令以根据此流程加快进程:

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

我读过一些关于创建无模式对话框的想法,但这不是我需要的。我该怎么做?

您不能 运行 外部命令异步创建(或修改)某些东西,因为交易,请记住 Revit 不支持异步方法或途径。你能描述一下你要做什么吗也许还有另一种方法。

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.

我会先阅读主题组中列出的众多解决方案,最后可能会利用外部事件。

祝你好运,玩得开心!

根据文档:

The Autodesk Revit API supports single threaded access only. This means that your API application must perform all Autodesk Revit API calls in the main thread (which is called by the Autodesk Revit process at various API entry points), and your API application cannot maintain operations in other threads and expect them to be able to make calls to Autodesk Revit at any time.

不过,我相信您可以创建一个外部 API 并通过您的命令使用它。