从 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 进程的实例已关闭。
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 进程的实例已关闭。