明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 7650|回复: 68

好函数不敢独享,73哥的判断矩形

  [复制链接]
发表于 2022-11-22 21:59:30 | 显示全部楼层 |阅读模式
本帖最后由 jun353835273 于 2022-11-23 10:16 编辑
  1. ;llsheng_73哥的代码贴上来,方便搜索
  2. (defun isrectang(e / p1 p2 p3 p4)
  3.   (and(=(vlax-curve-getendparam e)4)
  4.       (vl-every(function(lambda(x y)(set x(vlax-curve-getpointatparam e y))))'(p1 p2 p3 p4)'(0 1 2 3))
  5.       (equal(distance p1 p2)(distance p3 p4)1e-5)
  6.       (equal(distance p1 p4)(distance p2 p3)1e-5)
  7.       (equal(distance p1 p3)(distance p2 p4)1e-5))
  8.   )


还有哦
;;判断矩形
(defun isrectang(e / p1 p2 p3 p4);;;(二维、三维、一般)多段线图元或图元对象或点表是否为矩形
  (and(or(and(listp e)(listp(car p))(=(length e)4)(vl-every(function set)'(p1 p2 p3 p4)e))
         (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))
  )
发表于 2022-11-23 09:42:00 | 显示全部楼层
  • ;多义线是否矩形-----(一级)-------
  • (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
  •   )
  • )

发表于 2023-1-17 10:11:19 | 显示全部楼层
杀猪杀屁股,另外一种搞定方法,请举证推翻。
  1. (and
  2.         (setq curve(car(entsel "\n选择对象:")))
  3.         (= (vlax-curve-getEndParam curve) 4)
  4.         (vlax-curve-isClosed curve)
  5.         (setq d1 (vlax-curve-getDistAtParam curve 1))
  6.         (setq d2 (- (vlax-curve-getDistAtParam curve 2) d1))
  7.         (equal (vlax-curve-getArea curve) (* d1 d2) 1e-6);判断矩形面积公式是否成立
  8. )
发表于 2022-12-6 14:33:05 | 显示全部楼层
gzxl 发表于 2022-11-30 11:08
对角线判断是不是矩形好些

当时帮楼主搞的,先判定它是不是刚好4个点,然后用对边相等,对角线相等进行判定的
发表于 2022-11-22 22:14:19 | 显示全部楼层
谢谢分享,看看什么宝贝
发表于 2022-11-22 22:37:59 | 显示全部楼层
看看什么好宝贝
发表于 2022-11-22 22:51:56 | 显示全部楼层
矩形四个点呀,四个直角.
发表于 2022-11-22 23:58:33 | 显示全部楼层
谢谢分享,看看什么宝贝
发表于 2022-11-23 04:46:42 | 显示全部楼层

看看什么好宝贝
发表于 2022-11-23 08:00:16 | 显示全部楼层
看看什么东西
发表于 2022-11-23 08:08:47 | 显示全部楼层
什么判断矩形啊
发表于 2022-11-23 08:13:12 | 显示全部楼层
谢谢大佬分享!看看什么好东西!
发表于 2022-11-23 08:16:12 | 显示全部楼层


看看什么好宝贝
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 05:55 , Processed in 0.177231 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表