AutoCAD模塊化在通用件庫開發中的應用
本文通過作者開發的一個傳動件輔助繪圖軟件,介紹了一種零部件模塊化設計方法,給出了具體的模塊化拆分例子,并介紹了這種開發程序的一些關鍵要點,對進行AutoCAD二次圖形開發很有幫助。
一、引言
筆者所在公司主產品是傳動件,主要有齒輪、鏈輪、同步帶輪和皮帶輪等。有時一天需要加工數十種不同的產品,制圖的工作量很大。如果完全滿足車間生產需要,需要配備3~4名制圖員。采用傳統方式繪圖,完成一個簡單的傳動件需要0.5小時左右,而復雜的非標產品(如有端面槽、錐孔結構)則需要0.75~1小時。另外一些大規格的鏈輪需要在加工中心銑齒完成,需要齒形圖編制CNC程序,因此精確畫出齒形就更重要。
鑒于公司95%以上傳動件結構有很多類似的地方,為了提高制圖效率,開發一款傳動件制圖的專用軟件很有必要。
二、模塊化編程的原因
公司試生產時,主要產品是鏈輪,筆者用VBA做了一個鏈輪繪圖程序。隨著生產規模的擴大,同步帶輪、齒輪和皮帶輪產品越來越多,需要在程序中增加繪制相關特征等功能。導致程序代碼過多、結構復雜、修改困難,程序運行易出錯。這種情況下,筆者嘗試模塊化編程,將相似的程序塊和功能塊分離出來,做成公用的模塊,供不同的傳動件程序調用。
三、模塊化拆分
模塊化拆分最為關鍵,一是將圖形拆分成不同的功能塊,二是將程序公用代碼做成模塊。
1、圖形模塊化
圖1是一個典型的鏈輪傳動件圖樣,可以按圖2拆成四部分:①齒形模塊;②輪轂模塊;③輻板(減輕孔)模塊;④孔模塊。我們生產的絕大部分傳動件(鏈輪、齒輪、皮帶輪和同步帶輪等)都可以拆分成這4個模塊中的全部或部分模塊。由于不同傳動件的齒形差異,所以齒形模塊這部分是不可以共用的。輪轂模塊中的輪轂是廣義的輪轂,包含兩邊沒有輪轂(齒板)和輪轂低于平面等形狀的圖形。輻板模塊是選用模塊。孔包含直孔模塊和成孔模塊(臺階孔、鍵槽孔和錐孔等)兩部分,可進行選擇。
圖1 鏈輪圖
圖2 鏈輪的模塊化拆分
經過這樣拆分后,僅有齒形模塊為專用模塊。不同的傳動件制圖時,要先選用相應的齒形模塊,然后根據需要調用公共模塊,即可組合實現不同的圖形。
2、公用代碼模塊
畫圖時, 要設置不同的線型: 粗實線、細實線、中心線和虛線等,這個部分可以設成一個公用圖層模塊(SetLayers),通過這個模塊調用不同線型。另外,筆者對C A D計算點、距離和畫圓弧等功能進行了擴展,并加入了一些計算弦長、圓弧角等功能函數,將這塊做成了公用函數模塊(WhlsFun)。基本上所有的傳動件(皮帶輪除外)都有齒頂圓、節圓(分度圓)、齒根圓、節距和齒數等參數,這部分定義成公用參數模塊(WhlsData),參數類型都是Global。
四、程序設計及實現
1、程序結構
程序模塊如圖3所示。程序結構、各個模塊之間的相互關系如圖4。
圖3 程序模塊
圖4 程序結構
程序運行流程:通過ThisDrawing中的Wheels函數調用frmMain,通過選擇進入不同的傳動件界面,其中WhlsHub和ThrHoe這兩個模塊因為大多數零件都要調用,所以直接在傳動件窗體中調用賦值。如果需要輻板設計和成孔設計,則將相應的信息傳遞到ConWhls模塊中,然后調用相應的模塊,完成后,通過ConWhls返回相應的傳動件模塊,完成傳動件設計。點“畫圖”按鈕,選擇左右視圖的插入點,完成圖形繪制。
2、程序運行界面
按圖5~圖8運行界面流程,輸入相應的參數,最后返回鏈輪設計窗體,點擊“畫圖”按鈕即可完成圖1所示的鏈輪圖形的繪制。其他齒輪、皮帶輪、同步帶輪的設計界面(如圖9~圖11)類似,不做逐一介紹。圖12為生成的傳動件參數表。
圖5 選擇傳動件類型 圖6 進入鏈輪設計窗體
圖7 進入成孔設計窗體 圖8 進入輻版設計窗體
圖9 齒輪設計窗體 圖10 同步帶輪設計窗體
圖11 皮帶輪設計窗體 圖12 參數表
3、程序設計思路和要點
公司產品中,齒板、單邊輪轂和雙邊輪轂三種結構最常見,孔多數為直孔。所以,除了齒型參數外,輪轂結構、直孔尺寸輸入也放在傳動件窗體上(frmSprocket、frmGear、frmPulley和frmTimePulley)。點擊“參數計算”按鈕后,調用“WhlsHub”、“ThrHole”模塊,將相應參數賦值。這樣不需要調用其他窗體即可完成大多數的傳動件繪圖。
“ConWhls”模塊中主要設置了三個參數:“IntegerPartType”用于保存傳動件模塊信息,參數“Bool chkList(0 to 3)”保存需要調用模塊的信息,“Bool DesignList(0 to 3)”保存已經設計過后的模塊信息。
進行輻板、成孔設計時,先將傳動件模塊信息、需要調用模塊信息保存到“ConWhls”模塊“PartType”、“chkList”中,然后再進入相關模塊設計。設計完成后,將數據保存過的模塊列表保存到“ConWhls”模塊“DesignList”中,然后根據“PartType”值返回不同的傳動件窗體,完成給各個模塊設計。畫圖時,在傳動件窗體中先完成齒形,然后調用“ConWhls”中的“DrawViews”過程,根據“DesignList”值調用各個模塊的畫圖過程,再調用“WhlsHub.DrawHubView”過程,并判斷是否需要調用“ThrHole.DrawThrHoleView”過程。
為了保證各個模塊能吻合到一起,要將左右視圖的插入點和各個模塊視圖插入點保持一致,左視圖所有模塊的插入點為圓中心(ptCen),右視圖所有模塊的插入點為左端面的中心點(ptCenR),另外設置一個參數View,“View=0”調用左視圖,“View=1”調用右視圖,這樣通過過程DrawViews(ptCen,0)、DrawViews(ptCenR,1)可以分別畫各個模塊的左、右視圖。
五、使用效果
本程序能方便地實現多種傳動件(鏈輪、齒輪、同步同輪、V型帶輪、平皮帶輪和多楔帶輪)的設計,而且可以很容易地實現程序的擴展,如產品類型擴展到漸開線花鍵,結構擴展到軸類零件。
傳動件程序推廣使用后,公司95%以上的產品只需8~12分,即可完成圖形的繪制(包括標注等時間,繪圖只需要0.5~1分)。一個人即可完成原先3~4人的工作量,為公司節省了大量的人力、物力,達到滿意的效果。
由于齒型都是按照標準繪制,鏈輪的齒形圖可直接導入GibbsCAM中編制銑齒程序;剖視面(右視面)可直接用來編制數控車床程序,這都減少了CNC編程的制圖準備時間。
六、結語
模塊化編程,尤其適合大型程序的編制,編程工作量減小,修改也方便快捷。將程序做成不同的模塊,可讀性增強;代碼量減少了約30%~50%,代碼重用率高。將相似的零件結構拆成不同的模塊繪制,也是一種新穎的編程思路。