基于AutoCAD的三维多段线转多段线方法分析
2015-04-01唐雨花姚旭炜
唐雨花 姚旭炜
(江西理工大学建筑与测绘工程学院,江西 赣州 341001)
基于AutoCAD的三维多段线转多段线方法分析
唐雨花 姚旭炜
(江西理工大学建筑与测绘工程学院,江西 赣州 341001)
ArcGIS是一个非常强大的软件,它可以很快速地将不闭合的线图形转换为一个个闭合的面图形。但是通过ArcGIS完成线转面后,原来的多段线会变成三维多段线,这改变了矢量数据的属性,导致AutoCAD或南方CASS等基于AutoCAD二次开发的软件无法进行下一步的编辑操作。本文介绍了三种利用AutoCAD2012软件将三维多段线转换成多段线的方法,最后通过比较这三种方法在使用中的分解步骤和实践操作中的响应时间和效率,本文得出了基于AutoCAD平台的C#编程的第三种方法操作最简便,操作效率最高的结论。
ArcGIS;AutoCAD;C#;三维多段线
AutoCAD是美国Autodesk公司推出的集二维绘图、三维设计、渲染及通用数据库管理和互联网通信功能为一体的计算机辅助绘图软件。其因易学易用及强大的图形编辑、二次开发功能而广泛应用于很多测绘生产部门及设计部门(如广州南方测绘仪器有限公司的CASS软件就是基于CAD平台开发的一套集地形、地籍、空间数据建库、工程应用、土石方算量等功能为一体的软件系统)。
在实际工作中,测绘工作者在使用AutoCAD或者CASS等软件进行内业编辑作业时,有时候会遇到利用某单一软件不能满足工作需要的情况,如不能够将不闭合的线图形转换成闭合的面图形,这个时候我们就需要进行数据转换[1]。由Esri公司推出的ArcGIS[2]软件以其完整强大的数据处理功能和相对不太便利的操作方式,成为GIS专业人员转换与处理数据的最佳选择。但是通过ArcGIS进行数据转换后,原来的多段线会变成三维多段线,这改变了矢量数据的属性,导致AutoCAD或南方CASS等基于AutoCAD二次开发的软件无法进行下一步的编辑操作。本文先提出了两种利用AutoCAD软件将三维多段线转换成多段线的方法。然后,为了进一步简化操作步骤,提高测绘行业工作者的工作效率,本文又介绍了一种基于AutoCAD平台的C#编程方法。最后,本文比较了这三种方法的分解操作步骤及其在实践操作中的响应时间和效率。
1 三维多段线转多段线方法探讨
在AutoCAD中打开利用ArcGIS软件转换出来的图形文件,我们会发现多段线变成了三维多段线(实际上,凡是经过ArcGIS软件转换处理的多段线,转换完成之后都会变成三维多段线)[3]。由于测绘工作中需要处理的通常是多段线,我们往往需要将三维多段线转成多段线。下面,本文将介绍三种将三维多段线转换成多段线的方法。本文介绍的方法使用的系统为Windows7,软件为ArcGIS10.1,AutoCAD2012,VS2010.但是经过实验,若系统为Windows8.1,软件为ArcGIS10.0,AutoCAD2010, VS2012任意组合,该方法均适用。
1.1 AutoCAD2012单一软件处理方法
下面,本文将介绍两种利用AutuCAD单一软件进行三维多段线转多段线的方法[4]。具体操作方法及步骤如下:
方法一:(1)用AutoCAD2012打开“面转dwg.DWG”,在命令行输入“explode”,然后输入“all”或者用鼠标选中全部图形,点击空格或【enter】。(2)再次选中全部图形,在“特性”对话框里面将“几何图形”下面的“起点Z坐标”、“端点Z坐标”、“增量Z”修改为0。(3)输入命令“pedit”,然后根据提示输入m,然后输入“all”或者用鼠标选择全部图形,输入“y”,然后根据提示输入“j”,根据提示输入模糊距离“0”,根据提示选择点击【空格】或【enter】,操作完成。
方法二:这种方法的第一步骤和第二步骤与第一种方法的完全相同,第三步骤改为:(3)输入命令“join”,然后选中全部图形,点击【空格】或【enter】,操作完成。
1.2 基于AutoCAD平台的C#编程改进方法
上述方法操作较为复杂,为了提高测绘工作的效率,本文提出了一种基于C#编程的改进方法,为了便于比较,本文称之为方法三。具体操作方法及步骤如下:
方法三:(1)用AutoCAD2012打开“面转dwg.DWG”,输入命令“3dto2d”,等待程序运行。(2)输入命令“pedit”,然后根据提示输入m,然后输入“all”或者用鼠标选择全部图形,点击【空格】或【enter】,然后根据提示输入“c”,点击【空格】或【enter】,操作完成。
其中,方法三在操作之前需要先加载ClassLibrary1. dll文件。ClassLibrary1.dll文件是基于AutoCAD2012平台在.NET环境下开发的AutoCAD.NET[5]程序,在命令行输入“netload”选中ClassLibrary1.dll文件,加载一次,就可以反复使用。程序的开发步骤如下:
(1)打开VS2010,点击【新建项目】,在【已安装的模板】选择VisualC#下面的【Windows】,在中间栏将. NETFramework调整至3.5版本,创建一个【类库】项目。
(2)在【解决方案资源管理器】里的项目上面【右键】→【添加引用】→【浏览】,在【查找范围】里添加“<drive>:ProgramFilesAutoCAD版本”目录下的acmgd.dll和acdbmgd.dll两个库文件,并把引用的dll文件的属性设置为False。
(3)点击【项目】菜单→【CADproject属性】→【生成】,选择需要编译的目标平台,就可以在Class.cs中编写代码了。
(4)点击【项目】菜单→【CADproject属性】→【调试】→【启动外部程序】,选择指向AutoCAD主程序(“<drive>:ProgramFilesAutoCAD版本”目录下的acad.exe)的路径,就可以直接点击“调试”按钮或者按F5键自动启动AutoCAD程序进行调试。
(5)编码完成之后按快捷键F6或者点击菜单【生成】→【生成解决方案】,编译成功后,默认会在工程目录的binDebug文件夹下生成本工程的dll库文件及pdb调试信息文件。如果编译不成功,编译环境会在下面的错误列表中显示错误及警告,依次改正后重新执行编译操作则可编译成功。
(6)点击【启动调试】,在AutoCAD的命令行中输入“netload”,选择编译好的.dll文件加载AutoCAD.NET程序,加载后在命令行输入声明的命令,即运行相应的程序。
ClassLibrary1.dll程序的主要代码如下:
2 三维多段线转多段线方法效率对比分析
本文以“面转dwg.DWG”为实验数据,其共包含391个由三维多段线构成的闭合面图形,所有三维多段线的总周长为239 346.378 9m。经过细致的分析三种方法的具体分解步骤,统计其分解步骤数。通过进行反复操作,分别统计三种方法在整个三维多段线转多段线过程中的平均使用时间,得出如下统计表:
表1 三维多段线方法效率对比表
由此我们可以得出,从操作步骤数来说,方法三的操作步骤数是方法二的7/10,是方法一的1/2。从整个操作的平均使用时间上来说,方法三是方法二的71%,是方法一的45%。
3 结论
本文介绍的三种三维多段线转多段线方法中,方法一和方法二都是直接在AutoCAD2012中进行的,操作步骤较为复杂。方法三加载了利用AutoCAD二次开发的程序,虽然前期需要进行编程处理,但是操作更加简单。通过对比分析AutoCAD三维多段线转多段线的三种方法,我们可以得出以下结论:基于AutoCAD平台的C#编程的第三种方法操作最简便,操作效率最高。
[1]陈家鸿,张新长,郭泰圣.AutoCAD与ArcGIS数据转换研究与应用[J].技术应用,2014(5):46一50.
[2]牟乃夏,刘文宝,王海银,等.ArcGIS 10地理信息系统教程:从初学到精通[M].北京:测绘出版社,2013.
[3]宋小冬,钮新毅.地理信息系统实习教程[M].北京:科学出版社,2013.
[4]王宏,杨雪静.AutoCAD 2012中文版从基础到实训[M].北京:清华大学出版社,2012.
[5]李冠亿.深入浅出AutoCAD.NET二次开发[M].北京:中国建筑工业出版社,2012.
Analysis on the Methods of Converting 3D Polylines to Polylines based on AutoCAD
Tang Yuhua Yao Xuwei
(College of Building and Geomatics Engineering,Jiangxi University of Science and Technology,Ganzhou Jiangxi 341001)
ArcGIS is a very powerful software,it can convert unenclosed graphics which were made of lines into closed surface graphics quickly.However,after the lines were converted to surfaces through ArcGIS,the original polylines would become 3D polylines,which changed the properties of the vector data,as a result,the South CASS and AutoCAD or other softwarebased on AutoCAD secondary development can’t proceed to the next editing operation. This article introduced three methods of using AutoCAD2012 software to convert 3D polylines to polylines.Finally, by comparing these three methods in decomposition steps and the response time and efficiency of the operation,it is concluded in this paper that the third method which was based on the C#programming of AutoCAD platform is the easiest and most efficient method.
ArcGIS;AutoCAD;C#;3D polylines
TP391
A
1003一5168(2015)07一0108一3
2015一6一14
唐雨花(1988.4一),女,在读硕士,研究方向:地理信息系统。