朱陈怡,马兆锐,崔 一,秦道标,3
(1.苏州科技大学 土木工程学院,江苏 苏州215011;2.苏州慧展工程咨询有限公司,江苏 苏州 215011;3.苏州市交通设计研究院有限责任公司,江苏 苏州 215000)
基于Vlisp和OpenDCL的箱梁三维构造图快速建模方法
朱陈怡1,马兆锐1,崔 一2,秦道标1,3
(1.苏州科技大学 土木工程学院,江苏 苏州215011;2.苏州慧展工程咨询有限公司,江苏 苏州 215011;3.苏州市交通设计研究院有限责任公司,江苏 苏州 215000)
箱梁构造图三维快速建模的目标包括模型的高精度和构建的高效率,为解决这两个问题,提出了一种基于Vlisp和OpenDCL的参数建模方法,利用图层自动读取和对象截取的方法来获取结构平面线形和高程,使用参数自动读取的方法节约输入参数的时间。先绘制二维构造图,以图中信息为基础进行面域拉伸或放样,构建三维模型,实现了箱梁三维构造图精确、快速建模,解决了设计人员传统三维建模易错、耗时的难题,提升了建模效率,为基础设施领域的三维快速建模提供一个新的思路和方法。
BIM;Vlisp;Opendcl;箱梁桥;快速建模
BIM(Building Information Modeling)即建筑信息模型,美国国家标准对其的定义为:BIM是以三维数字为基础,集成了建筑工程项目各种相关信息的工程数据模型[1]。建筑行业BIM技术的飞速发展及其巨大的优越性,带动了基础设施领域BIM的发展。鉴于桥梁的路线灵活、结构复杂,现有的核心建模软件通常采用手动建模,复杂繁琐,耗时费力。尤其在设计过程中变动频繁,牵一发而动全身,设计人员劳动强度大,生产效率低下,其建模效率问题一直是BIM技术在桥梁中大面积推广应用以及桥梁BIM改革的障碍。在城市桥梁中,箱梁桥的使用最为广泛,因此文中对箱梁桥构造图进行研究,解决其三维建模繁琐且效率低下的问题,选用工程行业使用最为频繁的AutoCAD作为平台,Vlisp语言和OpenDCL作为工具,完成箱梁构造图的二维图绘制,并在二维图的基础上自动建立三维模型。
Visual Lisp简称Vlisp[2],是专为AutoCAD二次开发而专门设计的编程语言。Vlisp从AutoLISP[3]发展而来,对AutoLISP向上兼容,它提供了一个完整的集成开发环境,包括编译器、调试器和一些其他工具,很大程度地提高了二次开发的效率[4]。相比Auto Lisp,Vlisp对源程序保密性差的问题有了改进措施,并且为发布独立的应用程序提供了工具。Vlisp应用程序具有良好的交互性,可直接调用AutoCAD命令来实现图形显示、编辑和处理能力[5]。
在AutoCAD二次开发过程中,制作对话框常使用DCL(Dialog Control Language)和VBA。DCL不具备可视化的编程环境,依靠开发人员手工写入代码,并且与Vlisp的数据交换以及相互控制比较繁琐,较难掌握。VBA是一个基于对象的开发工具,它能提供丰富的开发功能,但是VBA与Vlisp进行数据通信时,向Auto-CAD发送大量命令来实现数据的传递,这将明显影响程序运行的稳定性和速度[6]。因此两者对于Vlisp编程开发均不合适。
OpenDCL起源于商业软件ObjectDCL,是专门为Lisp语言量身定制的第三方开源工具,具备可视化操作界面,拥有比较齐全的控件和丰富的函数,对事件的处理完全由Lisp代码来驱动[7],所以文中选用OpenDCL制作对话框。
考虑到快速建模方法处理的对象为总体平面图和竖曲线,通过图层管理控制指定对象,因此在采用此方法建模之前需做好前期图层管理工作,每个对象严格归置到对应图层[8]。
在总体平面图中,分别添加至指定图层的3类对象:(A)道路中心线;(B)桥梁结构边线;(C)分跨线。在竖曲线中,添加至指定图层的4类对象:(D)道路竖曲线;(E)地面线;(F)桩底线;(G)零点参考线。
图1(a)为总体平面图中a匝道的图层管理情况,a匝道的道路中心线添加至图层“a-daolu”,桥梁结构边线添加至图层“a-lunkuo”,分跨线添加至图层“a-fenkua”;图1(b)为a匝道竖曲线的图层管理情况,道路竖曲线添加至图层“a-sjx”,零点参考线添加至图层“a-temp”,地面线添加至图层“a-dmx”,桩底线添加至图层“a-zd”。
图1 图层管理示意图
使用OpenDCL工具设计读取图层界面,见图2,使用Lisp语言驱动指定图层对象的读取,代码如下:(setq tc(dcl-Grid-GetCellText box/CForm1/Grid1 Row 1))读取界面中“图层”栏(column=1)的字符串赋值给tc。(setq k1(ssget“x”(list(cons 8 tc))))得到选择集k1,该选择集包含了图形数据库中图层为tc的所有对象。
图2 图层读取界面
选择始横梁处和终横梁处的分跨线,由两分跨线与道路中心线的交点位置确定该联桥梁始终点的桩号,并截取始横梁、终横梁之间的结构边线(图层“a-lunkuo”)、道路中心线(图层“a-daolu”),分跨线(图层“afenkua”)。以截取该区间道路中心线为例,代码如下:
(setq daolu(ssname k1 0));返回道路中心线的图元名daolu,同理,始、终横梁的图元名为shl、zhl
(setq objdaolu(vlax-ename->vla-object daolu));将对象名daolu转化为vla对象
(setq startp(intersect daolu shl))(setq endp(intersect daolu zhl));求出 daolu 与 shl、zhl的交点 startp、endp
(setq d1(vlax-curve-getdistatpoint obj daolu startp));求出道路中心线始端点到startp点的曲线段长度d1
(setq d2(vlax-curve-getdistatpoint obj daolu endp));求出道路中心线始端点到endp点的曲线段长度d2
(setq d(-d2 d1));求出从startp至endp的曲线长度d
(setq n(fix(/d 0.1)));将曲线长度d以0.1m为单位划分单元,并将单元数取整得n
(setq di(/d n);将曲线长度d按单元数n等分,得单元长度di
(setq poi(vlax-curve-getpointat(*i di)));i=1~n,求出startp至endp曲线段n等分后的所有节点
(setq poilist(cons poi poilist));将所有节点poi放入点集合列表poilist中
为解决浮点数舍入误差(Round off Error)[9]的问题,以道路中心线与始横梁处分跨线的交点为原点,道路中心线与始横梁处分跨线、终横梁处分跨线的两交点连线方向为x轴,逆时针旋转90°为y轴,建立局部坐标系,如图3所示,进行坐标转换并重新绘图。
(setq upoi(trans poi0 1));将列表poilist中的点转换为局部坐标
(setq upoilist(cons upoiupoilist))
(plinefunction upoilist);在总体平面图中用列表upoilist中的局部坐标在整体坐标系中绘制截取段的道路中心线
用同样方法处理结构边线、分跨线,在总体平面图中绘制的结构边线、道路中心线、分跨线见图4(a)。
将a-temp图层上两线段的交点确定为高程为0,桩号为0的参考点O。根据该联桥梁始点的桩号A和终点桩号B,截取出A~B段的竖曲线、地面线、桩底线,并绘制在在总体平面图中。桥梁的高程为相应的桩号处的竖曲线的y坐标与参考点O的y坐标之差H,如图4(b)所示。
图3 建立局部坐标系
图4 绘制截取对象
出图风格、立面图、平面图、横断面图涉及参数众多,因此参数的自动读取是实现快速建模的关键。将参数分类放置于“设定”“立面”“平面”“横断面”对话框,分别编索引号为0、1、2、3,采用条件语句分别读取相应索引编号标签下参数,源码如下:
(defunc:box/CForm1#OnInitialize(/)
(dcl-TabStrip-SetCurSel box/CForm1/TabStrip1 0)(dcl-TabStrip-SetCurSel box/CForm1/TabStrip1 1)
(dcl-TabStrip-SetCurSel box/CForm1/TabStrip1 2)(dcl-TabStrip-SetCurSel box/CForm1/TabStrip1 3))
(defunc:box/CForm1/TabStrip1/OnChanged(Item Index/)
(if(=itemindex 0)(读取设定数据))(if(=itemindex 1)(读取立面数据))
(if(=itemindex 2)(读取平面数据)) (if(=itemindex 3)(读取横断面数据)))
“设定”“立面”“平面”“横断面”对话框中参数分别如图5所示。
图5 参数界面
(1)根据分跨线确定桥跨布置;
(2)根据桥宽自动计算横梁厚度,计算原则。
B≤12 000,则 h=1 100;12 000<B≤18 000,则 h=1 200;18 000<B≤25 000,则 h=2 000;25 000<B≤30 000,则 h=2 500;30 000<B≤35 000,则 h=2 800。
(3)根据顶板厚度a、底板厚度b、底板的变化长度c、承托尺寸等参数绘制立面图,如图6所示。
图6 立面图的绘制
在二维构造图中,大部分构造布置形式体现在顶板平面图。顶板平面图的绘制流程如图7所示,具体方法如下:
图7 顶板平面绘制流程
(1)在结构边线基础上,根据参数悬臂宽度,确定悬臂线位置;
(2)根据参数最大箱室间距,确定箱室数;
(3)由两悬臂线位置、箱室数、腹板厚度等参数,绘出n个腹板中心线的位置,如图 8(a)所示;
(4)根据分跨线和横梁厚度,绘出横梁线,由腹板厚度和变化段长度,绘出腹板边线,如图 8(b)所示;
(5)根据承托的尺寸,绘出承托线,由此完成顶板平面图绘制,如图8(c)。
图8 顶板平面图和底板平面图绘制方法示意图
绘制底板平面图需先确定底板结构边线位置,将道路中心线每50 cm剖横断面,横断面如图9所示,将每个横断面中Pi点的连线近似为底板平面图的结构边线。
根据梁高H、悬臂根部至道路中心线的水平距离Li、悬臂根部厚度t、斜交角α 等参数,可求得第 i个横断面处 Qi至 Pi的水平距离 Xi=(H-α×Li-t)/r,Pi点至道路中心线的水平距离XiL=Li-Xi,由此确定底板结构边线位置。底板结构边线位置确定后绘制方法同顶板平面图;底板平面图具体绘制方法如图 8(d)、(e)、(f)。
图9 底板结构边线的确定
三维建模以二维构造图为基础,综合利用立面图、平面图、横断面图、竖曲线和构造信息建立三维模型。
此方法适用于曲面实体建模以及横梁建模,具体步骤及源码如下。
(1)定义坐标系(整体坐标系 wor、局部坐标系 u1、u2…ui…uj…un)(i=1~n)
(setq Origin(vlax-3d-point P0));以P0为坐标系原点
(setq Xaxispnt(vlax-3d-point Pi));以向量 Pi为 x轴方向
(setq Yaxispnt(vlax-3d-point Pj));以向量 Pj为 y 轴方向,向量 Pi、Pj必须垂直
(setq UCSSel(vla-get-UserCoordinateSystems AcadDocument))
(setq ui(vla-add UCSSel origin Xaxispnt Yaxispnt"ui"))
(2)在整体坐标系wor中将二维图形制作成图块t
(block_start"t"P0)(action)(block_end)
(3)在局部坐标系uj中插入图块t
(block_insert"t"P2 1 0)
(4)分解图块t并获取对象图元名
(vla-explode(vlax-ename->vla-object(entlast))
(5)将对象扩展为三维实体结构
(vla-AddExtrudedsolid objRegion h 0)
此方法先将箱梁结构三维实体网格划分,求出放样所需8个点的三维点坐标,采用CAD“放样”功能构建三维实体。
(1)网格划分。三维实体网格划分后的轴测图和跨中横断面图如图10和图11所示。
(2)求三维点坐标。网格划分后,箱梁结构分解成众多六面体四棱柱。以⑧号块三维实体为例,其控制顶点为p1~p8,如图12所示。结合平面图、立面图、横断面图和竖曲线,分别求出这些点的三维坐标。
(3)放样。以⑧号块三维实体为例,“放样”功能源码如下:
(plinefunction(list p1 p2 p3 p4 p1))(command “region” (entlast)“”“”)(setq e1(entlast))(plinefunction(list p5 p6 p7 p8 p5))(command “region” (entlast)“” “”)(setq e2(entlast))(command “loft”e1 e2 “” “”)
图10 三维实体网格划分轴测图
图11 三维实体网格划分跨中横断面图
图12 ⑧号块三维实体控制顶点示意图
在桥梁工程领域,互通对行车净空高度和桥梁结构高度皆有要求,平面线形交错,空间结构复杂,设计时考虑因素多,三维模型是其方案设计、施工图设计的良好辅助工具。苏州中环北线与312国道互通结构形式多为多跨连续箱梁,采用箱梁桥三维构造图快速建模方法,建立的3D模型如图13所示。
从精确性来说,文中方法建模误差精确到0.1mm,现选取图13模型的若干代表性控制点的平面图坐标、竖曲线高程和三维点坐标作误差分析:道路中心线与始横梁中线相交位置的上缘1号点,道路中心线与终横梁中线相交位置的上缘2号点,及四个角的上缘点3~6号点,点位置如图14所示。由于不同条件下设置横坡不同,影响3~6号点的高程,故3~6号点的高程不予考虑。1~6号点坐标误差分析见表1。
图13 苏州中环北线与312国道互通某联箱梁3D模型
图14 结构误差分析控制点示意图
表1 模型误差分析表 m
从硬件配置和建模速度来说,方法建模对硬件配置要求低,在具备总体平面图且图层控制符合要求的情况下建立图13模型总共耗时90 s,模型文件大小2.88MB。AutoCAD公司REVIT软件对硬件配置要求相对高,曲线桥建模耗时相对长,模型文件较大。将建模方法与REVIT进行比较,对比信息列入表2。
表2 配置要求与建模速度比对表
提出了一种箱梁桥三维构造的快速建模方法,利用图层自动读取和对象截取来获取结构平面线形和高程,使用参数自动读取的方法节约输入参数时间,降低出错率。应用本方法构建三维箱梁构造模型的精度达0.1 mm;与revit建模相比,对硬件配置要求低,且三维模型速度提高40倍以上,实现了箱梁三维构造图精确、快速建模。然而,文中方法仅对箱梁构造图部分进行三维快速建模研究,钢束、钢筋的三维快速建模以及数据库的管理工作还有待研究。
[1]Nationnal Institute of Standards and Technogy.National BIM Standard-United States[S/OL].[2009-4-13].http://www.nist.gov.
[2]周乐来,马倩.AutoCAD 2008 Visual LISP二次开发从入门到精通[M].北京:机械工业出版社,2008.
[3]郭秀娟.AutoLISP语言程序设计[M].北京:化学工业出版社,2008.
[4]李学志.Visual Lisp程序设计[M].北京:清华大学出版社,2006.
[5]周陶勇,李珊,王磊,等.基于AutoLISP的AutoCAD参数化绘图[J].计算机应用,2006(4):33-37.
[6]胡长鹏,张巨俭,刘瑞璞.基于VLISP和OpenDCL的西装智能CAD系统的实现[J].天津工业大学学报,2010,29(5):69-73.
[7]张新运,姚慧,曹岩.基于VisualLISP和VBA的蜗杆传动CAD系统开发[J].西安工业大学学报,2009,29(5):432-436.
[8]潘志毅.基于特征联系的CAD快速建模[D].南京:南京航空航天大学,2005.
[9]刘建龙,陆旭龙,宋大明,等.移动设备上三维地理场景可视化研究[J].测绘与空间地理信息,2015,38(2):38-41.
Rapid modelingmethod of 3D box girder structure based on Vlisp and OpenDCL
ZHU Chenyi1,MA Zhaorui1,CUIYi2,QIN Daobiao1,3
(1.School of Civil Engineering,SUST,Suzhou 215011,China;2.Suzhou Huizhan Engineering Consulting Co.,Ltd,Suzhou 215011,China;3.Suzhou Communication Design,Suzhou 215000,China)
The goals of rapid box girder structuremodeling are of high precision and high efficiency.To achieve the two goals,a parametermodelingmethod based on VisualLisp and OpenDCL is proposed.An automatic layer reading and object interception is used to obtain the plan and elevation of the structure,and the parameter autoread method is used to save the parameters input time.First,two-dimensional structures are drawn,and then three-dimensionalmodedings are built by extruding or lofting regions based on the information of these diagrams.Finally,an automatic box girder structure building system is implemented to provide rapid box girder structure modeding with high precision and high efficiency,and the problem ofmassmisses and low efficiency from traditional three-dimensionalmodeling is easily solved.This paper presents new ideas and amethod for the design of efficient three-dimensionalmodeling in the field of infrastructure.
BIM;Vlisp;Opendcl;box girder bridge;efficient3Dmodeling function
U448.21+3
:A
:2096-3270(2017)03-0014-06
(责任编辑:秦中悦)
2017-02-17
朱陈怡(1993-),女,江苏苏州人,硕士研究生。
秦道标(1969-),男,贵州六盘水人,高级工程师,从事桥梁结构、公路市政工程研究,Email:Qdb@yeah.net。