• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

      2018-01-15 03:16:20劉建秀
      裝備制造技術(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平臺上以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軟件平臺,以彎肘型尾水管的三維造型為例,來說明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.

      猜你喜歡
      樣體水管輪廓
      鼻呼出氣一氧化氮評估伴腺樣體肥大慢性鼻竇炎兒童腺樣體術(shù)后療效分析
      小兒推拿呵護(hù)孩子健康成長(八十) 呼嚕娃之腺樣體肥大
      安奇奇與小cool龍(第五回)
      OPENCV輪廓識別研究與實(shí)踐
      基于實(shí)時(shí)輪廓誤差估算的數(shù)控系統(tǒng)輪廓控制
      首席水管工
      特別文摘(2018年6期)2018-08-14 09:25:14
      小賽和水管
      鼻內(nèi)窺鏡下腺樣體切除術(shù)治療兒童分泌性中耳炎的臨床療效觀察
      在線學(xué)習(xí)機(jī)制下的Snake輪廓跟蹤
      馬虎的水管工
      大丰市| 海丰县| 平和县| 东台市| 三江| 金平| 原平市| 镶黄旗| 澄城县| 宁波市| 涞源县| 禹州市| 石首市| 清镇市| 靖宇县| 扎赉特旗| 铜山县| 呼玛县| 舞阳县| 永清县| 彩票| 瓮安县| 衡阳市| 灵璧县| 扶绥县| 安化县| 杭州市| 庆阳市| 武宣县| 临江市| 广东省| 辽中县| 凤翔县| 宜阳县| 呼伦贝尔市| 石门县| 定州市| 益阳市| 鄂托克旗| 咸阳市| 吉木乃县|