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

?

基于AutoCAD自由曲面的開發(fā)與應用①

2018-06-28 07:22:32,,,
關(guān)鍵詞:分點弦長樣條

, , ,

(武漢大學土木建筑工程學院,湖北 武漢 430072)

0 引 言

隨著建筑美學與建筑力學的融合,復雜曲面在建筑行業(yè)的應用越來越廣泛。曲面不再局限于傳統(tǒng)的能用函數(shù)表達的解析曲面,出現(xiàn)造型多變、富有動感的自由曲面,網(wǎng)格劃分美觀流暢,具有強大的視覺效果。而AutoCAD是目前國內(nèi)外廣泛使用的計算機輔助設(shè)計圖形處理軟件,具有開放的結(jié)構(gòu)體系,用戶可以結(jié)合AutoCAD二次開發(fā)的特點和自身需求,開發(fā)屬于自己的CAD系統(tǒng)[1]。ObjectARX是基于C++語言為基礎(chǔ),支持面向?qū)ο筮M行編程,是使用最為廣泛一項AutoCAD二次開發(fā)工具。袁文輝[2]在AutoCAD中實現(xiàn)對實體邊界曲面數(shù)據(jù)的訪問,用于在數(shù)控加工中生成和驗證刀具路徑。許俊等[3]基于以AutoCAD2007開發(fā)平臺的鋼結(jié)構(gòu)設(shè)計軟件USSCAD,實現(xiàn)了空間復雜曲面結(jié)構(gòu)的參數(shù)化建模。

本文基于AutoCAD2007進行二次開發(fā),使用ObjectARX技術(shù),對自由曲面進行數(shù)據(jù)訪問,針對獲取曲面上的曲線和由點生成曲面兩個方面進行研究,實現(xiàn)了對自由曲面的邊界曲線的提取、曲面分解成曲線、曲線投影到曲面上和通過三維點陣擬合自由曲面等功能。

1 NURBS曲面

用NURBS方法來表示曲線和曲面具有顯著的優(yōu)越性[4],在形狀定義方面有很強大的功能,同時能為自由曲線、曲面的精確表達提供統(tǒng)一的數(shù)學形式。AutoCAD系統(tǒng)中的自由曲面就是采用三次NURBS方法表示的[5]。NURBS通過控制點、權(quán)因子、基函數(shù)三個因素,就可精確表示任意自由曲面和曲線,控制著曲線曲面的形狀[6]。

NURBS曲面的有理分式表達如下:

式中,pi,j為呈拓撲行陣列的m×n雙向網(wǎng)格中的第i行第j個點;i為控制點u方向的編號及u向B樣條的基函數(shù)編號,i=0,1,……m;j為控制點v方向的編號及v向B樣條的基函數(shù)編號,j=0,1,……n;wi,j為與點pi,j對應的權(quán)數(shù),控制各點對構(gòu)型的影響程度;Ni,3(u)為u向三次B樣條基函數(shù);Nj,3(v)為v向三次B樣條基函數(shù)。Ni,3(u)和Nj,3(v)分別是由u向和v向的節(jié)點矢量按三次德布爾遞推公式計算得到。

AutoCAD已經(jīng)將用NURBS方法創(chuàng)建自由曲面的函數(shù)封裝在ObjectARX函數(shù)包中,用B-rep方法儲存供用戶讀取和編輯操作。

2 曲面定向生成曲線

2.1 提取邊界曲線

對于由AutoCAD自生成的曲面或者從外部導入的可識別的曲面,通過函數(shù)判定是否為AcDbSuface類,判定成功后即可通過調(diào)用thicken()函數(shù)加厚形成實體并添加至模型空間。利用實體類的getSubentPathsAtGSMaker函數(shù)獲得該實體的子實體(曲面)。通過AcBrFace類對象創(chuàng)建與實體相關(guān)的AcGeSurface曲面對象,調(diào)用getEnvelope函數(shù)獲得該曲面拓撲矩形參數(shù)區(qū)間范圍[7]。相關(guān)操作函數(shù)如下:

對于四邊形邊界的自由曲面,其四條邊界分別對應的是u=0、u=1,v=0、v=1。將這四種情況下對應的相關(guān)參數(shù)(param值)通過evalPoint函數(shù)反射到曲面得到一系列的點,利用這一系列的點可生成三次樣條曲線,即為自由曲面的邊界。

對于圓形邊界類曲面,在某條邊界上所有參數(shù)點映射得到均為同一點,即第四條邊界曲線為一個點。對于圓環(huán)類曲面,當u或v中只有一向閉合時,只有三條邊界曲線(存在兩條邊界曲線重合);當u、v向均閉合時,只存在兩條邊界曲線(邊界曲線兩兩重合)。

//getSubentPathsAtGSMaker: 獲得實體對象的子實體函數(shù)

//lowerBound: 獲得曲面參數(shù)域的下邊界函數(shù)

//upBound: 獲得曲面參數(shù)域的上邊界函數(shù)

//isClosedInU: 判斷曲面是否在u向閉合

//isClosedInV: 判斷曲面是否在v向閉合

//evalPoint: 根據(jù)拓撲參數(shù)反射得到曲面上對應點的函數(shù)

2.2 曲面生成等分線

2.2.1 曲線等分

如圖1所示,將曲線按弦長進行等分,曲線等分后各段的弧長基本一致。按等弦長劃分曲線,其基本流程如圖2所示。

以一條曲線等分成10份為例,其基本步驟如下:

1)通過將曲線等分成一定數(shù)量的點,求出相鄰兩點的距離值,將所有距離值相加即可得到曲線的近似長度。將曲線的近似長度除以10,即可得到初始桿件長L??紤]到后期修改桿件長度,同時求出將曲線分為9段和11段的初始桿件長,分別記做Lmax與Lmin。

2)將參數(shù)域值等分成10份,作為△u=0.1,用以調(diào)整參數(shù)值。初始點Pt1為參數(shù)值等于0的點,Pt2點的參數(shù)值初始設(shè)為0.1,并將其參數(shù)域范圍設(shè)置為(umin,umax),umin=0,umax=0.1。

3)求出Pt2與Pt1之間桿件的長度l。若l>L,則保證umin=0,umax=0.1;若l

4)求出Pt2的正確坐標后,將Pt2作為初始點,尋找Pt3,使其滿足兩點的距離等于L。

圖1 曲線弦等分

圖2 曲線弦等分流程

5)當?shù)戤吅?,求出最后一個節(jié)點與曲線的終點的距離。若若共有n+1個等分點,且最后一段的長度小于允許的長度誤差?,則將最后一個等分點替換成曲線終點,曲線等分完成。若是等分點數(shù)目小于n+1,則說明L取大了,需要減小,L的新范圍為(L,Lmin);若是等分點數(shù)目大于n+1或者等分點數(shù)目等于n+1但最后一段的長度超出誤差范圍,則說明L取小了,L的新范圍為(Lmax,L)。同樣采用二分法不斷的確定新的L,直至滿足判斷2。

按等弦長劃分可以將曲線均勻的等分,每段的弦長均相等。但是按弦長等分時,若是曲線的曲率變化太大,所有等分點連接形成的新曲線與原有的曲線存在一定的偏差,可按等分u向值來劃分曲線,但每段的弦長長度有差異。

2.2.2 曲面分解成曲線

將曲面分解形成一系列的等分曲線,通過操作曲線組可以達到將曲面劃分網(wǎng)格的目的??蓪崿F(xiàn)沿曲面的u或v向生成等分曲線,以生成u向曲線為例,假設(shè)生成n條曲線:

1)將AcDbSurface轉(zhuǎn)換成AcGeSurface,獲得該曲面拓撲矩形參數(shù)區(qū)間范圍。

2)根據(jù)曲面參數(shù)域的上下邊界,分別生成v=0,v=1/(n-1)…v=1所對應的n條曲線。

3)將所有曲線按弦長等分成n-1段,將每條曲線對應的n個等分點存入相應的數(shù)組之中。

4)按順序提取每個數(shù)組之中的第k個值,存入一個新的數(shù)組之中,構(gòu)成第k條NURBS曲線。

為生成u向的曲線,首先在程序內(nèi)部生成v向的曲線,然后按弦等分獲得等分點,通過等分點構(gòu)造新的曲線。通過這一過程可使得生成的曲線在v向的間隔相對比較均勻,若是將u向的曲線也按弦長等分,即可形成比較均勻的網(wǎng)格。圖3為一自由曲面生成曲線的實例。

圖3 自由曲面分解實例

2.3 曲線投影

ObjectARX提供的AcGeCurveSurfInt類是用來存儲一條3d曲線與曲面表面交集的數(shù)據(jù)。利用AcGeCurveSurfInt類的intPoint函數(shù)可以方便的返回AcGeSurface曲面與曲線的交點。將曲線分解成一系列的點,構(gòu)造新的曲線與曲面相交,得到一系列的交點構(gòu)造新的曲線,即可實現(xiàn)曲線投影至曲面。曲線投影的基本流程如下:

1)選擇相應的目標曲線與曲面。將曲面轉(zhuǎn)換成可操作的AcGeSurface曲面。

2)指定投影方向的向量a。

3)將目標曲線按u值等分成300個點。構(gòu)造通過等分點且方向向量為a的直線(AcGeLine3d類)。

4)求出每條構(gòu)造直線與曲面的交點,將這些點按順序存入數(shù)組之中,生成一條樣條曲線,即為曲線在曲面上的投影曲線。

當需要的投影的目標曲線相對較短時,在曲面上的投影曲線無法與曲面邊界相交。在進行投影過程中,可選擇延長目標曲線,保證投影的曲線與曲面邊界有交點。曲線延長的算法如下:

1)將曲線等分成100點,并按順序存入數(shù)組ptarry。

2)獲取曲線首尾兩點的切線斜率。曲線兩端沿切向方向往外延伸L/20(L為曲線的長度),生成新點pt1、pt2,分別存入數(shù)組ptarry1、ptarry2。

3)將pt1、pt2投影至曲面。如果存在投影點則繼續(xù)(2)步驟。如果不存在投影點則停止延伸。

4)假設(shè)最后停止延伸時的pt1= ptarry1[n],則上一點為ptarry1[n-1]。采用二分法不斷縮小兩點之間的區(qū)間,即可得到邊界交點pt1。同理可得到末端與邊界的交點pt2。

5)通過曲線點的順序,將數(shù)組ptarry、ptarry1、ptarry2合并,構(gòu)造新的曲線投影至曲面。

將投影至曲面上的第一條曲線分解為100個點,沿平移方向平移指定距離(平移方向為該點的切線方向與投影方向的叉積),構(gòu)成新的目標曲線,投影至曲面。以新生成的曲線為目標曲線,重復上述平移投影操作,可生成覆蓋整個曲面的一系列曲線。以一條直線為投影曲線,投影至一封閉曲面,將得到如圖4所示的曲線組。

圖4 曲線投影至曲面

3 網(wǎng)格劃分應用

一般自由曲面的網(wǎng)格劃分都是采用映射法。映射法原理簡單,將參數(shù)域的網(wǎng)格映射回物理空間,在曲面上生成網(wǎng)格。映射法雖然運算速度快,但易出現(xiàn)網(wǎng)格失真[8],如圖4所示。而獲得曲面上的曲線,將曲線按弦長等分,將所有的等分點按一定順序連接形成網(wǎng)格,包括形成三角形網(wǎng)格和四邊形網(wǎng)格,如圖5~圖7所示。

圖6 曲線按弦等分生成三角形網(wǎng)格

當曲面尺寸發(fā)生較大的變化時,可以將曲線分成幾組,生成網(wǎng)格。各組曲線之間通過更改網(wǎng)格形式和拓撲關(guān)系進行過渡,使網(wǎng)格劃分更均勻,如圖8所示。

4 點陣形成曲面

4.1 生成機制

AutoCAD中只要提供一系列的控制元素,包括邊界曲線、邊界點、中部控制曲線和點,就可以通過旋轉(zhuǎn)、掃掠或放樣的方式生成自由曲面。其中放樣曲面的控制元素是經(jīng)向曲線和緯向曲線。通過合理的點陣即可形成一系列的曲線作為放樣曲面的控制元素,生成自由曲面?;玖鞒倘缦拢?/p>

1)讀入控制點坐標,每行的控制點形成曲面經(jīng)線。將每條曲面經(jīng)線的首尾控制點分別存儲在對象標識符容器。利用曲面經(jīng)線的首尾點,形成兩條曲面緯線并存入對象標識符容器中。

圖7 球面沿兩正交投影線投影形成網(wǎng)格

圖8 曲面分段劃分網(wǎng)格

2)聲明AcDbLoftedSurface類(放樣曲面類)對象。根據(jù)給定的經(jīng)向曲線與緯向曲線調(diào)用createLoftedSurface()函數(shù)形成空間放樣曲面。

3)加厚曲面形成三維實體AcDb3dSolid,用getSubentPathsAtGsMarker()函數(shù)獲得子實體路徑。

4)聲明AcBrFace類對象,調(diào)用set()函數(shù)指向子實體所代表的曲面。實體的第一個曲面即為用于擬合的曲面。

5)調(diào)用getSurface()函數(shù)獲得實體相關(guān)的曲面對象,并對其進行操作。

通過三維點陣生成曲面,可以通過修改點陣中的具體點的數(shù)值來修改曲面的形狀。與手動繪制多條樣條曲線然后放樣形成曲面相比,要更加快捷,便于修改。

4.2 風荷載擬合

在工程中,異形屋面的風壓無法按荷載規(guī)范計算,需要進行風洞試驗。但風洞試驗無法得到屋面所有節(jié)點的風壓,一般假設(shè)風壓測點處周圍節(jié)點的風壓數(shù)值與該測點一致,或者使用三維插值[10]來擬合風壓分布。

自由曲面是通過三次樣條曲線擬合而成,三次樣條曲線又是通過一系列的點擬合而成。使用三維點陣生成自由曲面,利用其三次樣條插值的特性,可以用來模擬風壓分布。以風洞試驗的結(jié)果形成三維點陣(點的X、Y坐標表示位置,Z坐標表示風壓大小),生成覆蓋整個屋面結(jié)構(gòu)自由曲面來擬合風壓分布,得到所有節(jié)點的風壓值。

5 結(jié) 論

基于AutoCAD2007開發(fā)平臺,使用ObjectARX技術(shù)對NURBS曲面進行了二次開發(fā),主要結(jié)論如下:

1)實現(xiàn)了提取自由曲面邊界線、生成自由曲面等分線、曲線投影至曲面等功能。

2)實現(xiàn)了曲線按弦長等分功能,通過操作生成的覆蓋自由曲面的曲線組,可劃分出較好的網(wǎng)格。

3)通過三維點陣生成自由曲面,不僅提高了自由曲面建模和修改的效率,也可用于處理風洞試驗數(shù)據(jù)。

參考文獻:

[1] 方貴勝, 王建軍.AutoCAD二次開發(fā)技術(shù)及其應用研究[J].機床與液壓, 2007, 35(6): 186-212.

[2] 袁文輝.AutoCAD中實體曲面邊界數(shù)據(jù)的提取及應用[J].機械研究與應用, 2001, 14(3): 44-48.

[3] 許俊, 杜新喜, 孟仲永, 等.基于AutoCAD的空間復雜曲面結(jié)構(gòu)參數(shù)化建模[J].工業(yè)建筑, 2014, 44(S): 383-387.

[4] Gao B, Hao C, Li T, et al.Grid Generation on Free-form Surface Using Guide Line Advancing and Surface Flattening Method [J].Advances in Engineering Software, 2017, 110(C):98-109.

[5] 杜新喜.大跨空間結(jié)構(gòu)設(shè)計與分析[M].北京, 中國建筑工業(yè)出版社, 2014.

[6] 施法中.計算機輔助幾何設(shè)計與非均勻有理B樣條[M].北京: 高等教育出版社, 2001.

[7] 屈振生, 何恒利.ObjectARx應用程序開發(fā)AcBr與AcGe類庫的應用[J].計算機應用, 2001(7), 66-67.

[8] 丁慧.自由形態(tài)空間網(wǎng)格結(jié)構(gòu)的網(wǎng)格設(shè)計方法研究與實現(xiàn)[D].浙江大學,2014.

[9] 丁慧, 羅堯治.自由形態(tài)網(wǎng)殼結(jié)構(gòu)網(wǎng)格生成的等參線分割法[J].浙江大學學報(工學版), 2014, 48(10): 1795-1801, 1834.

[10] 張慎, 陳興, 李霆.計算機技術(shù)在大跨度屋蓋結(jié)構(gòu)風洞試驗數(shù)據(jù)處理中的應用[J].建筑結(jié)構(gòu), 2011, 41(7): 106-110.

猜你喜歡
分點弦長樣條
一元五次B樣條擬插值研究
淺談圓錐曲線三類弦長問題
來自低谷的你
青年生活(2020年13期)2020-05-26 01:51:33
定比分點之換底分點伸縮法
弦長積分的極限性質(zhì)與不等式
五禽戲“動作節(jié)分點”劃分與學練建議(三)
健身氣功(2018年2期)2018-06-04 06:51:02
弦長積分的極限性質(zhì)與不等式
三次參數(shù)樣條在機床高速高精加工中的應用
三次樣條和二次刪除相輔助的WASD神經(jīng)網(wǎng)絡與日本人口預測
軟件(2017年6期)2017-09-23 20:56:27
基于樣條函數(shù)的高精度電子秤設(shè)計
霍林郭勒市| 高唐县| 永定县| 临澧县| 赤水市| 白城市| 辽宁省| 门源| 诸暨市| 阳原县| 靖远县| 米易县| 瑞安市| 张家界市| 乌拉特前旗| 苏尼特右旗| 滨州市| 简阳市| 夹江县| 潼关县| 翼城县| 金寨县| 沭阳县| 青龙| 互助| 理塘县| 揭东县| 合山市| 乐平市| 长治市| 黄骅市| 白河县| 长海县| 襄汾县| 都江堰市| 将乐县| 东源县| 四子王旗| 海伦市| 乳山市| 攀枝花市|