你是不是也遇到过:测量或计算得到了一批坐标点,需要逐个输入到CAD中绘制。手动输入几百个点太慢,还容易输错。
利用Excel坐标数据 + 脚本,可以一键在CAD中批量生成点、线、多段线。 本文提供现成的方法和脚本。
一、准备坐标数据
在Excel中整理坐标,格式如下:
如果是二维点,只需X,Y两列。
将Excel另存为 CSV(逗号分隔) 文件,例如
points.csv。
二、脚本一:批量绘制点
以下LISP脚本读取CSV文件,在CAD中生成点对象。
(defun C:ImportPoints ( / csvFile f line x y z)
(setq csvFile (getfiled "选择CSV文件" (getvar "DWGPREFIX") "csv" 0))
(if csvFile
(progn
(setq f (open csvFile "r"))
(read-line f) ; 跳过标题行(如果有)
(while (setq line (read-line f))
(setq x (atof (car (string-split line ",")))
y (atof (cadr (string-split line ",")))
z (atof (caddr (string-split line ","))))
(command "POINT" (list x y z))
)
(close f)
(princ "\n点批量生成完成。")
)
)
(princ)
)
(defun string-split (str delim / pos result)
(while (setq pos (vl-string-search delim str))
(setq result (cons (substr str 1 pos) result)
str (substr str (+ pos 2)))
)
(reverse (cons str result))
)
注意:string-split 是自定义分割函数,也可以使用 (vl-string->list) 等替代。
简化版:如果不想处理CSV解析,可以使用 SCRIPT 脚本方法(见下文)。
三、脚本二:批量绘制多段线(按顺序连接)
如果你的坐标顺序就是多段线的顺序,可以生成多段线。
(defun C:ImportPolyline ( / csvFile f line x y z pts)
(setq csvFile (getfiled "选择CSV文件" (getvar "DWGPREFIX") "csv" 0))
(if csvFile
(progn
(setq f (open csvFile "r"))
(read-line f) ; 跳过标题
(setq pts '())
(while (setq line (read-line f))
(setq x (atof (car (string-split line ",")))
y (atof (cadr (string-split line ",")))
z (atof (caddr (string-split line ","))))
(setq pts (append pts (list (list x y z))))
)
(close f)
(command "PLINE")
(foreach pt pts
(command pt)
)
(command "")
(princ "\n多段线生成完成。")
)
)
(princ)
)
四、不使用LISP的简化方法:构造SCRIPT文件
如果你不熟悉LISP,可以用Excel构造一个 .scr 脚本文件。
步骤:
在Excel中,假设X在A列,Y在B列,Z在C列。
在D列构造命令:
对于点:输入
=A1&","&B1&","&C1然后复制下来。在脚本中每行写POINT X,Y,Z。对于多段线:第一行写
PLINE,后续每行写坐标,最后一行写空格(空行)。将D列内容复制到记事本,保存为
.scr文件。在CAD中运行
SCRIPT命令,选择该文件即可。
五、将CAD中的坐标点导出到Excel
如果反过来,想把CAD中的点或多段线顶点坐标导出到Excel,可以使用 DATAEXTRACTION 提取几何属性(坐标),然后输出为CSV。
六、总结
Excel坐标批量绘图:准备CSV,用LISP脚本或构造SCR文件。
推荐使用LISP:更灵活,可自动处理大量数据。
导出坐标到Excel:使用
DATAEXTRACTION。
如果你觉得这篇文章对你有帮助,请点 “在看” 或分享给同事。
夜雨聆风