复制并粘贴多个
大家好<我是这个团体的新成员。试图找到一个lisp代码来选择对象,然后在给定的指定距离和指定时间沿左右两个方向粘贴它。有关问题说明,请参阅随附的CAD文件。**** Hidden Message ***** 这对于学习lisp来说是一个很好的任务,希望其他人能跟随我的脚步,提供如何做而不是编码。我将谈到不使用数组命令。
使用(entsel)选择一个对象。您也可以在同一时间点获得选择点。
多少(getint
距离分开(getdist或(get real
使用(极坐标角度距离)计算出一个新的点
复制对象点至新点
设置点至新点
结束重复
使用-ve距离将使对象向左移动,例如简单的圆。
尝试Afralisp教程作为开始,或者只需谷歌说“getint lisp autocad”查找其他命令。
一旦你有一面工作,然后可以看看两面。
抱歉,我是个口齿不清的新手。
但是这个LISP可以试试。
(defun c:test()
(setq po (getpoint "\nchosebase:"))
(setq ss (ssget))
(setq a (getreal "\ndistance:"))
(setq n (getint "\nlefttimes:"))
(setq n2 (getint "\nrighttimes:"))
(setq p1 (polar po pi a));left
(setq p2 (polar po 0 a));right
(command "copybase" po ss "")
(command "PASTECLIP" p1)
(command "PASTECLIP" p2)
(repeat (- n 1) ;left
(setq p3 (polar p1 pi a));left
(setq p1 p3)
(command "PASTECLIP" p1)
);repeat
(repeat (- n2 1) ;right
(setq p4 (polar p2 0 a));right
(setq p2 p4)
(command "PASTECLIP" p2)
);repeat
);test
正雄你不需要pasteclip看看dista @Bigal-感谢您解释如何编写代码
@Masao-为您的代码。它工作正常,符合我的要求<谢谢你们两位的及时回复。
(defun c:test()
(setq ss (ssget))
(setq po (getpoint "\nchosebase:"))
(setq a (getreal "\ndistance:"))
(setq n (getint "\nlefttimes:"))
(setq n2 (getint "\nrighttimes:"))
(setq p1 (polar po pi a));left
(setq p2 (polar po 0 a));right
(command "copy" ss "" po p1)
(command "copy" ss "" po p2)
(repeat (- n 1) ;left
(setq mult 0)
(setq p3 (polar p1 pi (* a (setq mult (1+ mult)))))
(setq p1 p3)
(command "copy" ss "" po p1)
);repeat
(repeat (- n2 1) ;right
(setq mult2 0)
(setq p4 (polar p2 0 (* a (setq mult2 (1+ mult2)))))
(setq p2 p4)
(command "copy" ss "" po p2)
);repeat
);test
新代码研究
但是为什么mult可以加1?在重复功能中,你能做到吗? 对不起,这是正确的代码。
(defun c:test()
(setq ss (ssget))
(setq po (getpoint "\nchosebase:"))
(setq a (getreal "\ndistance:"))
(setq n (getint "\nlefttimes:"))
(setq n2 (getint "\nrighttimes:"))
(setq p1 (polar po pi a));left
(setq p2 (polar po 0 a));right
(command "copy" ss "" po p1)
(command "copy" ss "" po p2)
(repeat (- n 1) ;left
(setq mult 0)
(setq p1 (polar p1 pi (* a (setq mult (1+ mult)))))
(command "copy" ss "" po p1)
);repeat
(repeat (- n2 1) ;right
(setq mult2 0)
(setq p2 (polar p2 0 (* a (setq mult2 (1+ mult2)))))
(command "copy" ss "" po p2)
);repeat
);test
对于masao,请在Multi-Getvals顶部查找示例代码。lsp
页:
[1]