围绕多个块旋转
是否有人拥有或知道任何lisp例程,允许我将所有选定的块围绕其各自的中心/原点旋转180度(或任何用户定义的方向)?我的街区是有方向的(标志、路灯等)所以每个人都必须面对不同的方向。现在他们都面临着相反的方向,他们需要。。。
匹配属性等。。。这行不通。 (defun c:test ( / ss ang ) (vl-load-com)
(if (and (setq ss(ssget "_:L" '((0 . "INSERT"))))
(setq ang (getangle "\nSpecify Rotation Angle: "))
)
(
(lambda ( i / e o )
(while (setq e (ssname ss (setq i (1+ i))))
(vla-put-rotation (setq o (vlax-ename->vla-object e))
(+ (vla-get-rotation o) ang)
)
)
)
-1
)
)
(princ)
) 确切地谢谢李!! 不客气 有没有办法添加一些东西,允许我按名称选择块?我的一些层有多个块。有些需要旋转,有些不需要。。。 添加
(2 . "YourBlockNameHere")
(0)“插入”旁边 李·麦克,
我注意到你使用
(setq ang (getangle "\nSpecify Rotation Angle: "))
也可用于在屏幕上选择2个点。它适用于数字输入,唯一的问题是,如果用户偶然想要在屏幕上选择两个角度点,那么电流ucs可能是最终结果的一个因素。有办法吗?
好的一点,我想你可以使用:
(defun c:test ( / ss ang ) (vl-load-com)
(if (and (setq ss(ssget "_:L" '((0 . "INSERT"))))
(setq ang (getangle "\nSpecify Rotation Angle: "))
(setq ang (+ ang (angle '(0. 0. 0.) (trans (getvar 'UCSXDIR) 0 (trans '(0. 0. 1.) 1 0 t) t))))
)
(
(lambda ( i / e o )
(while (setq e (ssname ss (setq i (1+ i))))
(vla-put-rotation (setq o (vlax-ename->vla-object e))
(+ (vla-get-rotation o) ang)
)
)
)
-1
)
)
(princ)
)
这将忽略UCS,只使用WCS中的两点。
我也是这么想的。但你的要好得多。
我们正在为你挑选大脑李麦克。。。一种奇妙的学习方式
非常感谢你 不客气pBe
页:
[1]
2