春江在线 发表于 2024-10-22 15:52:05

判断点在多段线内或外的函数


论坛搜了一圈,有个程序,但是不太完美,凸点多的时候不准
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
        )
)


你有种再说一遍 发表于 2024-10-22 16:13:48

https://www.cnblogs.com/JJBox/p/14062009.html
只需要把我博客的转为Lisp(嫌麻烦就敲C#呀,还有IFox类库做好了)

飞雪神光 发表于 2024-10-22 19:21:11

在屏幕外咋办 是加zoom 还是用那个在屏幕外也可以选的ssget

vitalgg 发表于 2024-10-22 19:24:08

点与多段线外一点的直线,与多段线的交点数。单数在内,双数在外。注意交点是切点或顶的的情况。可以验算几遍。

gzcsun 发表于 2024-10-23 15:27:59

本帖最后由 gzcsun 于 2024-10-23 15:33 编辑

vitalgg 发表于 2024-10-22 19:24
点与多段线外一点的直线,与多段线的交点数。单数在内,双数在外。注意交点是切点或顶的的情况。可以验算几 ...
验算几遍全部不一样时怎算?

vitalgg 发表于 2024-10-23 17:25:31

gzcsun 发表于 2024-10-23 15:27
验算几遍全部不一样时怎算?

如果交点不在封闭曲线的顶点或切点上,就是准的。

dtucad 发表于 2024-10-26 16:57:07

http://bbs.mjtd.com/thread-189790-1-1.html
页: [1]
查看完整版本: 判断点在多段线内或外的函数