移动多个对象半径
大家好,我是一个新的论坛的实际成员,但已经参考这些线程相当长一段时间,当谷歌搜索特定的需要。然而,我最近的搜索几乎没有得到什么帮助,也没有针对我的CAD需求。这些线程中也有类似的东西,但给出的lisp并不能具体实现我希望实现的目标。如果还有另一个lisp例程,我还没有找到它。我需要从一个中心点“分解”(也就是说)多个对象,这样由于设计的复杂性,我可以分别对每个单独的对象进行尺寸标注。我附上一个原始设计的剪贴画,然后是我试图实现的想法(尽管所有物体都没有移动以供参考)。如果有人能解决这个问题,我将不胜感激。
我使用的是AutoCAD 2017,但对这个版本来说是新的。之前的v2014。自2006年以来一直在使用AC。
如果是我,我会把每个部分都做成一个块,把整个东西放大,然后把每个块的比例重新定义为1。如果你还没有这样做,或者如果它不可行,那么它可能需要比节省更多的时间。
注释性块可以做同样的事情,额外的好处是能够显示两种布局,但同样,可能不可行。
为此编写LISP例程应该不难,只要每个部分都是单个实体,例如多段线。 是的,阻塞、缩放和重新定义需要更多的时间。注释性的不值得这么做。虽然它们已经是多段线了,但不幸的是,我还没有花时间学习如何编写lisp例程,尽管我应该这样做。肯定有人已经有了Lisp程序的地方。 尝试了组比例2X解组比例0.5x每个对象,因此需要进行更多测试。看看它是否有效。 我已经将您的帖子转移到AutoLISP、Visual LISP和DCL论坛。 看看这样的东西是否有帮助(摘自我的图书馆…)
(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。 尝试使用您的代码,但在使用过程中收到此错误。。。。(我将输入命令更改为RMOVE以加快键入速度)
命令:RMOVE
拾取或指定径向移动的中心点:cen of _。圆圈
指定圆的中心点或:
指定圆的半径或[直径]:10'
命令:;错误:AutoCAD。应用程序:空范围
页:
[1]