解決erwin逆向工程,logical不顯示中文問題

我們利用Ca Erwin 生成erwin視圖後,存在logical不能轉成中文的問題,正常我們都logical是中文,physical是英文


利用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')  

最後生成後的效果爲: