找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1176|回复: 3

[求助] [求助]:怎样判断某点是否在某个多段线封闭范围内

[复制链接]
发表于 2006-9-5 17:01:20 | 显示全部楼层 |阅读模式

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

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

×
我想提取一个封闭多段线内注记的内容.请问高手怎样判断我的注记是否在我这个范围内?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 7234个

财富等级: 富甲天下

发表于 2006-9-5 19:03:46 | 显示全部楼层
http://www.bugman123.com/Programs/Functions.html

  1. ;Function to determine whether a point is inside a region.
  2. (defun inside (p plist / n vp1 p1 p2 thetasum theta)
  3.   (if (vl-some 'numberp plist)
  4.     (progn
  5.       (setq n  0
  6.             p1 (car plist)
  7.       )        ; intersection test vector, this code was adapted from: [url]http://www.autocode.com/lisp/inout.zip[/url]
  8.       (setq vp1        (pt (+ (car p) (* 3 (- (xmax plist) (xmin plist))))
  9.                     (cadr p)
  10.                 )
  11.       )        ; virtual point (assumes this point is outside)
  12.       (foreach p2 (cdr plist)
  13.         (if (numberp p2)
  14.           (setq theta p2)
  15.           (progn
  16.             (if        theta
  17.               (setq n (+ n (length (inters-arc p vp1 p1 p2 theta T))))
  18.               (if (inters p vp1 p1 p2)
  19.                 (setq n (1+ n))
  20.               )
  21.             )
  22.             (setq p1 p2
  23.                   theta        nil
  24.             )
  25.           )
  26.         )
  27.       )        ;f
  28.       (/= (rem n 2) 0)                        ; oneofeach
  29.     );p
  30.     (progn (setq thetasum 0
  31.                  theta2          (if plist
  32.                             (angle p (last plist))
  33.                           )
  34.            ) ; no buldges (faster)
  35.            (foreach p2 plist
  36.              (setq theta1 (angle p p2)
  37.                    theta  (- theta2 theta1)
  38.              )
  39.              (if (> (abs theta) pi)
  40.                (setq theta (+ theta
  41.                               (* (if (minusp theta)
  42.                                    -1
  43.                                    1
  44.                                  )
  45.                                  2pi
  46.                               )
  47.                            )
  48.                )
  49.              )
  50.              (setq thetasum (+ thetasum theta)
  51.                    theta2   theta1
  52.              )
  53.            )                                ;f
  54.            (/=~ thetasum 0)
  55.     )                                        ;p
  56.   )
  57. )                                        ;d



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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2006-9-5 22:25:02 | 显示全部楼层
多段线用点模拟出来-->pts
(ssget "wp" pts)
如果选到你的标记,说明在里面.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-6 08:03:38 | 显示全部楼层
斑竹:我用把多段线用点表pts存储,然后用(ssget "wp" pts) 当我的点表很复杂的时候选择集就nill不知怎么回事
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 11:43 , Processed in 0.401336 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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