您好,欢迎来到哗拓教育。
搜索
您的当前位置:首页正文

基于AutoCAD的三维多段线转多段线方法分析

来源:哗拓教育
总567期第7期2015年7月河南科技

JournalofHenanScienceandTechnologyVol.567,No.7Jul,2015基于AutoCAD的三维多段线转多段线方法分析唐雨花姚旭炜赣州341001)(江西理工大学建筑与测绘工程学院,江西摘要:ArcGIS是一个非常强大的软件,它可以很快速地将不闭合的线图形转换为一个个闭合的面图形。但是

通过ArcGIS完成线转面后,原来的多段线会变成三维多段线,这改变了矢量数据的属性,导致AutoCAD或南方CASS等基于AutoCAD二次开发的软件无法进行下一步的编辑操作。本文介绍了三种利用AutoCAD2012软件和效率,本文得出了基于AutoCAD平台的C#编程的第三种方法操作最简便,操作效率最高的结论。关键词:ArcGIS;AutoCAD;C#;三维多段线中图分类号:TP391

文献标识码:A

文章编号:1003-5168(2015)07-0108-3

将三维多段线转换成多段线的方法,最后通过比较这三种方法在使用中的分解步骤和实践操作中的响应时间

AnalysisontheMethodsofConverting3DPolylinestoPolylinesbasedon

AutoCAD

(CollegeofBuildingandGeomaticsEngineering,JiangxiUniversityofScienceandTechnology,GanzhouJiangxi341001)

TangYuhuaYaoXuwei

Abstract:ArcGISisaverypowerfulsoftware,itcanconvertunenclosedgraphicswhichweremadeoflinesintoclosedsurfacegraphicsquickly.However,afterthelineswereconvertedtosurfacesthroughArcGIS,theoriginalpoly⁃lineswouldbecome3Dpolylines,whichchangedthepropertiesofthevectordata,asaresult,theSouthCASSandThisarticleintroducedthreemethodsofusingAutoCAD2012softwaretoconvert3Dpolylinestopolylines.Finally,easiestandmostefficientmethod.

AutoCADorothersoftwarebasedonAutoCADsecondarydevelopmentcan’tproceedtothenexteditingoperation.bycomparingthesethreemethodsindecompositionstepsandtheresponsetimeandefficiencyoftheoperation,itisconcludedinthispaperthatthethirdmethodwhichwasbasedontheC#programmingofAutoCADplatformistheKeywords:ArcGIS;AutoCAD;C#;3DpolylinesAutoCAD是美国Autodesk公司推出的集二维绘图、

行数据转换[1]。由Esri公司推出的ArcGIS[2]软件以其完整强大的数据处理功能和相对不太便利的操作方式,成为GIS专业人员转换与处理数据的最佳选择。但是通过线,这改变了矢量数据的属性,导致AutoCAD或南方的编辑操作。本文先提出了两种利用AutoCAD软件将三ArcGIS进行数据转换后,原来的多段线会变成三维多段CASS等基于AutoCAD二次开发的软件无法进行下一步维多段线转换成多段线的方法。然后,为了进一步简化操作步骤,提高测绘行业工作者的工作效率,本文又介绍了一种基于AutoCAD平台的C#编程方法。最后,本文比较了这三种方法的分解操作步骤及其在实践操作中的响

三维设计、渲染及通用数据库管理和互联网通信功能为一体的计算机辅助绘图软件。其因易学易用及强大的图形编辑、二次开发功能而广泛应用于很多测绘生产部门及设计部门(如广州南方测绘仪器有限公司的CASS软件就是基于CAD平台开发的一套集地形、地籍、空间数据建库、工程应用、土石方算量等功能为一体的软件系统)。CASS等软件进行内业编辑作业时,有时候会遇到利用某

在实际工作中,测绘工作者在使用AutoCAD或者

单一软件不能满足工作需要的情况,如不能够将不闭合的线图形转换成闭合的面图形,这个时候我们就需要进

收稿日期:2015-6-14

作者简介:唐雨花(1988.4-),女,在读硕士,研究方向:地理信息系统。

Copyright©博看网 www.bookan.com.cn. All Rights Reserved.第7期

应时间和效率。

1

基于AutoCAD的三维多段线转多段线方法分析

·109·

(2)在【解决方案资源管理器】里的项目上面【右键】→【添加引用】→【浏览】,在【查找范围】里添加“:\\Program置为False。

(3)点击【项目】菜单→【CADproject属性】→【生成】,选择需要编译的目标平台,就可以在Class.cs中编写代码了。

(4)点击【项目】菜单→【CADproject属性】→【调试】→【启动外部程序】,选择指向AutoCAD主程序(“:\\Program

的路径,就可以直接点击“调试”按钮或者按F5键自动启动AutoCAD程序进行调试。

(5)编码完成之后按快捷键F6或者点击菜单【生成】→【生成解决方案】,编译成功后,默认会在工程目录的bin\\Debug文件夹下生成本工程的dll库文件及pdb调试信息文件。如果编译不成功,编译环境会在下面的错误列表中显示错误及警告,依次改正后重新执行编译操作则可编译成功。

(6)点击【启动调试】,在AutoCAD的命令行中输入“netload”,选择编译好的.dll文件加载AutoCAD.NET程序,加载后在命令行输入声明的命令,即运行相应的程序。

ClassLibrary1.dll程序的主要代码如下://声明程序命令为“3dto2d”……

//创建三维多段线的选择集//二维三维选择集过滤\"Polyline\");

//建立过滤器

\")]

Files\\AutoCAD版本”目录下的acad.exe)

和acdbmgd.dll两个库文件,并把引用的dll文件的属性设

Files\\AutoCAD版本”目录下的acmgd.dll

三维多段线转多段线方法探讨

在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

上述方法操作较为复杂,为了提高测绘工作的效率,本文提出了一种基于C#编程的改进方法,为了便于比较,本文称之为方法三。具体操作方法及步骤如下:

方法三:(1)用AutoCAD2012打开“面转dwg.DWG”,输入命令“3dto2d”,等待程序运行。(2)输入命令“pedit”,然后根据提示输入m,然后输入“all”或者用鼠标选择全部图形,点击【空格】或【enter】,然后根据提示输入“c”,点击【空格】或【enter】,操作完成。

dll文件。ClassLibrary1.dll文件是基于AutoCAD2012平台

其中,方法三在操作之前需要先加载ClassLibrary1.

基于AutoCAD平台的C#编程改进方法

[CommandMethod(\"3dto2d

TypedValue[]filList=newTypedValue[1];

filList[0]=newTypedValue((int)DxfCode.Start,SelectionFilterfilter=newSelectionFilter(filList);PromptSelectionResultents=ed.SelectAll(filter);……

//三维多段线转换成多段线{

count3d=count3d+1;

if(entity.GetType().Name==\"Polyline3d\")Polyline3dpl3d=(Polyline3d)transaction.GetObjectPoint3dCollectionpts=newPoint3dCollection();pl3d.GetStretchPoints(pts);

Point2dCollectionpt2d=newPoint2dCollection();

在.NET环境下开发的AutoCAD.NET[5]程序,在命令行输入“netload”选中ClassLibrary1.dll文件,加载一次,就可以反复使用。程序的开发步骤如下:

(1)打开VS2010,点击【新建项目】,在【已安装的模板】选择Visual

NETFramework调整至3.5版本,创建一个【类库】项目。

C#下面的【Windows】,在中间栏将.

(id,OpenMode.ForWrite,true);

Copyright©博看网 www.bookan.com.cn. All Rights Reserved.·110·

doubleElv;Elv=0;

foreach(Point3dpt3dinpts)Elv=Elv+pt3d.Z;pt2d.Add(p2d);

基于AutoCAD的三维多段线转多段线方法分析第7期

作步骤数是方法二的7/10,是方法一的1/2。从整个操作的平均使用时间上来说,方法三是方法二的71%,是方法一的45%。

3结论

{//节点坐标{}{}{}为pt3d.X,pt3d.Y,pt3d.Z

Point2dp2d=newPoint2d(pt3d.X,pt3d.Y);

}

本文介绍的三种三维多段线转多段线方法中,方法一和方法二都是直接在AutoCAD2012中进行的,操作步骤较为复杂。方法三加载了利用AutoCAD二次开发的程序,虽然前期需要进行编程处理,但是操作更加简单。通过对比分析AutoCAD三维多段线转多段线的三种方法,我们可以得出以下结论:基于AutoCAD平台的C#编程的第三种方法操作最简便,操作效率最高。

参考文献:

[1]陈家鸿,张新长,郭泰圣.AutoCAD与ArcGIS数据转换研究与应用[J].技术应用,2014(5):46-50.

[2]牟乃夏,刘文宝,王海银,等.ArcGIS10地理信息系统教程:从初学到精通[M].北京:测绘出版社,2013.

[3]宋小冬,钮新毅.地理信息系统实习教程[M].北京:科学出版社,2013.

[4]王宏,杨雪静.AutoCAD2012中文版从基础到实训[M].北京:清华大学出版社,2012.

[5]李冠亿.深入浅出AutoCAD.NET二次开发[M].北京:中国建筑工业出版社,2012.

Polylinepl=Polyline(pt2d,0);pl.Layer=pl3d.Layer;ToModelSpace(pl);pl3d.Erase();

}{

pl.Elevation=Elv/pts.Count;

elseif(entity.GetType().Name==\"Polyline2d\")count2d=count2d+1;

}

2

三维多段线转多段线方法效率对比分析

本文以“面转dwg.DWG”为实验数据,其共包含391个由三维多段线构成的闭合面图形,所有三维多段线的总周长为239346.3789m。经过细致的分析三种方法的具体分解步骤,统计其分解步骤数。通过进行反复操作,分别统计三种方法在整个三维多段线转多段线过程中的平均使用时间,得出如下统计表:

表1三维多段线方法效率对比表

方法一

分解步骤数平均使用时间(秒)

1438方法二1024方法三177由此我们可以得出,从操作步骤数来说,方法三的操

Copyright©博看网 www.bookan.com.cn. All Rights Reserved.

因篇幅问题不能全部显示,请点此查看更多更全内容

Top