请教:如何设置方向复制默认的间距和个数
本帖最后由 zlq1318 于 2018-5-16 13:03 编辑下面这个lisp的功能实现方向复制,但是每次用的时候都要输入距离dis和个数num,对于特定工程来说有时候距离个数是个定值,为避免每次重复输入,如何默认程序输入的距离和个数是上次你输入的,求教各位大神。譬如我要复制4条直线,距离为1500。输入1500和4后,下次我要是再用如何默认是1500和4,从而避免反复输入。
诚挚感谢高手相助。
(defun c:cc() ;;方向复制,复制num个,间距dis
(setq ent (ssget)
spt (getpoint "\n请输入方向起点:")
ept (getpoint "\n请选择方向终点:" spt)
dis (getdist "\n请输入距离:")
num (getreal "\n请输入要复制的个数:")
ang (angle spt ept)
pt (list 0 0)
pt1(list 0 0) n 0 )
(while (< n num) (setq copypt (polar pt ang dis))
(command "copy" ent "" pt1 copypt)
(setq pt copypt)
(setq n (1+ n))
))
(defun c:cc ();;方向复制,复制num个,间距dis
(or dis (setq dis 1500))
(or num (setq num 4))
(setq ent (ssget)
spt (getpoint "\n请输入方向起点:")
ept (getpoint "\n请选择方向终点:" spt)
dis (cond((getdist (strcat "\n请输入距离<" (rtos dis 2 2) ">:"))) (dis))
num (cond((getint (strcat "\n请输入要复制的个数<" (itoa num) ">:"))) (num))
ang (angle spt ept)
pt(list 0 0)
pt1 (list 0 0)
n 0
)
(vl-propagate 'dis)
(vl-propagate 'num)
(while (< n num)
(setq copypt (polar pt ang dis))
(command "copy" ent "" pt1 copypt)
(setq pt copypt)
(setq n (1+ n))
)
)
如果默认了怎么改? 本帖最后由 zlq1318 于 2018-5-21 12:20 编辑
pzweng 发表于 2018-5-16 16:33
(defun c:cc ();;方向复制,复制num个,间距dis
(or dis (setq dis 1500))
(or num (setq num 4))
...
谢谢这位兄弟!我试了下,正是我要想实现的这种功能。
再次感谢!:lol:lol
lisp不在于功能有多强大,在于把复杂重复的劳动简单化,够高效的解决各种问题:) pzweng 发表于 2018-5-16 16:33
(defun c:cc ();;方向复制,复制num个,间距dis
(or dis (setq dis 1500))
(or num (setq num 4))
...
请教一下,如何在点选方向的时候就把距离给读取,作为下一步的默认距离呢? 这两个值,你可贮存在注册表中、记事文本中,下次用时调取出来。 学习了,感谢分享 感觉阵列好用些 请教一下,如何在点选方向的时候就把距离给读取,作为默认的距离呢? CAD自带的工命令:COPY [阵列(A)] 不是可以满足吗?同时建议变量定义成局部变更。
页:
[1]
2