找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2348|回复: 10

[每日一码] API应用 判断PLINE是否构成矩形

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-18 21:33:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 st788796 于 2013-11-18 21:34 编辑

  1. (defun Polyline:IsRectang (e / box p1 p2 p3 p4)
  2.   (and (= (xdrx_getpropertyvalue e "IsA") "AcDbPolyline")
  3.        (not (xdrx_polyline_hasbulges e))
  4.        (> (xdrx_polyline_numverts e) 3)
  5.        (setq box (xdrx_geom_searchoutline e))
  6.        (= (length box) 5)
  7.        (mapcar 'set '(p1 p2 p3 p4) box)
  8.        (equal (distance p1 p3) (distance p2 p4) 1e-6)
  9.        (equal (xdrx_line_midp p1 p3) (xdrx_line_midp p2 p4) 1e-6)
  10.   )
  11. )

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-11-18 23:51:19 | 显示全部楼层
(> (xdrx_polyline_numverts e) 3)



要是考虑重复点段的话,先用 xdrx_polyline_compress 处理下,然后判断封闭的4个点,不封闭的5个点,长乘宽等于面积就行了吧。

点评

这样就简单了,函数太多搞晕了  详情 回复 发表于 2013-11-19 00:05
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-11-19 00:05:24 | 显示全部楼层
本帖最后由 st788796 于 2013-11-19 07:03 编辑

这样就简单了,函数太多搞晕了
  1. (defun Polyline:IsRectang (e / nums)
  2.   (and (= (xdrx_getpropertyvalue e "IsA") "AcDbPolyline")
  3.        (not (xdrx_polyline_hasbulges e))
  4.        (xdrx_polyline_compress e t)
  5.        (or (= (setq nums (xdrx_polyline_numverts e)) 4) (= nums 5))
  6.        (equal (car (xdrx_getarea e))
  7.               (* (apply 'distance (xdrx_polyline_getlinesegat e 0))
  8.                  (apply 'distance (xdrx_polyline_getlinesegat e 3))
  9.               )
  10.               1e-6
  11.        )
  12.   )
  13. )



点评

好像还应该完善下,对于不封闭的,第五点是否和第一点重合,要不不重合,你这个函数也是返回T的。或者你再判断下 最后一段和第一段乘是否等于面积,两边都相等才是矩形。  详情 回复 发表于 2013-11-19 01:13
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-11-19 01:13:29 | 显示全部楼层
st788796 发表于 2013-11-19 00:05
这样就简单了,函数太多搞晕了

好像还应该完善下,对于不封闭的,第五点是否和第一点重合,要不不重合,你这个函数也是返回T的。或者你再判断下 最后一段和第一段乘是否等于面积,两边都相等才是矩形。

点评

直接判断 0 4 段即可,已修改  详情 回复 发表于 2013-11-19 07:02
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-11-19 07:02:22 来自手机 | 显示全部楼层
newer 发表于 2013-11-19 01:13
好像还应该完善下,对于不封闭的,第五点是否和第一点重合,要不不重合,你这个函数也是返回T的。或者你 ...


直接判断 0 3 段即可,已修改

点评

去提交个通用函数吧,谢谢。  详情 回复 发表于 2013-11-19 08:40
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-11-19 08:40:35 | 显示全部楼层
st788796 发表于 2013-11-19 07:02
直接判断 0 3 段即可,已修改

去提交个通用函数吧,谢谢。

点评

正多边判断有意义吗?  详情 回复 发表于 2013-11-19 09:45
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-11-19 09:45:41 来自手机 | 显示全部楼层
本帖最后由 st788796 于 2013-11-19 09:48 编辑
XDSoft 发表于 2013-11-19 08:40
去提交个通用函数吧,谢谢。

再考虑增加正多边形判断
正多边判断有意义吗?

点评

也有需要。  详情 回复 发表于 2013-11-19 09:49
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-11-19 09:49:09 | 显示全部楼层
st788796 发表于 2013-11-19 09:45
再考虑增加正多边形判断
正多边判断有意义吗?

也有需要。

点评

可以再分出来点集矩形判断  详情 回复 发表于 2013-11-19 09:52
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-11-19 09:52:55 来自手机 | 显示全部楼层
XDSoft 发表于 2013-11-19 09:49
也有需要。


可以再分出来点集矩形,正多边形判断
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-11-19 10:15:22 来自手机 | 显示全部楼层
用searchoutline还可以判断组合线是否构成矩形,不限于单个polyline
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 7个

财富等级: 恭喜发财

发表于 2014-2-9 14:09:07 | 显示全部楼层
这个好,正需要这个功能
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-27 19:47 , Processed in 0.498402 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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