如何在AutoCAD中提取DWG多段线的东/北坐标并保存为CSV?
当然可以!在AutoCAD里完全能提取多段线的坐标并保存为东/北坐标系的CSV文件,这里给你两种实用方法,按需选择:
方法1:用AutoCAD内置的DATAEXTRACTION工具(快速上手)
这是AutoCAD自带的提取工具,不用写代码就能搞定:
- 打开你的DWG文件,在命令行输入
DATAEXTRACTION并回车,启动提取向导。 - 第一步选择“创建新数据提取”,给提取集起个名字,保存到合适的位置。
- 到“定义数据源”步骤,选择“选择对象”,然后框选所有需要提取的多段线(或者按类型筛选,只选多段线),选完后确认。
- 进入“选择特性”环节,展开几何图形分类,勾选「顶点 X 坐标」和「顶点 Y 坐标」——这里要注意,AutoCAD默认X轴对应东、Y轴对应北,刚好符合你的需求。如果需要区分不同多段线,还可以勾选「对象ID」或者「名称」。
- 最后一步选择输出格式为「CSV」,指定保存路径,完成后就能得到包含所有顶点坐标的CSV文件了。
方法2:用AutoLISP脚本(自定义程度更高)
如果需要更灵活的格式(比如给每条多段线加标识、统一小数位数),可以用AutoLISP脚本实现,步骤如下:
- 打开记事本,复制粘贴下面的代码,保存为
PolyToCSV.lsp文件:
(defun c:PolyToCSV (/ fname file poly vertices i pt) (setq fname (getfiled "保存CSV文件" "" "csv" 1)) (setq file (open fname "w")) (write-line "多段线ID,东坐标(X),北坐标(Y)" file) ; 自定义表头 (setq i 0) (while (setq poly (entsel "\n选择多段线(按回车结束选择):")) (setq i (1+ i)) ; 获取多段线的所有顶点坐标 (setq vertices (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget (car poly))))) ; 逐个写入顶点坐标 (foreach pt vertices (write-line (strcat (itoa i) "," (rtos (car pt) 2 6) "," (rtos (cadr pt) 2 6)) file) ) ) (close file) (princ (strcat "\nCSV文件已成功保存至:" fname)) (princ) )
- 回到AutoCAD,输入
APPLOAD命令,加载刚才保存的PolyToCSV.lsp文件。 - 输入命令
PolyToCSV,然后依次选择需要提取的多段线(选完按回车结束),接着指定CSV文件的保存路径即可。
这个脚本会给每条多段线分配一个ID,每个顶点单独一行,坐标保留6位小数,完全符合东/北的格式要求。
额外注意事项
- 确认你的DWG文件坐标系是东/北:AutoCAD默认X轴为东、Y轴为北,如果你的图纸坐标系不是这样,需要先通过
UCS或者TRANS命令转换坐标后再提取。 - 如果是三维多段线,需要提取Z坐标的话,可以修改LISP代码,在写入行里加上
"," (rtos (caddr pt) 2 6)即可。
内容的提问来源于stack exchange,提问作者Ze4




