[利用C3D画实体地形所遇到的问题及处理]su实体地形
摘要:工程测量地形图有平面和三维形式,三维形式又已三维曲面形式较多.曲面用于查看地形起伏非常形像,但是用于不规则地形开挖计量时不能参于逻辑计算而在测量开挖计量中无法应用.随着科技的发展,以及计算机的应用三维实体地形为我们打开了方便之门.本文中我们所要论述的是利用c3d软件结合Autocad的二次开发生成原始形及开挖结构形体的过程..
关键词:c3d, VBA,
中图分类号:K826.16文献标识码:A 文章编号:
1、曲面的生成
C3d软件是一款面向土木工程设计与文档编制的建筑信息模型(BIM)解决方案。曲面的生成主要通过c3d软件来实现,一种是导入数据,编组,再导入曲面中点编组,这一方式主要用于通过测量员采集现场数据,生成地形曲面.第二种是自建要索线(如下图),通过要索线生成曲面,要索线是在空间中不同的点连在一起的不断线,是生成曲成的关键,建立详细的要索线所生成的曲面也更加真实。这一方式主要是用于生成设计开挖的形状.无论你采用那种方式,得到的都是三维曲面,而不是实体地形.接下来我们所论述是通过三维曲面形成实体地形图.
2、实体地形图的生成
三维曲面是由多个三角形组成的,把每一个单独的三角形拉伸成实体,再合并就成了我们所需要的实体地形图。
太多三角形的处理主要是通过宏(VBA)来得以实现,它可是被嵌入CAD图形中也可以单独保存,编程步骤如下:
已知参数输入→转换三角形为面域并拉伸三角形→剖切实体→合并
1、参数输入
nu = InputBox("输入高程,必须输入")这里需要注意的是当需要府视图时所要输入比最低点还低的高程,也就是低面高程。
2、三角形转换成面域并拉伸三角形
Acad3DPolyline) As AcadRegion
If objpline.Closed = False Then
MsgBox "对象不闭合", vbCritical
Exit Function
End If
Dim objlist(0) As AcadEntity
Set objlist(0) = objpline
Dim objregion As Variant
objregion = ThisDrawing.ModelSpace.AddRegion(objlist)"建立面域对像
objpline.Delete
Set pltoregion = objregion(0)
End Function
"定义面域转换函数结束
拉伸三角形我们主要是通过AddExtrudedSolidAlongPath来得以实现,如下:
Set obj = ThisDrawing.ModelSpace.AddExtrudedSolidAlongPath(objregion, objplinee)""给定轮廓和拉伸路径创建拉伸实体,只能拉伸二维平面的面域。
为了保证每个三角形都得以拉伸我们采用如下命令来获得每个三角形。
For Each bsolisdobj In ThisDrawing.ModelSpace"浏览模型空间
3、剖切实体
实体的剖切主要是需要获得每个三角形的三个点高程,通过剖切命令(三点)来剖切实体,命令如下:
Set objnewsolid = objsolid.SliceSolid(slicePt1, slicePt3, slicePt2, True) "以给定三点创建三维实体的剖切面,结果的切块为 3DSolid 对象
采用程序自动删除实体时,在区分应该删除上下那一个方向的实体是,采用右手发则
4、合并实体
实体的合并可以手动选择所有实体合并,也可以编写程序合并,主要是利用Boolean acUnion命令,如下:
solid1.Boolean acUnion, objsolid
5、效果图
处理完所以三角形后就产生了可视效果图,如下所示,均可利用CAD对其进行灯光、场景、材质的处理,会得到更好的效果,也可将其另存为图片文件,用photoshop或其他图像处理软件来进行处理,还可以将其另存为dxf文件导入其他三维动画设计软件。还可以进行开挖量计算。
6.结论
三维实体地形在工程测量上是一个全新的概念,它在很大程度上可以成为地形图的代替品,有着十分广阔的发展应用前景,此方法已于2010年在顺溪水利枢纽工程建设中得到首次应用,并展现了强大的实用性,以上列举的功能,只是我平时应用的一些体验,希望与同行技术交流,以此提高我们在工作的一些应用技能.
参考文献:[1]:廉杰 王勋丰 叶福玲。三维实体地形在拉西瓦水电站工程测量中的应用
[J].水力发电,2007年11期.
[2]:凌小军 。三维地形建模程序在港航工程挖泥计算中的应用
水运工程 2004年10期.
[3]:王殷行。地形TIN中地理实体表达与LOD技术,测绘科学2009年04期
注:文章内所有公式及图表请用PDF形式查看。
