从 Python 通过 COM 访问 Enterprise Architect 的特定实例

Accessing a specific instance of Enterprise Architect via COM from Python

EA 的 运行 实例可以从 Python 脚本访问,例如:

from win32com import client
eaApp = client.GetActiveObject("EA.App")
eaRepo = eaApp.Repository

但是,这似乎总是returns实例的COM对象最先启动。

假设我们有一个脚本需要启动一个新的 EA 实例。它通过调用 os.startfile(eapxFile) 来实现,其中 eapxFile 是空 EA 文件的路径。然后它应该导入一些 XMI 文件,为此它需要访问 COM 对象。

同时,EA 的其他几个(较旧的)实例也已打开。如何获取新EA实例的COM对象?

注: 如果可以立即访问其 COM 对象,另一种启动 EA 新实例的方法当然也是可行的。甚至可以直接使用 COM 接口。最重要的是,EA 的其他 运行 个实例无法使用。

在 VBScript 中,您可以使用

在全新的 EA 实例中创建一个 EA.Repository 对象
dim repository
set repository = CreateObject("EA.Repository")

Python 等价物似乎是

from comtypes.client import CreateObject
repository = CreateObject("EA.Repository")

然后使用

打开一个模型
repository.OpenFile(myEapFile)

使用

关闭模型
repository.CloseFile()

其次是

repository.Exit()

确保 ea.exe 进程的实例已关闭。