
怎么应用autolisp画出如下图案? 10
2个回答
展开全部
也许我可以给你一条写LISP的思路,具体怎么写,你自己去想:
1,设定左下角为基点,所在的圆直径为A
2,圆之间的距离默认设定为A,也可以自定,但不小于A
3,圆之间的递减量设定默认为B,也可以自定,
4,A/B取整就是向右画圆的数量
5,调用画圆命令把圆画出来
.
.
.
.
或者你也可以用另外更好的方式,展开你的想象吧...
1,设定左下角为基点,所在的圆直径为A
2,圆之间的距离默认设定为A,也可以自定,但不小于A
3,圆之间的递减量设定默认为B,也可以自定,
4,A/B取整就是向右画圆的数量
5,调用画圆命令把圆画出来
.
.
.
.
或者你也可以用另外更好的方式,展开你的想象吧...
2014-12-23 · 知道合伙人软件行家
关注

展开全部
(defun C:ZX72 ( / #k1 #os1 %k1 %k2 @p1 @p2 l1 r1 r2)
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(setq #os1 (getvar "osmode"))
(setq @p1 (getpoint "\n请选择基点") #k1 nil)
(if (/= @p1 nil)
(progn
(setq R1 (getdist @p1 "\n请输入基点圆半径"))
(if (and (/= R1 nil) (> R1 0))
(progn
(setq L1 (getdist @p1 "\n请输入圆心距离"))
(if (and (/= L1 nil) (> L1 0))
(progn
(setq %k1 (getint "\n请输入大于1个水平个数"))
(if (and (/= %k1 nil) (> %k1 1))
(progn
(setq %k2 (getint "\n请输入大于1个垂直个数"))
(if (and (/= %k2 nil) (> %k2 1))
(progn
(setq #k1 (getdist "\n请输入圆缩小的倍数"))
)
)
)
)
)
)
)
)
)
)
(if (and (/= #k1 nil) (> #k1 0));如果所有的数据都有输入就绘制
(progn
(setvar "osmode" 0);关闭捕捉
(repeat %k2
(command "circle" @p1 R1);绘制基点圆
(setq @p2 (polar @p1 0 L1));第二点位置
(setq R2 (* R1 #k1) R1 R2);第二个圆半径按比例缩小
(repeat (- %k1 1);由于第一个圆已经绘制,所以绘制数量少一个
(command "circle" @p2 R2);绘制圆
(setq @p2 (polar @p2 0 L1));下一点位置
(setq R2 (* R2 #k1));下一个圆半径
)
(setq @p1 (polar @p1 (* pi 0.5) L1));垂直方向下一个圆心位置
)
(setvar "osmode" #os1);还原捕捉设置
)
)
(prin1)
);复制到记事本,以【ZX72.lsp】命名,加载autoLISP到AutoCAD,命令:【ZX72】
;写了一个,你试试!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询