仿真在线:有限元分析咨询与培训中心——Ansys|Fluent|Abaqus|HFSS|SolidWorks|课程培训

批量CAD圖樣的快速本地化方法

2013-08-09  by:廣州機械cad設計  來源:仿真在線

批量CAD圖樣的快速本地化方法

 

一、引言

隨著經濟全球化的發展,外向型企業越來越多,磁懸浮、C919大型客機等各類國際招投標和國際合作項目也迅速增加,CAD圖樣作為工程師的語言,無論在工廠或項目中無疑都扮演著舉足輕重的作用。一個項目或產品,少則數十張,多則上千張的外文CAD圖樣,要求所有需要用到圖樣的人員都能很好地理解圖樣上的外文文字,顯然是不可能的。那么如何快速準確地進行圖樣本地化,將其翻譯成目標語言,就成了項目實施必須首先解決的問題。

以俄羅斯某石油管道招標工程為例,工程的技術說明共附了3000多個CAD圖樣文件,參與投標的公司要在一周內根據這些圖樣判斷自己是否有能力參與這個工程的投標。然而3000多個CAD文件是一個很龐大的工作量,讓翻譯人員在圖樣中對原有的大量文字進行逐個編輯,效率很低,也很容易出錯,在要求的時間內根本無法完成。

筆者受某翻譯公司的委托,使用VB.NET設計開發了CAD圖樣的快速本地化軟件,自動批量讀取CAD文件中的所有文字,過濾所有重復后通過GOOGLE的自動翻譯API做初步翻譯,然后生成EXCEL對照文件,供翻譯人員進行審核,審核完成后再批量寫回CAD文件。在軟件的幫助下,僅用三天時間就完成整套工程圖樣的翻譯工作,幫助客戶順利完成了投標。本文對實現的思路和方法進行詳細的說明,并給出了關鍵代碼和實際效果的圖示。

二、CAD文字的批量提取

1.獲取所有CAD文件列表

獲取所有文件列表有很多方法,其中遍歷子目錄是最常用的方法,也有很多成熟的算法,但程序比較繁瑣。本文通過調用cmd.exe進程的DIR功能直接獲取文件名列表,簡潔有效。

DimmyProcessAsProcess=NewProcess()

myProcess.StartInfo.Arguments=“cmd.exe/cdir“””&destDirName&fType&“””/a/s/b>”””&

OutFileName&“””&&exit”

myProcess.Start()

myProcess.Close()

2.提取CAD文件字符串信息

獲取了所有CAD文件的全路徑名之后,就可以通過逐個讀取CAD文檔的方法,抽取CAD的字符串內容。可以使用最常用的ActiveX方法連接VB.NET和AutoCAD,然后讀取AutoCAD的文檔。

AutoCAD文檔結構并不復雜,主要分為應用程序Application、當前文檔ThisDrawing、模型空間ModelSpace和具體圖元Entities這幾個層次。文字信息一般就包含在AcadText和AcadMtext兩類實體中,有些特殊情況下也會使用圖塊的屬性來保存文字信息。

在具體的應用中,要有效地抽取所需要的文字信息,并按照正常的閱讀順序組織起來,并不是簡單地遍歷模型空間就可以實現,主要需要考慮以下幾個方面的問題。

實際工程圖樣中大量應用圖塊,而圖塊中文本是不會被識別為文本實體的。如果只遍歷文本實體來獲取字符串,會造成大量數據丟失。

AutoCAD中的圖塊,在整個文檔的數據組織中扮演中重要的作用。最基本的模型空間和圖樣空間,都是作為圖塊來工作的,其塊名以“_space”結尾。這樣問題就有了解決的方法:首先在圖塊集合中判斷,哪些塊在圖樣空間和模型空間中進行了引用;然后在實際進行引用的圖塊中,通過遞歸調用的方法,讀取圖塊中的所有文本。關鍵代碼如下:

ForBlockI=0ToThisDrawing.Blocks.Count-1

‘只判斷在圖樣空間和模型空間中進行引用的塊名,跳過其他塊

IfInStr(1,LCase(ThisDrawing.Blocks.Item(BlockI).Name),"_space")=0Then

GoTonextBlockI1

EndIf

記錄在SPACE中直接使用的塊名

ForEachobjInThisDrawing.Blocks.Item(BlockI)

Ifobj.ObjectName="AcDbBlockReference"Then

If(proNoVisible=FalseAndLayers(obj.Layer).Freeze

=False)OrproNoVisible=TrueThen

'記錄塊名,然后再進行操作AddtoBlockListobj.NameEndIf

EndIf

Nextobj

nextBlockI1:NextBlockI

AutoCAD的數據庫中,文本信息的存儲次序和文本閱讀次序是完全不同的,如果不加任何處理地把字符串讀取出來,呈現在文字處理人員面前的,只能是難以理解甚至毫無意義的文字羅列。

實際工程應用的圖樣上,會有大量的文本信息以不同格式分散在圖樣的各處。這些信息,在有圖、線配合時,不會造成閱讀上的歧義。而從CAD圖形文檔中挖掘出來的純文本的信息,組織過程中就必須考慮到如何消除歧義,便于閱讀。由于在圖樣的實際繪制過程中,不同的繪圖人員會有不同的排版、斷句習慣,所以要解決各種情況下的數據識別和組織問題,主要通過規則庫(固有規則+自定規則)的方法來實現。

對于一些常見的數據塊形式,如表格、技術說明等,可以通過固有規則進行識別。主要的識別依據是通過字體、字高、字符間距、指定區域內文字數目、文本間是否有間隔線等信息進行相鄰句判斷。

對于一些不常見的數據形式,如用單字表達并且字符間距很大的詞語,異常斷句等,允許用戶通過設定自定義規則進行過濾。

經過雙重規則的過濾之后,由于圖樣數據的復雜性,仍然可能會有部分孤立數據無法識別,這部分只能標注之后通過人工的方式進行特別處理。有了完善的規則庫,需要人工干預部分的比例,是很低的。

規則過濾前后的文本數據對比示意。

處理后字符串列表中,斷句的后續部分將自動合并到首字符串,并以##標記,為后續數據寫回CAD提供依據。

AutoCAD中大量使用轉義字符,如小語種(非英語)字符全部是用UNICODE代碼來表示的,這部分也需要進行轉換操作才有可讀性。

AutoCAD的文本數據中,使用了轉義字符的,均用“\U+”開頭,UNICODE和ASCⅡ有固定的對應關系,所以通過數據庫查表的方式,替換對應字符串即可實現。圖2是俄語字符串的轉換實際效果示意。

三、翻譯模塊

文本數據從CAD文檔中抽取后,可以人工進行翻譯,也可以調用GOOGLE、BING等自動翻譯API進行。人工翻譯比較準確,但成本較高,自動翻譯比較快速,但質量相對較低。本文采用的是GOOGLE的自動翻譯API接口。GOOGLE在技術文字的翻譯這塊已經取得了巨大的進展,雖然翻譯的質量還達不到人工翻譯的要求,但是可以滿足基本的閱讀需要,而且在專業術語翻譯部分,由于有GOOGLE海量數據庫的支持,正確率較高。GOOGLE的自動翻譯接口需要FRAMEWORK3.5的支持。

具體實現的代碼很簡潔:

‘引用GoogleTranslateAPI;

sourceLan=Google.API.Language.ChineseSimplified

‘設定源語言類別

targetLan=Google.API.Language.English‘設定目標語言類別

SearchByEnginee=Translator.Translate(temps,sourceLan,targetLan)‘調用translate函數實現自動翻譯,返回的字符串,就是自動翻譯的結果。

自動翻譯的結果在人工校核之后,再寫回CAD,以提高翻譯的準確性。

四、文字的寫回

翻譯后文本信息的寫回,可以用查表的方法替換CAD中的文字,也可以將翻譯完成的文字,采用讀取文字完全相同的次序寫入CAD。本文采取的是后一種方法,即根據所提取字符串的次序,產生目的語言字符串列表,然后直接將所得的字符串列表逐個寫入原CAD文檔中。

在文字的排版上,按照以下規則確定:字高根據原文字高決定,長寬比則根據原有文字的寬度來決定,可以選擇雙語混排或直接替換為目的語言。文字統一放入新層中便于管理。主要代碼如下:

‘添加層,設置層的屬性ThisDrawing.Layers.Add“test”

ThisDrawing.TextStyles.Add“ew”

ThisDrawing.TextStyles(ThisDrawing.TextStyles.Count-1).SetFont“宋體”,False,False,134,2

IfTrim(curS)<>“##”Then

SettempTxt=ThisDrawing.Blocks.Item(BlockI).AddText(curS,newPoint,obj.Height)

tempTxt.Rotation=obj.Rotation

OriJd=tempTxt.RotationtempTxt.Alignment=acAlignmentFittempTxt.TextAlignmentPoint=b

EndIf

tempTxt.Layer=“test”tempTxt.StyleName=“ew”ThisDrawing.Save‘保存文檔。


開放分享:優質有限元技術文章,助你自學成才

相關標簽搜索:批量CAD圖樣的快速本地化方法 批量CAD圖樣的快速本地化方法 AutoCAD培訓 AutoCAD培訓課程 AutoCAD圖紙設計 AutoCAD在線視頻 AutoCAD技術學習教程 AutoCAD軟件教程 AutoCAD資料下載 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓 Abaqus培訓 

編輯
在線報名:
  • 客服在線請直接聯系我們的客服,您也可以通過下面的方式進行在線報名,我們會及時給您回復電話,謝謝!
驗證碼

全國服務熱線

1358-032-9919

廣州公司:
廣州市環市中路306號金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓QQ咨詢:點擊咨詢 點擊咨詢
項目QQ咨詢:點擊咨詢
email:kf@1cae.com




主站蜘蛛池模板: 郑州编织袋厂_郑州塑料编织袋_河南塑料编织袋厂-河南宏旺塑料编织袋厂家 | 上海外资代理记账|上海软银财务咨询有限公司 | 名嘉宴会【官网】_宁波冷餐_宁波茶歇_宁波酒会_宁波自助餐_宁波盛世名嘉宴会服务有限公司 | 首页--南京俊全科技有限公司,环保监测无人机,大疆无人机,农用无人机,植保无人机,巡检无人机,无人机环境监测仪,消防,无人机,航拍测绘,固定翼无人机,无人机电力巡检,四旋翼无人机 | 江西省屹诚建筑装饰工程有限公司 | 上海慧泰仪器制造有限公司| 儒亚科技_磁悬浮天平,竞争吸附,高压热重,重量法高压,高压密度 | 商易网-b2b电子商务平台网站大全免费B2B发布供求信息网站 | 鲁氏罗茨风机-三叶罗茨鼓风机厂家-沉水式鼓风机-[瑞柘环保] | 上海物业管理_写字楼物业管理_厂房物业管理_上海企福物业管理有限公司 | 校服定做厂家-屹奥校服-无限能量·校园绽放 | 无线对讲系统-海能达对讲机-广州中达慧通科技有限公司 | 徐州恒铭机械设备有限公司_装载机配件_压路机配件_起重机配件_挖掘机配件_配件_徐州恒铭机械设备有限公司 | 秦皇岛图成玻璃_横切机,琴键落板,堆垛机械手,玻璃钢化设备,掰边机,铺纸机,水平堆垛机+超大板堆垛机,纵掰纵分,下片机,冷端优化切割 | 装修工程-钢结构工程-环氧地坪漆-东莞市远鸣装饰工程有限公司 | 联系我们果博福布斯公司客服电话17787888880[河南河北区] | 石英砂|无烟煤滤料|火山岩|聚合硫酸铁|活性炭-河南碧水清源水处理材料有限公司 | 文学素材,好词好句,正能量句子,百科知识-素文网 | 深圳汽车贴膜_深圳全车车身改色贴膜|UPPF隐形车衣官网 | 武汉净化机-武汉全热新风换气机-武汉静音送风机-武汉东信新风节能设备有限公司 | 蒸汽流量计_涡轮流量计_涡街流量计_雷达液位计_污水流量计_分体式_大口径工业流量计-江苏长顺仪表 | 中国(北京)国际园林绿化设备展览会 | 无人叉车|智能无人叉车|智能AGV叉车|激光叉车AGV厂家_江西丹巴赫机器人股份有限公司 | 环链电动葫芦_钢丝绳电动葫芦_电动葫芦厂家_上海沪工起重机械有限公司 | 著名刑事诉讼律师_刑事辩护律师★王平聚【清华博士/刑法教授】 | 南昌利驰科技有限公司| 内蒙古天奇生物科技有限公司——OEM代工|ODM定制|原料供应|骨肽|片剂|胶囊剂|口服液 | 全自动灌装机械设备-迈驰粉末/颗粒/液体/膏体灌装机械设备流水线生产厂家 | 上海企业团建|上海团建|上海团建活动|上海拓展培训|上海拓展训练|傲朗企业管理顾问(上海)有限公司 | 生物发酵罐(细菌/植物/液体玻璃实验室发酵罐设备)CIP清洗罐,灭活罐「厂家」-安徽赛德齐瑞发酵罐品牌 | 拍照机,地铁自助拍证件照机器,校园自助打印机,智能自助复印机 | 专业提供医疗器械,医疗设备,进口国产医疗设备,医疗耗材采购,医疗设备厂家等医疗器械信息-上海聚慕医疗器械有限公司 | 长沙市富巴机电设备有限公司-长期销售施能,霍尼韦尔,霍科德,意莱克斯,台仪,泛达 | 注塑模具厂,注塑模具加工,塑胶模具加工-东莞世邦塑胶官网 | 久久91精品久久91综合_国产亚洲自拍一区_国产精品第1页_亚洲高清视频一区_91成人午夜在线精品_亚洲国产精品网站在线播放_亚洲国产成人久久综合区_国产精品亚洲专区在线观看_免费视频精品一区二区三区 | 球形钢支座,粘滞阻尼器,抗震球型钢支座,盆式橡胶支座,调谐质量阻尼器,屈曲约束支撑-衡水路泽科技 | 山西配电柜,高低压成套柜,太原高低压柜,山西开关柜,箱变壳体_山西雷隆电柜电气设备有限公司 | 芜湖市皖创管业有限公司| 硫化剂|双马树脂|交联剂-宿迁志晟科技有限公司 | 消防安装_消防安装施工_消防施工_北京消防安装公司-亿杰(北京)消防工程有限公司 | 联想南京总代理-联想服务器|联想电脑笔记本代理商|联想工作站|dell服务器|HP服务器|南京IBM代理商|IBM V5000存储总包销-南京宇宽科技有限公司 |