怎么从Auto CAD中提取多段线坐标?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么从Auto CAD中提取多段线坐标?相关的知识,希望对你有一定的参考价值。

参考技术A 对于做测量工作的广大同仁来说,从CAD图中提取多段线坐标是常用的方法。同时,也是比较准确的做法。下面就如何从CAD图提取多段线坐标,并做相应数据处理提出一点看法。

方法/步骤

第一步:打开CAD。在CAD命令行输入"Li"。”选择对象“,点选需要提取坐标的多段线。回车。

第二步:将CAD文本框中的数据复制到Excel中。选中文本框中的有效数据”Ctrl+C“,在打开的Excel中”Ctrl+V“。

第三步:用Excel”替换“命令删除不必要文字和空格。选中文本所在单元格。点击”开始“右侧的“替换”(或者”编辑“——”替换“)。选中第一格X坐标前的所有部分。复制粘贴到”查找内容“中。“替换为”什么也不用填。点选“全部替换(A)”。发现此时格式还是有些别扭。所以还要再进行几步上述操作,将如第二行一样格式文本中多余的空格删掉。

第四步:数据分列。选中文本所在列。选择“数据”——“分列”———“下一步”——勾选“逗号”——“下一步”——“完成”。

第五步:交换x,y坐标。

第六步:格式调整。“Ctrl+1”或者右键单击选择“设置单元格格式”,在里面调整格式

注意事项

在替换时一定要注意将空格替换掉。

C# | CAD批量导出多段线节点坐标(附源代码下载)


在日常工作内容中经常需要用到提取CAD图面坐标点,用于放样和其他软件做交换数据使用;比如导出测量点坐标、多段线节点,图块点等。导出点坐标可以用CAD的“DATAEXTRACTION”命令创建数据提取将数据导出(如图一);对于单条多段线的坐标也可以使用“LIST”命令把多段线的坐标打印在命令上(如图二)、然后将坐标复制出来;如果图面数据比较多的情况下,这种作业效率显而太低,下面做一个将图面所有多段线节点坐标导出的功能,并在每个地块上标注一个地块名字和标注每个地块的节点点号,方便和图面和数据文件对比。这里用到了CAD文字实体添加、文件保存等操作。(文末有源代码下载)

C# | CAD批量导出多段线节点坐标(附源代码下载) 

C# | CAD批量导出多段线节点坐标(附源代码下载)

图一


C# | CAD批量导出多段线节点坐标(附源代码下载) 

C# | CAD批量导出多段线节点坐标(附源代码下载)

图二


程序设计过程



1. 创建一个List<string>数据集合,用于存储地块名字和每条多段线节点坐标。

2. 过滤选择图上所有多段线,获取选择实体的objectId集合。

3. 循环选择集,根据objectId获取多段线实体和实体外包矩形的中心点(注记地块名字的基点位置),并将地块的名字加到数据集合中和注记在图面上。

4. 使用Polyline的NumberOfVertices获取多段线的节点个数,使用 GetPoint3dAt()方法循环获取每一个点的坐标、同时把节点坐标添加到数据集合和把点号注记在图面上,文字注记的基点位置就是每个点的位置。

5. 保存数据集合;由于数据量不大,我们使用File.WriteAllLines()方法将数据集合全部导出txt文本文件。


CAD单行文字



使用单行文字时,每一行文字都是一个单独的对象。创建单行文字的方法是,首先创建DBText对象的实例,然后将其添加到代表模型空间或图纸空间的块表记录中。创建DBText对象的实例时,不用给构造函数传递任何参数。

DBText text = new DBText();

C# | CAD批量导出多段线节点坐标(附源代码下载) 

C# | CAD批量导出多段线节点坐标(附源代码下载)

单行文字属性


File类



File 类提供用于创建、复制、删除、移动和打开文件的静态方法,并协助创建 FileStream 对象。在使用File之前需要导入IO命名空间using System.IO;

使用WriteAllLines()方法将数据集合保存到文本文件中,这里面有是三个参数:第一、指定保存文件的路径;第二要保存的数据集合;第三、文件的编码,这里定义了UTF-8编码、防止出现乱码情况。


程序代码


C# | CAD批量导出多段线节点坐标(附源代码下载) 

C# | CAD批量导出多段线节点坐标(附源代码下载)

程序代码


在上面代码中,将获取实体外包矩形的中心点和向图面添加文字分别做成了自定义函数,同时也方便我们以后程序的使用、不需要重复写代码同时也减少代码的冗余。


向图面添加单行文字函数


C# | CAD批量导出多段线节点坐标(附源代码下载) 

C# | CAD批量导出多段线节点坐标(附源代码下载)

添加单行文字


获取实体外包矩形的中心点函数


C# | CAD批量导出多段线节点坐标(附源代码下载) 

C# | CAD批量导出多段线节点坐标(附源代码下载)

外包矩形的中心点


程序执行



加载编写的应用程序,执行“ExPoints”命令。

1. 选择多段线

C# | CAD批量导出多段线节点坐标(附源代码下载) 

C# | CAD批量导出多段线节点坐标(附源代码下载)


2. 指定保存文件的位置

C# | CAD批量导出多段线节点坐标(附源代码下载) 

C# | CAD批量导出多段线节点坐标(附源代码下载)


3. 查看保存的结果

C# | CAD批量导出多段线节点坐标(附源代码下载)C# | CAD批量导出多段线节点坐标(附源代码下载) 

C# | CAD批量导出多段线节点坐标(附源代码下载) 

C# | CAD批量导出多段线节点坐标(附源代码下载)

C# | CAD批量导出多段线节点坐标(附源代码下载)

C# | CAD批量导出多段线节点坐标(附源代码下载)



发送数字

5211

获取下载链接


C# | CAD批量导出多段线节点坐标(附源代码下载) - END -

C# | CAD批量导出多段线节点坐标(附源代码下载) 







戳原文,更有料!

以上是关于怎么从Auto CAD中提取多段线坐标?的主要内容,如果未能解决你的问题,请参考以下文章

怎么利用EXCEL vba 在CAD上画多段线

CAD参数绘制多段线(安卓版)

CAD参数绘制多段线(网页版)

cad中几个常用的查询命令

CAD 如何用VBA读取某一根多段线的长度

如何把excel中的这列坐标复制在autocad中,然后划出一条多段线?