乐筑天下

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

[编程交流] 移动多个对象半径

[复制链接]

5

主题

14

帖子

9

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 15:58:33 | 显示全部楼层 |阅读模式
大家好,我是一个新的论坛的实际成员,但已经参考这些线程相当长一段时间,当谷歌搜索特定的需要。然而,我最近的搜索几乎没有得到什么帮助,也没有针对我的CAD需求。这些线程中也有类似的东西,但给出的lisp并不能具体实现我希望实现的目标。如果还有另一个lisp例程,我还没有找到它。
 
我需要从一个中心点“分解”(也就是说)多个对象,这样由于设计的复杂性,我可以分别对每个单独的对象进行尺寸标注。我附上一个原始设计的剪贴画,然后是我试图实现的想法(尽管所有物体都没有移动以供参考)。如果有人能解决这个问题,我将不胜感激。
 
我使用的是AutoCAD 2017,但对这个版本来说是新的。之前的v2014。自2006年以来一直在使用AC。
 
165839k2yy4ma99w2pzh2h.jpg
 
165840ss3738aa0c58q13r.jpg
回复

使用道具 举报

2

主题

266

帖子

265

银币

初来乍到

Rank: 1

铜币
9
发表于 2022-7-5 16:10:18 | 显示全部楼层
如果是我,我会把每个部分都做成一个块,把整个东西放大,然后把每个块的比例重新定义为1。如果你还没有这样做,或者如果它不可行,那么它可能需要比节省更多的时间。
 
注释性块可以做同样的事情,额外的好处是能够显示两种布局,但同样,可能不可行。
 
为此编写LISP例程应该不难,只要每个部分都是单个实体,例如多段线。
回复

使用道具 举报

5

主题

14

帖子

9

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 16:21:58 | 显示全部楼层
是的,阻塞、缩放和重新定义需要更多的时间。注释性的不值得这么做。虽然它们已经是多段线了,但不幸的是,我还没有花时间学习如何编写lisp例程,尽管我应该这样做。肯定有人已经有了Lisp程序的地方。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:31:45 | 显示全部楼层
尝试了组比例2X解组比例0.5x每个对象,因此需要进行更多测试。看看它是否有效。
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-5 16:43:55 | 显示全部楼层
我已经将您的帖子转移到AutoLISP、Visual LISP和DCL论坛。
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 16:49:26 | 显示全部楼层
看看这样的东西是否有帮助(摘自我的图书馆…)
 
  1. (defun c:radialmove ( / c ci laycoll laylst layfilt ssx i ent p entplst r )
  2. (vl-load-com)
  3. (setq c (getpoint "\nPick or specify center point for radial move : "))
  4. (vl-cmdf "_.circle" c "\")
  5. (setq ci (entlast))
  6. (setq laycoll (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))
  7. (vlax-for lay laycoll
  8.    (if (eq (vla-get-lock lay) :vlax-false)
  9.      (setq laylst (cons (vla-get-name lay) laylst))
  10.    )
  11. )
  12. (setq layfilt "")
  13. (foreach lay laylst
  14.    (setq layfilt (strcat "," lay layfilt))
  15. )
  16. (setq layfilt (vl-string-left-trim "," layfilt))
  17. (setq ssx (ssget "_X" (list (cons 8 layfilt))))
  18. (setq i -1)
  19. (while (setq ent (ssname ssx (setq i (1+ i))))
  20.    (setq p (vlax-invoke (vlax-ename->vla-object ci) 'intersectwith (vlax-ename->vla-object ent) acextendnone))
  21.    (if p
  22.      (progn
  23.        (setq p (list (car p) (cadr p) (caddr p)))
  24.        (setq entplst (cons (cons p ent) entplst))
  25.      )
  26.    )
  27. )
  28. (entdel ci)
  29. (vl-cmdf "_.circle" c "\")
  30. (setq ci (entlast))
  31. (setq r (cdr (assoc 40 (entget ci))))
  32. (foreach entp entplst
  33.    (vl-cmdf "_.move" (cdr entp) "" (car entp) (polar c (angle c (car entp)) r))
  34. )
  35. (entdel ci)
  36. (princ)
  37. )

 
M、 R。
回复

使用道具 举报

5

主题

14

帖子

9

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 17:01:27 | 显示全部楼层
尝试使用您的代码,但在使用过程中收到此错误。。。。(我将输入命令更改为RMOVE以加快键入速度)
 
命令:RMOVE
拾取或指定径向移动的中心点:cen of _。圆圈
指定圆的中心点或[3P/2P/Ttr(tan-tan半径)]:
指定圆的半径或[直径]:10'
 
命令:;错误:AutoCAD。应用程序:空范围
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 13:08 , Processed in 2.663943 second(s), 69 queries .

© 2020-2025 乐筑天下

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