乐于分享
好东西不私藏

《Excel与CAD坐标互转:从Excel批量绘制点、线、多段线》

《Excel与CAD坐标互转:从Excel批量绘制点、线、多段线》

你是不是也遇到过:测量或计算得到了一批坐标点,需要逐个输入到CAD中绘制。手动输入几百个点太慢,还容易输错。

利用Excel坐标数据 + 脚本,可以一键在CAD中批量生成点、线、多段线。 本文提供现成的方法和脚本。


一、准备坐标数据

在Excel中整理坐标,格式如下:

X
Y
Z(可选)
点号(可选)
100
200
0
P1
150
250
0
P2
120
180
0
P3
  • 如果是二维点,只需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 脚本文件。

步骤

  1. 在Excel中,假设X在A列,Y在B列,Z在C列。

  2. 在D列构造命令:

    • 对于点:输入 =A1&","&B1&","&C1 然后复制下来。在脚本中每行写 POINT X,Y,Z

    • 对于多段线:第一行写 PLINE,后续每行写坐标,最后一行写空格(空行)。

  3. 将D列内容复制到记事本,保存为 .scr 文件。

  4. 在CAD中运行 SCRIPT 命令,选择该文件即可。


五、将CAD中的坐标点导出到Excel

如果反过来,想把CAD中的点或多段线顶点坐标导出到Excel,可以使用 DATAEXTRACTION 提取几何属性(坐标),然后输出为CSV。


六、总结

  • Excel坐标批量绘图:准备CSV,用LISP脚本或构造SCR文件。

  • 推荐使用LISP:更灵活,可自动处理大量数据。

  • 导出坐标到Excel:使用 DATAEXTRACTION

如果你觉得这篇文章对你有帮助,请点 “在看” 或分享给同事。