(defun c:AutoCircle (/ dia dist margin) (setq dia (get_real '\n输入圆直径大小:')) (setq dist (get_real '\n输入圆的中心间距:')) (setq margin (get_real '\n输入圆和多段线之间的边距:'))

(setq pts (vl-remove-if-not '(lambda (x) (= (cdr x) 0)) (mapcar 'cdr (entget (car (entsel '\n选择多段线:')))))) (setq numpts (length pts))

(setq i 0) (while (< i numpts) (setq pt1 (nth i pts)) (setq pt2 (if (= i (- numpts 1)) (car pts) (nth (1+ i) pts))) (setq delta (distance pt1 pt2)) (setq numcircles (fix (/ (- delta margin) dist))) (setq delta (if (> numcircles 0) (/ (- delta margin) numcircles) delta)) (setq pt (polar pt1 (angle pt1 pt2) (/ delta 2))) (setq j 0) (while (< j numcircles) (command "circle" pt (strcat "dia" (rtos dia))) (setq pt (polar pt (angle pt1 pt2) delta)) (setq j (1+ j)) ) (setq i (1+ i)) ) (princ) )

使用方法:

  1. 将代码复制到 AutoCAD 的命令行中并按 Enter 键运行,或者将代码保存为 .lsp 文件后加载进 AutoCAD 并输入命令名 AutoCircle 并按 Enter 键运行。

  2. 运行后会弹出设置窗口,按照提示依次输入圆直径大小、圆的中心间距、圆和多段线之间的边距,并点击确定按钮。

  3. 选择要在其中画圆的多段线。

  4. 程序会根据设置的参数在多段线内自动画出一系列圆。

注意事项:

  1. 代码中的圆直径大小、圆的中心间距、圆和多段线之间的边距都是以当前单位为基准,需要根据实际情况输入。

  2. 多段线的端点必须在水平方向上对齐,否则程序可能会出现错误。

  3. 程序画出的圆是以当前图层和当前颜色为基准的,如果需要更改可以在程序中添加相应的代码。

AutoCAD Lisp 代码:在多段线内自动绘制圆形

原文地址: https://www.cveoy.top/t/topic/lUbc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录