请问下,要获取一个矩形的四个坐标点应该用那个函数呢
请问下,要获取一个矩形的四个坐标点应该用那个函数呢?(mapcar 'cdr (vl-remove-if (function (lambda (e) (/= 10 (car e)))) (entget ent))) 搜关键词"顶点" ;方法一
;;多选后取得组合对象4个角点,选中矩形就是4个角点
;;;测试(4点 (ssget))
;;;(defun 4点 (/ x y lst)单个的
(defun 4点 (ngc_ss / x y lst)
;;;(vla-getboundingbox (vlax-ename->vla-object (car(entsel))) 'x 'y);单个选择图元名
(vla-getboundingbox (vlax-ename->vla-object ngc_ss) 'x 'y)
;;多个选择第几个图元名
(setq *左下 (vlax-safearray->list x)
*右上 (vlax-safearray->list y)
)
(setq *左上 (list (car *左下) (cadr *右上))
*右下 (list (car *右上) (cadr *左下))
)
(setq lst (list *左下 *右下 *右上 *左上))
;;;(entmake (append
;;; (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 90 (length lst)) '(70 . 1))
;;; (mapcar '(lambda (pt)(cons 10 pt)) lst ))
;;;)
(setq *宽度 (distance *左下 *右下)
*高度 (distance *左下 *左上)
)
(princ lst)
(princ)
)
;方法二
;;(取端点 (car (entsel)))
(defun 取端点 (en)
(mapcar 'cdr
(vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget en))
)
)
uualice2020 发表于 2022-5-28 22:16
(mapcar 'cdr (vl-remove-if (function (lambda (e) (/= 10 (car e)))) (entget ent)))
很好!很方便! 图面上的多段线矩形,顶点数有可能多余4个....
页:
[1]