自贡黄明儒 发表于 2013-11-5 21:24:07

[功能] 点在多边形,圆,椭圆内返回T;线上0;外nil(offset法)


;;164.41.1 [功能] 点在多边形,圆,椭圆内返回T;线上0;外nil
;;By 自贡黄明儒(offset法)
;;(defun C:w1 ()(PtInorOut3 (car (entsel)) (getpoint)))
;;对于带凸度的多段线,不明确
(defun PtInorOut3 (en p / D1 D2 ENAME P2 PP)
(setq pp (vlax-curve-getclosestpointto en (trans p 1 0)))
(if (equal pp p 0.00001)
    0
    (progn
      (setq d1 (distance p pp))
      (vla-offset (vlax-ename->vla-object en) -0.00001)
      (setq p2 (vlax-curve-getclosestpointto (entlast) (trans p 1 0)))
      (setq d2 (distance p p2))
      (entdel (entlast))
      ;;(setq ename (cdr (assoc 0 (entget (car (entsel))))))
      (setq ename (cdr (assoc 0 (entget en))))
      (cond ((wcmatch ename "CIRCLE,ELLIPSE")(> d1 d2))
            ((equal ename "LWPOLYLINE")(> d2 d1))
            (T (princ "不能判断")))
    )
)
)

阿霸jun 发表于 2013-11-5 21:55:26

赞一个!

yoyoho 发表于 2013-11-6 06:05:15

感谢 "自贡黄明儒" 分享程序!

emk 发表于 2013-11-6 08:06:42

这个函数有用,感谢黄兄

ynhh 发表于 2013-11-6 10:59:47

黄工的思想很先进,写程序很快又好

陈亚娣 发表于 2014-4-10 11:41:51

这个函数有用,感谢楼主!我测试了一下,好像如果是纯多段线没有曲线那种返回的值跟圆的值是反过来的~
测试纯多段线:点在线内返回nil,点在线外返回的是T,点在线上返回正常是0

434939575 发表于 2015-6-18 19:01:23

功能挺好的。

skg123 发表于 2016-5-16 09:59:57

黄大师,运行出现错误   选择对象: ; 错误: ActiveX 服务器返回错误: 未知名称: Offset
Offset 在函数里找不到
页: [1]
查看完整版本: [功能] 点在多边形,圆,椭圆内返回T;线上0;外nil(offset法)