明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 369|回复: 9

[源码] 连续等距复制

[复制链接]
发表于 2024-6-26 20:46 | 显示全部楼层 |阅读模式
本帖最后由 qazxswk 于 2024-6-27 16:50 编辑

看到langjs大神的帖子,http://bbs.mjtd.com/forum.php?mod=viewthread&tid=171879
然后有网友提出,输入复制的距离后,然后按下 R 键,就可以快速复制了。不需要不断地按右键或空格。我试着写了一个。
我感觉,按【F】键连续复制比按R键更为方便,另外,如果在输入复制距离数据后,按【回车】键也可以继续复制。
抛砖引玉,看大家有没有更好的代码。

  1. (defun c:11(/ *error* newss_after elast osm ss bb pt pt1 pt2 d r en)
  2. (defun *error* (msg)(setvar "osmode" osm)(setvar "cmdecho" 1)(princ "\n***复制完成***"))
  3. (defun newss_after (elast / en ss0)
  4. (if elast (progn
  5. (setq ss0 (ssadd))
  6. (setq en (entnext elast))
  7. (while en
  8. (if (not (member (cdr (assoc 0 (entget en))) '("ATTRIB" "VERTEX" "SEQEND")))(setq ss0 (ssadd en ss0)))
  9. (setq en (entnext en))
  10. )
  11. ss0 )
  12. ) )

  13. (setvar "cmdecho" 0)
  14. (setq osm (getvar "osmode"))
  15. (if (and
  16. (setq ss (ssget)) (setq pt (getpoint "\n选择复制基点:"))
  17. (setq en (entlast))
  18. (vl-cmdf "_.copy" ss "" pt pause)
  19. (setvar "osmode" 16384)
  20. (setq pt1 (getvar "lastpoint"))
  21. (setq d (distance pt pt1) r (angle pt pt1))
  22. )
  23. (while
  24. (princ "\n按【F】键或【回车】键连续复制,空格或ESC键退")
  25. (if d (princ (strcat "<当前复制距离" (rtos d) ">:")))
  26. (while pt1 (setq bb (grread t 4 2))
  27. (cond
  28. ((member bb '((2 13)(2 70)(2 102)))
  29. (setq ss (newss_after en))
  30. (setq en (entlast))
  31. (setq pt2 (polar pt1 r d))
  32. (vl-cmdf "_.copy" ss "" pt1 pt2)
  33. )
  34. ((member bb '((2 32)))(exit))
  35. )
  36. )
  37. (setq pt1 pt2)
  38. )
  39. )
  40. (princ))



评分

参与人数 1明经币 +1 收起 理由
zhoupeng220 + 1 很给力!

查看全部评分

发表于 2024-6-26 21:37 | 显示全部楼层
有复制上限吗?貌似复制了14次之后就不行了。
 楼主| 发表于 2024-6-26 22:17 | 显示全部楼层
lzspain 发表于 2024-6-26 21:37
有复制上限吗?貌似复制了14次之后就不行了。

嗯,有这个情况,因为复制了很多对象,在排查原因中。
 楼主| 发表于 2024-6-27 02:00 | 显示全部楼层
lzspain 发表于 2024-6-26 21:37
有复制上限吗?貌似复制了14次之后就不行了。

已经修改好了,多次复制,不会有问题了。
发表于 2024-6-27 09:21 | 显示全部楼层
谢谢,很不错
发表于 2024-6-27 10:48 | 显示全部楼层
qazxswk 发表于 2024-6-27 02:00
已经修改好了,多次复制,不会有问题了。

谢谢,确实可以了。
 楼主| 发表于 2024-6-27 17:06 | 显示全部楼层
利用前辈们的一些代码,解决了不能复制动态块和属性块的问题。
发表于 2024-6-27 22:09 | 显示全部楼层
我也是在别人的代码中学习起来的,通过简单改改代码解决繁琐的工作
发表于 2024-6-28 11:06 | 显示全部楼层
怎么使用的呀,有文件吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-1 11:44 , Processed in 0.167417 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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