swamii 发表于 2022-5-28 18:42:21

请问下,要获取一个矩形的四个坐标点应该用那个函数呢

请问下,要获取一个矩形的四个坐标点应该用那个函数呢?

uualice2020 发表于 2022-5-28 22:16:23

(mapcar 'cdr (vl-remove-if (function (lambda (e) (/= 10 (car e)))) (entget ent)))

tigcat 发表于 2022-5-28 18:47:14

搜关键词"顶点"

hhh454 发表于 2022-5-29 18:44:24

;方法一
;;多选后取得组合对象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))
)
)

guankuiwu 发表于 2022-5-31 20:22:40

uualice2020 发表于 2022-5-28 22:16
(mapcar 'cdr (vl-remove-if (function (lambda (e) (/= 10 (car e)))) (entget ent)))

很好!很方便!

NewBug 发表于 2022-6-12 23:41:36

图面上的多段线矩形,顶点数有可能多余4个....
页: [1]
查看完整版本: 请问下,要获取一个矩形的四个坐标点应该用那个函数呢