APP下载

ObjectARX在土石方工程三维设计中的应用

2022-11-23王大志

水利水电快报 2022年8期
关键词:土石方控制点工程地质

王大志,黄 鹏

(国家电投集团广西电力有限公司,广西 南宁 530022)

0 引 言

随着近几年BIM(建筑信息模型)技术的兴起,越来越多的工程设计人员开始从二维设计转向三维设计。二维设计大多采用AutoCAD软件。该软件价格便宜、使用方便,且对计算机硬件配置要求较低,提供的二次开发接口便于用户扩展其功能。因此,设计人员多倾向于在AutoCAD上开展土石方工程三维设计。然而,AutoCAD自带的三维内部命令仅能实现最基础的三维设计,例如:规则三维实体的建立、三维实体的简单剖切、绘制符合函数变化规律的三维多段线等;然而土石方工程三维设计涉及的三维实体模型复杂,对三维模型的数据获取要求高,因此,工程设计人员开始使用Civil 3D,Revit,Bentley,CATIA,GEOPAK等功能强大的软件开展土石方工程三维设计,但这些软件存在以下不足:① 价格昂贵,例如一套CATIA软件的使用费约为10万元,而一套AutoCAD软件的使用费仅约0.8万元;② 功能繁杂,熟练掌握软件应用需花费大量精力,且软件中很多功能使用率低;③ 三维设计工作流程繁多、效率低,例如Civil 3D进行复杂的放坡设计时,必须在配套的Subassembly软件上完成放坡截面装配设计,然后将数据输入到Civil 3D以完成后续设计[1];④ 对计算机硬件配置要求高,使用配置较低的电脑运行会出现卡顿;⑤ 核心功能不全,例如Revit的三维路线功能不全,需要使用dynamo插件先建立三维路线,再导入到Revit,而dynamo插件的安装又增加了软件的使用难度[2]。

因此,如果能直接在AutoCAD平台上进行土石方工程三维设计,工程设计人员将不需要花费大量精力去熟悉新的软件,而是把精力多放在设计上;同时,也能提高设计工作效率,带来较大的经济效益。国内仅有少数专家、学者利用AutoCAD平台开展土石方工程三维设计研究,取得了一定成果。周乐韬等[3]建立了地形三维实体和挖方三维实体,并通过布尔运算,得到基坑开挖设计三维实体,实现了基坑开挖的三维设计。李文昌等[4]利用AutoCAD内部命令,采用切割的方式,实现了单级边坡开挖的三维设计。廉杰等[5]利用AutoCAD二次开发技术建立三维实体地形,并通过拉伸挖填实体地形建立辅助三维实体,再通过布尔运算得到设计三维实体。然而,上述研究仅能实现基坑开挖、单级边坡开挖等简单体型的三维设计,未能实现土石方工程量的分类统计及施工控制点坐标的提取。在充分吸取上述研究成果的基础上,采用基于AutoCAD平台的ObjectARX二次开发技术,实现了土石方工程三维设计。

1 ObjectARX三维实体造型技术

ObjectARX是基于AutoCAD平台的二次开发软件包,它生成的ARX应用程序是一个DLL(动态链接库),对AutoCAD直接进行函数调用[6]。ObjectARX可以实现对AutoCAD底层进行二次开发,能够满足不同专业设计人员的开发需求。ObjectARX常用的开发环境为Microsoft visual studio,同时,还需要安装ObjectARX SDK;不同的AutoCAD版本对应不同的ObjectARX SDK版本。

ObjectARX三维实体造型技术包括实体生成、设计和查询[7]。实体生成使用AcDb类和AcGe类的相关函数。实体设计主要靠实体间的布尔运算来实现。布尔运算是数字符号化的逻辑推演法,包括合并、相交、相减[8]。该方法可以将简单的基本图形组合产生新的形体。实体的布尔运算有3种:① 并运算,求两个或两个以上实体的并集,即合并为一个实体;② 交运算,求两个或两个以上实体的交集,即生成实体的公共部分;③ 差运算,将一个实体集从另一个实体集中减去。实体查询是通过相关函数获取实体的信息,包括质量、体积、坐标等。

在实际应用过程中,首先调用AcDb3dSolid类的成员函数初始化三维实体,然后调用booleanOper函数进行布尔运算得到设计三维实体,最后以getSlice和getMassProp函数为基础,构造自定义的函数对三维实体进行剖切和查询,检查设计成果。

2 设计思路

土石方工程三维设计的思路是根据坡比、坡高、马道宽度、方向等设计参数,快速建立设计三维实体。首先,根据地形测量数据和地质钻孔数据建立原始工程地质三维实体。其次,通过设定边坡、基坑、堤坝、沟槽等挖填参数绘制放坡封闭横截面,再生成面域,然后以挖填体的走向线为扫掠路径,通过沿扫掠路径拉伸面域形成辅助三维实体。最后,辅助三维实体和原始工程地质三维实体进行布尔运算,获得设计三维实体。对于上述每个设计步骤,采用ObjectARX技术编制应用程序,进而实现在AutoCAD平台的土石方工程三维设计过程中调用(图1)。

图1 建立设计三维实体流程Fig.1 Processes of establishing a designed 3D solid

3 设计方法

3.1 原始工程地质三维实体建立

采用Delaunay三角剖分法绘制地形三角网曲面[9],如图2所示;利用Surfer软件对地层钻孔数据进行插值拟合,形成三维网格数据文件,并导出为“*.dat”格式,利用ObjectARX二次开发技术编程建立地层三角网面;建立扫掠、放样建模接口函数,沿Z轴拉伸各地层三角网面形成实体,并通过布尔运算生成原始工程地质三维实体模型[10],如图3所示。

图2 基于Delaunay三角剖分的地形三角网面Fig.2 Terrain triangulation based on Delaunay triangulation

图3 原始工程地质三维实体模型Fig.3 3D solid model of original engineering geology

3.2 辅助三维实体建立

3.2.1 走向线绘制

辅助三维实体是由符合坡比、坡高、马道宽度等设计参数约束条件的放坡封闭横截面沿走向线拉伸而形成的三维实体[11]。放坡封闭横截面是一个垂直于走向线的二维封闭图形。该图形靠设计边坡一侧的曲线由多级边坡设计参数确定。走向线是放坡封闭横截面在原始工程地质三维实体上的延伸方向线(图4)。

图4 放坡封闭横截面和走向线关系Fig.4 Relationship between sloping closed cross section and strike line

在建立放坡封闭横截面前,工程设计人员必须根据设计意图绘制出走向线。走向线类似于道路的路线,是一条由三维坐标点(包括X,Y,Z坐标)连接而成的三维多段线(AcDb3DPolyline)。

对于基坑开挖、边坡开挖、堤坝回填等项目,走向线上点的Z坐标一般位于同一高程,可以先在XY平面直角坐标系中绘制一条二维多段线(AcDb2DPolyline),然后将该二维多段线移至设计高程处得到走向线(图5)。

图5 基坑开挖、边坡开挖、堤坝回填项目走向线Fig.5 Strike lines of foundation pit excavation,slope excavation and embankment backfilling projects

对于沟槽开挖项目,走向线上的Z坐标一般不在同一高程,走向线的平面线形(俯视图投影线)和纵面线形(正视图投影线)由设计人员通过计算得出,沟槽开挖项目的走向线如图6所示。因此,沟槽开挖项目绘制走向线的方法是先从平面线形中提取X和Y坐标点,然后从纵面线形中提取Z坐标点,最后将坐标值代入绘图函数,绘制走向线[12],具体步骤如下。

图6 沟槽开挖项目走向线Fig.6 Strike line of trench excavation project

(1) 设置一个步长,从平面线形起点桩号至终点桩号,沿长度方向逐步提取平面线形的X坐标和Y坐标。坐标提取通过AcDbCurve类的“getPointAtDist”函数实现,该函数定义为:

getPointAtDist(double dist,AcGePoint3d& point)

其中,dist为沿曲线输入从曲线的起点桩号至需要定位的点的距离,point返回由dist定位的点。该函数在曲线上确定从曲线起点桩号沿曲线距离为dist的点,并在point中返回这个点。

(2) 按照先前设置的步长,从纵面线形起点桩号至终点桩号,沿长度方向逐步绘制辅助直线,并利用“intersectWith”函数提取辅助直线和纵面线形交点。该交点的Y坐标值即为走向线的Z坐标值,该函数定义为:

intersectWith(AcDbEntity*pEnt,AcDb::Intersect intType,AcGePlane&projPlane,AcGePoint3dArray &points,int thisGsMarker=0,int otherGsMarker=0)

其中,pEnt为与“this”实体相交的输入实体,intType输入要求的交叉点类型,points输出附加的交点,thisGsMarker输入交叉操作中涉及的“this”实体的子实体的GS标记,otherGsMarker输入交叉操作中涉及的pEnt指向的实体的子实体的GS标记。

(3) 将从平面线形和纵面线形提取的坐标值合并,得到走向线的三维空间坐标点并绘制走向线。步长设置得越小,得到的走向线精度越高[13],如图7所示。

3.2.2 放坡封闭横截面绘制

建立辅助三维实体最关键的步骤是根据已确定的走向线绘制放坡封闭横截面。挖方项目和填方项目绘制放坡封闭横截面的方法各不相同,绘制方法如下。

(1) 挖方项目放坡封闭横截面。挖方项目放坡是从设计开挖高程坡脚点,根据坡比、坡高和马道宽度逐级往上放坡。在XY平面直角坐标系中,以坡脚点为原点,根据每级边坡的坡比、坡高、马道宽度等设计参数,逐级确定放坡封闭横截面边界点坐标(图8)。

图7 从平面线形和纵面线形提取坐标点绘制走向线Fig.7 Extracting points from horizontal and vertical alignments and draw strike lines

图8 挖方项目放坡封闭横截面边界点Fig.8 Closed cross section boundary points of cutting project grading

图8中,pt[0]既是坡脚点,也是走向线起点。从原点pt[0]开始,可以按照设计参数确定的约束关系,依次求得边界点坐标值。由于ObjectARX参数化绘图环境为Wcs坐标系,而求得的坐标值是在XY平面直角坐标系(Ucs坐标系)中的值,因此必须调用“acdbUcs2Wcs”函数,将求得的坐标值转换为Wcs坐标系中的值。最后,将转换后的坐标值代入绘图函数,绘制放坡封闭横截面,如图9所示。

图9 挖方项目放坡封闭横截面Fig.9 Closed cross section of cutting project grading

(2) 填方项目放坡封闭横截面。填方项目放坡一般从设计高程回填边缘,根据坡比、坡高和马道宽度逐级往下放坡。以走向线起点为原点,按照设计参数确定的约束关系,依次求得边界点坐标值(图10)。然后,按照挖方项目的方法,对坐标值进行转换后绘图,如图11所示。

图10 填方项目放坡封闭横截面边界点Fig.10 Closed cross section boundary points of filling project grading

图11 填方项目放坡封闭横截面Fig.11 Closed cross section of filling project grading

3.2.3 辅助三维实体的扫掠生成

在AutoCAD平台中,可以利用ObjectARX技术调用“extrudeAlongPath”函数实现扫掠指令,通过沿着指定的路径延伸轮廓形状,绘制出三维实体[14]。在绘制完成放坡封闭横截面后,调用该命令,以挖填体的走向线为扫掠路径,通过沿扫掠路径拉伸面域生成辅助三维实体(图12)。

图12 辅助三维实体建立Fig.12 Creating auxiliary 3D Solids

3.3 设计三维实体建立

三维实体之间的差集、并集和交集可以通过布尔运算函数来实现。对于挖方项目,将原始工程地质三维实体作为求差主体,和辅助三维实体求差集得到设计三维实体。对于填方项目,将辅助三维实体作为求差主体,和原始工程地质三维实体求差集得到设计三维实体(图13)。调用AcDb3dSolid类的“booleanOper”函数可以实现三维实体的布尔运算,该函数定义为

booleanOper(AcDb::BoolOperType operation,AcDb3dSolid*solid)

其中,operation输入布尔运算的类型,可能的类型有AcDb::kBoolUnite,AcDb::kBoolIntersect和AcDb::kBoolSubtract;solid输入指向其他实体的指针,用于执行布尔运算。

生成设计三维实体后,可以采用相关函数对实体进行渲染,得到实体真实效果。Render API是专门实现渲染功能的应用程序包,包括acRender.arx和avlib.lib文件。acRender.arx负责与AutoCAD通信,avlib.lib则包含了与acRender.arx通信的各种编程接口。Render API函数库提供了相应的渲染函数,每个函数能实现特定的渲染功能。

图13 设计三维实体建立Fig.13 Creating a designed 3D solid

3.4 设计三维实体信息查询

3.4.1 挖填设计工程量查询

在建立土石方工程设计三维实体后,需统计挖填设计工程量,为方案比选、工程造价计算等工作提供依据。

首先,利用“booleanOper”函数求得开挖三维实体或回填三维实体。对于挖方项目,将原始工程地质的各地层三维实体和辅助三维实体分别求交集得到开挖三维实体。对于填方项目,将辅助三维实体作为求差主体,和原始工程地质三维实体求差集得到回填三维实体(图14)。

图14 开挖三维实体和回填三维实体Fig.14 Excavation 3D solid and backfill 3D solid

其次,利用“getMassProp”函数来实现对三维实体的体积查询,该函数定义为:

getMassProp(double&volume,AcGePoint 3d & centroid,double momInertia[3],double prodInertia[3],double prinMoments[3],AcGeVector3d prinAxes[3],double radiiGyration[3],AcDbExtents& extents)

其中,volume返回实体的体积,centroid返回实体的质心,momInertia返回固体惯性的X,Y和Z矩,prodInertia返回固体惯性的X,Y和Z乘积,prinMoments返回实体的X,Y和Z主矩,prinAxes返回实体的X,Y和Z主轴,radiiGyration返回实体回转的X,Y和Z半径,extents返回实体的边界框。通过调用该函数,查询“volume”参数,可得到开挖三维实体和回填三维实体的体积,即挖填设计工程量。

3.4.2 施工控制点坐标提取

施工控制点坐标是土石方工程三维设计的重要数据之一,为挖填施工放样提供数据支撑(图15)。目前,一般采用的方法是间隔一段距离绘制挖填横剖面图,通过计算挖填线和地形线的交点,获得施工控制点坐标[15]。该方法工作量大、耗时长。本文在三维设计中,直接利用ObjectARX的三维实体边界信息提取技术快速实现施工控制点坐标的提取。

图15 边坡开挖施工控制点坐标示意Fig.15 Schematic diagram of coordinates of control points for slope excavation construction

(1) 提取施工控制点坐标原理。在AutoCAD中,三维实体模型是由点、线、面等子实体构成。模型的几何信息包括形体的形状、位置、大小、尺寸等,模型的拓扑信息包括形体的顶点、边、表面等相互之间的连接关系,二者构成一个有机的整体,共同形成对三维实体模型的完整的描述[16]。ObjectARX是通过边界表示法(AcBr)来精确表达三维实体模型的几何信息和拓扑信息。因此,可以通过建立三维实体模型的AcBr类库对象来访问三维实体模型的各个构成元素,如点、边、面的基本信息和顶点坐标数据。

(2) 提取施工控制点坐标步骤。首先,选择设计三维实体某一个设计挖填表面,调用“getSubentPathsAtGsMarker”函数获取子实体路径。其次,基于此子实体路径,建立一个新的边界表示对象(AcBr),使子实体与自身的对象取得联系。然后,利用此边界表示对象,依次层层建立面(AcBrFace)、边界环(AcBrLoop)、边(AcBrEdge)对象。最后,提取边对象的顶点坐标,即得到施工控制点坐标数据(图16)。

图16 获取设计挖填表面施工控制点坐标Fig.16 Obtaining the coordinates of construction control points on the designed excavation and filling surface

3.5 设计施工详图制作

在AutoCAD平台中,可以利用建立的设计三维实体模型在图纸空间中快速生成俯视图和剖视图,接着调用“Solprof”命令,提取各视图的轮廓线,直接生成二维图形,然后进行标注得到二维工程施工详图[17]。

4 工程实例

国家电投兴安风电项目石料场距离升压站12.6 km,该项目石料需求约6万m3。石料场出露灰白色厚层细粒砂岩,局部夹薄层泥质粉砂岩。层状构造,岩层产状,倾向153°,倾角28°~35°。该石料场开采的施工图设计采取了三维设计模式。

首先,根据石料场地形测绘数据和地质钻孔资料建立石料场原始工程地质三维实体(图17)。

图17 石料场原始工程地质三维实体Fig.17 Original engineering geological 3D entity of quarry

其次,依据边坡设计相关规范,计算并确定边坡开挖坡比、坡高、马道宽度等参数,然后根据设计参数在不同高程绘制走向线和放坡封闭横截面,并建立边坡开挖设计三维实体。通过方案比选,根据开挖底部平台设计高程685 m,最终确定石料场开采量约为12.6万m3,其中剥离料为3.5万m3,有用料为9.1万m3,剥采比为1∶3.6,满足风机基础和挡土墙浇筑需求(图18)。

图18 石料场边坡开挖设计三维实体Fig.18 3D solid of quarry slope excavation design

兴安风电场内道路K18+264~K18+527处边坡受暴雨作用,形成牵引式滑坡。滑坡发生后,对该滑坡进行了勘测并提出采用抗滑桩的治理方案。在滑坡前缘布置一排8根抗滑桩,桩间距6 m,抗滑桩采用直径2 m的圆形截面,桩深12 m(图19)。

图19 抗滑桩设计三维实体Fig.19 3D solid of anti slide pile design

5 结 论

本文在AutoCAD平台上,利用ObjectARX二次开发技术,开展了土石方工程三维设计研究。得出的主要结论如下。

(1) 基于AutoCAD平台的ObjectARX二次开发技术功能强大,利用此技术编制的应用程序满足土石方工程三维设计要求。

(2) 在利用ObjectARX技术进行三维设计应用程序编制的过程中,每个步骤的实现仅利用了少数核心函数,所编制的应用程序操作简单、实用可靠。

(3) 在土石方工程三维设计领域,以三维实体布尔运算为基础的设计方法实现了三维设计的“所见即所得”,比以曲面(Civil 3D,CATIA)为基础的设计方法更直观、流程更简洁、效率更高。

(4) 将机械三维设计常用的边界信息提取技术应用到土石方工程三维设计,解决了快速获取设计三维实体施工控制点坐标的难题。

本文建立的设计三维实体能反映出各施工阶段的地质情况。基于此成果,下一步将开展边坡支护设计和爆破施工设计方面的研究。

猜你喜欢

土石方控制点工程地质
矿业工程地质及水文地质教学模式构建与实践
顾及控制点空间分布的坐标转换模型研究
全站仪专项功能应用小技巧
核电厂土石方平衡影响因素分析
露天矿山土石方量的测量及计算
顾及控制点均匀性的无人机实景三维建模精度分析
让复杂的事尽在掌控中
探讨新时期如何做好工程地质勘察档案管理工作
新疆工程地质与水文地质教育的现状及发展研究