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