判断点在多段线内或外的函数
论坛搜了一圈,有个程序,但是不太完美,凸点多的时候不准
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=177252&highlight=%B6%E0%B6%CE%CF%DF%2B%C4%DA
后来想了下,创个临时点,直接圈选,有则内,无则外,感觉还是挺OK的,函数如下
如果再多加点东西,好像还可以整区分在多段线上/内/外?
;判断点在多段线内外,内返回T,外返回nil
;(PtInorOut (car(entsel)) (getpoint))
(defun PtInorOut (en pt / pts c ss)
(setq pts (mapcar 'cdr (vl-remove-if-not (FUNCTION (LAMBDA (x) (= 10 (car x)))) (entget en))))
(entmake (list '(0 . "POINT") (cons 10 pt)(cons 62 200)));定义个特定的颜色
(setq enpt (entlast))
(setq ss (ssget "WP" pts '((0 . "POINT") (62 . 200))))
(entdel enpt)
(if ss
T
nil
)
)
https://www.cnblogs.com/JJBox/p/14062009.html
只需要把我博客的转为Lisp(嫌麻烦就敲C#呀,还有IFox类库做好了) 在屏幕外咋办 是加zoom 还是用那个在屏幕外也可以选的ssget 点与多段线外一点的直线,与多段线的交点数。单数在内,双数在外。注意交点是切点或顶的的情况。可以验算几遍。 本帖最后由 gzcsun 于 2024-10-23 15:33 编辑
vitalgg 发表于 2024-10-22 19:24
点与多段线外一点的直线,与多段线的交点数。单数在内,双数在外。注意交点是切点或顶的的情况。可以验算几 ...
验算几遍全部不一样时怎算? gzcsun 发表于 2024-10-23 15:27
验算几遍全部不一样时怎算?
如果交点不在封闭曲线的顶点或切点上,就是准的。 http://bbs.mjtd.com/thread-189790-1-1.html
页:
[1]