明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1434|回复: 12

[提问] 请教:如何设置方向复制默认的间距和个数

[复制链接]
发表于 2018-5-16 13:00 | 显示全部楼层 |阅读模式
本帖最后由 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))
))


发表于 2018-5-16 16:33 | 显示全部楼层
(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))
  )
)
如果默认了怎么改?
 楼主| 发表于 2018-5-21 12:19 | 显示全部楼层
本帖最后由 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))
...

谢谢这位兄弟!我试了下,正是我要想实现的这种功能。
再次感谢!
lisp不在于功能有多强大,在于把复杂重复的劳动简单化,够高效的解决各种问题:)
发表于 2022-10-3 16:52 | 显示全部楼层
pzweng 发表于 2018-5-16 16:33
(defun c:cc ()  ;;方向复制,复制num个,间距dis
  (or dis (setq dis 1500))
  (or num (setq num 4))
...

请教一下,如何在点选方向的时候就把距离给读取,作为下一步的默认距离呢?
发表于 2018-5-16 15:15 | 显示全部楼层
这两个值,你可贮存在注册表中、记事文本中,下次用时调取出来。
发表于 2019-11-7 18:47 | 显示全部楼层
学习了,感谢分享
发表于 2019-11-7 19:23 | 显示全部楼层
感觉阵列好用些
发表于 2022-10-3 16:53 | 显示全部楼层
请教一下,如何在点选方向的时候就把距离给读取,作为默认的距离呢?
发表于 2022-10-3 21:25 | 显示全部楼层
CAD自带的工命令:COPY [阵列(A)] 不是可以满足吗?同时建议变量定义成局部变更。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-3-28 19:41 , Processed in 0.303791 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表