如何从 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(我目前使用的)。
我尝试使用 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
我监督了 Python。你可以做到
for elem in reqCollection:
print (elem.name) # for example
适用于 EA 返回的所有 collections(我目前使用的)。