lisp批量自身旋转,求大神修改
(defun C:ZR ()(setvar "cmdecho" 0) ;指令执行过程不响应
(princ "\n自身旋转")
(setq ss (ssget))
(repeat (setq i (sslength ss))
(setq i (1- i) a (vlax-ename->vla-object (ssname ss i)))
(vla-getboundingbox a 'minpt 'maxpt)
(mapcar 'set '(minpt maxpt) (mapcar 'vlax-safearray->list (list minpt maxpt)))
(setq p (mapcar '(lambda (x y) (/ (+ x y) 2.0)) minpt maxpt))
(command "_.rotate" ss "" p 90.0)
)
(princ)
)
(目前选择一个对象可以,批量就不行)
(defun C:ZR ()
(setvar "cmdecho" 0) ;指令执行过程不响应
(setq osm (getvar "osmode"))
(setvar "osmode" 0)
(princ "\n自身旋转")
(If (setq ss (ssget))
(repeat (setq i (sslength ss))
(setq i (1- i))
(setq ent (ssname ss i))
(vla-getboundingbox
(vlax-ename->vla-object ent)
'minpt
'maxpt
)
(mapcar 'set '(minpt maxpt) (mapcar 'vlax-safearray->list (list minpt maxpt)))
(setq p (mapcar '(lambda (x y) (/ (+ x y) 2.0)) minpt maxpt))
(command "_.rotate" ent "" p 90.0)
)
)
(setvar "osmode" osm)
(setvar "cmdecho" 1)
(princ)
) 本帖最后由 lee50310 于 2021-7-17 08:48 编辑
試試看:
(defun C:ZR ()
(setvar "cmdecho" 0) ;指令执行过程不回应
(princ "\n自身旋转")
(setq ss (ssget))
(setq sel(vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
(foreach x sel
(vla-getboundingbox (vlax-ename->vla-object x) 'minpt 'maxpt)
(mapcar 'set '(minpt maxpt) (mapcar 'vlax-safearray->list (list minpt maxpt)))
(setq p (mapcar '(lambda (x y) (/ (+ x y) 2.0)) minpt maxpt))
(command "_.rotate" x "" p 90.0)
);end_forecch
(princ)
)
command那句错了,不是SS而是A 刚好我也用到,感谢各位 (defun C:ZR ()
(vl-load-com)
(setq ss (ssget))
(setq sel (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
(foreach x sel
(vla-getboundingbox
(vlax-ename->vla-object x)
'minpt
'maxpt
)
(mapcar 'set
'(minpt maxpt)
(mapcar 'vlax-safearray->list (list minpt maxpt))
)
(setq p (mapcar '* '(0.5 0.5) (mapcar '+ minpt maxpt)))
(vla-Rotate (vlax-ename->vla-object x) (vlax-3D-point p)(* 0.5 pi))
)
(princ)
) 烟盒迷唇 发表于 2021-7-17 07:17
command那句错了,不是SS而是A
谢谢大佬指点 yshf 发表于 2021-7-17 08:13
(defun C:ZR ()
(setvar "cmdecho" 0) ;指令执行过程不响应
(setq osm (getvar "osmode"))
谢谢大佬指点 lee50310 发表于 2021-7-17 08:31
試試看:
谢谢,我试试看 kkq0305 发表于 2021-7-17 10:44
(defun C:ZR ()
(vl-load-com)
(setq ss (ssget))
感谢大神指点
页:
[1]
2