AutoLisp 程序求助,编写一个AutoLisp程序用来画图

AutoLisp 程序求助,编写一个AutoLisp程序用来画图,第1张

(defun c:tes ( / i n p1 p2 r r1 r2 r3 r4 ss1 ss2)

 (vl-load-com)

 (if (and

  (setq p1 (getpoint "\n请选择同心圆圆心"))

  (setq r1 (s180828a p1 "\n请输入第一个同心圆半径:"))

  (setq r2 (s180828a p1 "\n请输入第二个同心圆半径:"))

  (setq r3 (s180828a p1 "\n请输入第三个同心圆半径:"))

  (setq p2 (polar p1 0 (setq r4 (cadr (setq ss1 (vl-sort (list r1 r2 r3) '<))))))

  (setq r (s180828a p2 "\n请输入小圆半径"))

  (setq n (s180828s))

     )

  (progn

   (setq ss2 '())

   (while (setq r1 (car ss1))

    (setq ss1 (cdr ss1))

    (entmake (list '(0 . "CIRCLE") (cons 10 p1) (cons 40 r1)))

    (setq ss2 (cons (entlast) ss2))

   )while

   (setq i -1.0)

   (while (< (setq i (1+ i)) n)

    (setq p2 (polar p1 (/ (* pi i 2) n) r4))

    (entmake (list '(0 . "CIRCLE") (cons 10 p2) (cons 40 r)))

   )while

  )

 )

 (princ)

)autolisp程序,复制到记事本,以【.lsp】为后缀命名,AutoCAD命令【appload】加载。

输入圆半径

(defun s180828a (p1 str1 / p1 str1)

 (initget 6)

 (getdist p1 str1)

)

输入小圆数量

(defun s180828s ()

 (initget 6)

 (getint "\n请输入小圆数量:")

)

这是AutoLisp入门教程的第三部分,在教程的第二部分,我们编写了一个绘制瓦楞板多段线的小程序。这个Autolisp小程序涉及了一些重要常见的函数,例如 polar , repeat 和 while 等(其语法和返回值可以参考: 常见函数1 , 常见函数2 , 常见函数3 )。

再来回忆一下我们使用这个程序的时候是如何 *** 作的:1)加载这个程序,并输入 wlb 调用这个程序;2)按照提示选取起始点,然后选取终点,屏幕上画出一条多段线;3)继续拾取起始点和终点,再次划出一条多段线线;4)若想终止程序,按 ESC 或 Enter 即可。

也许你已经想到了,这个程序的 *** 作能不能改成这个样子:选取一条直线,根据这个直线的两个端点,自动生产一条多段线。这样就涉及了对AutoCAD对象属性的读取。

重点来了!!!

在入门教程的第三部分,我们将使用AutoLisp中相关函数对AutoCAD对象的属性进行选择、获取、修改和更新。常用的对象属性函数如下表:

对AutoCAD对象属性的修改实际上就是对AutoCAD对象属性列表的修改。

获得对象联合属性列表

编写一个chgrad.lsp程序,用来修改半径。

在原来的基础上画一个瓦楞板程序,要求选择一条线段,以此为轴线画一个瓦楞板。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12170541.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存