?

CATIA 知識工程在錨桿支護和排水帷幕中的應用

2020-11-20 08:47補舒棋
陜西水利 2020年8期
關鍵詞:輪廓線洞室列表

補舒棋,楊 蕾

(陜西省水利電力勘測設計研究院,陜西 西安 710001)

0 前言

CAITA(法國達索軟件)在水利水電行業中的應用已經越來越廣泛,其知識工程模塊的應用對解決工程設計智能批量化非常具有優勢,該模塊為通過提供方便易用的知識工程環境來創建、訪問以及應用企業知識庫[1]。利用軟件的知識工程陣列功能可以實現幾何元素的批量實例化,CATIA 軟件自帶的陣列功能有時不能滿足復雜的設計要求,因此可利用知識工程陣列來達到目的。本文以某地下廠房洞室群為例,利用知識工程陣列及UDF(User Defined Feature)知識工程模板分別完成地下洞室錨桿及排水帷幕的自動批量實例化設計布置。

1 知識工程陣列

通過CATIA 知識工程模塊中的product knowledge template 創建知識工程陣列特征,該特征以腳本語言批處理(非交互)方式在CATIA 零件文檔中進行模板實例化、生成目標幾何元素(點、直線、曲線、圓、平面、曲面、體等),其特點能一次性自動在CATIA 零件文檔中處理生成重復性的幾何結構,是CATIA 知識工程高級應用[2]。

1.1 錨桿支護參數及其布置

某地下洞室群布置見圖1,從左至右,三大洞室分別為主廠房洞室、主變洞室、尾水閘洞室。經過有限元計算分析,地下洞室群錨桿布置型式為:主廠房、主變洞頂拱、上下游邊墻按Φ28@L=6 m/9 m 間隔布置,排距為1.5 m×1.5 m,尾水閘室按Φ28@L=6 m/9 m 間隔布置,排距為1.5 m×1.5 m。按照以上參數在CATIA 中運用知識工程陣列模板布置出三大洞室的錨桿型式及知識工程應用界面。

圖1 地下廠房主要洞室群錨桿布置

1.2 洞室錨桿布置知識工程代碼

在知識工程陣列編輯器中來輸入代碼,并創建若干列表,列表對應相應的幾何圖形集,通過代碼定義列表(利用CATIA知識工程中的詞典Gernerative functions)來實現把創建的元素(利用詞典中的點構造函數、運算構造函數、線構造函數、平面構造函數等來創建幾何元素)依次按循環放入相應的幾何圖形集,相互關系見圖2,其設計難點主要在于如何實現長短錨桿交錯布置及參數的循環算法,設計步驟思路如下:

提取洞室外輪廓面→錨桿間距相隔的洞室輪廓線(用等間距的面橫向切割洞室輪廓面得到輪廓線)→將輪廓線由中心面一分為二→左半部分偶數序號輪廓線錨桿布置(單輪廓線上的的長短錨桿交錯布置通過內部判斷輪廓線的等間距的點的奇偶來實現)→左半部分奇數序號輪廓線錨桿布置(左半部分所有輪廓線的錨桿交錯布置通過輪廓線的奇偶數進行判斷)。

右半部分輪廓線錨桿布置與左半部分相同,只需在選擇halfc=split(c,`主要輪廓中心面`,true)中修改“true”為“false”得到另一側輪廓,再執行知識工程陣列得到另一邊的錨桿布置,其最終布置見圖2。

圖2 知識工程陣列中列表、幾何元素之間的關系

代碼開始前先進行循環變量定義及幾何元素定義:let i(integer);let k(integer);let p(point);let pl(plane);let c(curve);let top(point);let halfc(curve);let phf(point);let j(integer);let L(line)。其中循環創建幾何元素是通過i,j,k 來進行實現:k 為輪廓線總數目,i 為輪廓線的序號,j 為輪廓線上錨桿布置點的序號。

需實現:第1 根輪廓線第1 點長錨桿,第2 點短錨桿,第3點長錨桿,第4 點短錨桿……

第2 根輪廓線第1 點短錨桿,第2 點長錨桿,第3 點短錨桿,第4 點長錨桿……

……

第i 根輪廓線第1 點短錨桿,第2 點長錨桿,第3 點短錨桿,第4 點長錨桿……

通過((j+i)+(i-1)*(k-1)-1)來實現循環輪廓線上每一個點的錨桿布置并存儲在列表中。

實現錨桿布置的關鍵代碼如下所示:

i=1 /*設定起始循環數值*/

k=int(length(`主要輪廓走線`)/`拱頂支護參數錨桿間距`)/*

設定外圍參數來控制循環數量*/

for i while i<=k

{ /*根據知識工程陣列中的Generative functions 創建需要的幾何元素,將定義好的元素給定相應的列表存放,并對應PART 中的相應的幾何圖形集,那么根據循環產生的元素就會依次生成放在幾何圖形集中。*/

p=CreateOrModifyDatum("point",`ALL point`,`關系知識工程陣列.2列表.1`,i)

/*定義外部幾何圖形集元素與列表對應,Dictionary 列表提供了可以在關系式中應用的函數、操作符以及特征屬性等項[1]*/

p=pointoncurve (`主要輪廓走線`,`主要輪廓起點`,`拱頂支護參數錨桿間距` *i,true) /*點構造函數*/

pl=CreateOrModifyDatum("plane",`ALL plane`,`關系 知識工程陣列.2列表.2`,i)

/*同上,在洞室中心線上建立面集*/

pl=planenormal(`主要輪廓走線`,p) /*平面構造函數*/

c=CreateOrModifyDatum("curve",`ALL opcurve` ,`關系知識工程陣列.2列表.3`,i) /*同上建立曲線集*/

c=intersect(`主要輪廓掃掠.1` ,`關系知識工程陣列.2列表.2` ->GetItem(i))

/*線框構造函數,利用洞室外輪廓面與每一個中心線上相隔布置間距的法方平面相交得到一個相交輪廓線*/

c.Color="Green" /*給線條賦色*/

top=CreateOrModifyDatum ("point",`ALL oppoints` ,`關系知識工程陣列.2列表.4`,i)

top=intersect (`關系知識工程陣列.2列表.3`->GetItem(i),`主要輪廓中心面` )

/*建立相交輪廓線上的起始端點,為陣列輪廓上錨桿布置做準備*/

halfc=CreateOrModifyDatum ("curve",`ALL ophalfcurve`,`關系知識工程陣列.2列表.5`,i) /*將相交輪廓線切割成兩半,先得到一半輪廓線*/

halfc=split(c,`主要輪廓中心面`,true)

j=1

if mod(i,2)==0 /*偶數的半邊輪廓線布置錨桿*/

{

for j while j<=int(length(halfc)/`拱頂支護參數錨桿間距`)

{

/*在洞室一半的輪廓線上根據建好的點來放錨桿,交錯布置*/

phf=CreateOrModifyDatum("point",`ALL halfcurvepoints` ,`關系知識工程陣列.2列表.6`,((j+i)+(i-1)*(k-1)-1))

phf=pointoncurve (halfc ,top ,`拱頂支護參數錨桿間距` *j ,true)

if mod(j,2)==0

{ L=CreateOrModifyDatum("line",linesonthehalfcurve,`關系知識工程陣列.2列表.7`,((j+i)+(i-1)*(k-1)-1))

L=lineangle (halfc,pl,phf,true,0mm,`錨桿1 長`,90deg,true)

/*陣列錨桿,通過外部參數`錨桿1 長`控制錨桿交錯布置長度*/

L.Color="green"

}

else

{ L=CreateOrModifyDatum("line",linesonthehalfcurve,`關系知識工程陣列.2列表.7`,((j+i)+(i-1)*(k-1)-1))

L=lineangle(halfc,pl,phf,true,0mm,`錨桿2 長`, 90deg,true)

L.Color="blue"

}

}

}

else {……} /*奇數的半邊輪廓線布置錨桿在此不贅述*/

按以上知識工程代碼步驟創建錨桿陣列,通過替換相應的洞室輪廓線,可創建其他洞室輪廓線上的錨桿陣列。

2 利用知識工程陣列布置防滲排水帷幕

排水系統布置見圖3,需要在地下廠房上游及兩側布置三層排水廊道及排水帷幕,排水帷幕主要為排水廊道頂拱和底板上布置的長度不等的排水孔,排水孔為Φ76,間距3 m,通過排水帷幕攔截廠房周圍圍巖的地下水,從而達到降低廠區地下水的目的,與洞室輪廓線的錨桿知識陣列不同的是,在排水帷幕的布置中使用了結合UDF 知識工程模板進行知識工程陣列的方式,首先需創建排水孔模板,將其加入自定的目錄庫,定義其相應特征及存儲名稱,以方便代碼中直接輸入相應的名稱就可以識別并調用該UDF 模板,其次調用UDF 后,再編寫將其進行陣列的代碼。

1)創建UDF 模板:建立排水孔“輸入條件”,即給定點、排水孔陣列的方向;其次創建相關參數;排水孔長度、孔間距、孔與排水廊道夾角等參數,編輯草圖定義參數完成排水孔建模,最后插入知識工程模板中的用戶特征。定義用戶特征時,內部部件選擇“輸入條件”以外的所有參數,發布相關參數。

2)調用UDF 模板及相關代碼:定義用戶特征中應自動指定SuperType 及生成Type 類型,在目錄knowledgeTypesCustom 生成PktCylinder.CATGScript 文件,以此完成排水孔知識工程模板創建,以下為調用并陣列模板的知識工程代碼。

let i(integer) /*實數*/

let p(point) /*點*/

let udf(LDPS1) /*UDF 模板*/

i=1

for i while i<= int(length(`上層設計過程設計曲線`)/`排水孔間距`) /*創建UDF 輸入條件的點集*/

{

p=CreateOrModifyDatum ("point",`points`,`關系知識工程陣列.1points` ,i)

p=pointoncurve(`上層設計過程設計曲線`,`上層設計過程端點`,i*`排水孔間距` ,true)

udf=CreateOrModifyTemplate ("psk",`sldps`,`關系知識工程陣列.1PSK` ,i) /*調用UDF 模板*/

udf.P =p

udf.L =`上層設計過程設計曲線` /* 設置UDF 模板輸入條件*/

EndModifyTemplate(udf) /*結束模板實例化*/

}

按以上知識工程代碼步驟創建的排水帷幕見圖3。

圖3 排水廊道及錨桿布置

3 結論

通過以上知識工程陣列在洞室錨桿支護布置及排水帷幕布置中的應用,實現了批量自動可視化設計工作,利用碰撞檢查提高了洞室布置設計的合理性,同時其成果對于類似工作的批量化操作可重復利用,大大提高了工作效率和質量,從側面也反映出CATIA 知識工程模塊解決類似問題的優越性,希望以上的設計思路及代碼能對其他工程技術人員解決類似問題時起到一定的借鑒作用。

猜你喜歡
輪廓線洞室列表
立體圖像任意剖面輪廓線提取方法仿真研究
基于爆破等效荷載的大型地下洞室群合理間距分析
關于隧洞圍巖破壞特征的連續-離散耦合分析
學習運用列表法
擴列吧
一種有效的秦俑碎塊匹配算法①
列表畫樹狀圖各有所長
大規模壓氣儲能洞室穩定性和洞周應變分析
水電站地下洞室塊體穩定性研究
2011年《小說月刊》轉載列表
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合