趙凱華,張璐琦,余 軍,張建宏
(1.黃河勘測(cè)規(guī)劃設(shè)計(jì)有限公司,河南 鄭州 450003;2.黃河流域水資源保護(hù)局,河南 鄭州 450004)
GenerativeComponents(以下簡(jiǎn)稱(chēng)GC)是Bentley公司開(kāi)發(fā)的一款基于MicroStation平臺(tái)的關(guān)聯(lián)參數(shù)化建模系統(tǒng),其最早提出是在2003年,后來(lái)由于其工程實(shí)踐的突出表現(xiàn)(尤其是倫敦的瑞士再保險(xiǎn)塔)逐漸進(jìn)入了公眾視野,2007年商業(yè)版本GC正式發(fā)布。
其優(yōu)點(diǎn)是能夠靈活地創(chuàng)建各類(lèi)幾何形體,支持各種幾何和邏輯可能性,為工程師提供了全新的設(shè)計(jì)方式。GC采用圖形方式展示元素及相互關(guān)系,支持有效展示與重用設(shè)計(jì)方案。使用GC,工程師既可完全采用圖形方式工作,也可適時(shí)將圖形與腳本和編程結(jié)合使用。GC的參數(shù)化規(guī)則和關(guān)系式用戶(hù)自定義的,通過(guò)界面圖形操作和腳本編程的混合方法,設(shè)計(jì)師能夠使用GC模擬出各類(lèi)幾何結(jié)構(gòu),并且每一個(gè)對(duì)象都能記錄自己的創(chuàng)建方式。
在水利工程中,對(duì)于拱壩、蝸殼、尾水管、叉管等異形結(jié)構(gòu)眾多,設(shè)計(jì)計(jì)算和繪圖復(fù)雜,工作量、出圖量大,利用GC技術(shù)研究水利工程異形結(jié)構(gòu)具有良好的應(yīng)用價(jià)值,可以方便地完成三維建模,并且更改參數(shù)便可方便快速完成方案修改。
拱壩是一種建筑在峽谷中的攔水壩,做成水平拱形,凸邊面向上游,兩端緊貼著峽谷壁,是一種經(jīng)濟(jì)性和安全性都很好的壩型。其主要參數(shù)有:拱弧的半徑、中心角、圓弧中心沿高程的跡線和拱厚。按照拱壩的拱弧半徑和拱中心角,可將拱壩分為單曲拱和雙曲拱。
雙曲拱是拱壩中最具有代表性的壩型,其水平向彎曲可以發(fā)揮拱的作用,豎直向彎曲可實(shí)現(xiàn)變中心、變半徑以調(diào)整拱壩上下部的曲率和半徑。一般情況,上部半徑大些,可使拱座推力更指向岸里;下部半徑小些,可適當(dāng)加大下部中心角以提高拱的作用。因此,雙曲拱壩一般均采用變中心、變半徑布置。這樣結(jié)構(gòu)設(shè)計(jì)更合理,但建模時(shí)體形計(jì)算很復(fù)雜,特別在施工詳圖設(shè)計(jì)階段,各種參數(shù)的計(jì)算和圖形繪制工作非常繁雜,有時(shí)甚至是手工無(wú)法完成的。利用計(jì)算機(jī)進(jìn)行參數(shù)化三維設(shè)計(jì)可大大減少工作量,提高設(shè)計(jì)精度[1]。
GC在拱壩三維設(shè)計(jì)上,國(guó)內(nèi)已經(jīng)有人做了一定應(yīng)用研究[2-3],但是研究的深度和適用的壩型有限,本文中研究的拱壩類(lèi)型具有代表性,由于其特殊的要求,設(shè)計(jì)更復(fù)雜,有必要利用GC對(duì)其進(jìn)行研究建模以更好地對(duì)設(shè)計(jì)提供技術(shù)支持。
對(duì)于拋物線雙曲拱壩來(lái)說(shuō),其水平及豎向截面都是曲線形。因此,可以需要通過(guò)創(chuàng)建各層水平面上曲線,根據(jù)水平面上的曲線分別擬合出上下游的拱面,在根據(jù)上下游拱面生成壩體。所以,利用GC進(jìn)行參數(shù)化建模的技術(shù)路線如下。
(1)定義參數(shù),提取出拱壩的一些特征參數(shù),包括壩頂高程、壩底高程以及相鄰特征拱圈的距離、每一個(gè)拱圈上特征點(diǎn)的個(gè)數(shù),以及拱冠厚度、左右拱端厚度、弦長(zhǎng)、大壩分縫的控制參數(shù)等。
(2)根據(jù)壩體高程范圍,高程進(jìn)行離散。每個(gè)高程的拱圈根據(jù)公式,計(jì)算每層拱圈上特征點(diǎn)的坐標(biāo)。
(3)根據(jù)(2)中得到的拱圈上特征點(diǎn)的坐標(biāo),生成每層拱圈的特征點(diǎn)。
(4)根據(jù)(3)生成的特征點(diǎn),分別擬合出拱壩上游面和下游面。
(5)根據(jù)(4)擬合的上下游拱面,生成壩體。
(6)將壩體進(jìn)行分區(qū)。
(7)完成表孔、中孔、閘墩、交通橋等壩上建筑物建模。
對(duì)于雙曲拱壩,其體型通過(guò)上下游壩面形狀來(lái)控制,而上下游壩面的控制點(diǎn)要通過(guò)每一層拱圈上的特征點(diǎn)來(lái)確定;上下游壩面的拱圈數(shù)目、每層拱圈上特征點(diǎn)數(shù)目越多,則壩面控制越精確;但是拱圈個(gè)數(shù)及拱圈上特征點(diǎn)的增加,必將造成計(jì)算量的增大,造成繪圖效率的降低。因此,在工程誤差允許范圍內(nèi),應(yīng)選擇合適的拱圈個(gè)數(shù)及每層拱圈上特征點(diǎn)的個(gè)數(shù)。表1和表2為確定典型拱壩體型的控制參數(shù),保存在Excel表格以便GC直接調(diào)用。
定義完特征參數(shù)后,需在壩體高程范圍內(nèi)對(duì)高程進(jìn)行離散。然后根據(jù)設(shè)計(jì)文件,對(duì)于每一個(gè)特定高程拱圈中心線按照式(1)確定其特征點(diǎn)位置。表1中給出了拱冠厚度為T(mén)c、左拱端厚度為T(mén)ar、右拱
端厚度為T(mén)al、左拱中心線拱冠處曲率半徑為Rcr、右拱中心線拱冠處曲率半徑為Rcl的插值參數(shù)。表2給出了右拱圈弦長(zhǎng)Xr,為左拱圈弦長(zhǎng)Xl及拱冠厚度為T(mén)c在各個(gè)高程上的取值。拱圈形狀及各幾何參數(shù)說(shuō)明如圖1所示,各幾何參數(shù)插值系數(shù)按表1取值,插值公式按式(2)計(jì)算。
圖1 拱圈形狀及參數(shù)說(shuō)明示意圖
(1)
式中,R—拱冠處曲率半徑,對(duì)于左拱段R取Rcl,對(duì)于右拱段R取Rcr,m;Yc—y軸截距,m。
F0(Z)=α0+α1Z+α2Z2+α3Z3
(2)
式中,F(xiàn)0(Z)—高程為Z拱圈的幾何參數(shù),m;Z—相應(yīng)拱圈所在的相對(duì)高程,按式(3)計(jì)算,m;α0,α1,α2,α3為表1中對(duì)應(yīng)的插值系數(shù)。
Z=Z頂-z (3)
表2 拱圈體型參數(shù)表 單位:m
式中,z—拱圈所在的絕對(duì)高程,m;Z頂—拱壩壩頂絕對(duì)高程,m。
確定拱冠處厚度Tc后,式(4)為平面拱圈各部位厚度與弧長(zhǎng)的關(guān)系。根據(jù)拱圈各部位的厚度,計(jì)算得到上下游拱圈上特征點(diǎn),然后根據(jù)所有的特征點(diǎn)來(lái)擬合得到上下游拱面,從而生成壩體。
Ti=Tc+(Tai-Tc)(Si-S)2
(4)
式中,Ti—拱圈任意位置厚度,m;Tc—對(duì)應(yīng)拱圈拱冠厚度,m;Tai—拱端的拱冠厚度,對(duì)于左拱端Tai取Tal,對(duì)于右拱端Tai取Tar,m;S—左側(cè)段或右側(cè)段拱圈中心線總長(zhǎng)度,m;Si—拱圈中心線上任意點(diǎn)至坐標(biāo)原點(diǎn)的中心線弧長(zhǎng),m。
據(jù)此,在高程上每隔一定高程按式(1)生成足夠多控制點(diǎn),如圖2(a)所示;然后用B樣條曲線擬合每一條拋物線,如圖2(b)所示;根據(jù)式(4)計(jì)算得到控制點(diǎn)處的拱圈厚度Ti,以控制點(diǎn)為起點(diǎn),分別向拱圈中心線內(nèi)法向和外法向生成長(zhǎng)度為T(mén)i/2的線段作為上下游拱面的控制線,如圖2(c)所示;利用控制線的起點(diǎn)和終點(diǎn)分別生成上下游拱面,生成圖2(d)所示壩體。
圖2 利用GC生成各層拱圈中心線拋物線
根據(jù)設(shè)計(jì)需要,大壩須設(shè)置橫縫,橫縫為鉛直面,按接近徑向布置。設(shè)置依據(jù)為y軸截距B和橫縫與y軸交角φ,數(shù)據(jù)見(jiàn)表3。在圖1中依據(jù)B和φ確定橫縫所在平面,如圖3(a)所示,從左
圖3 模型橫縫設(shè)置示意圖
拱壩上部的建筑物包括泄洪表孔、中孔、中孔門(mén)、交通橋等,由于涉及的細(xì)節(jié)數(shù)量多需要?jiǎng)?chuàng)建大量的Transactions去實(shí)現(xiàn),這些Transactions記錄下了整個(gè)模型的點(diǎn)、線、面、體的生成過(guò)程,以及求交線,拉伸成體、布爾運(yùn)算等過(guò)程。圖4(a)為GC的Transactions窗口,生成的拱壩及其上部建筑物如圖4(b)、4(c)所示。
圖4 GC生成的拱壩模型
參數(shù)化設(shè)計(jì)要求模型具有數(shù)據(jù)驅(qū)動(dòng)能力,在這方面GC具有從數(shù)據(jù)庫(kù)、Excel表格讀寫(xiě)的模塊,能夠方便的實(shí)現(xiàn)和數(shù)據(jù)庫(kù)、Excel之間的數(shù)據(jù)交換,為參數(shù)化建模提供了便利。本文采用Excel表格對(duì)
表3 大壩橫縫位置表
參數(shù)進(jìn)行統(tǒng)一管理,在GC中讀入這些參數(shù),再通過(guò)腳本編程來(lái)實(shí)現(xiàn)參數(shù)化建模;要實(shí)現(xiàn)方案修改,只需在Excel中修改相應(yīng)參數(shù)即可,提高了三維設(shè)計(jì)的效率。
對(duì)于拱壩,設(shè)計(jì)方案修改一般會(huì)涉及孔數(shù)、孔寬以及孔中心線的偏移等影響壩上建筑物布置的參數(shù),以及拱冠中心店坐標(biāo)、拱冠厚度、左右拱端厚度、左右拱中心線拱冠處曲率半徑、左右弦長(zhǎng)、分區(qū)用到的夾角、截距等影響拱壩形體的參數(shù)。
以拱冠厚度和左右弦長(zhǎng)為例,對(duì)設(shè)計(jì)方案進(jìn)行修改。在表1中拱冠厚度Tc對(duì)應(yīng)的參數(shù)進(jìn)行調(diào)整,α0取值增加到7.002872,左右弦長(zhǎng)均增加2m,然后重新生成模型如圖5所示。
圖5 拱壩體型調(diào)整
石門(mén)坎水電站位于云南省思茅市墨江縣和普洱縣交界的把邊江上,為云南省李仙江流域水電梯級(jí)開(kāi)發(fā)7個(gè)梯級(jí)電站中的第2級(jí),引水式電站。水庫(kù)正常蓄水位756m,死水位740m,總庫(kù)容為1.97億m3。電站已于2007年1月17日開(kāi)工,2008年11月14日大江截流,2010年5月下閘蓄水,2010年6月投產(chǎn)發(fā)電。石門(mén)坎壩體為圓弧形雙曲拱壩[4],最大壩高111m,拱壩體形采用拋物線雙曲拱壩。
設(shè)計(jì)時(shí)從650m高程到758m高程,每隔2m做一個(gè)特征拱圈,用變量z表示拱圈所在高程,用Z表示對(duì)應(yīng)相對(duì)高程,在GC中可以通過(guò)如下腳本語(yǔ)句實(shí)現(xiàn):
feature User.Objects.zBentley.GC.Features.GraphVariable
{Value=Series(650, 758, 2);}
feature User.Objects.ZBentley.GC.Features.GraphVariable
{Value=758-z;}
設(shè)計(jì)參數(shù)存放在Excel表格中,然后用GC從Excel中獲取相應(yīng)參數(shù)。但是,這之前需要裝載Excel庫(kù),然后才能用ExcelRange特征。GC獲取Excel中參數(shù)可通過(guò)如下腳本語(yǔ)句實(shí)現(xiàn):
feature User.Objects.excelRange01 Bentley.GC.Features.ExcelRange
{
RangeAddress =″B2∶E7″;
SheetName =″Sheet1″;
WorkbookFileName =″E:GCSMK.xlsx″;
}
每層拱圈中心線的左半拱和右半拱分別取50個(gè)控制點(diǎn),用B樣條曲線擬合拱圈中心線拋物線方程,確定拱圈中心線特征點(diǎn)坐標(biāo)GCScript函數(shù)為:
feature User.Objects.graphFunction02 Bentley.GC.Features.GraphFunction
{
Definition=Point function(out Point leftPts, out Point rightPts, out Point centerPts)
{
double count=Z.Count;
double maxX=graphFunction01(); // 獲取左右弦長(zhǎng)范圍
double xPos, yPos; // 記錄拱圈中心線點(diǎn)坐標(biāo)x、y坐標(biāo)
double xRStep, xLStep; // 左右拱圈部分橫坐標(biāo)變化的步長(zhǎng)
leftPts={};rightPts={}; centerPts={} //左右拱圈控制點(diǎn)
for(int i=0;i < count; i++){
xLStep=maxX[i][1]/(numPt-1); //獲得右側(cè)弦長(zhǎng)離散的步長(zhǎng)
leftPts[i]={}; //右側(cè)拱圈特征點(diǎn)初始化
for(int j=0 ; j < numPt; j++){
xPos=j*xLStep;
yPos=-xPos*xPos/2/Rcr[i]+Yc[i];
leftPts[i][j]=new Point();
leftPts[i][j].ByCartesianCoordinates(baseCS,xPos, yPos, Z[i]);
}
rightPts[i]={}; //左側(cè)拱圈特征點(diǎn)初始化
xRStep=maxX[i][0]/(numPt-1); //獲得右側(cè)弦長(zhǎng)離散的步長(zhǎng)
for(int j=0 ; j < numPt; j++){
xPos=-j*xRStep;
yPos=-xPos*xPos/2/Rcl[i]+Yc[i];
rightPts[i][j]=new Point();
rightPts[i][j].ByCartesianCoordinates(baseCS,xPos, yPos, Z[i]);
}
centerPts[i]=RemoveAt(Union(Reverse(leftPts[i]),rightPts[i]), numPt);
}
};
}
需要利用特征點(diǎn)坐標(biāo),用B樣條曲線擬合得到拱圈中心線近似拋物線方程,GCScript函數(shù)實(shí)現(xiàn)語(yǔ)句為:
feature User.Objects.graphFunction03 Bentley.GC.Features.GraphFunction
{
Definition=function (int index)
{ int count=Z.Count;
BSplineCurve childBSpline={};
for(int i=0; i < count; i++){
childBSpline[i]=new BSplineCurve(this);
childBSpline[i].ByPoints(leftPts[i]);
}
return childBSpline;
};
}
做出上下游拱面控制線后,利用控制線的起點(diǎn)和終點(diǎn)獲得拱面,通過(guò)如下腳本語(yǔ)句實(shí)現(xiàn):
feature User.Objects.bsplineSurface01 Bentley.GC.Features.BSplineSurface
{ Points =line09.StartPoint; }
feature User.Objects.bsplineSurface02 Bentley.GC.Features.BSplineSurface
{ Points =line09.EndPoint; }
利用上下游拱面生成壩體,通過(guò)如下腳本語(yǔ)句實(shí)現(xiàn):
feature User.Objects.solid01 Bentley.GC.Features.Solid
{ Surface0=bsplineSurface01; Surface1 =bsplineSurface02; }
壩上建筑物部分設(shè)計(jì)眾多細(xì)節(jié),主要也是通過(guò)類(lèi)似的點(diǎn)、線、面、體進(jìn)行實(shí)現(xiàn),不再一一說(shuō)明。
在方案修改后,包括壩體、上部建筑物在內(nèi)整個(gè)模型更新共用時(shí)12min 40s,能夠較快實(shí)現(xiàn)設(shè)計(jì)變更。
以典型拋物線雙曲拱壩為例,介紹了GC三維建模的技術(shù)思路,能夠適用于大多數(shù)拱壩的三維設(shè)計(jì)。在石門(mén)坎拱壩的實(shí)例應(yīng)用表明,GC能夠很好地支持異形結(jié)構(gòu)體建模,支持設(shè)計(jì)方案重用,適用于水利工程、特別適用于異形結(jié)構(gòu)體的三維建模。