选择集的包围盒
返回选择集包围盒的左下点和右上点(defun ss::boundingbox (sel / idx llp ls1 ls2 obj urp) ; Lee mac
(repeat (setq idx (sslength sel))
(setq obj (vlax-ename->vla-object (ssname sel (setq idx (1- idx)))))
(if
(and
(vlax-method-applicable-p obj 'getboundingbox)
(not (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list obj 'llp 'urp))))
)
(setq ls1 (cons (vlax-safearray->list llp) ls1)
ls2 (cons (vlax-safearray->list urp) ls2)
)
)
)
(if (and ls1 ls2)
(mapcar '(lambda (a b) (apply 'mapcar (cons a b))) '(min max) (list ls1 ls2))
)
) 学习学习!!! 怎么个用法?{:1_12:} 学习了,感谢分享 本帖最后由 lee3737 于 2020-3-19 12:27 编辑
用法:
(defun c:test ()
(setq ss (ssget)) ;選擇一個或多個物件
(setq obj (ss::boundingbox ss))
(setq p1 (car obj)) ;取左下點
(setq p2 (cadr obj)) ;取右上點
(command "_rectang" p1 p2) ;畫出包圍框
)
感谢分享{:1_1:}
页:
[1]