謝中梅,陳友福,劉素楠
(江西應用技術職業學院,贛州 341000)
基于AutoLISP和Visual Basic的工程圖紙信息提取與處理
謝中梅,陳友福,劉素楠
(江西應用技術職業學院,贛州 341000)
隨著計算機科學和工程科學的結合與滲透,傳統的機械設計發生了深刻的變化,計算機輔助繪圖日益取代傳統手工繪圖。目前,國內使用CAD軟件進行繪圖過程中,圖紙明細欄文檔信息輸入,還不是很方便且信息不容易提取,匯總成整臺設備的零部件明細表,仍需要做大量、繁瑣的人工抄錄或在CAD中重復輸入及檢索。這種狀況極大地影響了公司甩圖板計劃。采用AutoLISP、DCL(Dialog Control Language對話框控制語言)和Visual Basic開發而成的Windows應用程序,實現了CAD繪圖與明細表匯總一體化設計,即在圖紙設計完畢之后,利用計算機實現明細表的自動匯總。
在機械工程圖紙中,零件明細欄是圖紙的重要組成部分,部件圖紙的零件明細欄設有序號、代號、名稱、數量、材料、單件重量及附注。在一臺設備中,從總圖號至最底層一級零部件,要按總圖號編制明細表或總圖下一級部件獨立明細表,在編制明細表時須獲得全部圖紙的文檔信息。
因此,在CAD繪圖輸入圖紙明細欄時,動態地建立每張圖紙的數據文件,一方面滿足輸入它的上一級部件圖明細欄的信息,另一方面滿足明細表匯總時的信息,將是實現CAD繪圖與明細表自動匯總生成的關鍵所在,考慮到一個零部件可能對應幾個不同的圖形文件,但這些圖形文件所表達的零部件的圖號是唯一的,基于圖號與零部件的一對一關系對應于每個零部件,規定取其圖號作為其數據文件名。
基于上述設計思想,以圖紙明細欄數據文件作為重要的聯系標志,對CAD繪圖軟件進行二次開發,實現CAD繪圖與明細表自動生成,并為計算機輔助工藝設計(CAPP)系統提供數據共享。主要由如下幾部分組成,如圖1所示。

圖1 系統組成框圖
采用AutoLISP及DCL編程在CAD繪圖填寫明細欄同時建立每個零部件的數據文件,供系統數據處理檢索之用。
DCL語言結合了AutoLISP與DCL兩種語法的功能,可以讓用戶半自動地架構出“圖形模式”的對話框界面,即可編程對話框PDB,一個DCL文件的基本架構外觀是:

DCL對話框的屏幕畫面以框欄(Tile)為基本結構,將框欄按左右、上下或混合排行之后,就組成了對話框的主要外觀。每個框欄內部可以容納對話框的基本控件。DCL語法可以自動調整控件之間的相對位置,用戶只需要將控件代碼和各控件的排行模式代碼按順序寫在DCL文件里即可,一般不用考慮控件的尺寸問題。系統會自動計算應有的對話框尺寸,并自動規劃適當的空間來放置這些控件。
DCL文件與AutoLISP程序一樣,是單純的ASCII格式的文本文件,可使用VLISP或一般的文本編輯器(如:記事本等)來編輯和修改,用DCL語法撰寫的對話框,其擴展名為.dcl。對話框程序的運行,按先后順序可分為3步驟:
第1步:在AutoLISP文件里調用DCL對話框程序。
第2步:用戶在對話框里輸入數據。
第3步:將用戶輸入的數據返回AutoLISP文件執行[1]。
DCL文件本身并不能單獨運作,必須在AutoLISP主程序里進行初始設定,然后由主程序調用DCL文件,才能顯示在CAD的繪圖屏幕上。用戶輸入數據后,單擊程序設置的按鈕,DCL文件再將取得的鍵值數據送回AutoLISP主程序執行,關閉對話框后,AutoLISP主程序還將繼續執行后續的代碼。
明細欄數據錄入對話框DCL程序代碼如下。



圖2 明細欄輸入對話框
以上代碼為對話框源代碼,并將其保存為p1.dcl,提供給下面的LISP程序(mxb.lsp)調用。因篇幅關系,省略mxb.lsp文件在CAD中調入對話框并錄入、提取數據的源代碼。此外,確保將p1.dcl和mxb.lsp兩個文件保存在CAD安裝目錄下的support文件夾中。進入CAD后,在菜單欄項點擊‘明細欄’下的‘I明細欄錄入’(注:可通過修改CAD菜單文件在菜單欄中添加用戶自定義的菜單項),按命令窗口中提示輸入該圖明細欄項數,回車;輸入文件名(要求以該圖的圖號命名,例如該圖的圖號為5EQ.524.123,則在命令窗口中輸入的文件名應為”5EQ.524.123”。),回車,按提示捕捉標題欄左上角,出現如圖2所示的對話框。其功能在CAD中輸出明細欄、提取明細欄數據,特點有:
1)明細欄輸入及修改均采用對話框形式。
2)序號自動產生。
3)產品型號和總圖號對話輸入框中均以最近一次的輸入值為默認值。
另外,由于多種因素的制約:一方面,手工圖紙仍占一定的比重,另一方面,圖紙資料具有繼承性,設計中難免使用通用件及借用老產品的零部件,也可采用該程序在CAD中逐條將圖中明細欄的信息輸入并提取產生數據文件,而不產生圖形實體。(當然,也可在明細欄數據處理過程中添加或修改、刪除數據)它提供了在CAD下圖紙明細欄信息提取與存儲功能:
1)在對話框輸入完數據后,按OK鍵,數據自動填入明細欄中,同時在C:MXB目錄下自動生成了一個以該圖號命名的文本文件。(例如:5EQ.524.123.txt)
2)另外,如果是“定子”、“轉子”、“機座” 圖紙,其輸入的文件名必是該圖紙的圖號后加上MX,(例如:需要錄入明細欄的圖紙是圖號為5EQ.034.633的機座,那么在命令窗口中提示輸入文件名應為:5EQ.034.633MX。)
3)若遇到部件圖已經出了明細表或不必出明細表時,在輸入數據對話框代號一欄中,必須為標準的部件圖號加上MX。另外,遇到沒有代號時,必須在代號一欄中輸入一個“.”。
對全部零部件信息進行搜索,當缺少某一部件的數據信息時,系統提示缺少部件,并拒絕將產品零部件信息分類入庫。在明細表中,按不同部件層次并以“序號”特征加以區分,按樹狀結構排序。明細表的輸出形式,可在明細表自動生成系統中直接由繪圖儀輸出,在本系統中支持打印機設置、網絡打印及打印預覽。明細表自動生成部分采用Visual Basic編寫。程序框圖如圖3所示。

圖3 程序框圖
以下是明細表自動生成部分主要功能:
1)運行明細表生成程序,若需生成明細表數據都已入庫,則按“明細表打印”按鈕,然后在對話框中輸入您要輸出的明細表的總圖號等有關信息,按“打印”或“瀏覽、修改”等按鈕,就可打印、瀏覽或修改該產品下的明細表信息,如圖4所示。

圖4 明細表打印窗口
2)若數據未導入,則按 ‘明細表數據處理’按鈕,在數據導入中點擊“選擇需導入文件”按鈕,可實現文本數據轉換成數據庫文件、產品數據處理分類、明細表數據庫修改、添加、刪除及產品零件入庫等。選擇需要導入的文件(如:1EQ.010.416)。如此反復,直到該產品的明細數據導入完,即可打印總裝、定子、轉子、機座明細表,完成后,再執行“產品零件入庫”,給計算機輔助工藝設計系統提供數據。
3)在明細表數據修改窗口中,可對當前產品明細表進行修改、刪除、添加。如果要刪除某幾項只要用鼠標在要刪除的記錄上做上刪除標記,然后在把光標定在“要刪除的代號”這一輸入框中,回車就可刪除不想要的記錄。如果不想用移動滾動條去尋找要修改的記錄,那么可以在“要修改的代號或名稱的輸入框中輸入要修改的代號或名稱,回車,就可定位到要修改的記錄。如下圖5所示。

圖5 明細表數據修改窗口
系統將對話框控制語言DCL與AutoLISP的可編程對話框函數[2]相結合,各模塊均采用窗口式,對話框輸入,且支持網絡數據搜索及調用,極大地提高了設計效率??朔藞D紙明細欄輸入困難,做到了部件圖零件明細欄數據提取及共享,真正做到圖紙完,明細表同時生成,為工藝、材料定額、工時定額、生產計劃管理提供數據共享,同時保證了數據信息的準確、可靠及高度一致。另外,從圖紙設計到明細表自動生成,相同的零部件的數據信息,不管在本產品設計或其它產品中出現多次,僅需輸入一次,大大減少了重復輸入的工作量,通用零部件越多重復輸入工作量減少越明顯。
[1]舒飛.AutoCAD2004二次開發標準教程[M].上海:上海科學普及出版社,2004.
[2]楊素敏.AutoCAD2000定制與開發[M].北京:人民郵電出版社,2000.
[3]張曉黎,張巍.Visual Basic+SQL Server數據庫應用系統開發與實例[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二次開發模塊和圖紙信息管理模塊組成。CAD二次開發采用AutoLISP及對話控制語言編寫;圖紙信息管理主控程序和各功能模塊用Visual Basic編寫。將計算機輔助繪圖與CAD圖紙中零部件明細表匯總有機地結合為一體,利用計算機實現了產品零部件明細表自動生成,保證了圖紙信息與明細表匯總的信息的一致性。
計算機輔助繪圖;明細表(BOM);DCL(對話框控制語言);AutoLISP
謝中梅(1970 -),女,副教授,工程師,碩士,研究方向為數據庫信息管理及應用。
TP391
B
1009-0134(2011)4(上)-0145-03
10.3969/j.issn.1009-0134.2011.4(上).45
2010-10-27