如何从 Enterprise Architect 中的 COM 对象获取 Object_Id

How to get the Object_Id from COM Object in Enterprise Architect

我尝试使用 python 在 Enterprise Architect 的元素内容中查找字符串。我逐列阅读 excel 并使用 SQL 查询在 EAP 中搜索字符串。

代码

App = win32com.client.Dispatch(EAId)
for row in range(2,sheet.max_row):
  firstline = sheet['E' + str(row)].value.strip().splitlines()[0]
  reqCollection = App.Repository.GetElementSet("select Object_ID " + " from t_object where t_object.Note like '" + firstline + "*' and t_object.name like 'SRC*'", 2)

if len(reqCollection) > 0:
  print(reqCollection[0])
  #print(reqCollection[0].Object_ID) Error
  #print(reqCollection[0].Name)  Error

我可以从查询中获取元素,但问题是我无法获取对象的 Object_Id 或名称。上面的代码给出了 <COMObject <unknown>> 作为结果。如何从 COMObject 获取对象 ID?

我不认为你可以像那样索引 EA.Collection。

一如既往地阅读文档很有帮助:

您可以使用操作 GetAt(index) 从集合中获取一个项目,或者您可以执行 foreach 来迭代集合中的元素。

另外 EA.Element 没有一个名为 Object_ID 的 属性,那是数据库中列的名称。可以从 属性 ElementID

检索对象 ID

我监督了 Python。你可以做到

for elem in reqCollection:
   print (elem.name) # for example

适用于 EA 返回的所有 collections(我目前使用的)。