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