1、ERWIN API介绍
ERWIN的API叫SCAPI ,全称是Script Client API,是ALLFUSION DM 的一部分,可用于客制化插件开发和第三方工具。
SCAPI的逻辑分层如下:
Application Tier
Model Directory Tier
Session Layer
Model Data Tier
相关文档如下:
ERWIN安装目录下的Doc\ERwin_API_Ref.pdf,里面的介绍很全面,并有用C#和VB操作的相关代码,英文文档。
ERPWIN API 使用指南,中文文档,不过里面的示例代码看着有点乱
2、相关细节
由于导出的模型中的Definition属性中已经有中文名(从数据库中的comment导出的),这里实现只需将对应的Entity和Attribute的名字改为对应的definition中的内容即可。
我是使用的python和pywin32调COM接口来实现的
#创建COM对象 scapi = win32.Dispatch('AllFusionERwin.SCAPI') #建立与持久装置中模型的连接 scPUnit = scapi.PersistenceUnits.Add(filename,"RDO=yes") #建立存取内存中模型数据的连接 scSession = scapi.Sessions.Add() scSession.Open(scPUnit,0,0) #事务控制 scTranId = scSession.BeginTransaction() #获取所有Entity模型对象 scMObjects = scSession.ModelObjects.Collect(scSession.ModelObjects.Root,'Entity',1) for scObj in scMObjects: #取Definition属性的值 scDefineName = scObj.Properties('Definition').Value #对象名赋值 scObj.Properties('Name').Value = scDefineName #获取该Entity的所有Attribute对象 scAttrObjects = scSession.ModelObjects.Collect(scObj,'Attribute',1) #Attribute名的修改与上面类似 ... scSession.CommitTransaction(scTranId) #另存为一个新的文件 scPUnit.Save(newfilename,'OVF=yes')