1 前言
目前CAD技術占主導地位的是參數化建模技術和變量化建模技術。變量化技術既保持了參數化技術的原有優點,同時又克服了它的許多不足之處。采用參數化技術和變量化技術的代表性軟件分別是Pro/E和UG。UG軟件起源于美國麥道飛機公司,1991年并入EDS公司,2000年左右成功收購I-Deas軟件,并綜合了上述兩款優秀的CAD軟件的優勢之后推出全新UGII軟件,UGII在實體模型構造上采用復合建模技術,能夠無縫地集成CSG建模、基于約束的特征建模和基于曲面拼合的建模等多種建模方法到同一個建??蚣軆?。
特征造型是參數化造型理論的深化與拓展。特征不僅包含參數信息,還包含各種物理信息及加工信息。特征是設計者對設計對象的功能、形狀、結構、制造、裝配、檢驗、管理與使用信息及其關系等具有確切工程含義的高層次抽象描述[1]。特征包含豐富的工程語義,它是在更高層次上對幾何形體的集成描述。特征建模是指通過特征及其集合來定義、描述零件模型的過程[2]。特征模型用邏輯上相互關聯、互相影響的語義網絡對特征事例及其關系進行描述和表達,它與底層的幾何元素點、邊、面來表示幾何實體的方法的區別是:特征模型采用高層次的具有功能意義的實體,如孔、槽等,其操作對象不是原始的幾何元素,而是產品的功能要素、技術信息和管理信息。
相比較CAE、VR系統而言,CAD系統具有最強的幾何建模能力,目前獲取CAE、VR系統下的產品模型的主要手段是把在三維建模CAD軟件(如UG、Pro/E、Catia等)中建立的CAD模型進行相應的模型轉換[3]。出于計算速度和顯示速度等多方面的考慮,CAE系統需要對進行計算的模型進行簡化而VR系統則需要建立復雜樣機模型的LOD(Level-of-Detail)模型,目前采用的模型簡化的方法大都采用手工進行的方式,效率低下,LOD模型的獲取則主要是通過多邊形面片模型簡化算法來獲取,然而由于模型小面片化以后就失去了與原有參數曲面之間的拓撲關系,同時多邊形面片簡化算法實現方式各不相同,都有各自的特點及適用范圍,簡化的準確性在很大程度上依賴于初始多邊形網格的幾何結構和拓撲結構,以及最終想要得到的結果,因此具有較大的先天缺陷和局限性。
本文提出的基于特征抑制的CAD模型自動簡化技術把模型簡化工作提前到CAD建模階段,用于在CAD領域內批量自動完成CAD模型的簡化工作,從而減少模型中細小參數曲面的數量。CAD模型自動簡化后可再通過專用或中性文件格式轉換輸出得到需要的模型格式。
2 算法思想及實現
UGII采用了特征建模的模型構建方法,在模型建模樹中保存了產品建模過程中的每一步特征生成步驟,圖1是某個產品在UG NX中的建模樹,這為基于特征抑止的CAD模型簡化方法提供了可能。該方法的核心思想是:首先定義模型簡化規則并獲取產品建模過程和建模數據,通過規則匹配、誤差控制等操作提取出模型中可簡化建模特征,通過模型的邊界表示結構判斷建模特征可否抑制,最后抑制所有可簡化特征并更新模型。
具體步驟包括:通過CAD二次開發技術(本文采用UG OPEN API)獲取UG CAD模型的建模過程及相關參數;構建UG CAD模型簡化規則并加以實現而形成簡化規則函數庫;通過規則匹配和簡化誤差計算來提取模型中所有可簡化特征;通過模型的邊界表示結構判斷建模特征是否可以被抑制,如果可以則執行相應簡化函數,最后更新模型并完成模型簡化。
圖1 UG產品模型建模樹
2.1 UG的建模形狀特征
UGII軟件采用中采用基于特征的層次建模方式,從而提供了產品定義的高層描述,這樣用戶在產品設計的時候就可以在更高的抽象層次上進行,設計人員可以直接對產品的形狀特征(如孔、螺紋等)進行操作,而可以不采用底層的基于點、線、面、體、布爾運算等復雜操作來完成產品的設計開發過程。UGII的建模形狀特征(不考慮自由曲面建模)如圖2所示。
圖2 UGII的建模特征
2.2 簡化誤差控制
CAD模型的簡化應該根據CAD模型建模尺寸和簡化誤差控制范圍來確定?;谔卣饕种沟腃AD模型簡化方法不是對某類建模特征不加控制的一律刪除,而是根據具體情況計算每類特征的控制參數閥值,從而抑止參數小于該閥值的對應特征,而保留那些參數大于該閥值的相應特征。
圖3 倒圓角特征刪除后的表面距離偏差
本文采用表面距離誤差作為簡化誤差控制的全局參數,所謂表面距離誤差,就是模型簡化以后簡化區域形成的新參數曲面到簡化前對應的參數曲面之間的最大距離。例如對于兩個垂直平面的交線進行倒圓角特征如圖3所示,倒角半徑為R,把該倒圓角特征刪除以后的表面距離誤差 。對于任意表面距離容差x(x>0)當被倒角的兩條邊的夾角為任意θ時,半徑值滿足式2-1的倒圓角特征可以被刪除。
對于每一類建模特征,都有多個控制參數用于控制該類特征,例如,對于倒角特征來說,有圖4所示的多種建模方法和多個控制參數[5]。簡化誤差控制參數閥值對每類可簡化特征的各種具體的建模方法計算相應的控制參數閥值。
圖4 倒角特征的三種建模方法及其控制參數
2.3 簡化規則構造及實現
通過對機械類產品UG模型的理解和分析并結合UGII中建模特征,總結出以下模型簡化規則,可以看到,這些可簡化特征基本都屬于UG主建模特征中的細節特征。
抑制倒角(對應于Chamfer建模特征)
抑制倒圓角(對應于Blend建模特征)
抑制螺紋(對應于Thread建模特征)
抑制退刀槽(對應于Groove建模特征)
抑制小孔(對應于Hole建模特征)
抑制凸臺(對應于Pad、Boss建模特征)
抑制凹槽(對應于Pocket、Slot建模特征)
簡化規則的實現采用函數對應的方式,一條簡化規則對應于一個簡化函數。這樣的構造方法有利于簡化規則庫的擴展和更改,一旦重新加入另一條簡化規則,就可以很容易的對現有模塊進行擴充而加以實現。
簡化函數采用UG OPEN API函數以及C語言構造,簡化函數的實現中的最重要的問題是UG模型中對象的提取與匹配,UG模型中包含的對象包括幾何實體對象和非實體對象。幾何實體對象包括實體、面、線、點等。非幾何對象包含坐標系對象、對象尺寸、顏色、線型、屬性對象等等。每個UG對象都可以通過唯一的對象標識(tag)來引用。如下的代碼段用于獲取一個UG CAD文件中所有的建模特征標識以及特征名稱:
tag_t part1;//打開零件模型的標識
UF_PART_load_status_t error_status;
int type=UF_feature_type;//需要遍歷的對象類型
tag_t feature=NULL_TAG;//定義特征標識
tag_t * fea_tags=0;//定義特征標識指針
int I_count=0,feature_count;//用于獲取模型中的特征數量
UF_PART_open(partname,&part1,&error_status);//打開模型文件
UF_OBJ_cycle_objs_in_part(part1,type,&feature);
while(feature!=NULL_TAG)
{ I _count++;
UF_OBJ_cycle_objs_in_part(part1,type,&feature); }
feature_count=I_count;//得到模型中的所有建模特征的數量
fea_tags =new tag_t[feature_count]; //為指針分配空間
char* fea_names[500];//定義指針,假定文件中特征數量不大于500個
{for(int i=0;i< feature_count;i++)
fea_names[i]=new char[133]; //為指針分配空間 }
{ feature=NULL_TAG;
for (int i=0;i< feature_count;i++)
{
UF_OBJ_cycle_objs_in_part(part1,type,&feature); //獲取文件中每一個特征的標識
fea_tags[i]=feature; //把特征標識存入數組
UF_MODL_ask_feat_name(feature,&feature_name);//獲取文件中每一個特征的名稱
strcpy(fea_names[i],feature_name);//把特征名稱存入數組
}
}
圖5的程序框圖用于刪除UG CAD模型中的倒角半徑小于誤差控制閥值的所有倒圓角特征。
圖5 抑制倒圓角特征算法程序框圖
2.4 特征間的父子關系
UG模型中的幾何對象是有序的,它們一一對應于涉及零件形體改變的每一步操作,系統根據對象間的依賴關系給出對象間的父子關系,所有特征節點都是依賴于其父特征節點作為其定位或其它操作的依據,一定刪除某個父節點特征,那么該特征所屬的所有子節點特征就會失去參考依據,從而引起模型更新的錯誤或該節點所有子特征信息的丟失,圖6是一個倒圓角特征在某個模型中的父子依賴關系示例,該特征依賴于一個立方體特征,一旦刪除該立方體特征,該倒圓角特征就會丟失。
在進行特征抑止的時候應充分考慮特征間的父子關系,如果某個可被抑止的特征是作為其它不可抑止特征的父特征存在的時候,那么該特征應該從可抑止特征列表中移除,如下函數用于獲取某個建模特征的父子依存關系:
extern int UF_MODL_ask_feat_relatives (
tag_t feature_tag,
int * num_parents,
tag_t ** parent_array,
int * num_children,
tag_t ** children_array );
3 結論
在實際應用中,經常需要把CAD模型轉換輸出作為VR模型的輸入來源,我們采用VC6和UG OPEN API開發了一個CAD模型簡化模塊,該模塊采用MFC對話框進行界面設計,圖7是其運行主界面,該模塊在UG內部環境下(Internal)運行,運行時輸入UG CAD文件所在文件夾及其它設置,系統自動對該文件夾下所有UG CAD文件進行模型簡化,從而大大提高工作效率。
圖8中a)是對每條邊倒圓角半徑為2的10*10*10mm3的立方體直接進行三角剖分的效果,共有108個三角形組成。b)是該立方體進行模型簡化以后(倒圓角特征被抑制了)的三角剖分效果,僅需12個三角形就完成了描述。對上述兩圖的三角剖分的表面距離容差、曲線距離容差均為1mm。圖9是對一個蓋子模型的處理結果比較,表面距離容差為2mm。
CAD模型的簡化可以大大減少模型中的細節特征,減少模型中參數曲面和公共邊界曲線的數量,由于這些細小特征所在的區域通常是模型離散和三角剖分以后三角形密度比較集中的區域,因此,本文提出的方法可以大大減少最終模型的三角形面片數量。
本方法實用性強、操作方便,可以大大減少模型簡化的工作量,并可以把簡化誤差嚴格控制在用戶的指定范圍內,目前已經在多個項目中取得了較好的使用效果,相信本技術會得到越來越廣泛的應用。