感激过去 发表于 2014-2-20 09:39:14

求批量旋转图块

平面内有很多很多块,无论相同、不相同,需要可以框选后批量同时旋转X度角。旋转点是各个图块的基点。请帮忙,谢谢···

感激过去 发表于 2014-2-20 10:11:30

llsheng_73 发表于 2014-2-20 09:52 static/image/common/back.gif


不能使用呢,请问测试过吗?

yangchao2005090 发表于 2018-7-25 11:07:38

edata 发表于 2014-2-20 14:15


您好,请问如果设置为默认旋转180度改怎么改呀,也就是箭头掉个头

e54wsj 发表于 2018-2-21 16:38:54

懂得人,程式就是厲害

llsheng_73 发表于 2014-2-20 09:52:52

(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)))))

菜卷鱼 发表于 2014-2-20 12:18:55

(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:24:14

菜卷鱼 发表于 2014-2-20 12:18 static/image/common/back.gif


感谢菜卷鱼,测试满足需求,谢谢!

也感谢 llsheng_73 只是对有的块能满足,对个别块旋转的角度不准确,或许是我的块的问题

香田里浪人 发表于 2014-2-20 14:02:14

菜卷鱼,测试满足需求.

edata 发表于 2014-2-20 14:15:37

(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)
)

感激过去 发表于 2014-2-20 15:21:24

edata 发表于 2014-2-20 14:15 static/image/common/back.gif


感谢edata!代码也一样好用,还带了个整体归0度的功能,更上一筹··

千指魔王 发表于 2014-4-20 09:12:12

edata 发表于 2014-2-20 14:15 static/image/common/back.gif


这个只能旋转块,要是能同时旋转文字就更完美了

香田里浪人 发表于 2014-4-20 16:48:50

千指魔王 发表于 2014-4-20 09:12 static/image/common/back.gif
这个只能旋转块,要是能同时旋转文字就更完美了

很简单,把(setq s(ssget'((0 . "INSERT"))))
里的"INSERT"改为"INSERT,text"即可。
页: [1] 2 3
查看完整版本: 求批量旋转图块