在 Dynamo for Revit 中,可以使用 Python 脚本来执行 .dyn
文件(Dynamo 工作空间)。Dynamo 的 Python 脚本节点可以用来编写和执行 Dynamo 工作流,但直接从 Python 启动 .dyn
文件的方式需要依赖 Revit API 和 Dynamo Core 的一些调用。
Dynamo 自带了 Python 节点用于在 Dynamo 工作流中运行 Python 脚本,但如果你希望通过 Python 从外部加载并执行 .dyn
文件,你需要一些特殊的步骤。
以下是如何通过 Dynamo API 和 Python 在 Revit 中加载并运行 .dyn
文件的大致思路:
方法一:通过 Revit API 和 Dynamo 的 WorkspaceModel
加载并运行 .dyn
import clr
# 导入Dynamo核心库和Revit的API
clr.AddReference('RevitServices')
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
clr.AddReference('DynamoRevitDS')
clr.AddReference('DynamoCore')
clr.AddReference('DynamoServices')
from Dynamo.Graph.Workspaces import WorkspaceModel
from Dynamo.Models import DynamoModel
from Dynamo.Applications import StartupUtils
# Dynamo FilePath和Core的设置
dyn_file_path = r"C:\path\to\your\dynamo_file.dyn"
# 获取当前的Revit文档
doc = DocumentManager.Instance.CurrentDBDocument
# Dynamo核心模型
dynamo_model = DynamoModel.Start(DynamoModel.StartConfiguration())
# 载入并运行dyn文件
TransactionManager.Instance.EnsureInTransaction(doc)
try:
workspace = dynamo_model.OpenWorkspace(dyn_file_path)
dynamo_model.RunExpression(workspace)
except Exception as e:
print(f"Error: {e}")
finally:
TransactionManager.Instance.TransactionTaskDone()
方法二:通过 Dynamo CLI 来执行 .dyn
文件
Dynamo 提供了命令行界面 (CLI) 来执行 .dyn
文件。如果希望通过 Python 启动 Dynamo CLI 来运行 .dyn
文件,可以通过 subprocess
调用外部命令的方式。
- 确保安装了 Dynamo CLI。
- 使用
subprocess
调用 Dynamo CLI 来运行.dyn
文件。
import subprocess
# 设置DynamoCLI路径和dyn文件路径
dynamo_cli_path = r"C:\path\to\dynamoCLI.exe"
dyn_file_path = r"C:\path\to\your\dynamo_file.dyn"
# 通过subprocess调用Dynamo CLI来执行dyn文件
subprocess.run([dynamo_cli_path, '-o', dyn_file_path])
关键步骤说明:
-
Dynamo 环境配置:在 Revit 中使用 Dynamo 时,Dynamo 是作为插件嵌入到 Revit 的环境中运行的。我们需要使用 Revit 的 Dynamo API 来加载并运行 Dynamo 工作空间(
.dyn
文件)。 -
加载
.dyn
文件:通过 Dynamo API,使用OpenWorkspace
来加载.dyn
文件。 -
运行
.dyn
文件:使用RunExpression
函数来执行加载的工作空间。 -
Dynamo CLI:如果不想通过 Revit 环境,Dynamo 提供了一个命令行工具来执行 Dynamo 工作流,可以在外部通过 Python 调用 Dynamo CLI 来启动并执行
.dyn
文件。
注意事项:
- 这种方法通常需要 Revit 环境来支持 Dynamo 的执行。
- 需要确保安装了合适版本的 Dynamo 和 Revit,并且 Python 环境可以访问 Revit 和 Dynamo 的 API。