好函数不敢独享,73哥的判断矩形
本帖最后由 jun353835273 于 2022-11-23 10:16 编辑;llsheng_73哥的代码贴上来,方便搜索
(defun isrectang(e / p1 p2 p3 p4)
(and(=(vlax-curve-getendparam e)4)
(vl-every(function(lambda(x y)(set x(vlax-curve-getpointatparam e y))))'(p1 p2 p3 p4)'(0 1 2 3))
(equal(distance p1 p2)(distance p3 p4)1e-5)
(equal(distance p1 p4)(distance p2 p3)1e-5)
(equal(distance p1 p3)(distance p2 p4)1e-5))
)
**** Hidden Message *****
[*];多义线是否矩形-----(一级)-------
[*](defun fy-recp (e / lst p1 p2 p3 p4)
[*](if
[*] (and
[*] (= (type e) 'ENAME)
[*] (or (= "LWPOLYLINE" (dxf1 e 0)) (= "POLYLINE" (dxf1 e 0)))
[*] (= (dxf1 e 90) 4)
[*] (= (dxf1 e 70) 1)
[*] )
[*] (progn
[*] (setq lst (cdr (get-pl-pt e)))
[*] (setq p1 (car lst))
[*] (setq p2 (cadr lst))
[*] (setq p3 (caddr lst))
[*] (setq p4 (cadddr lst))
[*] (setq ang1 (angle p1 p2))
[*] (setq ang2 (angle p2 p3))
[*] (setq ang3 (angle p3 p4))
[*] (setq ang4 (angle p4 p1))
[*] (if (and
[*] (or (equal (abs (- ang1 ang2)) pi2 1e-8) (equal (abs (- ang1 ang2)) 3pi2 1e-8))
[*] (or (equal (abs (- ang2 ang3)) pi2 1e-8) (equal (abs (- ang2 ang3)) 3pi2 1e-8))
[*] (or (equal (abs (- ang3 ang4)) pi2 1e-8) (equal (abs (- ang3 ang4)) 3pi2 1e-8))
[*] )
[*] T
[*] nil
[*] )
[*] )
[*] nil
[*])
[*])
杀猪杀屁股,另外一种搞定方法,请举证推翻。
(and
(setq curve(car(entsel "\n选择对象:")))
(= (vlax-curve-getEndParam curve) 4)
(vlax-curve-isClosed curve)
(setq d1 (vlax-curve-getDistAtParam curve 1))
(setq d2 (- (vlax-curve-getDistAtParam curve 2) d1))
(equal (vlax-curve-getArea curve) (* d1 d2) 1e-6);判断矩形面积公式是否成立
) gzxl 发表于 2022-11-30 11:08
对角线判断是不是矩形好些
当时帮楼主搞的,先判定它是不是刚好4个点,然后用对边相等,对角线相等进行判定的 谢谢分享,看看什么宝贝 看看什么好宝贝
矩形四个点呀,四个直角. 谢谢分享,看看什么宝贝
看看什么好宝贝 看看什么东西 什么判断矩形啊 谢谢大佬分享!看看什么好东西!
看看什么好宝贝