前言:
当前我们对“vbnet相对路径”都比较珍视,看官们都需要知道一些“vbnet相对路径”的相关内容。那么小编同时在网络上网罗了一些关于“vbnet相对路径””的相关文章,希望朋友们能喜欢,兄弟们一起来学习一下吧!鲁东福 王彦军中国公路工程咨询集团有限公司
摘 要:为了弥补国内道路辅助设计软件在路基边坡防护设计方面的不足,本文探讨了基于.NET对Auto CAD和Excel进行二次开发、实现边坡防护辅助设计的相关技术。同时结合工作需要,笔者编程开发了相关功能模块,实现了边坡防护设计的可视化和自动化,并在实际工程项目中得到应用。
关键词:道路工程;边坡防护设计;. NET;AutoCAD;Excel;二次开发;
1 引言
路基边坡防护设计是路基工程的重要组成部分,常规的设计方法是在完成横断面设计以后,根据路基横断面图、水文、地质、地形和筑路材料分布情况等,逐段确定防护支挡方案,再利用Excel软件编辑公式、进行工程量的统计计算。其中防护支挡方案的段落划分和工程量计算较为繁琐,设计人员的工作量较大、且易出错。
目前,国内的道路辅助设计软件均实现了较为完善的横断面设计功能,也能够生成或导出边坡坡脚线数据,甚至能生成边坡立面图。但进一步的防护设计、工程量计算并未开发,或已经开发但实际应用不多。究其原因,一是不符合设计人员的工作习惯,二是工程量计算不能满足实际需要。
因此,笔者根据实际工作的需要,对路基边坡防护设计软件的技术问题进行了研究,提出了可行的解决方案,并开发实现了相关功能。初衷是为设计人员提供直观的可视化效果、灵活的交互操作方式、可靠的工程量计算成果,以减轻技术人员的劳动强度、缩短设计周期,提高勘察设计的质量和效率。
2 软件功能和设计流程2.1 软件功能
路基边坡防护设计软件的定位是对既有道路辅助设计软件的补充和完善,基于设计人员熟悉的专业软件和操作模式,为其提供可视化、自动化的交互设计支持。因此,软件应实现如下功能。
(1)设计数据导入导出
由于道路辅助设计软件的数据存储格式不统一,软件应提供Excel、CSV和TXT等常规文件的格式化导入功能。同时,软件还需将设计成果数据导出,以便于设计人员后续使用。
(2)可视化、交互式设计
基于平纵横设计成果,软件应将边坡立面图直观地呈现给设计人员,并将边坡防护设计结果以图形的方式反馈在立面图上,达到所见即所得的可视化效果。
软件应尽可能提供便利的交互操作方式,使得设计人员能够参与设计过程,充分发挥其专业技能,并有良好的操作体验。
(3)工程量计算自动化
考虑防护工程量计算的实际工作需要,待设计人员完成计算公式的编辑后,软件应根据边坡防护设计的结果自动匹配相应的公式进行工程量计算,并完成统计汇总。
2.2 设计流程
根据设计工序,软件的工作流程(如图1所示)总体上分为三步:
(1)数据准备
数据准备是边坡防护设计的基础,其中包括生成边坡立面图的原始设计数据(逐桩设计高程、边坡地面线高程和构造物信息等)和设计过程中使用的填充图案、防护形式。
(2)边坡防护设计
根据生成的边坡立面图和预定义的防护形式,在Auto CAD中进行防护设计,并生成边坡防护设计成果数据。
(3)工程量计算
将边坡防护设计成果数据导入Excel中,根据设计人员提供的公式,自动进行工程量计算和统计。
图1 边坡防护设计流程图 下载原图
在整个设计中,原始设计数据(逐桩设计高程、边坡地面线高程和构造物信息等)由道路辅助设计软件生成;边坡立面图、自定义填充图案、防护形式设置和边坡防护设计在Auto CAD中完成;防护设计结果在Auto CAD中生成,并导入Excel中使用;工程量计算公式的编辑和工程量的自动计算统计在Excel中完成。
3 软件开发环境
通过对国内道路辅助设计软件的现状分析,多数设计软件均采用“Auto CAD+Excel”的组合为设计人员提供图形编辑和设计成果存储功能。Auto CAD具有完善的图形绘制功能、强大的图形编辑功能;Excel具有完善的数据处理功能、支持智能重算。两者均可采用多种方式进行二次开发或用户定制。
由于Auto CAD和Excel强大的功能、可定制开发的特性,并考虑与国内道路辅助设计软件的有机结合,路基边坡防护设计软件拟定在两者的基础上进行二次开发,开发平台选用对两者均支持的.NET。
3.1 NET Framework
微软的.NET是一个通用开发平台,它具有支持多种编程语言、异步和并发编程模型以及本机互操作性等功能,并支持跨平台的各种方案。在.NET的实现上有.NET Framework、Mono和.NET Core三种。其中,.NET Framework是Windows的托管执行环境,可为其运行的应用提供各种服务。.NET Framework包括公共语言运行时(CLR)和.NET Framework类库。
公共语言运行时是.NET Framework的基础。可将运行时看作一个在执行时管理代码的代理,它提供内存管理、线程管理和远程处理等核心服务。
.NET Framework类库是一个与公共语言运行时紧密集成的可重用的类型集合。该类库是面向对象的,并提供某些类型,可供开发者的托管代码从中派生功能,并支持第三方组件与其无缝集成。.NET Framework支持的编程语言有C#、F#和VB.NET等。
Auto CAD和Excel的应用程序编程接口(API)均有.NET版本。
3.2 AutoCAD.NET API
Auto CAD作为Autodesk公司的旗舰产品,提供了包括Auto LISP、COM和Object ARX等多种形式的API。从Auto CAD 2006开始,增加了Auto CAD.NET API,使得开发人员能够使用C#、VB.NET等语言对Auto CAD进行二次开发,在迎合用户编程习惯、降低学习成本的同时,进一步加强了与其他Windows应用程序共享数据的便利性。
Auto CAD.NET API由不同的DLL文件组成,它们提供了丰富的类、结构、方法和事件,用于访问程序和图形文件中的对象。每一个DLL文件都定义了不同的命名空间,用来组织基于功能的组件。二次开发需引用的两个DLL文件是Ac Db Mgd.dll和AcMgd.dll,前者用来访问图形文件中的对象,后者用来访问Auto CAD应用程序。
3.3 VSTO
VSTO (Visual Studio Tools for Office)是基于.NET的Office应用程序工具包。相对于传统的VBA开发,开发人员可以借助.NET Framework并使用C#或VB.NET与Office对象进行交互,构建功能更为灵活、强大的文档级解决方案和应用程序级解决方案。VSTO应用程序由Office应用程序和.NET程序集组成。
二次开发需引用Microsoft.Office.Tools.dll、Microsoft.Office.Tools.Common.dll和Microsoft.Office.Tools.Excel.dll等组件。
笔者在软件开发时选用VB.NET编程语言、.NET Framework 4.0对Auto CAD 2012和Excel 2016进行定制开发。
4 关键技术
在路基边坡防护软件的开发过程中,笔者主要研究解决了填充图案的自动生成、边坡防护设计可视化、数据与实体的关联存储和数据的自动化处理等问题。
4.1 填充图案自动生成
在Auto CAD中,除了使用其预定义的填充图案外,用户还可以设计并创建自定义的填充图案,组成填充图案的图形只能是直线,其存储文件为PAT文件,格式为:
具体数据的几何意义如图2所示。
图2 PAT文件数据的几何意义 下载原图
图案填充的过程是将图案定义中的每一条直线都拉伸为一个线形单元(实线+虚线),并根据定义进行偏移,形成多条平行线。填充图案自动生成的难点在于填充图案数据的计算。
从Auto CAD图形中,我们能够读取直线的起终点坐标、长度和角度,经过适当处理可以得到angle,x-origin,y-origin和dash-1。需要计算的数据为deltax,delta-y和dash-2。具体的计算过程如下。
(1)参照原始坐标系,将所有的直线转化到第一、第二象限,得到angle,x-origin和y-origin。
(2)建立以直线起点为原点、直线平行方向为x轴、直线垂直方向为y轴的局部坐标系。此时,直线的起点M坐标为(0,0),终点P坐标为(a,b),直线方程为ax-by=0。该步骤的目的是简化后续的相关计算。
(3)按照用户指定的填充图案横向偏移距离DX和纵向偏移距离DY,查找满足直线方程ax-by=0的下一线形单元的起点N,其坐标为(m*DX,n*DY),m为横向偏移次数,n为纵向偏移次数,两者均为整数。计算MN之间的距离,减去dash-1即得到dash-2。
(4)在MN两侧查找与其距离最近的线形单元的起点M1,并计算M1在MN上的垂点,进而计算得到delta-x和delta-y。
(5)按照PAT文件的数据格式输出文件。
相关算法在文献1中进行了详细论述。笔者在程序开发过程中对部分算法进行了优化,降低了时间复杂度、提高了计算速度。
4.2 边坡防护设计可视化
Auto CAD提供了强大的图形编辑功能,软件开发需调用相关函数,达到实时反馈设计结果的功能。当设计人员选择边坡区域内的一点后,用预定义的图案填充该区域,使设计结果直观地反应在边坡立面图上。
Auto CAD的填充可以使用Hatch命令或者Express扩展插件的Super Hatch命令来实现,笔者选用了Hatch命令。关键代码如下所示:
此段代码首先使用用户自定义的填充图案(图案名称为hatch Name)进行填充,如果失败,则使用系统预定义的名为ANSI37的填充图案填充。需要注意的是,图案名称不带后缀PAT,且填充图案需在Auto CAD的支持路径下。
4.3 数据与实体的关联存储
在每一处边坡防护设计完成以后,需要将设计结果数据与Auto CAD实体进行关联存储,以便于后期的修改和成果输出。
Auto CAD数据库对象都可以灵活的添加一定数量的自定义数据,供开发者使用,这些数据的含义由开发者自行解释,Auto CAD只维护这些数据而不管其具体的含义,这些数据被称为扩展数据(XData),扩展数据以结果缓存形式附加在实体上,因此,能够有效的利用存储空间,对于添加轻量的数据非常方便的。
软件开发中使用了结果缓存即Autodesk.AutoCAD.Database Services.Result Buffer类型和Autodesk.Auto CAD.Database Services.Dxf Code枚举类型来实现,关键代码如下:
在所有边坡防护设计完成以后,程序可以直接读取相关实体的扩展数据并输出。
4.4 数据自动化处理
边坡防护工程量的自动计算,以设计人员完成工程量计算公式的编辑和边坡防护设计为前提,通过边坡防护形式关键字的匹配,将公式区域的工程量计算公式复制到计算区域,相关数据自动生成,关键代码如下:
5 软件实现
根据上述软件功能分析和关键技术研究,笔者编程实现了相关功能。
5.1 自定义填充图案
为了增加边坡防护设计过程中的可视化效果,可以将设计人员已经完成防护设计的路段按照实际防护形式进行图案填充。而Auto CAD自带的填充图案较少,且填充图案自定义功能不能满足实际工作的需要。因此,笔者在程序中开发实现了该功能。
设计人员可以按照防护设计通用图,将各种边坡防护形式分解成标准尺寸、具有一定排列规律的规则图形,然后使用该功能生成Auto CAD可用的填充图案,这些填充图案一次生成、可共享重用。
5.2 防护形式设置
路基边坡防护设计需要用到不同的防护形式,使用防护形式设置功能可将不同的防护形式指定关键字(唯一的代码)和填充图案。其中,关键字用于在边坡防护设计过程中提示用户选择防护形式,并在后期的工程量计算中使用;填充图案则是为了让设计人员在设计过程中看到设计结果,达到所见即所得的可视化效果。
图3 自定义填充图案对话框 下载原图
图4 防护形式设置对话框 下载原图
5.3 导入设计数据
设计人员利用道路辅助设计软件完成横断面设计后,均可直接或者间接地得到逐桩设计高程和边坡地面线高程等,这些数据可能从同一文件中得到,也可能需要从多个文件中提取。使用导入设计数据功能,在Auto CAD中生成边坡立面图,用于进行边坡防护设计。
图5 导入设计数据对话框 下载原图
5.4 边坡防护设计
由于每段边坡的坡率不同、适用的防护形式不同,程序在边坡防护设计的实现上采用了人机交互的方式。反馈给用户的设计结果是填充防护形式图案的边坡立面图和相关说明,同时将中间成果数据与图形实体关联存储,这些数据将用于后期的防护工程量计算。
设计完成后的结果如图6所示。
图6 边坡防护设计结果图示 下载原图
5.5 工程量计算
设计人员根据路基边坡防护设计通用图,在Ex cel中完成相关防护形式工程量计算的公式编辑,并指定关键字;再将边坡防护设计的中间成果数据导入Excel中;程序引导设计人员选择公式区域和计算区域后,匹配关键字自动计算各段边坡的工程数量。
表1 边坡防护设计中间成果示意 下载原图
6 工程应用
三峡翻坝江北高速公路位于湖北省宜昌市,项目起于夷陵区太平溪镇富城坪村、接太平溪港连接线,终点至新坪设新坪枢纽互通、与沪蓉高速公路宜巴段相接,路线全长36.599km。全线共设互通式立交3处(乐天溪互通、张家口互通和新坪枢纽互通)。初步设计阶段由于时间紧、任务重,在互通立交的路基边坡防护设计中推广应用了该软件,大幅降低了设计人员的工作量、缩短了设计周期、提供了工作效率和准确性。
参考文献
[1] 巴彤,崔振勇,吕洪振.AutoCAD填充图案的自动生成.工程图学学报,2006(3).
声明:我们尊重原创,也注重分享。有部分内容来自互联网,版权归原作者所有,仅供学习参考之用,禁止用于商业用途,如无意中侵犯了哪个媒体、公司、企业或个人等的知识产权,请联系删除,另本头条号推送内容仅代表作者观点,与头条号运营方无关,内容真伪请读者自行鉴别,本头条号不承担任何责任。