魏永樂, 晁彩霞
(遼寧工程技術大學機械工程學院,遼寧 阜新 123000)
基于ObjectARX開發(fā)工程圖模塊的研究
魏永樂, 晁彩霞
(遼寧工程技術大學機械工程學院,遼寧 阜新 123000)
三維實體建模在機械產品的設計過程中得到了廣泛應用,但二維工程圖仍是當前指導生產和進行技術交流必不可少的文件。為了從三維實體模型快速得到二維工程圖,利用ObjectARX二次開發(fā)工具,在AutoCAD平臺上開發(fā)工程圖模塊,實現(xiàn)了實體模型向工程圖的快速轉化以及自動標注。工程圖生成在模型空間,方便后續(xù)操作。通過實例證明該工程圖模塊能夠從特征實體模型中提取工程圖的相關信息,快速生成二維工程圖,大大提高用戶的工作效率。
計算機應用;工程圖模塊;二次開發(fā);ObjectARX;AutoCAD
隨著計算機技術的迅速發(fā)展,CAD技術已經在機械行業(yè)得到了廣泛的應用。CAD技術的應用加快了機械產品開發(fā)進程、提高了生產效率和產品質量、降低了生產成本。目前,許多機械產品的設計都是從三維實體建模開始的,這符合工程實際和人的思維習慣,形象直觀、真實感強,并且可以在實體模型上進行有限元分析等各種計算,有利于產品的優(yōu)化設計。然而,二維工程圖在當前產品的設計和制造過程中,作為重要的技術文檔仍是不可缺少的。
AutoCAD作為Autodesk公司的主導產品,其功能強大、操作簡單、二次開發(fā)方便等優(yōu)點在機械、電子、模具等領域得到了極為廣泛的應用。AutoCAD可以進行產品三維實體建模,而且許多學者在其上開發(fā)了特征建模系統(tǒng),建立了包含全生命周期各階段信息的零件特征信息模型[1-4]。如何從已有的零件特征信息模型中提取相關信息快速創(chuàng)建二維工程圖,對于滿足生產需求、提高用戶的設計效率、縮短產品開發(fā)周期具有重要意義。本文以AutoCAD為平臺,利用ObjectARX開發(fā)工具開發(fā)了工程圖模塊,實現(xiàn)了由三維特征實體模型向二維工程圖的快速轉化。
根據零件工程圖所表達的內容,所設計開發(fā)的工程圖模塊主要應具有以下功能:設置圖紙幅面、創(chuàng)建視圖、標注尺寸和粗糙度、填寫標題欄和技術要求等,其中創(chuàng)建視圖功能最為重要,其它功能都是在視圖的基礎之上進行的。該工程圖模塊的功能結構如圖1所示。
圖1 工程圖模塊功能結構
設置圖紙幅面:設置工程圖幅面大小和方向。
創(chuàng)建視圖:創(chuàng)建表達零件結構所需的各視圖。
標注尺寸和粗糙度:標注零件的基本尺寸、尺寸公差、幾何公差和表面粗糙度等。
填寫標題欄和技術要求:填寫標題欄中的相關信息,以及零件加工時的技術要求。
根據工程圖模塊的功能結構可知,視圖的創(chuàng)建和尺寸標注是工程圖模塊的核心。由于文章篇幅所限,重點討論創(chuàng)建視圖功能和尺寸標注功能的設計與開發(fā)過程。
2.1 視圖的創(chuàng)建
AutoCAD具有采用命令方式創(chuàng)建視圖的功能,但創(chuàng)建過程復雜,而且生成的視圖位于布局空間,使用戶操作不太方便。與其相比,利用ObjectARX開發(fā)的工程圖模塊創(chuàng)建視圖操作簡單,且生成的視圖位于模型空間,使用戶后續(xù)的操作如同在AutoCAD中直接繪制工程圖一樣,操作起來更加熟悉、方便。
2.1.1 AutoCAD創(chuàng)建視圖方法
AutoCAD創(chuàng)建視圖的方法主要是采用MView命令方式,其創(chuàng)建視圖的主要步驟如下[5-6]:
1) 切換到布局空間(Layout1或Layout2),并設置圖紙和打印機選項;
2) 刪除已有的視圖(系統(tǒng)自動生成的一個視圖);
3) 輸入MView命令,輸入生成視圖個數N,然后用鼠標指定各個視圖的大小和位置;
4) 激活左上角的視圖,從菜單View/3D View中選擇Front選項,將其設置為前視圖;
5) 輸入Zoom命令,選擇Scale項,輸入比例系數,顯示模型;
6) 輸入Solprof命令,選擇實體模型,其它的提示直接回車即可,提取前視圖的輪廓線;
重復步驟第4)~6)步,獲得實體模型的其它視圖的輪廓線;
7) 打開圖層管理對話框,會發(fā)現(xiàn)系統(tǒng)自動創(chuàng)建了幾個圖層,其中以PV為前綴的圖層記錄可見輪廓線,以PH為前綴的圖層記錄不可見輪廓線,將其線型設置為Hidden類型;
8) 將0層關閉,即可看到新創(chuàng)建的視圖。
由以上步驟可以看出,采用Mview命令創(chuàng)建視圖步驟繁瑣、重復操作多、效率低;更糟糕的是,提取出的各視圖輪廓線,雖然是平面圖形,但各視圖沒有進行坐標變換,不在同一個平面上,如果在模型空間觀察顯示很亂,難以辨認,更不易后續(xù)處理,如圖2所示。
圖2 模型空間觀察視圖
2.1.2 工程圖模塊創(chuàng)建視圖
1) 基本視圖的創(chuàng)建
基本視圖包括主視圖、左視圖、俯視圖、后視圖、右視圖和仰視圖,創(chuàng)建基本視圖的設計開發(fā)思路如下,其實現(xiàn)流程圖如圖3所示。
(1) 應用AutoCAD現(xiàn)有的創(chuàng)建視圖的命令,如Layout,-View,Solprof等命令,設置實體模型各個視圖,并提取出各個視圖的輪廓線;
(2) 調用ObjectARX中提供的坐標變換函數和實體操作函數,將提取出的輪廓線在模型空間進行坐標變換,將所有視圖都轉換到XOY面內適當位置;
(3) 將可見輪廓線添加到SolidLayer層,將不可見輪廓線添加到HiddenLayer層。
創(chuàng)建基本視圖的關鍵代碼如下:
acedCommand(RTSTR,"layout",RTSTR,"_n",RTS TR,"View",0);//創(chuàng)建View布局
acedCommand(RTSTR,"layout",RTSTR,"",RTSTR ,"View",0);//進入View布局
acedCommand(RTSTR,"mspace",0);//激活視圖……
acedSSGet(NULL,NULL,NULL,NULL,ss);//構造選擇集,選中三維實體模型
acedSSName(ss,0,m_SolName);//獲得實體名
for(int i=0;i<3;i++)
{ acedCommand(RTSTR,"-view",RTSTR,s[i],0) ;//設置front、top或left視圖
acedCommand(RTSTR,"solprof",RTENAME, m_SolName,RTSTR,"",RTSTR,"Y",RTSTR,"Y",R TSTR,"Y",0);//提取視圖的輪廓線 }
acedCommand(RTSTR, "Model",RTSTR, "",0); //進入模型空間
……
for(int i=0;i<6;i++)
{ ……
//構造選擇集,選中該可見或不可見輪廓線
acedSSGet("X",NULL,NULL,&eb,ss);
ident_init(mat);//初始化坐標變換矩陣
mat[0][3]=m_LviewX;//X軸平移量
……
acedXfromSS(ss,mat);//進行坐標變換
if(strcmp(LayerPrefix[i], "PV") //可見輪廓
{ ……
//將選擇集中的實體放入SolidLayer層
pEnt->setLayer(SolidLayerId); }
if(strcmp(LayerPrefix[i], "PH") //不可見輪廓
{ ……
//將選擇集中的實體放入HiddenLayer層
pEnt->setLayer(HiddenLayerId); }
}
acedCommand(RTSTR,"layout",RTSTR,"_d",RTS TR,"View",0);//刪除View布局
2) 剖視圖的創(chuàng)建
創(chuàng)建剖視圖的設計開發(fā)思路如下:
(1) 確定剖切平面的位置;
(2) 調用三維實體的getSection()函數,獲得實體的剖面;
(3) 將剖面進行坐標變換,將其變換到XOY面的合適位置,對其進行修整并添加剖面線,得到剖視圖。
創(chuàng)建剖切視圖的關鍵代碼如下:
AcGePlane *pPlane=new AcGePlane();//剖切平面switch(m_RefPlane)//選擇參考平面
{case 1://以XOY平面為參考平面
Vect.set(0,0,1);//設置剖切平面的法向量
Orig.set(0,0,m_Dist);//設置剖切平面位置
pPlane->set(Orig,Vect);//設置剖切平面
break;
case 2://以YOZ平面為參考平面
…… }
acedSSGet(NULL,NULL,NULL,NULL,ss);//構造選擇集,選中三維模型
……
pObj->getSection(pPlane,pSectProf);//獲得剖切面的輪廓線
……
pSectProf->transformBy(mat);//對輪廓線進行坐標變換
//將剖面輪廓添加到塊表記錄中
……
pBlockTableRecord->appendAcDbEntity(entityId, pSectProf);
2.2 工程圖的標注
工程圖中的標注主要有尺寸公差、幾何公差、粗糙度和文本注解等信息,是工程圖必不可少的組成部分。由于采用Mview命令創(chuàng)建視圖時,不記錄三維模型與視圖的關聯(lián)信息,故尺寸公差和粗糙度等標注無法自動生成,創(chuàng)建視圖之后需要手工標注。下面討論如何利用ObjectARX提供的尺寸公差類,從零件特征模型提取標注信息,實現(xiàn)尺寸公差、幾何公差、粗糙度等自動標注。
2.2.1 AutoCAD標注公差和粗糙度
AutoCAD系統(tǒng)具有強大的尺寸標注功能,提供了多種標注方法,可以滿足不同行業(yè)的圖形的標注要求,但在標注公差和粗糙度方面AutoCAD還存在很多的缺點。
1) 尺寸公差的標注
AutoCAD中尺寸公差標注的一般步驟是:先查找并確定上、下偏差值,再利用“標注樣式管理器”建立一種“標注樣式”,設置上偏差、下偏差、前綴等有關參數。每標注一個不同的尺寸公差都要返回“標注樣式管理器”中重新進行設置[7]。其明顯的缺點就是上、下偏差需人工查找確定,標注時需要反復設置標注樣式,效率低。
2) 幾何公差的標注
AutoCAD雖然具有幾何公差的標注功能,但其功能不完善,實際應用很不方便,如指引線與公差項不能統(tǒng)一標注,沒提供基準要素的標注。通常的解決辦法是將幾何公差和基準符號做成帶屬性的塊,標注時利用插入命令將其插入到指定的位置,然后修改其屬性,使用不太方便[8]。
3) 粗糙度的標注
AutoCAD不具有粗糙度的標注功能,用戶通常是將粗糙度符號定義成帶屬性的圖塊,進行標注時利用插入命令將其插入到指定位置并輸入旋轉一定角度,然后修改其屬性[9]。
2.2.2 工程圖模塊公差和粗糙度自動標注
針對AutoCAD在標注方面的不足,工程圖模塊開發(fā)了尺寸公差、幾何公差和粗糙度自動標注功能,簡化了操作步驟,提高了設計效率。
1) 尺寸公差標注
在ObjectARX中尺寸類(AcDbDimesion)是由AcDbEntity類派生而來的,AcDbDimesion類又派生出7個子類,利用這7個子類,可以開發(fā)多種標注形式,如兩線定角標注、三點定角標注、對齊標注等。
在進行零件特征建模時,很多尺寸公差已經輸入到零件特征信息模型之中,為了避免重復輸入、提高設計效率,標注尺寸公差時,用戶可以從圖形數據庫中選擇所要標注的尺寸,提取出相應公差信息進行標注。當圖形數據庫中沒有公差信息時,用戶也可以直接輸入尺寸值、公差代號和公差等級,從公差數據庫表中查出上下偏差值,進行標注。尺寸公差的標注界面如圖4所示。
尺寸公差標注的步驟[7]:
(1) 從特征對象中獲得尺寸公差的參數或直接查詢出公差的參數,確定標注類型;
(2) 根據標注類型,創(chuàng)建相應尺寸類對象(AcDbAlignedDimension,AcDbDiametricDimension等);
(3) 拾取所要標注的輪廓線或尺寸標注線的起點和終點,確定尺寸線和標注文本的位置;
(4) 將所創(chuàng)建的尺寸對象添加到圖形數據庫的模型空間。
圖4 尺寸公差標注
2) 幾何公差標注
幾何公差的標注主要應用了AcDbLeader和AcDbFcf 兩類。AcDbLeader類用于生成公差的指引線,AcDbFcf類用于生成公差的主體。幾何公差的設計與開發(fā)思路與尺寸公差標注類似,其標注界面如5圖所示。
圖5 幾何公差標注
幾何公差標注的步驟[8]:
(1) 從特征對象中獲得幾何公差參數或直接查詢出公差參數;
(2) 創(chuàng)建指引線對象(AcDbLeader類)和幾何公差對象(AcDbFcf類);
(3) 拾取指引線的起點、拐點和終點,確定幾何公差的標注位置;
(4) 將指引線和幾何公差對象添加到圖形數據庫的模型空間。
3) 粗糙度標注
AutoCAD沒有提供粗糙度的標注功能,也沒有與提供粗糙度標注相關的類,所以粗糙度的標注完全采用編程來實現(xiàn)。編程思路為:根據用戶輸入的信息,由程序計算并繪制表面粗糙度符號、計算表面粗糙度數值插入點坐標和旋轉角度,然后利用appendAcDbEntity()函數把表面粗糙度符號和數值添加到圖形數據庫中。粗糙度標注界面如圖6所示。
圖6 粗糙度標注
粗糙度標注的實現(xiàn)步驟[9-10]:
(1) 選擇粗糙度符號的類型,輸入粗糙度的值;
(2) 拾取所要標注的輪廓線,并確定粗糙度符號插入點和方向;
(3) 計算粗糙度符號各點的坐標,并利用AcDbLine和AcDbCircle類對象繪制粗糙度符號;
(4) 創(chuàng)建文本對象(AcDbText)記錄粗糙度的值,并計算文本的插入點和旋轉角度;
(5) 將粗糙度符號和數值添加到圖形數據庫的模型空間。
以支架零件為例來驗證工程圖模塊的正確性和實用性,如圖7所示。
1) 利用AutoCAD特征建模系統(tǒng)建立支架零件的三維實體模型;
2) 設置圖紙幅大小和方向;
3) 創(chuàng)建所需視圖,并標注所需尺寸;
4) 填寫標題欄、技術要求,形成二維工程 圖。
圖7 支架工程圖
針對AutoCAD創(chuàng)建視圖以及標注公差和粗糙度方面的不足,借助ObjectARX二次開發(fā)工具,采用面向對象編程技術開發(fā)了工程圖模塊。其界面友好、操作方便,能夠從零件的三維特征信息模型快速得到二維工程圖,可以大大減少用戶反復操作,有效提高用戶的設計效率。而且創(chuàng)建的二維工程圖處于AutoCAD的模型空間,使熟悉二維繪圖的用戶操作起來更加得心應手。通過實例證明該工程圖模塊結合零件特征建模系統(tǒng),可以由零件特征信息模型快速創(chuàng)建二維工程圖,利用AutoCAD系統(tǒng)良好的開放性,借助ObjectARX工具進行專項二次開發(fā),可以大大提高設計效率。
[1] 羅志偉, 陳 亮. 基于ARX的產品特征建模研究[J].福州大學學報, 2004, (2): 158-161.
[2] 田啟華, 杜義賢, 趙 衛(wèi). 基于AutoCAD的零件特征信息構建[J]. 現(xiàn)代制造工程, 2004, (7): 34-36.
[3] 蘇 猛, 魏永樂. 基于AutoCAD開發(fā)零件特征建模系統(tǒng)研究[J]. 遼寧工程技術大學學報, 2006, (1): 123-126.
[4] 魏永樂, 晁彩霞. 基于ObjectARX實現(xiàn)特征建模的方法[J]. 工程圖學學報, 2010, (6): 92-99.
[5] 何 兵, 車林仙. AutoCAD中由三維模型自動生成二維工程圖的研究[J]. 機械設計, 2005, (9): 10-12.
[6] 秦 然. 基于 AutoCAD由三維模型生成二維投影的方法研究[J]. 遼寧大學學報, 2005, (2): 172-174.
[7] 王輝輝, 沈精虎, 李 超. 基于AutoCAD的尺寸公差智能標注系統(tǒng)的設計[J]. 裝備制造技術, 2009, (2): 77-79.
[8] 洪友倫. 基于 AutoCAD的形位公差代號標注系統(tǒng)的開發(fā)[J]. 機械, 2009, (6): 52-55.
[9] 孫麗紅, 張 燕, 谷 實. 基于AutoCAD二次開發(fā)的表面粗糙度的智能化標注[J]. 現(xiàn)代制造工程, 2010, (10): 77-80.
[10] 郭德偉, 鐘艷如, 黃美發(fā). 基于ObjectARX的表面粗糙度符號標注算法及實現(xiàn)[J]. 計算機系統(tǒng)應用, 2008, (2): 79-83.
Developing engineering drawing module base on ObjectARX
Wei Yongle, Chao Caixia
( College of Mechanical Engineering, Liaoning Technical University, Fuxin Liaoning 123000, China )
The 3D solid modeling is used widely in the design of machine production. But, the 2D drawing is still essential in production manufacturing and in technical exchanging. In order to construct the 2D drawing from 3D solid model, the engineering drawing module is developed based on AutoCAD with the secondary development tool ObjcetARX. Constructing the 2D drawing from a 3D solid model and automatic dimension are realized, and the 2D drawing is created in the model space which makes the user’s operation more convenient. An example shows that the engineering drawing module can extract the information of the 2D drawing from the 3D features solid and can construct 2D drawing rapidly. The design efficiency can be enhanced greatly.
computer application; engineering drawing module; secondary development; ObjectARX; AutoCAD
TP 391
A
2095-302X (2013)01-0071-06
2011-09-27;定稿日期:2012-01-10
魏永樂(1979-),男,河北石家莊人,講師,碩士,主要研究方向為機械CAD/CAM。E-mail:weiyongle@sohu.com