解决erwin逆向工程,logical不显示中文问题

我们利用Ca Erwin 生成erwin视图后,存在logical不能转成中文的问题,正常我们都logical是中文,physical是英文

解决erwin逆向工程,logical不显示中文问题_第1张图片

利用python解决

所需工具下载:点击打开链接 https://download.csdn.net/my

安装python-2.7.13.msi 、python-2.7.13.msi 这两个python文件,安装后需要配置环境,跟java差不多(自行百度)

然后执行以下代码,以下代码转自robot_sql ,进行微调,在win10可用

 
  
  1. #!/usr/bin/python  
  2. # -*- coding: UTF8-*-  
  3. # robot_lei  
  4. import win32com.client  
  5. import re  
  6.   
  7.   
  8. # 创建COM对象  
  9. scapi = win32com.client.Dispatch('AllFusionERwin.SCAPI')  
  10. # conn=win32com.client.Dispatch('ADODB.Connection')  
  11. # 建立与持久装置中模型的连接  
  12. # 源文件  
  13. filename = "C:\\MGDB_MODEL.erwin"  
  14. # 目标文件  
  15. newfilename = "C:\\MGDB_MODEL1.erwin"  
  16. scPUnit = scapi.PersistenceUnits.Add(filename, "RDO=yes")  
  17. # 建立存取内存中模型数据的连接  
  18. scSession = scapi.Sessions.Add()  
  19. scSession.Open(scPUnit, 00)  
  20. # 事务控制  
  21. scTranId = scSession.BeginTransaction()  
  22. # 获取所有Entity模型对象  
  23. scMObjects = scSession.ModelObjects.Collect(scSession.ModelObjects.Root, 'Entity'1)  
  24. for scObj in scMObjects:  
  25.     # 取Definition属性的值  
  26.     try:  
  27.         scDefineName = scObj.Properties('Definition').Value  
  28.     except Exception as ex:  
  29.         scDefineName = ''  
  30.     try:  
  31.         scName = scObj.Properties('Name').Value  
  32.     except Exception as ex:  
  33.         scName = ''  
  34.     # 对象名赋值  
  35.     # print "His scName is %s" % scName  
  36.     # print "His scDefineName is %s" % scDefineName  
  37.     scObj.Properties('Physical_Name').Value = scName  
  38.     scObj.Properties('Name').Value = scDefineName  
  39.     # 获取该Entity的所有Attribute对象  
  40.     scAttrObjects = scSession.ModelObjects.Collect(scObj, 'Attribute'1)  
  41.     for scAttrObj in scAttrObjects:  
  42.         # scAttrDefineName = scAttrObj.Properties('Definition').Value  
  43.         # scAttrName = scAttrObj.Properties('Name').Value  
  44.         try:  
  45.             scAttrDefineName = scAttrObj.Properties('Definition').Value  
  46.         except Exception as ex:  
  47.             scAttrDefineName = ''  
  48.         try:  
  49.             scAttrName = scAttrObj.Properties('Name').Value  
  50.         except Exception as ex:  
  51.             scAttrName = ''  
  52.         # 对象名赋值  
  53.         scAttrObj.Properties('Physical_Name').Value = scAttrName  
  54.         # 注释可能带有括号之类的 这边做了特殊处理,不要处理的直接注释掉if代码即可  
  55.         if scAttrDefineName != '':  
  56.             scAttrDefineName = scAttrDefineName.replace('(''(')  
  57.             is_find = re.findall(r'\(', scAttrDefineName)  
  58.             if is_find:  
  59.                 scAttrDefineName = re.findall(r'(.*?)\(', scAttrDefineName)  
  60.                 scAttrDefineName = scAttrDefineName[0]  
  61.         scAttrObj.Properties('Name').Value = scAttrDefineName  
  62. scSession.CommitTransaction(scTranId)  
  63. # 另存为一个新的文件  
  64. scPUnit.Save(newfilename, 'OVF=yes')  

最后生成后的效果为:

解决erwin逆向工程,logical不显示中文问题_第2张图片

你可能感兴趣的:(解决erwin逆向工程,logical不显示中文问题)