基于ObjectARX提取AutoCAD中任意格式表格信息
針對AutoCAD圖紙中的標(biāo)題欄和明細(xì)表信息的提取,本文以Visual Studio 2008為開發(fā)平臺,采用單元化表示信息和基表匹配的方式提取標(biāo)題欄信息,并通過構(gòu)建三元數(shù)組的文本信息矩陣表達(dá)明細(xì)表結(jié)構(gòu),完成明細(xì)表信息的提取。同時,采用基于動態(tài)鏈接庫MFC設(shè)計ObjectARX應(yīng)用程序,將最終提取出的表格信息通過ADO技術(shù)存儲至SQLServer數(shù)據(jù)庫中,程序運(yùn)行結(jié)果表明,打開AutoCAD圖紙后加載應(yīng)用程序tqmxb,運(yùn)行提取明細(xì)表命令,按照命令窗口提示進(jìn)行操作,框選表格大體區(qū)域即可完成全部提取操作。該研究為PDM 系統(tǒng)的應(yīng)用提供基礎(chǔ)信息,對自動生成產(chǎn)品結(jié)構(gòu)樹,提高產(chǎn)品數(shù)據(jù)管理效率具有實(shí)際意義。
AutoCAD繪圖軟件中不僅能存儲圖形的幾何信息,而且還存儲了用戶自己建立的“非圖形信息”,如標(biāo)題欄和明細(xì)表。這些信息對于生成產(chǎn)品結(jié)構(gòu)樹,實(shí)現(xiàn)PDM 管理具有重要作用。目前,對工程圖紙中文件信息提取的研究很多,郭林源等人研究了利用基于矩陣存儲的方法對自動提取任意工程圖紙中明細(xì)欄信息;伊國棟等人提出了基于單元概念的描述方法來提取工程圖標(biāo)題欄信息;楊銘等人闡述了從工程圖表中獲取零部件信息的方法。對于這兩種表格信息的提取目前還沒有一個統(tǒng)一的方法。基于此,本文通過對標(biāo)題欄和明細(xì)表信息提取技術(shù)及不同圖紙的表格形式可能不相同的情況,研究了基于動態(tài)鏈接MFC庫設(shè)計ObjectARX應(yīng)用程序,開發(fā)出良好的人機(jī)交互界面,并通過對訪問SQL Server數(shù)據(jù)庫的技術(shù)ADO進(jìn)行封裝,以存儲提取出來的零部件信息。此方法操作簡單,適用范圍廣,易于把數(shù)據(jù)庫信息轉(zhuǎn)換成其他格式,為其他系統(tǒng)的應(yīng)用提供了基礎(chǔ)。
1、標(biāo)題欄信息的提取
1.1、標(biāo)題欄結(jié)構(gòu)分析
AutoCAD圖紙中標(biāo)題欄一般形式為二維表,由線段和字符串構(gòu)成,前者對于表達(dá)表格的信息起到輔助作用,而后者是表格信息的重要內(nèi)容。國標(biāo)中標(biāo)題欄表格形式如圖1所示。
圖1 標(biāo)題欄信息表格
1.2、標(biāo)題欄信息的單元化表示
本文采用基于動態(tài)鏈接MFC庫的ObjectARX應(yīng)用程序?qū)utoCAD進(jìn)行開發(fā),實(shí)現(xiàn)對標(biāo)題欄表格信息的提取。從圖紙中得到的表格內(nèi)容是一個包含有字符串與線段的集合,通過對集合中的原始數(shù)據(jù)進(jìn)行分析和識別,生成標(biāo)準(zhǔn)的單元集合,從而實(shí)現(xiàn)單元化表示標(biāo)題欄。單元識別對標(biāo)題欄的格式識別和信息提取起著關(guān)鍵作用,其識別過程為:首先根據(jù)各個線段的相交和相鄰情況確定單元邊界;其次通過分析線段與字符串的相對位置確定單元邊界對字符串的包容情況;最后將整個標(biāo)題欄以單元集合的方式表達(dá)出來。
圖2 信息單元
在表達(dá)單元的幾何屬性時采用線段編號的方式以避免線段的求交計算,進(jìn)而提高信息的處理效率。將標(biāo)題欄的x 方向線段和y 方向線段分別進(jìn)行編號,使構(gòu)成表格的每個單元具有唯一的邊界線段編號hihjvpvq,信息單元如圖2所示。信息單元表達(dá)的基本形式為:unit(hihjvpvq,text)。其中,text為字符串string所包含的純文本內(nèi)容。如“(圖樣代號)”所在的單元可以表示為:unit(07121617,“(圖樣代號)”)。
1.3、標(biāo)題欄表格的格式識別
標(biāo)題欄信息表經(jīng)單元識別后得到了構(gòu)成表的單元集合,集合中各單元之間存在著語義關(guān)系和位置關(guān)系,而這兩者之間又有一定的關(guān)聯(lián)。即在某些特定格式的標(biāo)題欄表格中,前者可以通過后者來表達(dá)。在相同類型的標(biāo)題欄信息表中,屬于同一組的單元其位置關(guān)系是穩(wěn)定的,因此可以用來表達(dá)表格格式。對標(biāo)題欄信息表的格式識別主要步驟如下:
1) 構(gòu)造一個基表,其中不包含任何具體內(nèi)容,只是作為表達(dá)同一類表格式的載體。
2) 待提取的標(biāo)題欄表格信息單元化以后,將其單元與基表單元進(jìn)行匹配,通過部分信息是否相同來推斷整個待提取表的格式。
3) 建立基表與數(shù)據(jù)庫之間的映射關(guān)系,將提取出的信息存儲到數(shù)據(jù)庫。
3、結(jié)束語
本文以Visual Studio 2008為開發(fā)平臺,采用基于動態(tài)鏈接MFC庫的ObjectARX技術(shù)對AutoCAD進(jìn)行二次開發(fā),程序設(shè)計實(shí)現(xiàn)良好的人機(jī)交互界面。通過提示用戶框選裝配圖中明細(xì)表和標(biāo)題欄的位置,將表格中零部件信息提取出來;同時,采用封裝好的ADO技術(shù)對SQL Server 2008數(shù)據(jù)庫進(jìn)行訪問,將提取出的明細(xì)表信息保存到數(shù)據(jù)庫中,存入數(shù)據(jù)庫的信可以輕松轉(zhuǎn)換成其他格式,從而為PDM 系統(tǒng)的應(yīng)用提供基礎(chǔ)信息,該研究對自動生成產(chǎn)品結(jié)構(gòu)樹,提高產(chǎn)品數(shù)據(jù)管理效率具有實(shí)際意義。