首页 理论教育 使用AutoCAD电子成果图进行程序设计的方法

使用AutoCAD电子成果图进行程序设计的方法

时间:2023-06-24 理论教育 版权反馈
【摘要】:为了降低开发难度,程序使用AutoCAD的所有图形操作功能,用户只需利用工程设计的AutoCAD电子成果图,将所需的点、线、多边形等图形元素按要求放入特定名称的图层,然后保存成DXF文件格式,即可作为程序读取数据的来源。程序执行的结果也是以DXF文件形式输出,可以大大提高成果输出的效率。在计算开挖、回填轮廓线时,程序约定多段线正方向的右侧为该开挖计算线的开挖回填计算区域。

使用AutoCAD电子成果图进行程序设计的方法

为了降低开发难度,程序使用AutoCAD的所有图形操作功能,用户只需利用工程设计的AutoCAD电子成果图,将所需的点、线、多边形等图形元素按要求放入特定名称的图层,然后保存成DXF文件格式,即可作为程序读取数据的来源。程序执行的结果也是以DXF文件形式输出,可以大大提高成果输出的效率。通过使用DXF文件格式作为数据交换来代替VBA及Object-ARX的开发方式,降低了程序运行对AutoCAD的依赖性,用户只有在浏览输入数据或输出成果的时候才需要用到AutoCAD软件,目前DXF文件已成为通用的图形交换格式,这样便有更多CAD软件可供用户选择。同时,使用DXF文件格式作为数据交换,也使程序界面省去图形绘制和编辑的内容,简化了程序界面。带约束Delaunay三角网剖分程序界面如图4-10所示。

图4-10 带约束Delaunay三角网剖分程序界面

执行程序时用户可选择各种数据处理方式,来完成特定的程序功能。程序首先提取DXF输入数据文件,然后对各种图形元素分类,根据图形元素的各种约定信息完成预处理任务,然后,程序将处理后的数据提交给选定的功能模块。程序界面中前面四个数据处理功能实际上都属于数据预处理功能,是为最后一个功能选项——“构造带控制线约束的三角网”而服务的。构造三角网的过程实际上是一个反复执行各类数据预处理功能,最终生成完善的约束线和离散数据点以供构造带约束Delaunay三角网的过程。

整个程序包含3个主要功能模块:数据输入输出模块、数据预处理模块和三角网剖分模块。每个模块对应有各自的子模块。下面将对各功能模块进行简要介绍。

1.数据输入输出模块

该模块包括两个子模块,即数据提取模块和结果输出模块。这两个模块的主要功能是执行对DXF文件的读取和写入操作。DXF文件结构已经在前面章节作了详细介绍,鉴于DXF文件块状结构存储的特点,非常便于对其逐块读入以提取图形信息。图形的预处理信息以及图形元素的分类的信息都是按约定在AutoCAD下预先设置的,数据提取模块的主要任务是:

(1)从DXF中提取有用图形元素。

(2)对图形数据分类。

(3)对控制线执行反序、等间隔等简单预处理操作。

为了让程序明确操作任务,用户需要对DXF数据文件的内容作一些约定处理,这些约定包括:图层约定、控制线类型约定和控制线方向约定。其具体内容如下。

(1)图层约定。将离散数据点放入规定名称命名的图层,如:DTM_POINTS_##,考虑到对地层结构面控制点的存储,“##”代表两位数的连续序列,即:DTM_POINTS_00,DTM_POINTS_01,DTM_POINTS_02…,默认DTM_POINTS_00代表地形数据点,需要说明的是,DTM_POINTS_##图层中可包含点和多段线,数据提取模块自动会把多段线转化为控制点。

1)将控制线放入规定名称命名的图层,如:CTRL_LINE。这里的控制线包括三角网约束线和待预处理的多段线。

2)将高程标注文字放入规定名称命名的图层,如:EL_VALUE。高程标注文字用来标示特殊点的高程值。

3)将坡率标注文字放入规定名称命名的图层,如:SLOPE_I。坡率标注文字的作用是标示进行开挖线计算的控制线的沿程坡率。

4)将控制线类型名称的标注文字放入规定名称命名的图层,如:LINE_NAME。控制线类型的约定将在下面介绍。

(2)控制线类型约定。控制线类型以文字标注的形式命名,存储在特定图层。根据程序处理需要,可将控制线按类型特征和预处理任务进行分类,如,按类型特征分为:地形特征线、开挖计算线、道路中心线、场地边界线和区域边界线等;按预处理任务分为:反序线、等间隔线和地表线等。对于同一条控制线可同时组合定义多种类型供程序批量处理,假如约定“R##”代表道路中心线,“##S”代表地表线,“##E”代表等间隔线,那么可以约定一条道路中心线为“R01SE”,数据提取模块会自动将道路中心线进行等间隔化并且根据地形离散点将道路中心线控制点按高程沿地表插值,最后将控制线的名称还原为“R01”。

(3)控制线方向约定。在AutoCAD中,从多段线的起始点(VertexID为1)到多段线的终点的沿程走向为多段线的正方向。为了对各多段线标示文字的正确提取和判别,程序约定形成闭合区域的多个多段线方向必须一致,即要“首尾”相连。在计算开挖、回填轮廓线时,程序约定多段线正方向的右侧为该开挖计算线的开挖回填计算区域。如图4-11所示。

图4-11 开挖计算线方向的约定

数据输出模块的任务是:(www.xing528.com)

1)过滤重复控制数据点,并删除原输入数据文件的无用图层及内容。

2)以文本文件形式输出三角形网格信息,内容包括三角网所有控制点编号和坐标、构成三角面的点编号。

3)输出三角形网、数据点、控制线到DXF文件,并按图层分类。

2.数据预处理模块

数据预处理模块主要完成数据点的离散、开挖轮廓线的计算、剖面的生成和区域离散点的删除等任务。数据点的离散采用克里金(Kriging)插值法完成。为了在TIN中嵌入一个地面特征,一般需要多次执行数据预处理模块才能得到最终所需的控制点和约束线。比如要在TIN模型中描述一条道路,可能需要以下的操作步骤:

(1)首先需要确定道路中心线将其放入控制线图层,并将其命名为道路中心线类型,然后设置道路沿程控制点高程的标注文字并放入高程标注图层,执行程序并调用控制线预处理模块,完成道路两侧边界线的放样

(2)将生成的两条道路边界线命名为开挖计算线类型,然后设置道路沿程控制点的开挖坡率标注文字并放入坡率标注图层,执行程序调用计算开挖线的模块,生成道路两侧的开挖及回填边界线。

(3)修改开挖及回填边界线,使其成为一个闭合区域,并用文字标示该区域,执行程序调用删除区域数据点的模块,形成最终的地形数据点。

(4)使用第一步生成的道路两侧边界线和第二步生成的道路开挖及回填边界线作为约束线,将第三步形成的地形数据点作为三角网离散数据点,然后进行三角网的剖分,即完成TIN模型中道路的嵌入。

3.三角网剖分模块

三角网剖分模块是整个程序的核心,其原理如本章第三节所述,对于一个区域三角网的剖分该模块主要执行以下三步操作:

(1)对所有离散数据点执行循环,更新边信息并生成标准Delaunay三角网。

(2)对所有约束线执行循环,更新边信息和三角形信息,保证将其每一段都作为构成三角形的边嵌入到Delaunay三角网,生成带约束Delaunay三角网。

图4-12 Visual Basic.Net下各程序模块的组织结构图

(3)对所有三角形执行循环,将区域边界线以外的所有三角形删除,形成特定不规则区域带约束Delaunay三角网。

以上3个功能模块在Visual Basic源程序使用1个窗体和5个模块来实现。窗体完成用户交互操作和功能模块调用的任务。5个源程序模块分别是:DXF_Read、DXF_Write、PubModule、TINModule和KWXModule。DXF_Read完成DXF输入文件的数据提取和数据的简单预处理任务,DXF_Write完成处理结果的DXF文件写入操作,PubModule主要定义了几种类型的结构体以及一些全局变量和全局函数。TINModule完成标准Delaunay三角剖分和约束线的嵌入。KWXModule完成开挖、回填轮廓线的计算和剖面图的生成。各模块详细的组织结构如图4-12所示。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈