robwell 发表于 2022-7-5 15:58:33

移动多个对象半径

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

 

CyberAngel 发表于 2022-7-5 16:10:18

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

robwell 发表于 2022-7-5 16:21:58

是的,阻塞、缩放和重新定义需要更多的时间。注释性的不值得这么做。虽然它们已经是多段线了,但不幸的是,我还没有花时间学习如何编写lisp例程,尽管我应该这样做。肯定有人已经有了Lisp程序的地方。

BIGAL 发表于 2022-7-5 16:31:45

尝试了组比例2X解组比例0.5x每个对象,因此需要进行更多测试。看看它是否有效。

SLW210 发表于 2022-7-5 16:43:55

我已经将您的帖子转移到AutoLISP、Visual LISP和DCL论坛。

marko_ribar 发表于 2022-7-5 16:49:26

看看这样的东西是否有帮助(摘自我的图书馆…)
 

(defun c:radialmove ( / c ci laycoll laylst layfilt ssx i ent p entplst r )

(vl-load-com)

(setq c (getpoint "\nPick or specify center point for radial move : "))
(vl-cmdf "_.circle" c "\\")
(setq ci (entlast))
(setq laycoll (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))
(vlax-for lay laycoll
   (if (eq (vla-get-lock lay) :vlax-false)
   (setq laylst (cons (vla-get-name lay) laylst))
   )
)
(setq layfilt "")
(foreach lay laylst
   (setq layfilt (strcat "," lay layfilt))
)
(setq layfilt (vl-string-left-trim "," layfilt))
(setq ssx (ssget "_X" (list (cons 8 layfilt))))
(setq i -1)
(while (setq ent (ssname ssx (setq i (1+ i))))
   (setq p (vlax-invoke (vlax-ename->vla-object ci) 'intersectwith (vlax-ename->vla-object ent) acextendnone))
   (if p
   (progn
       (setq p (list (car p) (cadr p) (caddr p)))
       (setq entplst (cons (cons p ent) entplst))
   )
   )
)
(entdel ci)
(vl-cmdf "_.circle" c "\\")
(setq ci (entlast))
(setq r (cdr (assoc 40 (entget ci))))
(foreach entp entplst
   (vl-cmdf "_.move" (cdr entp) "" (car entp) (polar c (angle c (car entp)) r))
)
(entdel ci)
(princ)
)

 
M、 R。

robwell 发表于 2022-7-5 17:01:27

尝试使用您的代码,但在使用过程中收到此错误。。。。(我将输入命令更改为RMOVE以加快键入速度)
 
命令:RMOVE
拾取或指定径向移动的中心点:cen of _。圆圈
指定圆的中心点或:
指定圆的半径或[直径]:10'
 
命令:;错误:AutoCAD。应用程序:空范围
页: [1]
查看完整版本: 移动多个对象半径