APP下载

基于Microstation平台的水利水电工程三维开挖设计软件开发与应用

2021-11-24傅志浩

人民珠江 2021年11期
关键词:剖面图剖面高程

吕 彬,傅志浩

(中水珠江规划勘测设计有限公司,广东 广州 510610)

水利水电工程项目设计过程中,一般都会遇到建基面开挖的相关设计工作,复杂建基面开挖及边坡设计通常会考虑多个方案进行比较,选取最优方案。因此,为提高设计效率及设计成果的质量,设计师通常比较关心:如何能快速准确的进行开挖设计、精确的工程量提取、开挖平剖面图绘制等工作。在传统二维设计中,通过长期的技术积累,已有相关的解决方案,如基于AutoCAD软件平台的 ZDM CAD辅助设计软件[1-2]。二维设计是在平面上用有限数量的剖面来表达开挖形式及相关参数的,实际工程中结构建基面的开挖往往同枢纽区的地质条件密切相关的,而地质条件又是在空间上连续变化或不连续变化(例如被断层等地质结构分开)的地层结构,因此实际的开挖面应该是三维的空间结构。用二维平面来表达三维空间结构,无论是可视化还是体型精度、工程量精度都有欠缺。

随着BIM技术的发展,三维设计手段逐步的被应用到水利水电工程整个设计周期中,目前的主要平台有:Autodesk、Bentley及Catia等,各平台均提供了基本的三维场地分析解决方案,如Autodesk平台下的Civil3D软件[3-4]、Bentley平台下的GEOPAK场地分析软件[5-7]及Catia平台三维场地分析功能[8]。各平台基本解决方案均有优缺点,但因不同平台的文件格式不一致,导致数据互通存在难度,各平台间常规的文件转换如:Civil3D设计的模型需要先导出成.landXML格式,然后用GEOPAK软件导入到Microstation平台;MicroStation平台的文件需要先导出成ParaSolid(*.X_T)、IGES(*.IGS)或STEP(*.STP)格式,再导入到Catia平台;类似这种直接导入导出的操作,会存在数据丢失的可能。针对三维开挖,成果一般为由一系列点及对应的点索引构成的三角网元素,各平台基本一致,区别在于要求的点及点索引文件的组织格式不一致。数据在各平台间的转换最根本的解决方案是通过编程的方式将基础平台网格元素的点及点索引导出,然后按照目标平台要求的格式进行转换后导入到目标平台,需要在2个不同平台上进行编程二次开发,增加了工作量且不经济。另外不同平台的切换不利于设计工作的开展,因此期望利用各平台功能优势互补的方式得到更好的开挖解决方案基本不可行。

笔者长期使用Bentley平台系列软件进行三维设计工作,对平台自身的三维场地分析软件GEOPAK有一定的研究与应用,该软件是在Bentley平台基础软件Microstation V8i上运行的国外软件开发商提供的软件,基本的三维开挖面设计、剖面图绘制及工程量提取功能基本满足需求,缺点如下:①操作流程复杂、操作习惯不符合一般的设计流程;②分层或分区土石方开挖工程量提取较困难,不可直接生成工程量表格;③生成的基本剖面图不符合国内一般出图习惯,后期需要大量二次加工,增加工作量;④无配套的模型及图纸标注工具,如平面高程、坡度标注,剖面图高程、坡度、桩号标注等。另外Bentley平台系列软件目前多数已升级至CONNECT Edition新版本,基于Microstation V8i的GEOPAK软件未进行全部功能的移植升级,当前多数Bentley平台用户对于枢纽工程的三维开挖设计仍在V8i版本上进行,随着软件版本的升级,旧版本功能停止更新直至淘汰是必然的。为更好的解决水利水电工程三维开挖问题,需要进行基础平台功能的扩展。

在平台软件基础上进行功能扩展的一般做法是进行二次开发。在Bentley平台系列软件上,傅志浩等[9]基于ABD软件进行了水工结构快速建模技术研究,提高了建模效率;王国光等[10]基于Microstation二次开发了地质三维勘察设计系统GeoStation,解决了地质三维模型的创建问题;傅霆等[11]开发了交通标志BIM软件,简化标志模板设计,快速构建标志库;谢先当等[12]基于OpenRail Designer软件研究了铁路路基BIM设计,提高铁路路基BIM设计效率;刘彦明[13]基于Power Civil软件研究了铁路桥梁构件三维参数化建模工具,实现桥梁三维设计软件参数化、关联化、标准化;刘廷[14]基于Microstation开发了横断面自动化、智能化提取工具,提高了工作效率。当前各行业在Bentley平台上的功能扩展研发工作均解决了特定的问题,在水利水电行业,暂无系统的针对三维开挖设计的工具研发。

基于上述情况,笔者在Bentley平台基础软件MicroStation CONNECT Edition Update11上进行了《PrpsdcBIM三维开挖辅助设计软件》的研发,从一线工程设计人员的角度探索三维设计中开挖设计解决方案,力求上手容易、操作简单、流程及思路符合设计人员设计思路、各种量值满足工程设计精度要求、剖面图成图符合出图习惯、拥有完整的配套图面标注工具。本软件在多个实际工程中应用效果较好,其开挖框架、能实现思路及关键技术研究对同类项目具有一定的参考意义。

1 软件功能

《PrpsdcBIM三维开挖辅助设计软件》主要分为:通用类、放坡类、辅助类、剖面类、统计类、标注类、土石坝等7个模块进行开发,见图1。

图1 软件功能组成

通用类模块主要完成线性元素高程设置、元素的隐藏及显示、图框调用及基本属性提取等功能;放坡类模块主要完成各类建基面(除土石坝外)条件下的开挖放坡线的生成;辅助类模块主要完成Mesh类型元素的生成、修改及Mesh之间的交线提取功能;剖面类模块主要完成剖面图的绘制,其中剖面线支持直线和折线两种类型;统计类模块主要完成相关工程量的统计及工程量表的生成;标注类模块主要完成开挖剖面图的标注工作;土石坝模块主要完成土石坝清基开挖相关工作。

2 软件开发方式及框架

2.1 开发方式

Bentley Microstation平台提供的二次开发方式有:基于C/C++语言的MDL(MicroStation Development Language/Library)、基于VB语言的MVBA(MicroStation Visual Basic for Application)及基于C#语言或其他.Net开发语言的Addins等[15]。开发难度方面MVBA最容易上手,适合开发简单的小工具,开发周期最短;MDL难度最大,但包含最全的功能;Addins介于两者之间。软件交付方式方面MVBA开发出来的项目需要向用户提供源代码,不利于知识产权保护;Addins和MDL都可以生成.dll提交,有利于保护知识产权。

本软件为单一功能的独立工具的组合不涉及系统性功能开发,综合考虑开发效率、难度及对知识产权保护因素,最终选择基于C#语言的Addins方式进行开发,对需要调用的MDL C++函数,通过C++/CLI的方式进行封装,用C#语言调用。

2.2 开发框架

软件由一系列具有独立功能的单个工具组合而成,开发框架分资源层、工具层及软件界面层,框架见图2。

图2 软件开发框架

2.2.1资源层

Bentley Microstation平台提供的二次开发基础函数库分两种形式:通过C++语言调用的MDL SDK函数库及通过C#直接调用的.dll函数库,MDL SDK包含了平台开放的所有函数,.dll函数库目前还不完整。资源层包含根据开发需求通过C++/CLI方式对MDL SDK库函数进行封装的供C#调用的.dll用户自定义函数库,以及开发过程中用到的按实现功能分类的用户自定义函数库。

通过C++/CLI方式封装的用户自定义函数库解决了当前平台提供的.dll库函数不完整的问题;按实现功能分类的用户自定义函数库解决了代码复用、减少代码量、提高开发效率的问题,同时也有利于程序的功能的扩展。

上述2种形式的用户自定义.dll函数库构成了资源层。

2.2.2工具层

工具层完成各模块中独立工具的功能实现,相同模块中单个工具所有.cs文件使用相同的命名空间;单个工具设计由工具界面层、核心功能实现层及交互层组成,见图2工具层通用类模块中“修改高程”工具组织框架。界面层处理工具UI界面,利用Winform控件实现,文件命名格式为xxxForm;核心功能实现层主要完成工具功能的实现,文件命名格式为xxxMethod.cs;交互层主要用于工具和模型绘图区域之间的数据输入、输出的交互,利用平台提供的DgnElementSetTool接口实现[16],文件命名格式为xxxTools.cs。其他模块及模块内工具的开发框架类似图2中通用类模块。

2.2.3软件界面层

软件界面层主要实现软件界面的定义与配置。Bentley Microstation平台二次开发工具调用的命令行是在commands.xml文件中定义的,该文件与程序功能代码同时编译,平台软件Microstation启动后通过不同的命令行调用对应工具。

软件界面是在Microstation平台软件的Ribbon 界面上进行扩展实现的,界面设计过程中给对应工具添加在commands.xml文件中预先定义的命令行字符串,界面配置完成后将.dng格式文件导出为.dnglib格式文件,将该.dnglib文件放置在Microstation程序安装目录下的特定文件夹内,Microstation程序启动时自动加载已配置的界面,通过对应按钮调用工具。

2.3 软件运行环境

a)硬件环境: CPU4.0GHz以上、硬盘120 G以上、内存4 G以上。

b)系统环境:Windows 7及以上。

c)基础软件:软件是基于Bentley MicroStation CONNECT Edition Update11平台开发的,经测试需要在Bentley MicroStation CONNECT Edition Update11 或 Update12上运行。

经测试,软件在上述运行环境下可正常流畅运行。

3 核心功能实现思路及关键技术

3.1 开挖边线生成

三维开挖线是指由结构建筑物的建基面控制边线(以下称为基线)按照一定的坡比、高差及放坡方向生成的开挖面控制边线(以下称控制线)。建基面较规则的结构,基线及控制线一般分为线的各控制点均等高程的平面线及至少有一个点不等高程的空间线。由基线生成控制线的基本思路为:通过对基线进行水平及竖直方向的偏移实现,偏移高差值为放坡段高程之差,偏移平距值为偏移高差值乘以坡比。关键性函数如下:

int mdlElmdscr_copyParallel(

MSElementDescrH outDscrPP,

MSElementDescrP inDscr,

Dpoint3d * point,

double distance,

Dpoint3d * normal)

3.2 开挖面及开挖开口线生成

三维开挖面是指由基线及控制线为边界构成的Mesh面,分初始开挖面和精确开挖面2种形式。初始开挖面由基线和控制线直接生成,边界一般伸出地形面,和地形面的交线确定开挖开口线;开口线和初始开挖面在空间上是重合的,位于其内侧的初始开挖面区域称作精确开挖面;精确开挖面是以开口线为剪切工具将位于其外侧的初始开挖面区域剪切掉的方式生成。

创建Mesh面的关键函数如下:

PolyfaceHeader.CreateXYTriangulation(IList point);

DgnNetElements.MeshHeaderElement

(DgnModel dgnModel,

Element templateElement,

PolyfaceHeader meshData);

开口线提取关键函数:

MSElementDescrP

mdlPop_elementDescrFromElementDescrIntersection

(MSElementDescrCP pDescr0,

MSElementDescrCP pDescr1,

MSElementCP pTemplate)

剪切初始开挖面关键函数:

Int mdlClip_element

(MSElementDescrH insideEdPP,

MSElementDescrH outsideEdPP,

MSElementDescrP inputEdP,

DgnModelRefP modelRef,

ClipVectorCP clip,

int view)

3.3 开挖工程量提取

结合实际工作需求,开挖工程量统计分为以下几种应用场景:①总开挖量统计;②总土石方单独工程量统计;③按建筑物部位分区(如重力坝的左坝肩、河床段、右坝肩)的分区开挖土石方工程量;④分层开挖量统计。

总开挖量是统计精确开挖面和原地形面包围的封闭区域的体积;总土石方单独工程量中,石方总量为精确开挖面与岩土分界面两者之间包围的封闭区域的体积,土方开挖总量为精确开挖面、岩土分界面及原地形面三者之间包围的封闭区域的体积;按建筑物部位分区的分区开挖量计算时,需给定分区范围,程序根据给定的分区范围将精确开挖面进行分割分区,然后用分割后的开挖面与岩土分界面、原地形面统计对应工程量;分层开挖量一般用于设计或施工过程中需要统计某高程段区间内开挖方量情况,需依次给定分层高程,程序根据分层高程创建位于该高程的水平分层Mesh面,最后利用分层面、精确开挖面及原地形面统计对应区域开挖量。如项目前期方案比选阶段暂无岩土分界面情况,软件给出了按土石方比例统计开挖量选项。

程序实现的关键是计算多个Mesh元素围封区域的体积,关键函数可用以下两种方式之一:

关键函数一:

bool ComputePrincipalMomentsAllowMissingSideFacets

(double & volume,

DPoint3dR centroid,

RotMatrixR axes,

DVec3dR momentxyz,

bool forcePositiveVolume,

double relativeTolerance = 1.0e-8 )

关键函数二:

PolyfaceHeader.ComputeSingleSheetCutFillMeshes

(PolyfaceHeader terrain,

PolyfaceHeader road,

out PolyfaceHeader cutMesh,

out PolyfaceHeader fillMesh);

3.4 支护工程量提取

水利水电工程基坑及边坡开挖面通常需要分区域进行不同支护措施或同种措施不同支护参数的支护,常规的支护措施有:挂网喷混凝土支护、排水孔。本软件可对常规支护措施的分区支护工程量、总工程量进行统计,生成分区支护参数表、分区支护工程量表及工程量总表。

操作中需预先对开挖面进行支护分区,软件内置了默认支护参数,用户可进行调整,默认参数的组织结构如下:锚杆规格为25@3×3(锚杆直径@锚杆间距×锚杆排距);锚杆长度为6/9(6、9 m锚杆错开布置);挂网参数为8@200×200(钢筋直径@网格长度×宽度);喷混凝土参数为C20@100(混凝土标号@喷混凝土厚度);排水孔参数为100@2×2/6(直径@间距×排距/长度)。

支护工程量提取的关键是快速进行精确开挖面按支护范围分区及提取分区范围的实际面积,通过分区面积及支护参数计算对应工程量,面积提取关键函数如下:

int mdlMeasure_areaProperties

(double * perimeterP,

double * areaP,

DPoint3dP normalP,

DPoint3dP centroidP,

DPoint3dP momentP,

double * iXYP,

double * iXZP,

double * iYZP,

DPoint3dP principalMomentsP,

DPoint3dP principalDirectionsP,

MSElementDescrP edP,

double tolerance)

3.5 开挖剖面图绘制

软件生成的开挖断面图由高程标尺及相关剖面元素组成,高程标尺为CellHeaderElement类型元素,标尺数值区间记录了当前剖面图的高程范围,可作为剖面图高程自动标注的基准点位及基础标高;剖面元素包含由所有相关Mesh面元素剖切的线性元素及建筑物结构剖切的CellHeaderElement元素。

剖面图程序生成过程为:对于Mesh面类型元素,利用剖面位置线投影到对应的面上,生成剖面线;对于结构模型的剖切,程序先将结构元素转换成Mesh类型元素,再用剖面位置线生成Z方向的Mesh面,最后通过Mesh面相交方式生成结构剖面线。上述生成的剖面元素均位于模型实际空间位置,一般平行于Z轴方向的任意面,需要通过平移、旋转的方式将剖面图放置在XY平面指定位置,对于折线型剖面位置线增加剖面元素展平过程。

通过线投影方式生成剖面线关键函数如下:

void SweepLinestringToMesh

(bvector< DPoint3d > & xyzOut,

bvector< int > & linestringIndexOut,

bvector< int > & meshIndexOut,

bvector< DPoint3d > const & linestringPoints,

DVec3dCR sweepDirection)

生成结构剖面线关键函数同上述开口线生成关键函数。

3.6 开挖剖面图标注

开挖图标注包含平面图上高程、坡比、控制点坐标标注等,剖面图上高程、坡比、桩号、特征水位等标注内容。标注工具的输出内容一般包含文字和符号。

符号指的是坡度标注的示坡线、高程标注的“倒三角”高程符号等(见工程应用部分展示示例),一般同类标注所用的符号基本一致,因此将所用到的符号预先定义在.dgnlib库文件中,标注时通过调用库文件中对应名称的符号。Microstation平台.dgnlib库文件的特点是定义好之后放在Microstation安装目录的特定位置,当程序启动时会自动加载到当前文件。

程序实现的基本思路为通过鼠标点选输入需要标注的线或点,经过几何运算计算出对应的高程、坡比、桩号等数值生成文字,然后调用对应的标注符号;文字和符号生成的初始位置均位于绘图空间XOY平面的坐标原点处,最后通过平移旋转的方式变换至标注位置进行输出。

4 工程应用实例

4.1 工程概况

某以供水和防洪为主、兼顾灌溉和发电的综合利用枢纽工程,工程等别为Ⅱ等,规模为大(2)型,碾压混凝土坝最大坝高75 m,拦河坝包括重力式挡水坝段、表孔溢流坝段、发电厂房进水口坝段等。坝址区河谷为基本对称“V”型纵向谷,属侵蚀剥蚀低山~丘陵区,左岸山顶高程274.60 m,坡角约30°~40°,右岸山顶高程245.0 m,坡角约30°~40°。左岸强风化上部岩体厚2.3~47.0 m,强风化下部岩体厚9.1~19.6 m,河床部位强风化厚2 m,右岸强风化上部岩体厚7.2~34.4 m,强风化下部岩体厚4.1~15.0 m。坝线右岸岸边f1断层附近岩层风化深,最深处低于河床约为10 m。

枢纽区左右岸边坡覆盖层较厚,坝顶以上边坡开挖高度右岸130 m、左岸150 m,总开挖量600余万m3,开挖部分工程投资对整个项目工程投资有较大影响,合理的坝线选择及开挖方案设计对工程建设有重要意义。项目从可研阶段开始采用BIM设计,初设阶段下坝址3条坝线及2种坝型共计组合的10种比选方案均采用三维开挖方式,在提高质量和效率方面起到了重要作用。项目目前为施工图阶段,共三期开挖图纸全部用本软件完成,并多次参与现场开挖工程量的复核工作,效果明显。枢纽布置三维模型见图3。

图3 枢纽布置三维模型

4.2 三维开挖设计流程

使用本软件进行三维开挖的具体流程如下:①使用辅助类模块中的“Mesh创建”工具以CAD地形等高线为边界创建三维地形模型;②提取结构模型建基面,生成开挖底边线;③结合地质模型确定开挖坡比;④使用放坡类模块中的“平面基线放坡”“空间基线放坡1”“多级马道放坡”等工具,以开挖底边线为基线进行开挖放坡线的设计,放坡线和地形相交处需伸出地形面;⑤利用辅助类模块中的“Mesh创建”工具,以开挖底边线和放坡线为基础生成三维初始开挖Mesh面;⑥利用辅助类模块中的“提取交线”工具,提取地形Mesh面和初始开挖面的交线,生成三维开挖开口线;利用“Mesh分割”工具,以开挖开口线为剪切工具,剪切初始开挖面生成精确开挖面;⑦以精确开挖面、地形面、地层面为基础,进行成果整理及输出,包括开挖工程量提取、支护工程量提取、开挖剖面图生成等应用,主要使用模块为统计类、剖面类及标注类模块。三维开挖设计流程见图4。

图4 三维开挖设计流程

4.3 应用成果及分析

完整的三维开挖成果较多,以下从成果质量、设计过程及出图效率3方面对应用成果进行介绍及分析。

a)成果质量。利用三维平台可视化优势,本软件设计成果实时三维展示,设计意图表达更为精确;平、剖面图及相关开挖、支护工程量均由三维模型提取得到,图面表达准确度及工程量精度均优于二维设计;案例施工过程中实际分期开挖工程量与设计图纸工程量基本一致;三维开挖面见图5、三维开挖分区图及分区土石方开挖工程量见图6、表1。

图5 三维开挖面

表1 三维开挖分区土石方工程量

b)设计过程。本软件在整个开挖模型创建过程均有对应工具做支撑,如可批量进行多级马道放坡、一键提取开挖开口线、批量切图等,相比传统方法提高设计效率明显,案例应用本软件完成枢纽区大坝及厂房的开挖设计、工程量提取、平剖面图底图绘制工作相比传统方法效率提高70%以上;剖面图见图7,图中除高程、坡比、桩号及特征水位等标注信息之外的开挖线、地层线、结构线、坝轴线0桩号位置线及高程标尺均为本软件切图工具剖切模型一次生成。

图7 开挖剖面图及标注

c)出图效率。本软件提供了平、剖面图高程、坡度、桩号、特征水位等标注工具,可快速进行相关标注,提高成图及出图效率,案例应用本软件的成图效率比传统方法提高50%以上,实际标注效果见图7开挖剖面上标注信息。在图纸信息表达方面,案例在提供常规的施工蓝图外,同时提供基于模型的三维轴测图图纸,施工现场二、三维图纸相互参阅,有利于施工人员对传统二维图纸的理解、避免图纸理解方面的歧义,得到项目参建各方的充分肯定。

5 结语

a)当前勘察设计行业所采用的三维设计平台多数仅能满足设计过程中的基本需求,要更好的利用及推广三维设计技术,需对功能进行二次开发补充;对Microstation平台二次开发方式、框架及底层库函数的研究可为平台其他功能的扩展提供参考。

b)三维设计技术在水利水电工程设计中应用日益广泛,三维开挖设计是整个设计工作的重要组成部分,对Bentley Microstation平台进行相应功能的二次开发,完善了基础平台设计工具功能体系,提高设计质量及设计效率。

c)多个生产项目的实际应用表明,研究成果软件在三维开挖设计中提高设计产品质量、提升设计效率方面效果明显,得到了设计人员及项目业主的认可,对推动三维正向设计的落地具有积极意义。

猜你喜欢

剖面图剖面高程
ATC系统处理FF-ICE四维剖面的分析
场景高程对任意构型双基SAR成像的影响
海南省北门江中下游流域面积高程积分的应用
8848.86m珠峰新高程
广东省风门坳锡矿地球化学特征与找矿标志
喷气式民航客机剖面图?
中国有了第11颗“金钉子”
基于二次曲面函数的高程拟合研究
地质雷达技术在管道河流地层划分中的应用
B/S模式SEG-Y格式地震数据的读取与演示