999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Parasolid的放樣函數實現異構體模型構造

2018-01-15 03:16:20劉建秀
裝備制造技術 2017年11期

劉建秀

0 引言

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

1 放樣

在三維建模中,放樣是基于一組有規律的輪廓,對輪廓施加一定的對應關系或約束來獲得光滑的放樣體。因此,在放樣操作中,輪廓間點的對應關系和外加約束對放樣體的精確度有決定性作用。在Parasolid函數庫中,實現放樣的函數是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)

其中,前三個為輸入參數,n_profiles為參與放樣的輪廓個數;profiles[]為參與放樣的輪廓元素,如果輪廓為面元素,最終結果會生成體;如果輪廓為線元素,可以生成面;start_vertices為放樣輪廓的起始點,記錄輪廓間起始頂點的匹配關系,以這些起始點為基準,按照輪廓元素中點的生成順序產生對應關系,理論上應該是一一對應,實際生產過程中,大部分情況都不是一對一的關系,具體對應關系可見第3節的介紹;options是生成放樣體時可以自定義的一些屬性值,其內容包括末端條件、導線、拓撲形式、彎曲度、精度等,是控制放樣體質量的一個非常重要的參數;lofted_body是一個輸出參數,存儲生成的結果。

2 放樣體的生成

本節利用第2部分中介紹的放樣函數來生成放樣體。在函數PK_BODY_make_lofted_body中,options是決定最終三維實體質量的關鍵參數,這里重點介紹這個參數。

一般先利用宏定義PK_BODY_make_lofted_body_o_m對結構體參數 PK_BODY_make_lofted_body_o_t進行初始化,將其設為默認參數,然后按需進行個性化設置。在該參數中,需要重點說明的幾個成員參數是:

(1)末端條件

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

(2)頂點匹配規則

參數PK_BODY_vertex_matches_t表示頂點的匹配關系,這是一個數組,存放多個體(頂點)之間的兼容或匹配關系,其原型為:

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

在上面的結構中,n_mappings取值為輪廓的個數減1,表示以第一個輪廓為參考,考慮其他輪廓與參考輪廓的匹配關系;PK_BODY_vertex_match_t存放當前輪廓與其相鄰的輪廓的頂點匹配信息,定義如下:

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

其中,profile表示當前輪廓;n_matches表示需要匹配的頂點個數,如果前后輪廓頂點個數相等,取其個數即可,如果不等,取最大的;頂點的對應關系存放在數組matches中,這個參數最終決定放樣體質量,該結構中存放著當前輪廓的當前頂點對應著相鄰輪廓的哪一個頂點,每個頂點都要設置匹配關系,可能一對一,多對一或者一對多,具體設置可見第四節中的例子。

3 程序設計及實現

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

圖1 尾水管單線圖

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

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

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

圖3 輪廓示意圖

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

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

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

(3)輪廓3-18為橢圓矩形-橢圓矩形,頂點為8-8,屬于相同頂點個數一一對應匹配;

(4)輪廓18-19為橢圓矩形-矩形,頂點為8-4,屬于不同頂點個數的匹配;

(5)輪廓19-20為矩形-矩形漸變,頂點為4-4,屬于相同頂點個數一一對應匹配;

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

//頂點對應關系

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對應

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 對應

...

}

....

//生成體

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)

根據上面的描述,生成的異構體模型如圖4所示,其中,左邊表示生成體所需要的輪廓,右邊是生成的實體。在圖5中,用該函數實現了一個蝸殼體的三維模型構建。

圖4 尾水管放樣生成體

圖5 蝸殼放樣體生成

4 結束語

本文詳細介紹了Parasolid的放樣函數及其使用方法,針對彎肘型尾水管和蝸殼體的實例,用該方法成功實現了異構體三維模型的構建,也證明了該函數可用于其他異構體建模。

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

[2]宋 錦,張應中,羅曉芳.基于Parasolid的導動與放樣特征造型的實現[J].計算機輔助工程,2001,10(3):23-28.

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

[4]林 焰,王忠勇,紀卓尚.基于Parasolid船體結構造型程序設計[J].大連理工大學學報,2000,40(4):473-474.

主站蜘蛛池模板: 国产乱子伦视频在线播放| 久久婷婷色综合老司机| 最新亚洲人成无码网站欣赏网| 久久国产乱子伦视频无卡顿| 久久亚洲AⅤ无码精品午夜麻豆| 五月天久久婷婷| 久久久久久久蜜桃| 亚洲精品自拍区在线观看| 亚洲成a人片| 亚洲国产日韩在线观看| 国产福利免费视频| 婷婷伊人久久| 毛片a级毛片免费观看免下载| 亚洲色欲色欲www在线观看| 国产专区综合另类日韩一区| 欧美全免费aaaaaa特黄在线| 欧美一级片在线| 亚洲一区国色天香| 毛片基地美国正在播放亚洲| 欧美亚洲欧美| 久996视频精品免费观看| jizz亚洲高清在线观看| 欲色天天综合网| 国产午夜人做人免费视频| 国产精品无码AV片在线观看播放| 九九九精品成人免费视频7| 好紧好深好大乳无码中文字幕| 精品乱码久久久久久久| 亚洲狼网站狼狼鲁亚洲下载| 国产精品美女自慰喷水| 亚洲欧洲AV一区二区三区| 99热这里只有精品在线观看| 亚洲人人视频| 日本不卡在线播放| 激情无码字幕综合| 91亚洲精选| 熟妇人妻无乱码中文字幕真矢织江| 亚洲丝袜第一页| 亚洲国产清纯| 国产一区二区三区精品久久呦| 国产成人免费视频精品一区二区| 欧美午夜在线视频| 国产一级毛片高清完整视频版| 国产免费精彩视频| 亚洲高清在线播放| 九九视频免费在线观看| 欧美人与动牲交a欧美精品| 先锋资源久久| 欧美性精品| 亚洲午夜天堂| 亚洲第一在线播放| 99久久精彩视频| 国产伦精品一区二区三区视频优播| 久热精品免费| 一级毛片在线免费视频| av尤物免费在线观看| 自拍偷拍一区| 精品国产一区91在线| 亚洲一区二区精品无码久久久| 首页亚洲国产丝袜长腿综合| 毛片免费网址| 特级做a爰片毛片免费69| 黄色网站在线观看无码| 亚洲天堂伊人| 欧美一区二区三区不卡免费| 亚洲无码视频图片| 免费久久一级欧美特大黄| 亚洲日产2021三区在线| 国产成人1024精品| yy6080理论大片一级久久| 精品成人一区二区| 欧美伦理一区| 97视频免费看| 青青草原国产精品啪啪视频| 日韩无码黄色| 无码中文字幕加勒比高清| 国产对白刺激真实精品91| 久久久国产精品无码专区| 91国内外精品自在线播放| 91丝袜美腿高跟国产极品老师| 国产18页| 午夜a视频|