求批量旋转图块
平面内有很多很多块,无论相同、不相同,需要可以框选后批量同时旋转X度角。旋转点是各个图块的基点。请帮忙,谢谢···llsheng_73 发表于 2014-2-20 09:52 static/image/common/back.gif
不能使用呢,请问测试过吗? edata 发表于 2014-2-20 14:15
您好,请问如果设置为默认旋转180度改怎么改呀,也就是箭头掉个头 懂得人,程式就是厲害
(setq x(getreal"要旋转的角度"))
(if(null x)(setq x 0))
(setq s(ssget'((0 . "INSERT"))))
(if s
(progn
(setq n(sslength s)m 0)
(while(< m n)
(setq e(entget(ssname s m))
m(1+ m))
(entmod(subst(cons 50 x)(assoc 50 e)e))))) (defun c:sro ( )
(princ "批量旋转块")
(setq ang(getreal "\n输入旋转角度:<90>"))
(if(= ang nil)(setq ang 90))
(setq ss(ssget '((0 . "INSERT"))))
(setq i 0)
(setvar 'cmdecho 0)
(command "_.undo" "be")
(repeat (sslength ss)
(setq ssn(ssname ss i))
(setq pt0(cdr(assoc 10(entget ssn))))
(setvar 'NOMUTT 1)
(command "_.ROTATE" ssn "" pt0 ang )
(setvar 'NOMUTT 0)
(setq i(1+ i))
)
(command "_.undo" "e")
(setvar 'cmdecho 1)
(prin1)
)
菜卷鱼 发表于 2014-2-20 12:18 static/image/common/back.gif
感谢菜卷鱼,测试满足需求,谢谢!
也感谢 llsheng_73 只是对有的块能满足,对个别块旋转的角度不准确,或许是我的块的问题 菜卷鱼,测试满足需求. (defun c:tt(/ x k s n m en r)
(vl-load-com)
(setq x(getangle"\n输入需要旋转的角度<归0>:"))
(if(null x)(setq x 0 k nil) (setq k t))
(setq s(ssget'((0 . "INSERT"))))
(if s
(progn
(setq n(sslength s)m 0)
(while(< m n)
(setq en(ssname s m)
m(1+ m))
(if k(setq r (+ (cdr(assoc 50 (entget en))) x))(setq r x))
(vla-put-Rotation (vlax-ename->vla-object en) r)
)))
(princ)
) edata 发表于 2014-2-20 14:15 static/image/common/back.gif
感谢edata!代码也一样好用,还带了个整体归0度的功能,更上一筹·· edata 发表于 2014-2-20 14:15 static/image/common/back.gif
这个只能旋转块,要是能同时旋转文字就更完美了 千指魔王 发表于 2014-4-20 09:12 static/image/common/back.gif
这个只能旋转块,要是能同时旋转文字就更完美了
很简单,把(setq s(ssget'((0 . "INSERT"))))
里的"INSERT"改为"INSERT,text"即可。