lengxiaxi 发表于 2024-5-30 08:35:05

根据条件,批量旋转图块

本帖最后由 lengxiaxi 于 2024-5-30 11:21 编辑

批量选择图块,根据条件,判断是否执行当前图块旋转90度

条件为:如果当前图块x方向长度,大于Y方向长度,则以图块中心为基点,旋转90度;否则,保持原样;

框选多个图块,能批量执行;



满足条件的图块,以各自的中心点为基准,旋转90度;不满足条件的图块,不做处理;




xj6019 发表于 2024-5-30 08:35:06

start4444 发表于 2024-5-30 10:19
感觉一个示意图顶3000字作文

没事猜着玩呗


(defun c:NM(/ lst ss xj-en2pt)
        (defun xj-en2pt (e/ s)
                (if (and e (setq tp (type e))
                                        (atom e)
                                        (or (= tp 'vla-object)
                                                (and (= tp 'ename)(setq e (vlax-ename->vla-object e)))
                                        )
                                )
                        (progn
                                (vla-GetBoundingBox e 'a 'b)
                                (mapcar 'vlax-safearray->list (list a b))
                        )
                )
        )
        (if                
                (setq ss (ssget (list '(0 . "INSERT"))))       
                (mapcar
                        (function
                                (lambda(aa)
                                        (setq s(xj-en2pt aa))       
                                        (if(>(abs(-(car(car s))(car(cadr s))))(abs(-(cadr(car s))(cadr(cadr s)))))
                                                (vla-rotate (vlax-ename->vla-objectaa)(vlax-3d-point(Vlax-Get (Vlax-Ename->Vla-Object aa) 'InsertionPoint )) (* 0.5 pi))
                                        )
                                )
                        )
                        (vl-remove-if-not '(lambda(x)(= 'ENAME (type x))) (mapcar 'cadr (ssnamex ss)))
                )
        )       
        (princ)
)

start4444 发表于 2024-5-30 10:19:39

感觉一个示意图顶3000字作文

lengxiaxi 发表于 2024-5-30 11:24:24

本帖最后由 lengxiaxi 于 2024-5-30 11:26 编辑

xj6019 发表于 2024-5-30 10:57
没事猜着玩呗



感谢大佬回帖,效果优秀,很好用!
页: [1]
查看完整版本: 根据条件,批量旋转图块