AutoCAD下機(jī)械標(biāo)準(zhǔn)件設(shè)計(jì)系統(tǒng)軟件的研究
2013-05-28 by:廣州有限元分析、培訓(xùn)中心-1CAE.COM 來(lái)源:仿真在線
介紹了在標(biāo)準(zhǔn)件參數(shù)化設(shè)計(jì)中,以AutoCAD為平臺(tái),對(duì)ADS_ARX繪圖程序的模塊化處理、AutoCAD下的界面設(shè)計(jì)以及用Visual C++實(shí)現(xiàn)對(duì)標(biāo)準(zhǔn)件設(shè)計(jì)資料庫(kù)和方法庫(kù)的參數(shù)化查詢(xún),為AutoCAD下的二次開(kāi)發(fā)提供了一種全新的方法。
閻曉玲;任家駿;吳鳳林;吳杰生
關(guān)鍵字:CAD 標(biāo)準(zhǔn)件 參數(shù)化
引言
CAD技術(shù)在機(jī)械工業(yè)中的一個(gè)重要應(yīng)用就是參數(shù)化設(shè)計(jì),即對(duì)一些具有相似結(jié)構(gòu)但尺寸經(jīng)常改動(dòng)的標(biāo)準(zhǔn)零件, 采用參數(shù)化設(shè)計(jì)的方法建立圖形庫(kù),調(diào)出一組參數(shù)就能生成一個(gè)標(biāo)準(zhǔn)件圖形。 本系統(tǒng)中包含一個(gè)常用機(jī)械設(shè)計(jì)標(biāo)準(zhǔn)資料庫(kù),使設(shè)計(jì)人員不必翻閱設(shè)計(jì)手冊(cè)就可以在計(jì)算機(jī)上查到所需的信息, 除此之外本系統(tǒng)還提供了機(jī)械常用各種設(shè)計(jì)計(jì)算方法(包括校核和優(yōu)化), 并將零件的設(shè)計(jì)計(jì)算和輔助繪圖集成于統(tǒng)一的環(huán)境中,從而真正實(shí)現(xiàn)了設(shè)計(jì)與繪圖一體化,明顯提高了產(chǎn)品的設(shè)計(jì)效率。
1 標(biāo)準(zhǔn)件參數(shù)化設(shè)計(jì)系統(tǒng)的建模
參數(shù)化CAD所面對(duì)的產(chǎn)品絕大多數(shù)為定型產(chǎn)品,這些產(chǎn)品的系列化、通用化、標(biāo)準(zhǔn)化程度高。機(jī)械標(biāo)準(zhǔn)件具有上述特點(diǎn), 所以本系統(tǒng)建模根據(jù)參數(shù)化的建模思想來(lái)進(jìn)行。系統(tǒng)的基本思路為:首先由用戶(hù)選擇所要設(shè)計(jì)的零件類(lèi)型,然后選擇設(shè)計(jì)行為(如對(duì)于圓柱齒輪設(shè)計(jì)有結(jié)構(gòu)、校核或優(yōu)化設(shè)計(jì)), 并由用戶(hù)輸入原始設(shè)計(jì)參數(shù),這時(shí)零部件CAD子系統(tǒng)根據(jù)控制子系統(tǒng)傳輸過(guò)來(lái)的原始設(shè)計(jì)參數(shù)和所選設(shè)計(jì)行為進(jìn)行相應(yīng)設(shè)計(jì)活動(dòng), 最后由參數(shù)化繪圖子系統(tǒng)接收設(shè)計(jì)結(jié)果, 在本系統(tǒng)中繪出相應(yīng)的零件工作圖,機(jī)械標(biāo)準(zhǔn)件設(shè)計(jì)系統(tǒng)軟件的邏輯框圖見(jiàn)圖1。
2 軟件設(shè)計(jì)中的關(guān)鍵技術(shù)
2.1繪圖公用模塊的建立
基于程序設(shè)計(jì)模塊化思想,為標(biāo)準(zhǔn)件繪圖程序作了一個(gè)公用模塊Common.arx,該模塊對(duì)標(biāo)準(zhǔn)件圖形環(huán)境做了統(tǒng)一規(guī)定,并對(duì)一些相同功能的程序模塊(如參數(shù)輸入、圖形旋轉(zhuǎn)等)進(jìn)行了統(tǒng)一編制。另外對(duì)某類(lèi)標(biāo)準(zhǔn)件來(lái)說(shuō),不同標(biāo)準(zhǔn)號(hào)對(duì)應(yīng)的標(biāo)準(zhǔn)件結(jié)構(gòu)基本是相同的,只是局部結(jié)構(gòu)的改變, 因此對(duì)這些具有相同圖形的部分也進(jìn)行了模塊化處理。這樣既節(jié)省內(nèi)存又使程序代碼易于管理。以下對(duì)Common.arx中的初始化實(shí)體模式與作圖環(huán)境子模塊進(jìn)行說(shuō)明。
圖1 機(jī)械標(biāo)準(zhǔn)件設(shè)計(jì)標(biāo)準(zhǔn)軟件的邏輯框圖
公用模塊在AutoCAD下建立了三個(gè)層stand1(線型continuous,顏色white),stand2(線型center,顏色red), stand3(線型hidden,顏色white)分別放置標(biāo)準(zhǔn)件圖形的粗細(xì)實(shí)線、中心線和虛線。另外在標(biāo)準(zhǔn)件插入圖形以前,調(diào)用公用模塊中的init()初始化作圖環(huán)境,完成后再調(diào)用rest()恢復(fù)以前的作圖環(huán)境。以下是init()程序的代碼:
init(){structresbufrBc,rBb,rBu;
ads_getvar(″BLIPMODE″,&rBb);
ads_getvar(″CMDECHO″,&rBc);
rBu.restype=PTSHORT;rBuresval=0;
ads_setvar(″CMDECHO″,&rBu);
ads_setvar(″BLIPMODE″,&rBu);
ads_command(RTSTR,″linetype″,RTSTR,″s″,
RTSTR,″bylayer″,RTSTR,″″,RTNONE);
ads_command(RTSTR,″color″,RTSTR,″bylayer″,RTNONE);}
本系統(tǒng)的參數(shù)化繪圖子系統(tǒng)程序框架采用的是ARX的基本結(jié)構(gòu)及消息機(jī)制,而機(jī)械零件的參數(shù)化繪圖部分采用ADS庫(kù)函數(shù) (如實(shí)體數(shù)據(jù)庫(kù)函數(shù)、選擇集操作函數(shù)和選擇集構(gòu)造函數(shù)等)來(lái)完成。以下介紹ARX的基本結(jié)構(gòu)及消息機(jī)制:
AcRx::AppRetCode
AcrxEntryPoint(AcRx::AppMsgCodemsg,void*ptr)
{if(ptr!=NULL){switch(msg){
caseAcRx::kInitAppMsg://加載應(yīng)用程序
acrxDynamicLinker〉Un1ockApplication(ptr)
break;
caseAcRx::kLoadDwgMsg;//登記ads_defun()定義的函數(shù)
funcload();
break;
caseAcRx::kInvkSubrMsg://執(zhí)行ads_defun()定義的函數(shù)
dofun();
break;
caseAcRX::kUnloadDwgMsg://撤消應(yīng)用程序所做的初始化工作
funcUnload();
ads_printf(″Unloading\n″);
break;
caseAcRx::kUnloadAppMsg://徹底清除所有的系統(tǒng)資源
default:
break;
returnAcRx::kRetOK;}(4)
2.2軟件在AutoCAD下的界面設(shè)計(jì)
本系統(tǒng)菜單采用AutoCADR14新的菜單制定技術(shù)制作而成, 對(duì)AutoCADR14的菜單文件ACAD.MNU進(jìn)行了修改,在下拉菜單draw下加入一項(xiàng)標(biāo)準(zhǔn)件,其下一級(jí)子菜單是標(biāo)準(zhǔn)件種類(lèi),當(dāng)你選擇某類(lèi)零件時(shí)會(huì)動(dòng)態(tài)加入有關(guān)這類(lèi)零件的設(shè)計(jì)計(jì)算菜單。舉例如下:
* * *POP7
* * draw
ID_MnDraw[&Draw chen]
……
ID_StandardComponent[-〉標(biāo)準(zhǔn)件]
ID_gear[齒輪p(menucmd″p7=+wuhanshejipop1″]
其中,p7為菜單節(jié)draw的節(jié)號(hào)即POP7,chilunshejipop1表明所要加入的菜單節(jié)組名為chilunsheji,菜單節(jié)號(hào)為pop1。然后由設(shè)計(jì)菜單調(diào)用零部件子系統(tǒng)進(jìn)行設(shè)計(jì)計(jì)算和參數(shù)化繪圖。
3 軟件的數(shù)據(jù)查詢(xún)
Visual C++的MFC數(shù)據(jù)庫(kù)類(lèi)提供了強(qiáng)大的數(shù)據(jù)訪問(wèn)功能,并且可以采取中文界面,所以本系統(tǒng)采用了MFC數(shù)據(jù)庫(kù)類(lèi)中的兩種:
CDatabase類(lèi):
CDatabase類(lèi)用來(lái)封裝應(yīng)用程序?qū)σ粋€(gè)數(shù)據(jù)庫(kù)連接的處理,具體做法如下:
Cdatabase * pDb; pDb=newCdatabase;
pDb-〉OpenEx(″DSN=db1″)這樣便建立了與名為db1的數(shù)據(jù)庫(kù)的連接,本系統(tǒng)采用十分流行的Access作數(shù)據(jù)庫(kù)平臺(tái)存放設(shè)計(jì)系統(tǒng)中所需的大量數(shù)據(jù)。
CRecordset類(lèi):
這個(gè)類(lèi)用來(lái)封裝對(duì)數(shù)據(jù)庫(kù)的查詢(xún),如加入、修改、刪除等操作,設(shè)計(jì)資料庫(kù)的訪問(wèn)(只簡(jiǎn)單介紹如何實(shí)現(xiàn)參數(shù)化查詢(xún))。
假設(shè)CmyRecordset為記錄集類(lèi)Crecordset的派生類(lèi), 在CmyRecordset類(lèi)的聲明中加入m_ffl(查詢(xún)參數(shù)),在CmyRecordsetcpp文件AFX_Field_Init后初始化m_ffl及m_nparams(查詢(xún)參數(shù)的個(gè)數(shù))以下為具體查詢(xún)的實(shí)現(xiàn):
Bool bRc:CmyRecordset * p=new CmyRecordset;
p-〉m_strFilter=″直徑=?″;p-〉m_ffl=mm(此處mm具有具體值);
bRc=P〉Open(Crecordset::snapshot,NULL,Crecordset::readOnly);
if(bRc)
TRACE(″openedsuccessful!\n″);
Else
TRACE(″openedfailed\n″);
然后由CmyRecordset類(lèi)的成員變量即可得所需的數(shù)據(jù)。
4 公式庫(kù)的建立
本系統(tǒng)中要用到很多計(jì)算公式,進(jìn)行數(shù)據(jù)擬合和強(qiáng)度校核以及優(yōu)化設(shè)計(jì), 因此建立了一個(gè)動(dòng)態(tài)連接庫(kù)(DLL),將相關(guān)的計(jì)算公式作為成員函數(shù)集總在各自的零件類(lèi)中,在Visual C++中創(chuàng)建擴(kuò)展MFC DLL,這樣在設(shè)計(jì)計(jì)算中就可以動(dòng)態(tài)加載所需公式。舉例如下:
class AFX_EXT_CLASS chilun
{public:
……
doubletouchlimcan(CStringmatlx,doubleht,doubleu)
……
}
doublechilun::touchlimcan(CStringmatlx,doubleht,doubleu)
{if(matlx==″調(diào)質(zhì)合金″)
return 0.81081*ht+518.64865+u*7;
elseif(matlx==″碳素鋼″)
return 0.93750*ht+298.125+u*140;
……
else
return 0;}
以上代碼中AFX_EXT_CLASS表示chilun類(lèi)可以被其它應(yīng)用程序引用,函數(shù)touchlimcan()是用來(lái)進(jìn)行齒輪接觸疲勞極限計(jì)算的。
5 標(biāo)準(zhǔn)件設(shè)計(jì)系統(tǒng)的功能及應(yīng)用情況
本軟件可以完成各種標(biāo)準(zhǔn)件的設(shè)計(jì)、繪制,每類(lèi)標(biāo)準(zhǔn)件都是根據(jù)最新的《機(jī)械設(shè)計(jì)手冊(cè)》規(guī)定的標(biāo)準(zhǔn)制定。在應(yīng)用上,它可以用于實(shí)際的機(jī)械設(shè)計(jì)輔助繪圖,大大提高了工程人員的工作效率。
相關(guān)標(biāo)簽搜索:AutoCAD下機(jī)械標(biāo)準(zhǔn)件設(shè)計(jì)系統(tǒng)軟件的研究 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓(xùn) Abaqus培訓(xùn) Autoform培訓(xùn) 有限元培訓(xùn) Solidworks培訓(xùn) UG模具培訓(xùn) PROE培訓(xùn) 運(yùn)動(dòng)仿真