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