林士凱 杜新喜 閆 琰 程曉燕 陳曉婉
(武漢大學(xué)土木建筑工程學(xué)院 武漢 430072)
近年來(lái),隨著建筑師對(duì)結(jié)構(gòu)空間藝術(shù)造型的設(shè)計(jì)更加自由、新穎和富有個(gè)性,空間網(wǎng)格結(jié)構(gòu)的曲面不再局限于傳統(tǒng)的能用函數(shù)表達(dá)的解析曲面,不能用初等解析函數(shù)表示的曲面即自由曲面越來(lái)越多[1].國(guó)內(nèi)已有學(xué)者對(duì)自由曲面網(wǎng)格結(jié)構(gòu)進(jìn)行了一些研究,提出自由曲面網(wǎng)格生成與優(yōu)化的方法[2-3].2010年上海世博會(huì)世博軸陽(yáng)光谷作為自由曲面網(wǎng)格結(jié)構(gòu)的典型工程,就是由三角網(wǎng)格組成的單層空間曲面結(jié)構(gòu)[4].對(duì)于自由曲面網(wǎng)格結(jié)構(gòu)而言,風(fēng)荷載是結(jié)構(gòu)承受的主要荷載,一般通過(guò)風(fēng)洞試驗(yàn)測(cè)得模型不同測(cè)點(diǎn)處的風(fēng)壓值來(lái)確定.當(dāng)前結(jié)構(gòu)設(shè)計(jì)軟件的風(fēng)荷載一般是通過(guò)節(jié)點(diǎn)荷載來(lái)輸入,而風(fēng)洞試驗(yàn)測(cè)得的風(fēng)壓值是面荷載,需要將面荷載轉(zhuǎn)換成結(jié)構(gòu)設(shè)計(jì)軟件可以識(shí)別的等效節(jié)點(diǎn)荷載.張樂(lè)弓等[5]利用APDL語(yǔ)言實(shí)現(xiàn)空間網(wǎng)格結(jié)構(gòu)在ANSYS中導(dǎo)算等效節(jié)點(diǎn)荷載功能;張慎等[6]則利用混合編程技術(shù)開(kāi)發(fā)了大跨度屋蓋結(jié)構(gòu)風(fēng)洞試驗(yàn)數(shù)據(jù)處理系統(tǒng);但他們的方法并不適用于世博軸陽(yáng)光谷這類(lèi)自由曲面網(wǎng)格結(jié)構(gòu).同時(shí),空間網(wǎng)格結(jié)構(gòu)構(gòu)件常常采用非圓截面桿件,如陽(yáng)光谷結(jié)構(gòu)的桿件大多采用矩形截面的空心焊接鋼管,這就要求結(jié)構(gòu)設(shè)計(jì)軟件在建模時(shí)能方便地調(diào)整構(gòu)件截面角度,目前的商業(yè)軟件3D3S雖然給出了調(diào)整構(gòu)件截面角度的方法[7],但需要用戶(hù)手動(dòng)指定構(gòu)件截面強(qiáng)軸的指向,操作起來(lái)并不方便.
針對(duì)以上問(wèn)題,本文基于自主研發(fā)的通用鋼結(jié)構(gòu)設(shè)計(jì)軟件 USSCAD[8],利用C++語(yǔ)言與ObjectARX技術(shù)創(chuàng)建一種輔助面類(lèi),該類(lèi)類(lèi)似于3D3S中的封閉面類(lèi),但是功能更加強(qiáng)大.利用該輔助面類(lèi),可以方便地將風(fēng)壓轉(zhuǎn)換成等效節(jié)點(diǎn)荷載,同時(shí)可以快速地調(diào)整構(gòu)件截面角度,從而顯著地提高結(jié)構(gòu)建模效率.
本文提出的輔助面類(lèi)是從AcDbEntity類(lèi)派生出來(lái)的,除了具有基類(lèi)的屬性[9]外,還增加了一些輔助面類(lèi)特有的屬性,主要屬性如圖1所示.
實(shí)際工程中,常常會(huì)出現(xiàn)一個(gè)面的桿件不在同一平面內(nèi),即構(gòu)成了空間多邊形,對(duì)于這類(lèi)面的面積和法向一般無(wú)法確定.文獻(xiàn)[5]給出的方法是利用最小二乘法原理擬合指定誤差的近似平面,以近似平面的面積作為原空間多邊形的面積.利用該方法得到的面積偏小,將導(dǎo)致計(jì)算得到的結(jié)構(gòu)內(nèi)力偏小,同時(shí)對(duì)于復(fù)雜的空間多邊形,擬合近似平面比較困難.本文采用的方法是,取輔助面所有角點(diǎn)坐標(biāo)的平均值作為輔助面形心點(diǎn)的坐標(biāo),連接形心點(diǎn)與各個(gè)角點(diǎn),從而將該輔助面劃分成多個(gè)三角形,分別求出各三角形面積,取面積之和作為輔助面的面積.以此方法求得的面積稍稍偏大,導(dǎo)致計(jì)算得到的結(jié)構(gòu)內(nèi)力亦稍稍偏大,這符合結(jié)構(gòu)設(shè)計(jì)軟件計(jì)算結(jié)果一般偏于保險(xiǎn)的原則.使用ObjectARX提供的crossPruduct()函數(shù)求出與輔助面相鄰兩邊均垂直的向量,該垂直向量存在正反兩種可能方向,故需在模型中確定一種參考向量,保證垂直向量與參考向量同向;循環(huán)輔助面所有的邊,將所有垂直向量的矢量和作為該輔助面的平均法向.
對(duì)于多層網(wǎng)格結(jié)構(gòu),一般只對(duì)弦桿生成輔助面,腹桿并不需要生成輔助面,故將模型中的桿件分成弦桿層桿件和腹桿層桿件,各個(gè)弦桿層分別生成輔助面,對(duì)應(yīng)于各弦桿層,定義了輔助面的邏輯層屬性,輔助面的邏輯層號(hào)與其所屬的弦桿層號(hào)一致.
圖1 輔助面類(lèi)主要屬性
本文的關(guān)鍵問(wèn)題是,如何確保對(duì)于任意自由曲面網(wǎng)格結(jié)構(gòu)模型均能準(zhǔn)確地生成輔助面.一般生成輔助面的流程見(jiàn)圖2,通過(guò)循環(huán)結(jié)構(gòu)中的所有弦桿層桿件,生成所有的輔助面.
圖2 生成輔助面流程圖
為了得到桿件之間的夾角,需要用到Object-ARX提供的angleTo()函數(shù),該函數(shù)的原理是指定一個(gè)參考向量,根據(jù)右手定則求出兩個(gè)向量之間的夾角,其中參考向量并不需要與另外兩個(gè)向量嚴(yán)格垂直.一般的平面網(wǎng)架結(jié)構(gòu)及網(wǎng)殼結(jié)構(gòu)可取模型中的一個(gè)固定方向作為參考向量,如圖3a)、b)所示,以此生成的輔助面法向均與該參考向量同向.但對(duì)于圖3c)所示的球殼,需要確保生成的輔助面法向全部指向球外(或球內(nèi)),若按上述方法生成輔助面,將有一半的輔助面法向指向球內(nèi),另一半則指向球外,而且赤道上的輔助面可能與參考向量平行,導(dǎo)致右手法則不再適用.對(duì)于該類(lèi)情況,可在模型中定義一個(gè)基點(diǎn),取所有節(jié)點(diǎn)的平均坐標(biāo)作為基點(diǎn)的坐標(biāo),由thisPt節(jié)點(diǎn)坐標(biāo)減去基點(diǎn)坐標(biāo)得到參考向量.以此方法生成每個(gè)輔助面所用的參考向量均由基點(diǎn)指向該輔助面,保證了輔助面的法向均指向球外,且赤道上的輔助面亦可正常生成.計(jì)算桿件之間夾角的關(guān)鍵代碼如下.
//計(jì)算兩根桿件的向量
AcGeVector3dVector1(nextPt-thisPt);
AcGeVector3dVector2(basePt–thisPt);
//計(jì)算參考向量
AcGeVector3dVecRef(thisPt-centerP);
//確保輔助面法向與參考向量同向
AcGeVector3dnorm = Vector1.crossProduct(Vector2);
if(norm.dotProduct(VecRef)<0)norm = -norm;
//求得桿件之間夾角
double anger= Vector1.angleTo(Vector2,norm);
圖3 網(wǎng)架網(wǎng)殼結(jié)構(gòu)立面圖
對(duì)于大多數(shù)自由曲面網(wǎng)格結(jié)構(gòu),取所有節(jié)點(diǎn)的平均坐標(biāo)作為基點(diǎn)的坐標(biāo)即可滿(mǎn)足準(zhǔn)確生成所有輔助面的要求.但對(duì)于世博軸陽(yáng)光谷這類(lèi)曲面結(jié)構(gòu),此方法確定的基點(diǎn)可能無(wú)法輻射到整個(gè)結(jié)構(gòu)的內(nèi)側(cè),即參考向量不能全部指向結(jié)構(gòu)模型外側(cè),導(dǎo)致模型中局部區(qū)域輔助面的法向方向錯(cuò)誤.此時(shí),只要將基點(diǎn)往上移動(dòng),即可輻射到整個(gè)結(jié)構(gòu)模型內(nèi)側(cè),從而確保模型中的輔助面法向均正確無(wú)誤,如圖4所示.對(duì)于曲面更加復(fù)雜的結(jié)構(gòu),可能無(wú)法找到可以輻射到整個(gè)結(jié)構(gòu)模型曲面內(nèi)側(cè)的基點(diǎn),此時(shí)可任取一個(gè)基點(diǎn)生成輔助面,利用程序提供的輔助面法向反向命令,自行修正輔助面法向.
圖4 陽(yáng)光谷立面簡(jiǎn)圖
一些情況下,模型中的部分輔助面可能不是用戶(hù)希望生成的,稱(chēng)之為大面.如單層網(wǎng)殼結(jié)構(gòu)最外圍桿件構(gòu)成的大面,需要在生成輔助面時(shí)將其排除,否則將導(dǎo)致后續(xù)的面荷載導(dǎo)向節(jié)點(diǎn)與構(gòu)件截面角度調(diào)整產(chǎn)生錯(cuò)誤.對(duì)于一般的平面網(wǎng)架結(jié)構(gòu)及球面網(wǎng)殼結(jié)構(gòu),大面周邊的所有桿件均在同一平面內(nèi),可以通過(guò)生成輔助面時(shí)存儲(chǔ)的桿件之間的夾角之和進(jìn)行判斷.按上述計(jì)算桿件之間夾角的方法,大面的桿件夾角之和比正常輔助面的桿件夾角之和大4π,以此可將大面排除.但該方法不適用于柱面網(wǎng)殼的大面及其它桿件不在同一平面上的大面,對(duì)于該類(lèi)大面,只能限定其邊數(shù)或面積.經(jīng)過(guò)大量模型測(cè)試與驗(yàn)證,程序默認(rèn)判定大面為面積占所有輔助面面積之和30%以上的面,此判定適用于一般空間網(wǎng)格結(jié)構(gòu)模型.當(dāng)遇到該判定不適用的模型時(shí),亦可自定最大輔助面的限制邊數(shù),程序自動(dòng)排除大于限制邊數(shù)的輔助面.另外,每一個(gè)輔助面的形心坐標(biāo)是惟一的,以此可判斷輔助面是否已經(jīng)存在,避免重復(fù)生成.
通過(guò)圖5所示的對(duì)話(huà)框,程序可以自動(dòng)生成結(jié)構(gòu)模型中所需的輔助面.其中基向量法即取結(jié)構(gòu)模型中一固定方向作為參考向量的方法,而基點(diǎn)法即在模型中定義一基點(diǎn)的方法,當(dāng)選擇基點(diǎn)法時(shí)可自定義基點(diǎn)坐標(biāo),點(diǎn)擊相應(yīng)按鈕還可限制最大輔助面的邊數(shù).為了方便輔助面的生成與編輯,除了該對(duì)話(huà)框外,提供了手動(dòng)生成輔助面與輔助面法向反向兩個(gè)命令,供用戶(hù)手動(dòng)生成無(wú)法自動(dòng)生成的輔助面以及修正輔助面的法向.在模型中可以控制顯示輔助面,以校核是否正確生成輔助面.
圖5 生成輔助面對(duì)話(huà)框
為了將風(fēng)荷載轉(zhuǎn)換成節(jié)點(diǎn)荷載,需要計(jì)算節(jié)點(diǎn)的承載面積與節(jié)點(diǎn)的法向.本文中,節(jié)點(diǎn)的承載面積是根據(jù)與節(jié)點(diǎn)相連的桿件長(zhǎng)度及相鄰輔助面面積確定的,承載面積計(jì)算見(jiàn)式(1).式中各變量的含義見(jiàn)圖6.風(fēng)荷載的方向一般垂直于結(jié)構(gòu)表面,故取與節(jié)點(diǎn)相鄰的所有輔助面法向的矢量和作為節(jié)點(diǎn)法向.
結(jié)構(gòu)模型曲面內(nèi)部的桿件(如圖6中1號(hào)桿)在一個(gè)弦桿層上有2個(gè)相鄰輔助面,取兩個(gè)相鄰輔助面面的法向矢量和作為調(diào)整方向,即桿件截面調(diào)整后強(qiáng)軸(或弱軸)對(duì)應(yīng)的方向,曲面邊緣的桿件(如圖6中2號(hào)桿)則只有一個(gè)相鄰輔助面,取該輔助面的法向作為調(diào)整方向.確定調(diào)整方向后,根據(jù)上述的angleTo()函數(shù)得到強(qiáng)軸(或弱軸)與調(diào)整方向的夾角,再利用rotateBy()函數(shù)調(diào)整截面角度.
圖6 節(jié)點(diǎn)承載面積示意圖
以某空間網(wǎng)格結(jié)構(gòu)發(fā)電廠(chǎng)冷卻塔為例,應(yīng)用輔助面快速調(diào)整構(gòu)件截面角度及風(fēng)荷載轉(zhuǎn)換成等效節(jié)點(diǎn)荷載.該冷卻塔高200m,底部直徑200m,是由工字鋼截面的桿件構(gòu)成的空間曲面網(wǎng)格結(jié)構(gòu),結(jié)構(gòu)承受的荷載主要為風(fēng)荷載,結(jié)構(gòu)模型如圖7所示.對(duì)于該結(jié)構(gòu)模型,采用基點(diǎn)法,限制最大輔助面的邊數(shù)為4,取各節(jié)點(diǎn)坐標(biāo)的平均坐標(biāo)作為基點(diǎn)坐標(biāo).點(diǎn)擊生成按鈕,生成了2 791個(gè)輔助面.
圖7 某空間網(wǎng)格結(jié)構(gòu)冷卻塔模型
檢查確認(rèn)所需輔助面全部生成,法向亦全部正確,執(zhí)行構(gòu)件截面角度調(diào)整命令,調(diào)整了7 520根桿件的截面角度.取結(jié)構(gòu)頂部一根豎向桿件顯示調(diào)整結(jié)果,見(jiàn)圖8,調(diào)整后的工字鋼強(qiáng)軸(或弱軸)與桿件兩側(cè)的輔助面垂直.
執(zhí)行風(fēng)荷載輸入命令,讀取風(fēng)壓文件,給4 378個(gè)節(jié)點(diǎn)賦予了等效節(jié)點(diǎn)荷載.截取結(jié)構(gòu)頂部的部分網(wǎng)格顯示賦值結(jié)果,如圖9所示,等效節(jié)點(diǎn)荷載合力方向均與結(jié)構(gòu)表面垂直.
圖8 構(gòu)件截面角度調(diào)整結(jié)果
圖9 等效節(jié)點(diǎn)荷載
本文針對(duì)自由曲面網(wǎng)格結(jié)構(gòu)在通用鋼結(jié)構(gòu)設(shè)計(jì)軟件USSCAD建模中的一些問(wèn)題,提出了一種輔助面類(lèi).利用該類(lèi)可解決自由曲面網(wǎng)格結(jié)構(gòu)模型在軟件前處理中,風(fēng)荷載轉(zhuǎn)換成等效節(jié)點(diǎn)荷載以及構(gòu)件截面角度調(diào)整遇到的問(wèn)題,極大地減小設(shè)計(jì)人員的工作量,提高了工作效率與質(zhì)量.該輔助面類(lèi)的生成技術(shù)與應(yīng)用原理可供其它結(jié)構(gòu)設(shè)計(jì)軟件參考,提高國(guó)內(nèi)外結(jié)構(gòu)設(shè)計(jì)軟件的設(shè)計(jì)效率.
[1]杜新喜.大跨空間結(jié)構(gòu)設(shè)計(jì)與分析[M].北京:中國(guó)建筑工業(yè)出版社,2014.
[2]丁 慧.自由形態(tài)空間網(wǎng)格結(jié)構(gòu)的網(wǎng)格設(shè)計(jì)方法研究與實(shí)現(xiàn)[D].杭州:浙江大學(xué),2014.
[3]李承銘,盧 旦.自由曲面單層網(wǎng)格的智能布局設(shè)計(jì)研究[J].土木工程學(xué)報(bào),2011,44(3):2-7.
[4]汪大綏,方 衛(wèi),張偉育,等.世博軸陽(yáng)光谷鋼結(jié)構(gòu)設(shè)計(jì)與研究[J].建筑結(jié)構(gòu)學(xué)報(bào),2010,31(5):20-26.
[5]張樂(lè)弓,樂(lè)風(fēng)江,宋艷生.空間網(wǎng)格結(jié)構(gòu)施加等效節(jié)點(diǎn)荷載的 ANSYS實(shí)現(xiàn)[J].鋼結(jié)構(gòu),2012,27(164):37-41.
[6]張 慎,陳 興,李 霆.計(jì)算機(jī)技術(shù)在大跨度屋蓋結(jié)構(gòu)風(fēng)洞試驗(yàn)數(shù)據(jù)處理中的應(yīng)用[J].建筑結(jié)構(gòu),2011,41(7):106-110.
[7]同濟(jì)大學(xué)3D3S研發(fā)組.3D3S基本操作手冊(cè)及原理[DB/OL].http://www.tj3d3s.com/docc/products4.asp.
[8]駱順心,杜新喜,常時(shí)峰.基于ObjectArx的空間鋼結(jié)構(gòu)CAD 軟件[J].武漢大學(xué)學(xué)報(bào):工學(xué)版,2007,40(1):101-104.
[9]張 慎,杜新喜,李強(qiáng)波.基于ObjectArx的多高層鋼框架CAD系統(tǒng)研究[J].武漢理工大學(xué)學(xué)報(bào):交通科學(xué)與工程版,2008,32(1):107-110.