王 宣,代曉波,董玉德
(1.合肥工業(yè)大學 數(shù)字化設計與研究中心,安徽 合肥230000;2.阜陽職業(yè)技術學院 工程科技學院,安徽 阜陽236031)
我國的陶瓷墻地磚模具制造業(yè)已經(jīng)發(fā)展成為規(guī)模型產(chǎn)業(yè)[1],但項目調(diào)研發(fā)現(xiàn),模具的設計普遍沿用二維CAD軟件,不能充分滿足當前模具設計系列化、快速化的市場需求.基于三維CAD軟件的模具參數(shù)化設計系統(tǒng),將會減少設計人員的重復性工作,提高設計效率,是模具行業(yè)提高設計手段的發(fā)展趨勢.
SolidWorks作為目前主流三維CAD軟件之一,不僅具有功能強大、易學易用和技術創(chuàng)新的特色,而且SolidWorks還提供了開發(fā)性和兼容性良好的應用程序開發(fā)接口 (SolidWorks API),凡是支持OLE和COM的編程語言如Visual C++、Visual Basic、Delphi等均可用于SolidWorks的二次開發(fā)[2].VC++6.0是當今流行的軟件開發(fā)工具之一,是程序員的首選編程利器[3].使用VC++6.0對SolidWorks進行二次開發(fā),能夠充分利用SolidWorks API,而且開發(fā)出的DLL應用程序作為插件直接嵌入到SolidWorks內(nèi)部,加載成功后專用系統(tǒng)菜單直接出現(xiàn)在SolidWorks主菜單上,如SolidWorks原有菜單一樣操作方便,極大地提高了設計效率,但使用VC++進行二次開發(fā)對開發(fā)人員的要求較高.目前,對金屬和塑料模具二次開發(fā)的研究已有不少先例,如姚敏敏等人利用Visual Basic開發(fā)了基于SolidWorks的精沖模設計系統(tǒng)[4];李凱嶺等人在Visual Basic環(huán)境下開發(fā)了一個基于SolidWorks的智能注塑模具CAD系統(tǒng)[5]等,而采用VC++二次開發(fā)陶瓷模具專用系統(tǒng)的研究卻較少.因此,根據(jù)模具市場需求,本文研究用VC++6.0基于SolidWorks二次開發(fā)的陶瓷墻地磚模具參數(shù)化設計系統(tǒng),具有重要的現(xiàn)實意義.
在SolidWorks中,由二次開發(fā)實現(xiàn)的零件參數(shù)化設計方法主要是尺寸驅(qū)動法和程序驅(qū)動法[6].尺寸驅(qū)動法需要先建立零件模板再通過程序生成新零件,而程序驅(qū)動法不需要建立零件模板就可以通過程序驅(qū)動生成新零件.尺寸驅(qū)動法程序代碼簡潔高效,是目前參數(shù)化設計較常用的方法,選用此方法作為陶瓷墻地磚模具的參數(shù)化設計,其設計流程如圖1所示.實現(xiàn)這種參數(shù)化設計的關鍵技術是SolidWorks API、ATL技術、參數(shù)化建模技術、數(shù)據(jù)庫建立與訪問技術.
SolidWorks通過OLE(Object Linking and Embedding,對象鏈接與嵌套)技術為用戶提供了強大的應用程序開發(fā)接口API.在SolidWorks API內(nèi)封裝了大量的采用COM(Component Object Model,組件對象模型)技術構造的接口對象,每個接口對象都是由接口、屬性、方法與事件組成[3].在進行SolidWorks二次開發(fā)時,需要先得到SolidWorks API對象的接口,然后才能使用對象的方法和屬性.這些對象呈樹狀層次結構分布,位于頂端的SolidWorks對象是所有其它接口對象的父類,如果想要訪問某一對象,必須先從SolidWorks對象對其子對象進行遍歷,直到找到該對象[3].
接口對象的方法或?qū)傩跃褪茿PI函數(shù),這些API函數(shù)可被Visual C++、Visual Basic、Delphi等編程工具調(diào)用,使得開發(fā)出的程序具有直接訪問SolidWorks的能力.用戶通過對這些對象屬性的設置和方法的調(diào)用,就可以在自己開發(fā)的程序中對SolidWorks進行各種操作,完成零件草圖的繪制和修改,零件各種特征的建立和修改,零件的特征信息、裝配信息及工程圖紙信息的提取等.
圖1 零件參數(shù)化設計流程圖
微軟公司推出的COM開發(fā)工具ATL實質(zhì)上是一套C++模板庫,它采用特定的基本實現(xiàn)技術(包括COM技術、C++模板類技術及C++多重繼承技術等).由于其擺脫了大量冗余代碼,開發(fā)出來的COM應用程序代碼簡潔高效,因而迅速成為開發(fā)COM組件的得力工具.從SolidWorks2006版本開始,在該軟件提供的二次開發(fā)向?qū)е?,Visual C++6.0平臺上的向?qū)Ь褪腔贏TL技術構造的[7].
使用ATL開發(fā)一個COM組件一般有以下幾個步驟[8]:(1)創(chuàng)建一個新的ATL工程.(2)向工程添加新的ATL對象.(3)根據(jù)COM應用要求向新的ATL對象添加接口.(4)完成代碼編寫,編譯鏈接工程,注冊COM組件.
參數(shù)化建模是以約束來表達產(chǎn)品模型的形狀特征,通過定義一組參數(shù)控制設計結果,實現(xiàn)通過調(diào)整參數(shù)修改設計模型的目的,從而設計一簇在形狀或功能上具有相似性特征的零件設計方案.目前,參數(shù)化建模可分為基于尺寸驅(qū)動的參數(shù)化建模,基于約束驅(qū)動的參數(shù)化建模,基于特征的參數(shù)化建模3種方法[9].基于尺寸驅(qū)動的參數(shù)化建模,是指通過修改模型的幾何尺寸,達到改變模型形狀的目的,它是目前最基本的、應用最為廣泛的建模方法,本文模具零件模板就是采用這種三維建模方法的.零件模板參數(shù)化建模時,應注意:(1)合理設計建模思路,使實體模型生成的驅(qū)動尺寸為參數(shù)尺寸.(2)滿足草圖全約束,保證尺寸驅(qū)動模型重建的可靠性.(3)對于與參數(shù)尺寸有數(shù)學關系的其它模型尺寸,利用So1idWorks的方程式功能,建立以參數(shù)尺寸為自變量的關系式使之關聯(lián).
為了方便快捷地通過參數(shù)化設計生成相似零件,需要將參數(shù)數(shù)據(jù)存儲在數(shù)據(jù)庫中,目前可供選擇的數(shù)據(jù)庫很多.其中Access簡單易用,接口靈活,完全滿足零件參數(shù)化設計對數(shù)據(jù)管理的要求,因此常選用Access作為管理數(shù)據(jù)的工具,本文采用Access建立尺寸參數(shù)數(shù)據(jù)庫.
對數(shù)據(jù)庫的訪問就是通過建立與數(shù)據(jù)源的數(shù)據(jù)通道,利用此通道實現(xiàn)人機交互,完成對數(shù)據(jù)庫的查詢、修改等操作.VC++提供了多種數(shù)據(jù)庫訪問技術,如ODBC、DAO、OLE DB、ADO等.考慮ADO功能強大,編程簡潔高效,本實例使用ADO訪問數(shù)據(jù)庫.ADO包含了3個獨立對象和4個非獨立對象,其中獨立對象Connection(連接對象)代表與數(shù)據(jù)源的連接,是ADO對象模型的基礎;獨立對象Recordset(記錄集對象)用于建立記錄集,并負責處理記錄集中的數(shù)據(jù),是ADO對象模型的核心;獨立對象Command(命令對象)主要用于查詢數(shù)據(jù)庫,并返回記錄集對象中的記錄[10].
陶瓷墻地磚模具是一種生產(chǎn)一定形狀和尺寸要求的陶瓷墻地磚坯的模具[11].陶瓷墻地磚坯品種變化多樣,為了滿足不同生產(chǎn)廠家的需求,模具企業(yè)需要不斷改變設計,快速生產(chǎn)出不同系列不同規(guī)格的模具.圖2所示為本項目開發(fā)的YP系列模具參數(shù)化設計系統(tǒng)主界面,從左側樹形圖中可知,底板是模具的基礎零件,盡管模具系列相同,但底板尺寸規(guī)格多達近十種.底板零件的參數(shù)化設計,可明顯提高設計效率.下面就以底板為例,詳細說明零件參數(shù)化設計實現(xiàn)過程.
在So1idWorks中建立零件模板的三維模型時,最好重命名模型驅(qū)動尺寸使之與參數(shù)尺寸名稱一致,便于程序識別.本文以“底板.SLDPRT"保存在“D:\模具參數(shù)化設計\模板模型\”為底板模型,以備調(diào)用.
在Access中創(chuàng)建“YP4000-800-800-1W.mdb”數(shù)據(jù)庫,在庫中建立底板尺寸參數(shù)數(shù)據(jù)表等關聯(lián)表,如圖3所示,保存路徑為“D:\模具參數(shù)化設計\數(shù)據(jù)庫\YP系列\YP4000-800-800-1W.mdb”.
(1)創(chuàng)建新的ATL工程并添加ATL對象 在Visual C++6.0環(huán)境中,使用ATL COM AppWizard對象向?qū)ЫLL工程,自定義名稱為mold,然后在工程中添加新的ATL對象mpd,向?qū)ё詣由山涌贗mpd,該接口是所開發(fā)的模具參數(shù)化設計系統(tǒng)插件與SolidWorks的通信接口,接下來通過添加代碼實現(xiàn)本插件所要具備的功能.
(2)添加菜單和菜單項 在工程資源的String Table(字串表)中定制菜單資源,在IDS-MOLD-message-ITEM欄中添加顯示內(nèi)容:YP系列模具@模具參數(shù)化設計,其中“模具參數(shù)化設計”是添加到So1idWorks界面的菜單名稱,“YP系列模具”是該下拉菜單的菜單項,在IDS-MOLD-message-METHOD欄中添加顯示方法,效果如圖2所示.
圖2 模具參數(shù)化設計系統(tǒng)主界面圖
圖3 數(shù)據(jù)庫部分關聯(lián)表展示圖
(3)創(chuàng)建用戶操作界面 首先用對話框資源編輯器創(chuàng)建底板對話框模板資源.然后利用類向?qū)lass Wizard添加對話框類dbandlg,并向?qū)υ捒蝾愄砑酉⑻幚砗瘮?shù)、成員變量等,向?qū)ё詣由稍搶υ捒蝾惖膁bandlg.h和dbandlg.cpp文件.最后聲明對話框類的對象以便激活對話框,添加的主要代碼如下:
(4)訪問數(shù)據(jù)庫 將已建立的底板尺寸參數(shù)數(shù)據(jù)表載入底板操作界面的列表框中,主要實現(xiàn)步驟是:①在工程的StdAfx.h文件里引入ADO庫文件,添加代碼如下:#import"C:\Program Files\Common Files\SYSTEM\ADO\msado15.dll"no-namespace rename("EOF","adoEOF")rename("Parameter","adoParameter")msado15.dll動態(tài)鏈接庫中定義了ADO接口對象.②連接數(shù)據(jù)庫獲取數(shù)據(jù)表.一般使用函數(shù)open或使用UDL文件連接數(shù)據(jù)庫.采用UDL文件的方便之處是,當數(shù)據(jù)源改變后,只需雙擊相應的UDI文件打開屬性對話框重置數(shù)據(jù)源即可,不用更改軟件編制的程序.實例選用了此方法,建立了TCCSH.udl文件.在dbandlg.h和dbandlg.cpp文件中添加的主要代碼是:
(5)參數(shù)尺寸驅(qū)動模板模型改變,生成新零件 ①將底板操作界面列表框內(nèi)的一行數(shù)據(jù),賦值給對話框中的編輯框,獲得驅(qū)動尺寸參數(shù),如圖4所示.
圖4 底板操作界面圖
主要代碼:
在SolidWorks中,通過點擊菜單“工具/插件”,打開插件對話框,選擇mold插件完成加載;也可點擊菜單“文件/打開”,選擇文件類型Add-Ins,打開mold.dll文件實現(xiàn)加載.
圖5 底板三維模型圖
打開SolidWorks菜單欄里“模具參數(shù)化設計”下拉菜單,選擇“YP系列模具”選項,打開系統(tǒng)主界面,雙擊主界面樹形圖中“底板”選項,彈出“底板”操作界面,雙擊列表框中“圖號”是“YP4881DB-2”的一行數(shù)據(jù),編輯框內(nèi)出現(xiàn)相應尺寸參數(shù),也可手動輸入尺寸參數(shù),然后單擊“三維模型”按鈕,生成新的底板三維模型,如圖5所示.
以SolidWorks為平臺,運用VC++6.0二次開發(fā)工具,開發(fā)陶瓷墻地磚模具參數(shù)化設計系統(tǒng),實現(xiàn)相似零件的快速設計,有利于滿足模具產(chǎn)品系列化、快速化的設計需求.同時零件的參數(shù)化設計方法,對其他品種規(guī)格多樣的零件實現(xiàn)企業(yè)標準化設計具有一定的參考價值,達到減少零件種類、縮短設計周期、減少工藝裝備、降低生產(chǎn)成本、提高企業(yè)經(jīng)濟效益的目的.
[1]姚德良,呂暉.陶瓷墻地磚模具制造業(yè)現(xiàn)狀、問題及建議[J].陶瓷,1996(4):3-5.
[2]董玉德,趙韓.CAD二次開發(fā)理論與技術[M].合肥:合肥工業(yè)大學出版社,2009:7-11.
[3]王文波,涂海寧,熊君星.SolidWorks2008二次開發(fā)基礎與實例(VC++)[M].北京:清華大學出版社,2009:4-12.
[4]姚敏敏,陳昊哲,許樹勤.基于SolidWorks二次開發(fā)的精沖模設計系統(tǒng)[J].液壓裝備與制造技術,2009(1):93-95.
[5]李凱嶺,孫乃坤,朱連富,等.基于SolidWorks的注塑模具CAD系統(tǒng)[J].山東大學學報,2004,34(2):22-26.
[6]王東,蒲小瓊.基于SolidWorks的機械零件參數(shù)化設計[J].機械制造與研究,2004,33(5):15-17.
[7]陳岳坪,高健.基于 ATL技術的SolidWorks二次開發(fā)新方法[J].模具工業(yè),2009,35(6):5-7.
[8]王影.VC++中訪問COM 組件的五種方法[J].計算機時代,2005(12):69-71.
[9]陳璐.基于SolidWorks的參數(shù)化建模[J].CAD/CAM 與制造業(yè)信息化,2007(2-3):72-73.
[10]李明星.起重機運行機構三維參數(shù)化系統(tǒng)的設計與研究[D].太原:太原科技大學,2012:21-25.
[11]向衛(wèi)兵,王剛.陶瓷墻地磚模具類型與分析[J].佛山陶瓷,2008(3):29-32.