APP下载

CATIA 知识工程在锚杆支护和排水帷幕中的应用

2020-11-20补舒棋

陕西水利 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年《小说月刊》转载列表