引言
目前,CAD已經在企業中得到了廣泛的應用,并明顯地提高了設計能力和圖紙質量,但工程師們在享受CAD帶來的好處的同時,不得不將大量的時間浪費在查找設計所需信息上,因此對于自動獲取電子圖文檔信息的需求變得越來越迫切。
在數據庫基礎上發展起來的產品數據管理(Product data management,簡稱PDM)技術,可以將企業內分布于各種系統和介質中的關于產品及產品數據信息進行集成與管理,使得企業由過去的依賴紙質文檔的管理轉變為真正的企業信息化管理。PDM系統中的圖文檔管理的基本功能就是將圖文檔的基本信息(如圖號、名稱、材料等)進行人庫、編輯和查詢。這種方便快捷的圖文檔查詢和瀏覽功能是基于“圖檔人庫”功能,它可以將在使用PDM之前,工作過程中已經生成的大量圖文檔錄人到數據庫中,是PDM圖文檔管理中的重要的功能之一。在這個過程中,圖文檔中用于文件查詢以及文件本身的屬性性質的一些基本信息也同時錄人到數據庫中。
本文的工作就是要解決在圖文檔人庫存儲的過程中,文件中的基本信息如何處理的問題。
1、圖文檔的存儲方式
圖文檔在人庫存儲的過程中,為了使PDM系統對人庫后的文件能有效管理,要求圖檔的基本信息同時錄人,因此它的存儲方式一般分兩種:
一種方式是保持文件的完整性,這些文件中的數據不能與文件脫離,一旦脫離就失去意義,因此數據和文件要封裝在一起,然后存放在文件服務器上,即所謂的“打包”。
另一種方式是從文件中可以提取一些數據,這些數據具有獨立的意義,將這些數據分門別類地放到數據庫中,以便對文件內容進行檢索和統計,即所謂的“打散”。
PDM系統所管理的各種文檔的存儲方式各不相同。
(1)圖形文件中的各個元素沒有必要分別管理,只需將文件的整體,名稱代號以及標題欄中的基本元素和特征參數放到數據庫中。
(2)數據文件中由相應的應用程序分析后產生的數據文件往往數據量大,可讀性差,對這樣的文件除了特征參數外,文件整體存儲。但是數據文件中產品定義信息中的數據可以作為屬性,就象關鍵字一樣便于用戶查詢有關文件,需要“打散”處理。
(3)文本文件記錄的各種技術要求,更改說明,使用方法中,除了個別特殊信息需要進行檢索和統計外,一般按整體管理。
(4)表格文件中像產品定義信息這樣的表格文件描述了產品部件或零件的各種屬性,是分類檢索的主要依據和匯總的主要對象,因此必須從文件中提取,然后“打散”,把它們分門別類的放到數據庫中。
其中的圖形文件,尤其是企業中大量使用的AutoCAD軟件所產生的CAD圖檔的讀取和信息處理是PDM圖檔人庫的重點,所以在此要重點分析一下CAD圖紙標題欄中的圖號、設計者、創建日期、版本號及類型等信息的自動提取和人庫問題。
DWG作為AutoCAD的缺省文件格式,其內部結構尚未公開,但其DXF文件格式卻是用來進行數據交換的公開格式文件,通過讀取DXF類型的圖形交換文件讀取圖紙標題欄的信息,實現信息批量人庫。
2、DXF文件結構分析
DXF類型的圖形交換文件是具有專門格式的ASCII碼的文本文件,它比較好讀,易于被其它程序處理。主要用于實現高級語言編寫的程序與AutoCAD系統連接,或其他CAD系統與AutoCAD交換圖形文件如圖1所示。
2.1DXF文件的總體結構
DXF文件本質上是由成對的代碼和與代碼關聯的值組成的。這些代碼(即組碼)不僅指出了其后組值的類型,而且與此組值配對。通過使用這些配對的組碼和組值,DXF文件被組織成區域,包括:HEADER(標題)區域、CLASSES(類)區域、TABLES(表)區域、BLOCKS(塊)區域、ENTITIES(實體)區域、OBJECTS(對象)區域和EOF(文件結尾)。這些區域由記錄組成,而記錄又由依次排列的組碼和數據條目組成。在DXF文件中,每個組碼和每個數據條目都各占一行。
每個區域都是以一個其后跟隨著字符串SECTION的組碼0開始,接著是組碼2和表示區域名稱的字符串(例如HEADER)。每個區域都是由定義它的元素的組碼和組值組成。其后跟著字符串ENDSEC的組碼0表示該區域結束。如表1所示。
2.2ENTITIES區域的作用
ENTITIES(實體)區域記錄了每個幾何實體的名稱及有關的幾何數據,如ARC,CIRCLE,LINE,MTEXT及POINT等實體。圖形文件的圖形部分信息基本在這一段中描述。本文所研究的標題欄中的文本信息即是用ENTITIES區域中的MTEXT(文本框)實體來描述。因此將重點分析一下MTEXT實體中的一些組碼和組值。
表1列出描述MTEXT的一些屬性,左邊為組碼,右邊的說明給出了它的具體含義。
由表1我們可以看到,組碼1的值代表了這個文本的字符串,讀出它的值,就可以得到這個文本信息。這個文本值對應何種屬性,則由這個文本在圖中的位置即它的插人點來決定。如圖2所示,圖紙的標題欄中的圖檔名稱,編號等信息固定在一個個矩形框中,讀出其插人點并判斷落在哪個矩形框中,那么這個字符串值就是相應的圖檔屬性值。插人點的坐標由組碼10和20的組值讀出。
2.3HEADER區域的作用
為了確定矩形框的位置,我們需要確定一個基點,相對于基點的各個矩形框的位置就可以計算出來。通常我們為了方便起見把這個基點定在標題欄的最右下點,也即整個圖幅的右下點,這個點可以通過讀取DXF文件中HEADER區域中的代碼讀出這個點的x,y坐標值。
表2列出這個區域中的一些組碼及說明。
由表2我們可以看到,只要讀取DXF文件中$LIMMIN變量后的組碼10和20的值即可以得到圖幅的左下點坐標值,同理可得到圖幅的右上點,有這兩個點就可以確定圖幅的最右下點,即標題欄的基點。
3、程序的實現及流程圖
應用程序采用VisualC++6.0語言開發,VC語言提供了豐富的MFC類庫,使用者可以使用它的類庫,方便快捷的建立一些數據結構,比如用CPoint類定義基點,CRect類定義矩形區域。并可以運用CRect類中的成員函數PtInRect0判斷點是否落入矩形區域。
圖3為程序的總流程圖,需要先讀出基點,再定義模板,然后讀出文本信息。圖4為讀取基點的流程圖,求得的變量maxx和miny即為基點的x,y坐標,由此可以構造基點類對象。
為了方便信息錄人數據庫,還定義了一個自定義的CBiaoTiLanMod類,它的成員變量是文本框矩形類和兩個文本字符串,分別表示矩形框和它所包含的屬性名及文本值(定義略)。
根據基點和圖2提供的尺寸,創建標題欄模板類對象組,以分別表示各個矩形區域和落人這個區域所對應的文本值。程序讀出DXF文件中的文本框的值,并根據插人點判斷落人哪個對象的矩形區域后,將文本值賦予此對象的成員變量Text2,隨后將Text2存人相應的數據庫表中。信息的錄人工作就可以完成了。
4、結論
本文提出在開發PDM系統“圖檔人庫”功能的過程中,圖形文件,數據文件,文本文件以及表格文件所采取的不同的文件存儲方式,并重點解決圖形文件人庫后圖檔對象的名稱、圖號、設計者等屬性的自動生成的問題。通過分析DXF文件結構,讀取DXF文件結構的CAD圖紙中的標題欄信息,從而將電子圖紙中的標題欄信息自動提取人庫,并成功的運用到實際操作中。
相關文章
- 2021-09-08BIM技術叢書Revit軟件應用系列Autodesk Revit族詳解 [
- 2021-09-08全國專業技術人員計算機應用能力考試用書 AutoCAD2004
- 2021-09-08EXCEL在工作中的應用 制表、數據處理及宏應用PDF下載
- 2021-08-30從零開始AutoCAD 2014中文版機械制圖基礎培訓教程 [李
- 2021-08-30從零開始AutoCAD 2014中文版建筑制圖基礎培訓教程 [朱
- 2021-08-30電氣CAD實例教程AutoCAD 2010中文版 [左昉 等編著] 20
- 2021-08-30電影風暴2:Maya影像實拍與三維合成攻略PDF下載
- 2021-08-30高等院校藝術設計案例教程中文版AutoCAD 建筑設計案例
- 2021-08-29環境藝術制圖AutoCAD [徐幼光 編著] 2013年PDF下載
- 2021-08-29機械AutoCAD 項目教程 第3版 [繆希偉 主編] 2012年PDF