请大侠帮忙改改一个单向阵列LISP
能不能把下面的源码改成可以记忆之前用过的数据,比如,我用这个阵列过一次,重复用的时候 不用再次输入行距或拾取行距
(defun c:aw (/ )
(setvar "cmdecho" 0)
(princ "\n选择要阵列的对象")
(setq ss (ssget))
(setq rs (getreal "\n请输入行距或右键量取距离:"))
(if (= rs nil)(progn
(setq pt1(getpoint "\n拾取第1点:"))
(setq pt2(getpoint pt1 "\n拾取第2点:"))
(setq rs(rtos (distance pt1 pt2) 2 2))
)
)
(setq rl (getint "\n请输入行数: <6>"))
(if (null rl)(setq rl 6) )
(command "_.Array" ss "" "r" rl 1 rs 1)
(setvar "cmdecho" 1)
(princ)
)
tangjunasd58 发表于 2013-12-10 11:12
加入的别人的通用函数,在这个基础上能不做个判断执行下次命令的时候全安上一次的参数执行
把通用函数分享一下 谢谢:lol 还可以不可以改成往哪个方向拾取就向那个方向阵列,比如我向上拾取距离,阵列就向上,向左拾取距离,阵列就向左 阵列方向我一般都是用正负号控制,至于说记忆上次,没弄过,是不是可以考虑向黑板中写入数值到时去提取,只是个思路,不知对不对。
(defun c:aw ()
(setvar "cmdecho" 0)
(princ "\n选择要阵列的对象")
(setq ss (ssget))
(setq p1 (getpoint "\n起点 :"))
(if (setq p (getpoint p1 "\n请输入方向(间距) :")) (setq p2 p))
(setq ang (angle p1 p2))
(setq dst (distance p1 p2))
(setq r1 (if (numberp r1) r1 6))
(setq r (getint (strcat "\n请输入数量: <" (rtos r1) ">")))
(setq r (if (numberp r) r r1) r1 r)
(command "_.COPY" ss "" "M" p1)
(repeat r
(command (setq p1 (polar p1 ang dst)))
)
(command "")
)
(setvar "cmdecho" 1)
(princ)
)
谢谢了,这个只能记录下个数,不能记录下距离跟方向 ;; 伪源码需要e派工具箱(XCAD)的支持
(defun c:tt (/ t0 lst ll1 ll2 ilst)
(defun main-pro (/ p0 d0 ss)
(setq p0'(0 0)
d00
rad (xyp-d2r ang)
)
(if (setq ss (ssget))
(repeat num
(setq d0 (+ d0 dist))
(xyp-copymove ss p0 (polar p0 rad d0))
)
)
)
(setq ll1 '(dist num ang)
ll2 '(100. 5 0.)
)
(defun ajbcs () (xyp-Multiple-Settile ll1 ll2))
(xyp-initSet ll1 ll2)
(setq ilst '(("dist" "间距" "real" "8")
("ang" "角度" "real" "8")
("num" "数量" "int" "8")
"spacer;"
)
)
(if (= (xyp-Dcl-Init Ilst "【单向阵列】" t) 1)
(main-pro)
)
(princ)
) 院长的伪源码用的太广泛了 ZZXXQQ 发表于 2012-12-29 08:26 static/image/common/back.gif
感觉良好,如能增加首部数字递增更好。 加入的别人的通用函数,在这个基础上能不做个判断执行下次命令的时候全安上一次的参数执行
(defun C:AWW ( / ss ang bp cnt dist d)
(cond
((setq ss (ssget))
(initget 1)
(setq bp (getpoint "\n基点: "))
(initget 1)
(setq ang (getangle bp "\n阵列方向: "))
(setq dist (xx-dist "行距" rs 2.2))
(setq cnt (xx-int "整数" rl 5))
(setq d 0.0)
(setvar "cmdecho" 0)
(command "_.undo" "_g" "_.copy" ss "" "_m" bp)
(repeat (1- cnt)
(command (polar bp ang (setq d (+ d dist)))))
(command "" "_.undo" "_e"))) (princ)) 收藏学习
页:
[1]
2