在 pyrevit 中 运行 一个 python 脚本时是否可以继续在 Revit 中工作?
Is it possible to continue working in Revit while running a python script in pyrevit?
当 运行 Revitpythonshell 或 运行 带有 XAML gui 的 python 脚本时,我无法在 Revit 中工作,直到关闭 Revitpythonshell 或 python gui.
有没有办法避免像这样无法访问 Revit?
我希望我的脚本保持打开状态,以便在我工作时继续使用。
根据您的脚本要执行的操作,您在这里有几个选项:
- pyRevit 有一个 'non-modal' 使 Revit 易于访问的控制台。
- Python
threading
模块可能就是您要找的。当您继续工作时,您可以在后台自动执行许多任务,但有一个重要警告:Revit 是一个单核程序,因此如果您从另一个线程访问数据库/API - Revit 将会崩溃。
- 您可以在线程上启动进程,然后关闭控制台。您的线程将继续 运行 - 您只需使用
winforms
或其他 UI 工具让您知道线程的去向。我用它来自动化需要 30-45 分钟的非数据库任务,同时继续在 Revit 中工作。
- 如果您需要从脚本中继续访问 Revit 数据库/API,我建议您制作一个简单的 UI 并让它与 Revit 中的
ExternalEvent
通信。这是 Cyril Waechter 使用带有 ExternalEvent
的表单的一个很好的例子:
当 运行 Revitpythonshell 或 运行 带有 XAML gui 的 python 脚本时,我无法在 Revit 中工作,直到关闭 Revitpythonshell 或 python gui.
有没有办法避免像这样无法访问 Revit?
我希望我的脚本保持打开状态,以便在我工作时继续使用。
根据您的脚本要执行的操作,您在这里有几个选项:
- pyRevit 有一个 'non-modal' 使 Revit 易于访问的控制台。
- Python
threading
模块可能就是您要找的。当您继续工作时,您可以在后台自动执行许多任务,但有一个重要警告:Revit 是一个单核程序,因此如果您从另一个线程访问数据库/API - Revit 将会崩溃。 - 您可以在线程上启动进程,然后关闭控制台。您的线程将继续 运行 - 您只需使用
winforms
或其他 UI 工具让您知道线程的去向。我用它来自动化需要 30-45 分钟的非数据库任务,同时继续在 Revit 中工作。 - 如果您需要从脚本中继续访问 Revit 数据库/API,我建议您制作一个简单的 UI 并让它与 Revit 中的
ExternalEvent
通信。这是 Cyril Waechter 使用带有ExternalEvent
的表单的一个很好的例子: