(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程序,用来修改半径。
在原来的基础上画一个瓦楞板程序,要求选择一条线段,以此为轴线画一个瓦楞板。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)