[功能] 点在多边形,圆,椭圆内返回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 "不能判断")))
)
)
)
赞一个! 感谢 "自贡黄明儒" 分享程序!
这个函数有用,感谢黄兄 黄工的思想很先进,写程序很快又好 这个函数有用,感谢楼主!我测试了一下,好像如果是纯多段线没有曲线那种返回的值跟圆的值是反过来的~
测试纯多段线:点在线内返回nil,点在线外返回的是T,点在线上返回正常是0 功能挺好的。 黄大师,运行出现错误 选择对象: ; 错误: ActiveX 服务器返回错误: 未知名称: Offset
Offset 在函数里找不到
页:
[1]