乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 188|回复: 7

[编程交流] 复制并粘贴多个

[复制链接]

1

主题

2

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-4 03:43:00 | 显示全部楼层 |阅读模式
大家好<我是这个团体的新成员。试图找到一个lisp代码来选择对象,然后在给定的指定距离和指定时间沿左右两个方向粘贴它。有关问题说明,请参阅随附的CAD文件。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 02:38:22 | 显示全部楼层
这对于学习lisp来说是一个很好的任务,希望其他人能跟随我的脚步,提供如何做而不是编码。我将谈到不使用数组命令。
使用(entsel)选择一个对象。您也可以在同一时间点获得选择点。
多少(getint
距离分开(getdist或(get real  

使用(极坐标角度距离)计算出一个新的点
复制对象点至新点
设置点至新点
结束重复
使用-ve距离将使对象向左移动,例如简单的圆。
尝试Afralisp教程作为开始,或者只需谷歌说“getint lisp autocad”查找其他命令。
一旦你有一面工作,然后可以看看两面。
回复

使用道具 举报

3

主题

10

帖子

8

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 08:46:46 | 显示全部楼层
抱歉,我是个口齿不清的新手。
但是这个LISP可以试试。
  1. (defun c:test()
  2. (setq po (getpoint "\nchosebase:"))
  3. (setq ss (ssget))
  4. (setq a (getreal "\ndistance:"))
  5. (setq n (getint "\nlefttimes:"))
  6. (setq n2 (getint "\nrighttimes:"))
  7. (setq p1 (polar po pi a));left
  8. (setq p2 (polar po 0 a));right
  9. (command "copybase" po ss "")
  10. (command "PASTECLIP" p1)
  11. (command "PASTECLIP" p2)
  12. (repeat (- n 1) ;left
  13. (setq p3 (polar p1 pi a));left
  14. (setq p1 p3)
  15. (command "PASTECLIP" p1)
  16. );repeat
  17. (repeat (- n2 1) ;right
  18. (setq p4 (polar p2 0 a));right
  19. (setq p2 p4)
  20. (command "PASTECLIP" p2)
  21. );repeat
  22. );test

回复

使用道具 举报

3

主题

10

帖子

8

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 09:02:32 | 显示全部楼层
正雄你不需要pasteclip看看dista
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 20:23:21 | 显示全部楼层
@Bigal-感谢您解释如何编写代码
@Masao-为您的代码。它工作正常,符合我的要求<谢谢你们两位的及时回复。
回复

使用道具 举报

1

主题

2

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-7 03:46:23 | 显示全部楼层

  1. (defun c:test()
  2. (setq ss (ssget))
  3. (setq po (getpoint "\nchosebase:"))
  4. (setq a (getreal "\ndistance:"))
  5. (setq n (getint "\nlefttimes:"))
  6. (setq n2 (getint "\nrighttimes:"))
  7. (setq p1 (polar po pi a));left
  8. (setq p2 (polar po 0 a));right
  9. (command "copy" ss "" po p1)
  10. (command "copy" ss "" po p2)
  11. (repeat (- n 1) ;left
  12. (setq mult 0)
  13. (setq p3 (polar p1 pi (* a (setq mult (1+ mult)))))
  14. (setq p1 p3)
  15. (command "copy" ss "" po p1)
  16. );repeat
  17. (repeat (- n2 1) ;right
  18. (setq mult2 0)
  19. (setq p4 (polar p2 0 (* a (setq mult2 (1+ mult2)))))
  20. (setq p2 p4)
  21. (command "copy" ss "" po p2)
  22. );repeat
  23. );test

新代码研究
但是为什么mult可以加1?在重复功能中,你能做到吗?
回复

使用道具 举报

3

主题

10

帖子

8

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-7 08:18:49 | 显示全部楼层
对不起,这是正确的代码。
  1. (defun c:test()
  2. (setq ss (ssget))
  3. (setq po (getpoint "\nchosebase:"))
  4. (setq a (getreal "\ndistance:"))
  5. (setq n (getint "\nlefttimes:"))
  6. (setq n2 (getint "\nrighttimes:"))
  7. (setq p1 (polar po pi a));left
  8. (setq p2 (polar po 0 a));right
  9. (command "copy" ss "" po p1)
  10. (command "copy" ss "" po p2)
  11. (repeat (- n 1) ;left
  12. (setq mult 0)
  13. (setq p1 (polar p1 pi (* a (setq mult (1+ mult)))))
  14. (command "copy" ss "" po p1)
  15. );repeat
  16. (repeat (- n2 1) ;right
  17. (setq mult2 0)
  18. (setq p2 (polar p2 0 (* a (setq mult2 (1+ mult2)))))
  19. (command "copy" ss "" po p2)
  20. );repeat
  21. );test

回复

使用道具 举报

3

主题

10

帖子

8

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-7 08:55:48 | 显示全部楼层
对于masao,请在Multi-Getvals顶部查找示例代码。lsp
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-1-31 14:56 , Processed in 0.169626 second(s), 73 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表