陳顏祥 陳愛平
一種基于VC的AutoCAD圖紙表格參數(shù)自動提取方法
陳顏祥 陳愛平
(武昌工學(xué)院 湖北武漢 430068)
在進(jìn)行數(shù)控加工和數(shù)控系統(tǒng)設(shè)計時,AutoCAD設(shè)計圖紙中的參數(shù)信息,通常需要由人工輸入到數(shù)控系統(tǒng)中。這給設(shè)計參數(shù)的自動傳遞造成了不便,特別是當(dāng)圖紙數(shù)量較多時也存在費(fèi)時費(fèi)力和參數(shù)輸入錯誤的可能。本文使用VC語言將AutoCAD圖紙通過DXF格式進(jìn)行參數(shù)處理。讀取將AutoCAD圖紙的設(shè)計參數(shù)并寫入指定文檔中,實(shí)現(xiàn)了表格參數(shù)的自動提取與處理,便于后期數(shù)控工作的直接引用,并滿足并行工程中的數(shù)據(jù)交換需求。
AutoCAD;DXF 文件;Visual C
隨著中國工業(yè)化進(jìn)程的不斷深化,工業(yè)產(chǎn)品在關(guān)鍵信息采集、信息的正確處理以及產(chǎn)品生產(chǎn)開發(fā)等各職能環(huán)節(jié)的相互協(xié)同之間的重要性日益凸顯。AutoCAD作為現(xiàn)在應(yīng)用最為廣泛的二維繪圖軟件,在我們的生產(chǎn)過程中占據(jù)著舉足輕重的作用。在齒輪加工過程中,以往信息采集方法多是人工打開統(tǒng)計數(shù)據(jù)并輸入到數(shù)控系統(tǒng)中,過程繁瑣,不適合大批量的數(shù)據(jù)統(tǒng)計,數(shù)據(jù)準(zhǔn)確性低?;诖?,本文所主要研究如何結(jié)合高級語言,快速準(zhǔn)確的讀取AutoCAD中的表格參數(shù),從而提高生產(chǎn)效率和后期方便的進(jìn)行數(shù)據(jù)檢驗(yàn)與數(shù)據(jù)的二次應(yīng)用。
DXF(Drawing Exchange File)是Autodesk公司開發(fā)的用于AutoCAD與其它軟件之間進(jìn)行CAD數(shù)據(jù)交換的CAD數(shù)據(jù)文件格式。DXF是一種開放的矢量數(shù)據(jù)格式,可以分為兩類:ASCII格式和二進(jìn)制格式;ASCII具有可讀性好,但占有空間較大;二進(jìn)制格式占有空間小、讀取速度快。由于AutoCAD現(xiàn)在是最流行的cad軟件,DXF也被廣泛使用,成為事實(shí)上的標(biāo)準(zhǔn)。絕大多數(shù)CAD軟件都能讀入或輸出DXF文件。
在CAD圖紙的DXF文本格式中,圖紙中所包含的所有信息均由組代碼及組代碼所對應(yīng)的組值數(shù)據(jù)類型記載,所以明確各個代碼所對應(yīng)的具體圖紙信息對于讀取想要的參數(shù)也就顯得至關(guān)重要,各組代碼范圍及相應(yīng)組值數(shù)據(jù)類型如表1所示。
表1 各組代碼范圍及相應(yīng)組值數(shù)據(jù)類型
2.1 參數(shù)關(guān)鍵字的定位
由于在繪制AutoCAD過程中,表格文字的輸入形式有單行文字輸入與多行文字輸入兩種,在DXF文檔中,這兩種輸入方法所表示的形式并不相同,單行文字輸入顯示為ASCII碼,即為漢字本身,多行文字輸入則以UNICODE碼顯示。由于在標(biāo)準(zhǔn)CAD制圖過程中,對表格中文字的輸入方式并沒有嚴(yán)格的規(guī)定,因此就需要在程序中加入判斷指令以在不清楚具體輸入方式的情況下準(zhǔn)確的找到所需的關(guān)鍵字,同時提取出關(guān)鍵字的圖紙坐標(biāo)與字高,這就需要在VC打開DXF格式文本后添加ASCII碼與UNICODE碼的轉(zhuǎn)化程序,然后經(jīng)過或門判斷具體文字輸入的方式,這樣就在提取標(biāo)準(zhǔn)格式的AutoCAD圖紙中的參數(shù)時,即使要查找圖紙的數(shù)量較大而存在不同的圖紙文字信息輸入方式,也可以快速準(zhǔn)確查找到相關(guān)參數(shù)。
2.2 參數(shù)關(guān)鍵字圖紙信息的確定
在定位到想要獲取的關(guān)鍵字后,我們便要獲取關(guān)鍵字在圖紙整體坐標(biāo)下的具體坐標(biāo)值,由于CAD圖紙的特點(diǎn),我們默認(rèn)關(guān)鍵字的Z軸坐標(biāo)為0,利用VC判斷,循環(huán)函數(shù)和字符串處理功能,對之前所定位關(guān)鍵字的主要信息進(jìn)行掃描,判斷和提取,并對各關(guān)鍵字的X坐標(biāo)(組代碼為10),Y坐標(biāo)(組代碼為20)及字高(組代碼40)以字符串進(jìn)行儲存。而其他信息如字體,顏色,間距等文字信息由于對提取來說并沒有具體意義,則可以不予記錄。
2.3 關(guān)鍵字對應(yīng)數(shù)值的確定
在得到關(guān)鍵字的X,Y坐標(biāo)及文字字高后,由于CAD加工參數(shù)表格的格式為圖1所示,數(shù)據(jù)名稱與數(shù)據(jù)分別位于表格同行不同列的位置,所以在確定參數(shù)關(guān)鍵字的Y坐標(biāo)后與某一數(shù)據(jù)相差不足一個字高時,認(rèn)為其為表格中的同行數(shù)據(jù),在同行坐標(biāo)內(nèi),比較X的值,大于關(guān)鍵字X坐標(biāo)且與其相距最近的數(shù)據(jù)則為關(guān)鍵字?jǐn)?shù)據(jù)的X值。這樣便確定了關(guān)鍵字?jǐn)?shù)據(jù)的具體坐標(biāo)值,提取確定這組X,Y所對應(yīng)的唯一缺省值(代碼為1),這個缺省值即為關(guān)鍵字所對應(yīng)的具體數(shù)據(jù)。然后通過fputs函數(shù)對此缺省值以字符串形式保存在我們指定的文本文檔中以儲存AutoCAD圖紙中的表格信息。
圖1
本文提出了一種能夠快速提取標(biāo)準(zhǔn)AutoCAD圖紙參數(shù)表格中具體參數(shù)數(shù)值的方法,主要思路為:
(1)根據(jù)標(biāo)準(zhǔn)AutoCAD圖紙所生成的DXF文檔特點(diǎn),利用VC語言字符串處理功能快速,準(zhǔn)確的定位所需要的參數(shù)關(guān)鍵字。
(2)在找到關(guān)鍵字后,利用所對應(yīng)的組代碼查找并記錄在圖紙全局坐標(biāo)下參數(shù)關(guān)鍵字所對應(yīng)的具體坐標(biāo)值與關(guān)鍵字字高。
(3)根據(jù)標(biāo)準(zhǔn)AutoCAD圖紙參數(shù)表格特點(diǎn)與所記錄的參數(shù)關(guān)鍵字信息,確定其同行并相鄰右列的坐標(biāo)區(qū)間,并通過該區(qū)間反向定位所對應(yīng)的唯一缺省值,即參數(shù)信息的具體數(shù)值。
[1]胡勝紅.使用 vc++編程實(shí)現(xiàn) DxF 文件數(shù)據(jù)提取.福建電腦,2006(11):21~23.
[2]劉傳亮.AutoCAD DxF文件格式與二次開發(fā)圖形軟件編程[J].微機(jī)發(fā)展,2004(9):52.
[3]李華,聶建國.在非CAD平臺環(huán)境下顯示CAD圖形的實(shí)用技術(shù)與方法[J].計算機(jī)工程與應(yīng)用,2002(9):92~94.
[4]梁雪春,宋德明.Autocad用戶的二次開發(fā)技術(shù)指南[M]北京:清華大學(xué)出版,2001.
[5]孫鑫.C++深入詳解[M].北京:電子工業(yè)出版社,2006.
TP391.7
A
1004-7344(2016)31-0263-01
2016-10-19
陳顏祥(1988-),男,山東淄博人,武昌工學(xué)院機(jī)械學(xué)院教師,碩士研究生,主要研究方向?yàn)榻Y(jié)構(gòu)動力學(xué),數(shù)控加工技術(shù)。