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

问题描述 投票:0回答:3

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

load command - > run command - > load families - >异步生成族实例 - > end命令。

我已经阅读了一些想法,让一个无模式的对话框可以解决,但这不是我需要的。我怎样才能做到这一点?

multithreading asynchronous revit-api revit
3个回答
3
投票

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

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

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

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

祝好运并玩得开心点!


2
投票

由于事务而无法异步运行外部命令以创建(或修改)某些内容,并且请记住Revit不支持异步方法或方法。你能描述一下你准备做什么吗?也许有另一种方法。


0
投票

根据文件:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.