謝中梅,陳友福,劉素楠
(江西應(yīng)用技術(shù)職業(yè)學(xué)院,贛州 341000)
基于AutoLISP和Visual Basic的工程圖紙信息提取與處理
謝中梅,陳友福,劉素楠
(江西應(yīng)用技術(shù)職業(yè)學(xué)院,贛州 341000)
隨著計算機科學(xué)和工程科學(xué)的結(jié)合與滲透,傳統(tǒng)的機械設(shè)計發(fā)生了深刻的變化,計算機輔助繪圖日益取代傳統(tǒng)手工繪圖。目前,國內(nèi)使用CAD軟件進行繪圖過程中,圖紙明細欄文檔信息輸入,還不是很方便且信息不容易提取,匯總成整臺設(shè)備的零部件明細表,仍需要做大量、繁瑣的人工抄錄或在CAD中重復(fù)輸入及檢索。這種狀況極大地影響了公司甩圖板計劃。采用AutoLISP、DCL(Dialog Control Language對話框控制語言)和Visual Basic開發(fā)而成的Windows應(yīng)用程序,實現(xiàn)了CAD繪圖與明細表匯總一體化設(shè)計,即在圖紙設(shè)計完畢之后,利用計算機實現(xiàn)明細表的自動匯總。
在機械工程圖紙中,零件明細欄是圖紙的重要組成部分,部件圖紙的零件明細欄設(shè)有序號、代號、名稱、數(shù)量、材料、單件重量及附注。在一臺設(shè)備中,從總圖號至最底層一級零部件,要按總圖號編制明細表或總圖下一級部件獨立明細表,在編制明細表時須獲得全部圖紙的文檔信息。
因此,在CAD繪圖輸入圖紙明細欄時,動態(tài)地建立每張圖紙的數(shù)據(jù)文件,一方面滿足輸入它的上一級部件圖明細欄的信息,另一方面滿足明細表匯總時的信息,將是實現(xiàn)CAD繪圖與明細表自動匯總生成的關(guān)鍵所在,考慮到一個零部件可能對應(yīng)幾個不同的圖形文件,但這些圖形文件所表達的零部件的圖號是唯一的,基于圖號與零部件的一對一關(guān)系對應(yīng)于每個零部件,規(guī)定取其圖號作為其數(shù)據(jù)文件名。
基于上述設(shè)計思想,以圖紙明細欄數(shù)據(jù)文件作為重要的聯(lián)系標志,對CAD繪圖軟件進行二次開發(fā),實現(xiàn)CAD繪圖與明細表自動生成,并為計算機輔助工藝設(shè)計(CAPP)系統(tǒng)提供數(shù)據(jù)共享。主要由如下幾部分組成,如圖1所示。
圖1 系統(tǒng)組成框圖
采用AutoLISP及DCL編程在CAD繪圖填寫明細欄同時建立每個零部件的數(shù)據(jù)文件,供系統(tǒng)數(shù)據(jù)處理檢索之用。
DCL語言結(jié)合了AutoLISP與DCL兩種語法的功能,可以讓用戶半自動地架構(gòu)出“圖形模式”的對話框界面,即可編程對話框PDB,一個DCL文件的基本架構(gòu)外觀是:
DCL對話框的屏幕畫面以框欄(Tile)為基本結(jié)構(gòu),將框欄按左右、上下或混合排行之后,就組成了對話框的主要外觀。每個框欄內(nèi)部可以容納對話框的基本控件。DCL語法可以自動調(diào)整控件之間的相對位置,用戶只需要將控件代碼和各控件的排行模式代碼按順序?qū)懺贒CL文件里即可,一般不用考慮控件的尺寸問題。系統(tǒng)會自動計算應(yīng)有的對話框尺寸,并自動規(guī)劃適當?shù)目臻g來放置這些控件。
DCL文件與AutoLISP程序一樣,是單純的ASCII格式的文本文件,可使用VLISP或一般的文本編輯器(如:記事本等)來編輯和修改,用DCL語法撰寫的對話框,其擴展名為.dcl。對話框程序的運行,按先后順序可分為3步驟:
第1步:在AutoLISP文件里調(diào)用DCL對話框程序。
第2步:用戶在對話框里輸入數(shù)據(jù)。
第3步:將用戶輸入的數(shù)據(jù)返回AutoLISP文件執(zhí)行[1]。
DCL文件本身并不能單獨運作,必須在AutoLISP主程序里進行初始設(shè)定,然后由主程序調(diào)用DCL文件,才能顯示在CAD的繪圖屏幕上。用戶輸入數(shù)據(jù)后,單擊程序設(shè)置的按鈕,DCL文件再將取得的鍵值數(shù)據(jù)送回AutoLISP主程序執(zhí)行,關(guān)閉對話框后,AutoLISP主程序還將繼續(xù)執(zhí)行后續(xù)的代碼。
明細欄數(shù)據(jù)錄入對話框DCL程序代碼如下。
圖2 明細欄輸入對話框
以上代碼為對話框源代碼,并將其保存為p1.dcl,提供給下面的LISP程序(mxb.lsp)調(diào)用。因篇幅關(guān)系,省略mxb.lsp文件在CAD中調(diào)入對話框并錄入、提取數(shù)據(jù)的源代碼。此外,確保將p1.dcl和mxb.lsp兩個文件保存在CAD安裝目錄下的support文件夾中。進入CAD后,在菜單欄項點擊‘明細欄’下的‘I明細欄錄入’(注:可通過修改CAD菜單文件在菜單欄中添加用戶自定義的菜單項),按命令窗口中提示輸入該圖明細欄項數(shù),回車;輸入文件名(要求以該圖的圖號命名,例如該圖的圖號為5EQ.524.123,則在命令窗口中輸入的文件名應(yīng)為”5EQ.524.123”。),回車,按提示捕捉標題欄左上角,出現(xiàn)如圖2所示的對話框。其功能在CAD中輸出明細欄、提取明細欄數(shù)據(jù),特點有:
1)明細欄輸入及修改均采用對話框形式。
2)序號自動產(chǎn)生。
3)產(chǎn)品型號和總圖號對話輸入框中均以最近一次的輸入值為默認值。
另外,由于多種因素的制約:一方面,手工圖紙仍占一定的比重,另一方面,圖紙資料具有繼承性,設(shè)計中難免使用通用件及借用老產(chǎn)品的零部件,也可采用該程序在CAD中逐條將圖中明細欄的信息輸入并提取產(chǎn)生數(shù)據(jù)文件,而不產(chǎn)生圖形實體。(當然,也可在明細欄數(shù)據(jù)處理過程中添加或修改、刪除數(shù)據(jù))它提供了在CAD下圖紙明細欄信息提取與存儲功能:
1)在對話框輸入完數(shù)據(jù)后,按OK鍵,數(shù)據(jù)自動填入明細欄中,同時在C:MXB目錄下自動生成了一個以該圖號命名的文本文件。(例如:5EQ.524.123.txt)
2)另外,如果是“定子”、“轉(zhuǎn)子”、“機座” 圖紙,其輸入的文件名必是該圖紙的圖號后加上MX,(例如:需要錄入明細欄的圖紙是圖號為5EQ.034.633的機座,那么在命令窗口中提示輸入文件名應(yīng)為:5EQ.034.633MX。)
3)若遇到部件圖已經(jīng)出了明細表或不必出明細表時,在輸入數(shù)據(jù)對話框代號一欄中,必須為標準的部件圖號加上MX。另外,遇到?jīng)]有代號時,必須在代號一欄中輸入一個“.”。
對全部零部件信息進行搜索,當缺少某一部件的數(shù)據(jù)信息時,系統(tǒng)提示缺少部件,并拒絕將產(chǎn)品零部件信息分類入庫。在明細表中,按不同部件層次并以“序號”特征加以區(qū)分,按樹狀結(jié)構(gòu)排序。明細表的輸出形式,可在明細表自動生成系統(tǒng)中直接由繪圖儀輸出,在本系統(tǒng)中支持打印機設(shè)置、網(wǎng)絡(luò)打印及打印預(yù)覽。明細表自動生成部分采用Visual Basic編寫。程序框圖如圖3所示。
圖3 程序框圖
以下是明細表自動生成部分主要功能:
1)運行明細表生成程序,若需生成明細表數(shù)據(jù)都已入庫,則按“明細表打印”按鈕,然后在對話框中輸入您要輸出的明細表的總圖號等有關(guān)信息,按“打印”或“瀏覽、修改”等按鈕,就可打印、瀏覽或修改該產(chǎn)品下的明細表信息,如圖4所示。
圖4 明細表打印窗口
2)若數(shù)據(jù)未導(dǎo)入,則按 ‘明細表數(shù)據(jù)處理’按鈕,在數(shù)據(jù)導(dǎo)入中點擊“選擇需導(dǎo)入文件”按鈕,可實現(xiàn)文本數(shù)據(jù)轉(zhuǎn)換成數(shù)據(jù)庫文件、產(chǎn)品數(shù)據(jù)處理分類、明細表數(shù)據(jù)庫修改、添加、刪除及產(chǎn)品零件入庫等。選擇需要導(dǎo)入的文件(如:1EQ.010.416)。如此反復(fù),直到該產(chǎn)品的明細數(shù)據(jù)導(dǎo)入完,即可打印總裝、定子、轉(zhuǎn)子、機座明細表,完成后,再執(zhí)行“產(chǎn)品零件入庫”,給計算機輔助工藝設(shè)計系統(tǒng)提供數(shù)據(jù)。
3)在明細表數(shù)據(jù)修改窗口中,可對當前產(chǎn)品明細表進行修改、刪除、添加。如果要刪除某幾項只要用鼠標在要刪除的記錄上做上刪除標記,然后在把光標定在“要刪除的代號”這一輸入框中,回車就可刪除不想要的記錄。如果不想用移動滾動條去尋找要修改的記錄,那么可以在“要修改的代號或名稱的輸入框中輸入要修改的代號或名稱,回車,就可定位到要修改的記錄。如下圖5所示。
圖5 明細表數(shù)據(jù)修改窗口
系統(tǒng)將對話框控制語言DCL與AutoLISP的可編程對話框函數(shù)[2]相結(jié)合,各模塊均采用窗口式,對話框輸入,且支持網(wǎng)絡(luò)數(shù)據(jù)搜索及調(diào)用,極大地提高了設(shè)計效率??朔藞D紙明細欄輸入困難,做到了部件圖零件明細欄數(shù)據(jù)提取及共享,真正做到圖紙完,明細表同時生成,為工藝、材料定額、工時定額、生產(chǎn)計劃管理提供數(shù)據(jù)共享,同時保證了數(shù)據(jù)信息的準確、可靠及高度一致。另外,從圖紙設(shè)計到明細表自動生成,相同的零部件的數(shù)據(jù)信息,不管在本產(chǎn)品設(shè)計或其它產(chǎn)品中出現(xiàn)多次,僅需輸入一次,大大減少了重復(fù)輸入的工作量,通用零部件越多重復(fù)輸入工作量減少越明顯。
[1]舒飛.AutoCAD2004二次開發(fā)標準教程[M].上海:上??茖W(xué)普及出版社,2004.
[2]楊素敏.AutoCAD2000定制與開發(fā)[M].北京:人民郵電出版社,2000.
[3]張曉黎,張巍.Visual Basic+SQL Server數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)與實例[M].北京:人民郵電出版社,2003.
Engineering drawings of the information extraction and processing based on AutoLISP and Visual Basic
XIE Zhong-mei, CHEN You-fu, LIU Su-nan
工程圖紙信息提取與處理由CAD二次開發(fā)模塊和圖紙信息管理模塊組成。CAD二次開發(fā)采用AutoLISP及對話控制語言編寫;圖紙信息管理主控程序和各功能模塊用Visual Basic編寫。將計算機輔助繪圖與CAD圖紙中零部件明細表匯總有機地結(jié)合為一體,利用計算機實現(xiàn)了產(chǎn)品零部件明細表自動生成,保證了圖紙信息與明細表匯總的信息的一致性。
計算機輔助繪圖;明細表(BOM);DCL(對話框控制語言);AutoLISP
謝中梅(1970 -),女,副教授,工程師,碩士,研究方向為數(shù)據(jù)庫信息管理及應(yīng)用。
TP391
B
1009-0134(2011)4(上)-0145-03
10.3969/j.issn.1009-0134.2011.4(上).45
2010-10-27