国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Parasolid的放樣函數(shù)實(shí)現(xiàn)異構(gòu)體模型構(gòu)造

2018-01-15 03:16劉建秀
裝備制造技術(shù) 2017年11期
關(guān)鍵詞:樣體水管輪廓

劉建秀

0 引言

目前三維實(shí)體的模型構(gòu)造主要基于兩種內(nèi)核:ACIS和Parasolid。其中,Parasolid是一款功能強(qiáng)大的實(shí)體建模核心軟件,用邊界表示法對實(shí)體進(jìn)行幾何建模[1,3,4]。在 Parasolid 中,采用導(dǎo)動(dòng)(sweep)和放樣(loft)兩種特征造型方法進(jìn)行模型構(gòu)造。本文詳細(xì)介紹放樣函數(shù)的使用方法,在VC++6.0平臺(tái)上以MicrostationV8為CAD系統(tǒng)原型,調(diào)用Parasolid圖形內(nèi)核函數(shù)庫的放樣函數(shù)實(shí)現(xiàn)特殊實(shí)體的建模,該實(shí)例應(yīng)用于彎肘型尾水管的三維建模,并可用于其他異構(gòu)體模型構(gòu)造。

1 放樣

在三維建模中,放樣是基于一組有規(guī)律的輪廓,對輪廓施加一定的對應(yīng)關(guān)系或約束來獲得光滑的放樣體。因此,在放樣操作中,輪廓間點(diǎn)的對應(yīng)關(guān)系和外加約束對放樣體的精確度有決定性作用。在Parasolid函數(shù)庫中,實(shí)現(xiàn)放樣的函數(shù)是PK_BODY_make_lofted_body,其原型為:

int PK_BODY_make_lofted_body (int n_profiles,const PK_BODY_t profiles [],const PK_VERTEX_t start_vertices[],const PK_BODY_make_lofted_body_o_t*options, PK_BODY_tracked_loft_r_t*constlofted_body)

其中,前三個(gè)為輸入?yún)?shù),n_profiles為參與放樣的輪廓個(gè)數(shù);profiles[]為參與放樣的輪廓元素,如果輪廓為面元素,最終結(jié)果會(huì)生成體;如果輪廓為線元素,可以生成面;start_vertices為放樣輪廓的起始點(diǎn),記錄輪廓間起始頂點(diǎn)的匹配關(guān)系,以這些起始點(diǎn)為基準(zhǔn),按照輪廓元素中點(diǎn)的生成順序產(chǎn)生對應(yīng)關(guān)系,理論上應(yīng)該是一一對應(yīng),實(shí)際生產(chǎn)過程中,大部分情況都不是一對一的關(guān)系,具體對應(yīng)關(guān)系可見第3節(jié)的介紹;options是生成放樣體時(shí)可以自定義的一些屬性值,其內(nèi)容包括末端條件、導(dǎo)線、拓?fù)湫问?、彎曲度、精度等,是控制放樣體質(zhì)量的一個(gè)非常重要的參數(shù);lofted_body是一個(gè)輸出參數(shù),存儲(chǔ)生成的結(jié)果。

2 放樣體的生成

本節(jié)利用第2部分中介紹的放樣函數(shù)來生成放樣體。在函數(shù)PK_BODY_make_lofted_body中,options是決定最終三維實(shí)體質(zhì)量的關(guān)鍵參數(shù),這里重點(diǎn)介紹這個(gè)參數(shù)。

一般先利用宏定義PK_BODY_make_lofted_body_o_m對結(jié)構(gòu)體參數(shù) PK_BODY_make_lofted_body_o_t進(jìn)行初始化,將其設(shè)為默認(rèn)參數(shù),然后按需進(jìn)行個(gè)性化設(shè)置。在該參數(shù)中,需要重點(diǎn)說明的幾個(gè)成員參數(shù)是:

(1)末端條件

參數(shù)PK_BODY_loft_end_conds_t指定輪廓的末端條件,對放樣輪廓的起始和終止進(jìn)行約束使其符合形狀要求。這是一個(gè)結(jié)構(gòu)體參數(shù),可以通過設(shè)置其成員變量PK_PARAM_periodic_t的值為PK_PARAM_periodic_yes_c約定輪廓是首尾相連的,或者為PK_PARAM_periodic_no_c設(shè)置輪廓首尾不相連;另外一個(gè)成員變量PK_BODY_loft_deriv_conds_t通過首尾輪廓時(shí)的曲率限制,可取值為K_BODY_loft_unconstrained_c無約束,PK_BODY_loft_natural_c曲率為0,以及其他值如:向量約束、面約束和平面約束[2]。

(2)頂點(diǎn)匹配規(guī)則

參數(shù)PK_BODY_vertex_matches_t表示頂點(diǎn)的匹配關(guān)系,這是一個(gè)數(shù)組,存放多個(gè)體(頂點(diǎn))之間的兼容或匹配關(guān)系,其原型為:

struct PK_BODY_vertex_matches_t{int n_mappings;PK_BODY_vertex_match_t*mappings;};

在上面的結(jié)構(gòu)中,n_mappings取值為輪廓的個(gè)數(shù)減1,表示以第一個(gè)輪廓為參考,考慮其他輪廓與參考輪廓的匹配關(guān)系;PK_BODY_vertex_match_t存放當(dāng)前輪廓與其相鄰的輪廓的頂點(diǎn)匹配信息,定義如下:

struct PK_BODY_vertex_match_s{PK_BODY_t profile;int n_matches;PK_BODY_one_vertex_match_t*matches;}

其中,profile表示當(dāng)前輪廓;n_matches表示需要匹配的頂點(diǎn)個(gè)數(shù),如果前后輪廓頂點(diǎn)個(gè)數(shù)相等,取其個(gè)數(shù)即可,如果不等,取最大的;頂點(diǎn)的對應(yīng)關(guān)系存放在數(shù)組matches中,這個(gè)參數(shù)最終決定放樣體質(zhì)量,該結(jié)構(gòu)中存放著當(dāng)前輪廓的當(dāng)前頂點(diǎn)對應(yīng)著相鄰輪廓的哪一個(gè)頂點(diǎn),每個(gè)頂點(diǎn)都要設(shè)置匹配關(guān)系,可能一對一,多對一或者一對多,具體設(shè)置可見第四節(jié)中的例子。

3 程序設(shè)計(jì)及實(shí)現(xiàn)

本節(jié)基于VC++6.0軟件平臺(tái),以彎肘型尾水管的三維造型為例,來說明parasolid中放樣函數(shù)的使用。彎肘型尾水管由肘管段和出口擴(kuò)散段組成,三維建模的難點(diǎn)在于肘管段的繪制,它是一個(gè)90°轉(zhuǎn)彎的變截面彎管,進(jìn)口斷面為圓形,經(jīng)橢圓矩形截面漸變到出口處的矩形截面,首尾截面輪廓線相差較大,且肘管段尺寸難以用理論設(shè)計(jì),通常采用推薦的標(biāo)準(zhǔn)肘管尺寸,參數(shù)由水輪機(jī)制造廠家提供。圖1為制造廠家提供的尾水管單線圖,這是一個(gè)輪廓截面由圓到方漸變的尾水管模型,共20個(gè)截面,截面參數(shù)如圖1所示。

圖1 尾水管單線圖

在參數(shù)表中,BCDE四個(gè)參數(shù)確定了輪廓在右視圖中的相對位置(坐標(biāo)),offset參數(shù)確定輪廓相對于中心線的偏移量(見圖1左下頂視圖)。W和H分別為橢圓矩形的寬度和高度,Rroof、Rfloor分別為橢圓矩形上、下圓角的半徑,如圖2所示。

圖2 過渡輪廓(橢圓矩形截面)示意圖

為了生成放樣體,需要將每一個(gè)輪廓按照順序畫在以落點(diǎn)為坐標(biāo)原點(diǎn)的相對位置上,然后用放樣函數(shù)PK_BODY_make_lofted_body來生成體,將輪廓及其頂點(diǎn)分別記錄在數(shù)組profiles和vertices中,需要注意的是,輪廓形狀要嚴(yán)格按照表格中的數(shù)據(jù)來畫,例如第一個(gè)輪廓為半徑為4 600的圓,但是畫圖時(shí)需要按照圖2所標(biāo)注的各參數(shù)來畫,也即該輪廓由四個(gè)弧段組成,如圖3左圖所示,并且在畫輪廓的時(shí)候要注意每個(gè)輪廓的起始點(diǎn)和形成方向應(yīng)該一致,以保證頂點(diǎn)匹配的正確性。

圖3 輪廓示意圖

首先,對圖1表中數(shù)據(jù)進(jìn)行分析可知,末端條件中首輪廓為圓形,尾端輪廓為矩形,且不相連,所以在定義放樣參數(shù)PK_BODY_make_lofted_body_o_t options時(shí),限制其終端條件options.end_conditions.periodic=PK_PARAM_periodic_no_c;其次,分析輪廓形式可知,輪廓變化規(guī)律為圓-橢圓矩形-矩形,在下面的內(nèi)容中,為了方便討論,記“輪廓1到輪廓2的變化規(guī)律”為“輪廓1-2”,以此類推,則頂點(diǎn)匹配上有幾種情況:

(1)輪廓1-2為圓形-橢圓矩形,如圖3所示,頂點(diǎn)為4-6,屬于不同頂點(diǎn)個(gè)數(shù)的匹配;

(2)輪廓2-3為橢圓矩形-橢圓矩形(圖3右圖~圖2),頂點(diǎn)為6-8,屬于不同頂點(diǎn)個(gè)數(shù)的匹配;

(3)輪廓3-18為橢圓矩形-橢圓矩形,頂點(diǎn)為8-8,屬于相同頂點(diǎn)個(gè)數(shù)一一對應(yīng)匹配;

(4)輪廓18-19為橢圓矩形-矩形,頂點(diǎn)為8-4,屬于不同頂點(diǎn)個(gè)數(shù)的匹配;

(5)輪廓19-20為矩形-矩形漸變,頂點(diǎn)為4-4,屬于相同頂點(diǎn)個(gè)數(shù)一一對應(yīng)匹配;

綜上,頂點(diǎn)的匹配是4-6-8-4,以第一種情況為例,顯然只要設(shè)置頂點(diǎn)的匹配規(guī)則為L1_1—L2_1,L1_2—L2_2,L1_2—L2_3,L1-3—L2_4,L1_4—L2_5,L1_4—L2_6,將此對應(yīng)關(guān)系存儲(chǔ)在數(shù)組matches中。部分關(guān)鍵c++代碼如下:

//頂點(diǎn)對應(yīng)關(guān)系

PK_BODY_vertex_matches_t matches;

matches.n_mappings=profileNum-1;

matches.mappings=new PK_BODY_vertex_match_t[profileNum-1];

PK_BODY_vertex_match_t match;

if(currentCount==4&&nextCount==6)

{

match.n_matches=6;

match.matches=new PK_BODY_one_vertex_match_t[6];

PK_BODY_one_vertex_match_t oneVertexMatch;

//1-1對應(yīng)

currentVertex=profileVertexVec[profileIndex][0];

nextVertex=profileVertexVec[profileIndex+1][0];

.....

oneVertexMatch.profile_vertex=(PK_VERTEX_t)currentVertex;

oneVertexMatch.matched_vertex=(PK_VERTEX_t)nextVertex;

match.matches[0]=oneVertexMatch;

//2-2 對應(yīng)

...

}

....

//生成體

PK_BODY_make_lofted_body_o_t options;

PK_BODY_make_lofted_body_o_m(options);

options.end_conditions.periodic = PK_PARAM_periodic_no_c;

options.matches=pMatches;

int failureCode=PK_BODY_make_lofted_body(nProfiles,profiles,vertices,&options,&loft_body)

根據(jù)上面的描述,生成的異構(gòu)體模型如圖4所示,其中,左邊表示生成體所需要的輪廓,右邊是生成的實(shí)體。在圖5中,用該函數(shù)實(shí)現(xiàn)了一個(gè)蝸殼體的三維模型構(gòu)建。

圖4 尾水管放樣生成體

圖5 蝸殼放樣體生成

4 結(jié)束語

本文詳細(xì)介紹了Parasolid的放樣函數(shù)及其使用方法,針對彎肘型尾水管和蝸殼體的實(shí)例,用該方法成功實(shí)現(xiàn)了異構(gòu)體三維模型的構(gòu)建,也證明了該函數(shù)可用于其他異構(gòu)體建模。

[1]鄭春峰,王永皎,何利力.基于 PARASOLID的CAD系統(tǒng)開發(fā)[J].計(jì)算機(jī)應(yīng)用研究,2006,23(8):216-217,250.

[2]宋 錦,張應(yīng)中,羅曉芳.基于Parasolid的導(dǎo)動(dòng)與放樣特征造型的實(shí)現(xiàn)[J].計(jì)算機(jī)輔助工程,2001,10(3):23-28.

[3]潘如剛,錢錦鋒,陳志楊,等.基于Parasolid的CAD系統(tǒng)中螺旋實(shí)體的建模[J].計(jì)算機(jī)工程與應(yīng)用,2003,39(31):61-63.

[4]林 焰,王忠勇,紀(jì)卓尚.基于Parasolid船體結(jié)構(gòu)造型程序設(shè)計(jì)[J].大連理工大學(xué)學(xué)報(bào),2000,40(4):473-474.

猜你喜歡
樣體水管輪廓
安奇奇與小cool龍(第五回)
OPENCV輪廓識(shí)別研究與實(shí)踐
發(fā)現(xiàn)前列腺結(jié)石怎么辦?
前列腺結(jié)石是怎么回事
首席水管工
小賽和水管
扁桃體摘除與鼻內(nèi)鏡下腺樣體切除聯(lián)合治療小兒鼾癥的療效觀察
低溫等離子刀輔助內(nèi)鏡下兒童扁桃體和腺樣體切除術(shù)效果評價(jià)
高速公路主動(dòng)發(fā)光輪廓標(biāo)應(yīng)用方案設(shè)計(jì)探討
馬虎的水管工