x_s_s_1 发表于 2013-1-14 12:04 static/image/common/back.gif
写了个复制的
如能做成对话框,加上复制距离为绝对距离与相对距离选择,那就更完美了。 本帖最后由 xyp1964 于 2013-1-18 21:04 编辑
嘿嘿,这个我自己也写了一个,不过不精简
(defun c:dcfz(/ ss1 dst spt ept len1 ang1 nom1)
(princ "\n选择多重复制的对象:")
(setq ss1 (ssget))
(setq dst 0
nom1 0)
(setq dst (getdist "\n复制的间距:(间距)|等分(0):<0>"))
(setq spt (getpoint "\n复制的起点:"))
(setq ept (getpoint "\n终点(方向):"))
(setq len1 (distance spt ept))
(setq ang1 (angle spt ept))
(setq os (getvar "osmode"));;存储osmode原来的值
(setvar "osmode" 0);;设置osmode为0
(if (or (= dst 0) (= dst nil))
(progn
(setq nom1 (1- (getint "\n复制的次数(含原物体):")))
(setq dst (/ len1 nom1))
)
(progn
(setq nom1 (getint "\n复制的次数|沿路径自动排列(0):<0>"))
(if (or (= nom1 0) (= nom1 nil))
(setq nom1 (fix (/ len1 dst)))
(princ nom1)
)
)
)
(while (>= nom1 1)
(setq mpt (polar spt ang1 (* dst nom1)))
(command "copy" ss1 "" spt mpt)
(setq nom1 (1- nom1))
)
(setvar "osmode" os)
(prin1)
)
有个判断是起点终点的长度,按长度确定复制的次数
页:
1
[2]