背景
我自己规划3D打印的路径时,使用AutoCAD进行具体的路径规划,但是苦于其多线段的坐标难以直接导出,摸索多日未得善终。
而后在ChatGPT4的建议下使用AutoCAD自带的代码语言AutoLisp,及其编辑器 Visual Lisp,实现选取多线段自动导出其所有坐标点为csv文件的功能。
具体代码由ChatGPT4生成,这里放在最后。
具体操作方式
- 使用的语言和编辑器 :AutoLisp和Visual LISP 编辑器
代码片段
// An highlighted block
; 定义一个新的LISP函数
(defun c:GetPolylinePointsCSV ()
; 获取当前文档的名称
(setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
(setq filename (vla-get-Name doc))
; 提取文件名(无扩展名)
(setq filetitle (vl-filename-base filename))
; 设置输出CSV文件的路径和文件名
(setq csvpath (strcat filetitle "_polyline_points.csv"))
; 提示用户选择一个多项段
(setq ss (ssget "_:S" '((0 . "LWPOLYLINE"))))
(if ss
(progn
; 如果用户成功选择了一个多项段
(setq pline (ssname ss 0))
; 打开或创建一个CSV文件来保存坐标
(setq f (open csvpath "w"))
; 写入CSV头部(如果需要)
; (write-line "X, Y" f)
; 初始化顶点索引
(setq vtx 0)
; 循环遍历多项段的所有顶点
(while (setq pt (vlax-curve-getPointAtParam pline vtx))
; 将每个顶点的坐标写入文件,格式为CSV
(write-line (strcat (rtos (car pt) 2 2) ", " (rtos (cadr pt) 2 2)) f)
; 移至下一个顶点
(setq vtx (+ vtx 1))
)
; 关闭文件
(close f)
(princ (strcat "\n顶点坐标已成功保存至" csvpath "。"))
)
(princ "\n操作取消或未选择多项段。")
)
; 清理并结束函数
(princ)
)
; 启动消息
(princ "\n运行命令 'GetPolylinePointsCSV' 来获取多项段的点坐标并保存到CSV文件。")
(princ)
- 编辑器中操作;
在编辑其中新建文件,将上述代码复制进去保存,点击下方图片上对应的按钮,然后回到cad界面,根据其命令行运行对应的指令,接着选择多线段即可。
- 可能要注意的事项;
如果不知道Lisp编辑器具体怎么使用,可以去B站上面查,几分钟就能学会。