基于AutoLISP 的岩土工程勘察方案辅助设计系统研究

2022-07-08 03:04张志遥
电子技术与软件工程 2022年1期
关键词:孔数数组批量

张志遥

(上海申元岩土工程有限公司 上海市 200011)

1 引言

目前市场尚未见有适用于岩土工程勘察的辅助设计系统,随着计算机技术的应用的发展,基于CAD 二次开发来提高工程人员生产效率的思路和方法也得到了极大的拓展。勘察工作中大量的密集、重复性的劳动,都可利用辅助程序来完成。

目前勘察工程师的主要任务为项目报价、编写标书、编写勘察报告三项,以上三项工作都需要布置勘察方案。在岩土工程勘察实践中,布置勘察方案是一个岩土工程师的核心技能。勘察方案应根据拟建物的性质、几何形状、拓扑关系、拟采用的基础形式和相应的规范要求布置。其中大部分的工作在CAD 内中完成,工程师需逐点放置勘探孔,并且勘探孔图元和其代表的信息无法直接对应。勘察工作人员需要花费大量的时间逐一放置和编辑勘探孔,在进行大量重复操作时,出错的概率随着项目规模的增大而线形增加,所以在布置工程勘察方案结束后需花大量时间进行校核。同时在进行方案修改时,需对CAD 中的勘探孔逐个进行修改,在变更量较大时,几乎等同于全部重做。工程中需要对勘察工作的造价进行估计,这项工作需要在较短的时间完成,因此需要工程师在较短的时间布置勘察方案。基于以上问题,本文利用Lisp 语言开发了一套勘察辅助设计系统,可以有效地减少布置勘察方案的重复性劳动,提高布置勘察方案的效率,保证方案的质量。

2 布置勘察方案的内容与创新点

2.1 关键步骤

目前布置勘察方案共9 个步骤,在工程实践中,工程师布置勘察方案的各步骤及其用时占比如下:

(1)查找拟建场地周边勘察资料(3%);

(2)确定勘探孔的深度(3%);

(3)确定基础勘探孔的间距和控制方式(4%);

(4)布置勘察方案,为控制建筑轮廓,人工放置图元(30%);

(5)人工检查勘探孔间距(6%);

(6)选择勘探孔,将其改为控制性孔(4%);

(7)绘制勘探孔剖面(20%);

(8)人工统计孔数、进尺(10%);

(9)根据地层分布、勘探孔进尺确定地基土原位测试、室内试验项目、数量(20%)。

其中第4 步~第8 步在CAD 中进行,累计用时占比约70%。这5 个步骤计算量极少,几乎全部是重复性工作,但是占用了勘察工程师大量的时间。对以上5 个步骤用辅助程序来完成,是大幅提高布置勘察方案的效率,提高方案质量关键。

2.2 开发语言

本文采用AutoLISP 对AutoCAD 进行二次开发。AutoLISP 是为二次开发AutoCAD 而专门设计的编程语言,它起源于LISP 语言,嵌入在AutoCAD 的内部,可以在AutoCAD 命令行中直接进行使用,也在AutoCAD 内置的编辑器中进行编写。

AutoLISP 采用了和CommonLISP 最相近的语法和习惯约定,具有CommonLISP 的特性,但又针对AutoCAD 增加了许多功能。它既有LISP 语言人工智能的特性,又具有AutoCAD 强大的图形编辑功能的特点。它可以把AutoLISP程序和AutoCAD 的绘图命令透明地结合起来,使设计和绘图完全融为一体,还可以实现对AutoCAD 图形数据库的直接访问和修改。[1]

2.3 研究内容

本次研究旨在利用AutoLISP 编程语言,研发具有用户操作界面的布置勘察方案的辅助程序。在前述中,需对第4步~第8 步进行简化。具体需求如下:

(1)实现自动布置勘探孔图元同时控制勘探孔间距。将相关规范和工程经验编入勘察方案的辅助程序,使得用户在拾取CAD 中两点或较规则的拟建物轮廓时,辅助程序可按规范规则自动布置勘察方案。

(2)实现勘探孔自动编号。同时用户可以批量增加、删除、修改、查询、提取、自动统计勘探孔信息;

(3)按照用户选择的勘探孔批量生产工程剖面,并批量修改剖面编号,大幅减少布置勘察方案所用时间。

基于以上需求,本文充分利用了AutoLISP 开发了一套针对布置勘察方案重复操作的,极大程度提高工作效率及方案质量的勘察方案辅助程序。

3 勘察方案辅助设计系统开发

3.1 人工布置勘察方案的思路

依据对自动布置勘探孔图元同时控制勘探孔间距需求的分析,目前该步骤主要为在确定了布孔原则后,工程师需在总平面图上,延拟建物轮廓或柱网轴线逐点放置按规范勘探孔。针对一个拟建物单体布置勘察方案的人工实现如下:

(1)根据建筑轮廓,将其抽象或分割成四边形或三角形(一条边长度为0 的四边形)的组合。

(2)选中四边形或三角形,选取2 条对边。

(3)选择一条边。

(4)根据该边的长度以及拟选用的勘探孔间距计算出要布置多少钻孔。

(5)放置图元,量取并标记下一点的坐标。

(6)重复上一步操作,直至该条边放置勘探孔图元结束。

(7)选中另一条边,重复第6 步操作,直至该条边放置勘探孔图元结束。

(8)将两条边上的勘探孔一一对应,并依次做辅助直线。

(9)选中所有辅助直线,对每一条,进行4-5 步操作。

(10)对所有边布置勘探孔后,做一个辅助圆,辅助圆的半径等于最大勘探孔间距,对勘探孔间距进行人工检查,若发现勘探孔间距大于圆半径,则调整勘探孔的距离。

(11)在检查所有勘探孔间距后,根据勘探孔在当前坐标系中勘探孔的位置,需要按照先上后下,先左后右的规则修改钻孔的孔号。

(12)依次修改勘探孔的孔深,按一定比例调整勘探孔的类型。

(13)按规范选择部分勘探孔,将其孔深改为控制下勘探孔的孔深。

(14)统计勘探孔的属性,并导出表格

(15)按照一定规则绘制剖面,剖面为多段线,多段线的端点经过相应的勘探孔图元的基点。

以上步骤中第13 步的逻辑较为复杂,不同的建筑单体,其控制性勘探孔的比例和放置位置差距较大。除此之外,其余步骤都可由程序来代替或简化。根据具体需求,可拆分成四段程序。

3.2 程序逻辑

3.2.1 勘探孔动态属性块

在目前的规范中,仅对勘探孔的图例做了规定,但未对勘探孔的cad 图元格式有要求。按照以往的模式,工程师会按照规范图例在cad 中绘制出勘探孔形状,然后使用单行文字表示其孔号、孔深、孔数等信息。该方法有较大的局限性,文字只是简单地摆在图例边,两者是无关的图元。如果要对孔号等参数进行修改,则需要选择勘探孔边的文字,依次进行修改。

若要实现批量处理钻孔,那么首先需要将勘探孔的信息与图元挂钩,将其结合成一个属性块。勘探孔本身作为一个块,孔深、孔数、高程、坐标作为该块的属性,与勘探孔块绑定在一起。再将动作赋给每一个属性,使得属性和图元可以在块外进行移动或旋转。根据图元dxf 码就能读取勘探孔内在的参数,进而可以实现批量操作。[2]

3.2.2 直线布孔

布置勘探孔的基本流程有三个,选择勘探孔属性快,选择布置勘探孔的坐标,插入勘探孔属性快。在一般的勘察项目中,取土孔、静力触探孔和小螺纹钻孔占所有勘探孔的比例超过90%,所以在编写批量布置钻孔的程序时,仅考虑批量布置上述3 种钻孔。根据工程经验,取土孔与静力触探孔的比例不小于1:2,所以程序中2 种勘探孔的比例按照1:2 考虑,小螺纹孔的孔距小于15m,一般在取土孔和静力触探孔中均匀分布。针对该步骤,其程序设计思路如下:

(1)输入直线开始点和结束点的坐标,计算两点间距离L。

(2)选择取土孔和静探孔保持固定比例时的插入顺序,如取静静(既取土-静探-静探),静取静(既静探-取土-静探),静静取(既静探-取土-静探)等模式。

(3)让用户输入勘探孔间距S。

(4)设定参数daixz,该参数初始值为0。并让用户选择是否带小螺纹钻孔,若带小螺纹钻孔,令其值为1。

(5)设定两点间要插入n 个勘探孔,则两点间距离L被分为n+1 段。n 的初始值为0。

(8)根据所有勘探孔孔数和勘探孔最终间距,以开始点为基点计算插入勘探孔的点的坐标,并检查开始点和结束点是否已经存在勘探孔。

你知道吗罗漠,他们是真的恩爱,每天父亲上班前都会亲吻我们,买各种各样的礼物,给母亲,给我。他们从来不吵架,永远微笑。那时候真幸福啊,罗漠,我以为自己是公主,永远没有忧愁。

(9)根据计算所得的插入点坐标,循环执行插入勘探孔命令。

3.2.3 四边形布孔

本功能对应3.1 节的第1 步-第10 步操作,有了直线布孔的函数基础,可以完成第1-8 步后,循环执行第9 步。具体流程如下:

(1)拾取已有四边形,或绘制四边形。

(2)按顺时针取得四边形四个顶点,分别赋值给pt1、pt2、pt3、pt4。

(3)根据四个点,选取2 条对边,两条边的边长分别为L1、L2。设定第一条两点间要插入n1 个勘探孔,则两点间距离L1被分为n1+1段;第二条两点间要插入n2个勘探孔,则两点间距离L2 被分为n2+1 段。n1 和n2 的初始值都为0。

(4)开启循环,测试条件为勘探孔间距S 和第一条边长度L1 的对比,当S 小于L1 时,n1 的值+1。在经过若干轮循环之后,得到的最终插入勘探孔数为n1 个,勘探孔最终间距为x1。开启第二轮循环,测试条件为勘探孔间距S和第二条边长度L2 的对比,当S 小于L2 时,n2 的值+1。在经过若干轮循环之后,得到的最终插入勘探孔数为n2 个,勘探孔最终间距为x2。若两条对边的插入的勘探孔数相等,则执行下一步;若不相等,则对另外两条对边进行测试。若依然不相等,则打印提示。

(5)根据勘探孔数和孔距,以开始点为基点计算插入勘探孔的点的坐标,并检查开始点和结束点是否已经存在勘探孔,然后插入勘探孔。两条对边上的勘探点的插入点一一对应,根据一一对应的点再执行按两点间直线布孔函数,依次执行生成勘探孔。

由于勘探孔位置由程序控制,勘探孔的间距完全满足用户要求,无需执行第10 步。

3.2.4 批量修改勘探孔孔号

本功能对应3.1 节的第11 步-第12 步操作。在布置好钻孔之后,需要按照先上后下,先左后右的规则修改钻孔的孔号,然后按照拟建物的性质批量修改孔深。在全部修改完毕之后,才能根据对所有钻孔的个数与进尺进行统计。这个步骤仅需要进行简单的计算,基本都为重复操作,适合应用程序来批量处理。具体流程如下:

(1)根据勘探孔的种类创建选择集,有n 种勘探孔就创建n 个选择集。根据图层、图元类型、块名属性选择所有的勘探孔,每种勘探孔的数量就代表相应选择集列表的长度。

(2)遍历n 个选择集,然后在遍历单个选择集中每个元素,将单个选择集内勘探孔的图元名取出放在一个数组里。这样就针对n 种勘探孔生成n 个包含勘探孔图元名的数组。

(3)遍历第一个数组中所有图元,根据图元名取到每个勘探孔的基点坐标,使用冒泡排序算法,将勘探孔根据先比较Y 坐标排序,再比较X 坐标,对数组重新排序。然后将由小到大孔号根据数组顺序依次替换勘探孔图元的孔号属性。

(4)遍历n 个数组,重复以上操作,直至所有数组循环完毕。

3.2.5 统计勘探孔的属性

本功能对应3.1 节的第14 步操作。在布置好钻孔之后,自动选中所有勘探孔,对勘探孔进行分类汇总,并自动计算总孔深。这个步骤仅需要进行简单的计算,具体流程如下:

(1)根据勘探孔的种类创建n 个选择集,选择集包含图纸范围内所有的该类型勘探孔。

(2)遍历选择集中每个元素,将单个选择集内勘探孔的图元名取出放在一个数组里。这样就针对n 种勘探孔生成n 个包含勘探孔图元名的数组。

(3)遍历数组中所有图元名,根据图元名取到图元所有属性。

(4)将同类型同孔深的勘探孔放在同一个数组中,数组长度则为该类型勘探孔个数;将同类型勘探孔的孔数相加求和,将该类型的勘探孔名称和孔数之和组成新的数组。

(5)将以上数组以Excel 表格形式导出。

3.2.6 绘制剖面图

本功能对应3.1 节的第15 步操作。在完全布置好钻孔之后,按照一定规律创建多段线,使得多段线通过相应的钻孔。具体流程如下:

(1)选中所有勘探孔动态快图元,将其基点放入数组1。

(2)遍历数组1,取得其中点的最大x 坐标maxX、最小x 坐标minX、最大y 坐标maxY 和最小y 坐标minY,以及最小x 坐标和最大y 坐标对应的点序号。

(3)比较(maxX-minX)和(maxY-minY)的大小,若大于,则按横向考虑。

(4)新建数组2,若按横向考虑,将具有minX 的点添加进数组2,并在数组1 中移除该点。若按纵向考虑,将具有maxY 的点添加进数组2,并在数组1 中移除该点。

(5)将数组2 中最后一点作为参照点,遍历数组1 中其他点,计算其中所有点到参照点的距离,将距离最小的点加入数组2。

(6)重复上述操作,直至数组1 中元素为0。

(7)将数组2 中第一个元素按照既定的向量方向平移复制产生端点1,数组2 中最后一个元素按照既定的向量方向平移复制产生端点2。

(8)端点1 向既定的向量方向平移复制产生文字插入点1,端点2 向既定的向量方向平移复制产生文字插入点2。

(9)使用多段线命令,按数组2 中顺序插入点,生成多段线。

(10)在插入点1、插入点2 处插入剖面号文字,并对文字的属性进行设置。

4 应用实例

4.1 项目简介

为评估该方法的实用性、效率提升效果,本文以“上海杨浦B 站项目地质勘察工程”项目为例。项目总建筑面积约77.2 万平方米,其中地上总建筑面积为约35.9 万平方米,地下总建筑面积约41.3 万平方米(其中地下商业约9.2 万平方米)。

项目基地范围内地下室连通(含基地内市政道路下方),地下四层地下室,基础埋设22.8m,塔楼及附属裙房共同嵌固于同一地下室。项目包含多个塔楼及群房,其中超高层塔楼地上34 层,总高度150m,标准层平面约60×54m,主体结构拟采用型钢(钢管)框架-砼核心筒结构体系。

4.2 人工布置方案用时

以工作时长为5 年的中级工程师为样本,在确定勘探孔深度和控制方案后布置项目的勘察方案,每个步骤实测用时为:

(1)布置勘察方案,为控制建筑轮廓,人工放置图元(约120 分钟);

(2)人工检查勘探孔间距(约20 分钟);

(3)选择勘探孔,将其改为控制性孔(约30 分钟);

(4)绘制勘探孔剖面(约40 分钟);

(5)人工统计孔数、进尺(约20 分钟)。

完成该项目,累计用时230 分钟,共布置60.0~135.0m的取土孔50 只,布置60.0 ~90.0m 静力触探孔100 只,小螺纹钻孔135 只。

4.3 利用勘察方案辅助设计系统

在使用勘察方案辅助设计系统后,4.2 节中每个步骤的处理方法和实测用时为:

第一步

该项目共计19 个地上拟建单体,下设4 层地下室。各单体及地下室形状近矩形,可组合使用直线布孔和四边形布孔命令,大致完成布孔,用时5 分钟。删除不需要的小螺纹钻孔,并微调钻孔,使其能更好地控制建筑,使用批量更改孔号命令,再使用批量更改孔深命令,用时10 分钟。该步骤用时约15 分钟。

第二步:人工检查勘探孔间距

勘探孔间距由根据用户输入值而确定,并程序计算控制,无需人工复检,用时0 分钟。

第三步:选择勘探孔,将其改为控制性孔

本工程单体较多,且拟建物轮廓及性质差异较大,该步骤需人工完成,用时30 分钟。

第四步:绘制勘探孔剖面

使用生成剖面命令,选中一定的勘探孔即可生成剖面,然后统一修改剖面序号,用时5 分钟。

第五步:人工统计孔数、进尺

使用统计命令,即可获取各类勘探孔及其孔深,用时1分钟。

以上所有过程累计用时51 分钟,为原用时的22%,以上5 个步骤中,除第3 步外,所有重复的过程由程序代替。完成的勘探点平面布置图如图1 所示。

图1:勘探点平面布置图

5 结论

针对布置岩土工程勘察方案设计的工作量大,重复性高,耗时长,出错高等问题,基于AutoLISP 语言开发了高效的勘察方案辅助系统。针对勘察方案设计中最耗时的步骤开发出5 个主要功能,使得用户选择拟建物轮廓并输入勘探孔间距后可以在极短的时间内放置勘探孔,并且使得用户可以批量增加、删除、修改、查询、统计勘探孔。根据实例演示可知,采用该辅助极大地提高了岩土工程勘察方案设计的效率,并减少人工失误的概率,提高勘察方案的质量。

猜你喜欢
孔数数组批量
JAVA稀疏矩阵算法
穴盘孔数对早熟菜薹生长发育及产量的影响
节流孔数对空间热泵径向气体轴承承载特性影响分析
喷油嘴孔径、孔数对4100QBZL柴油机PM排放的影响研究
JAVA玩转数学之二维数组排序
Excel数组公式在林业多条件求和中的应用
寻找勾股数组的历程
浅议高校网银批量代发
基于AUTOIT3和VBA的POWERPOINT操作题自动批量批改
考虑价差和再制造率的制造/再制造混合系统生产批量研究