多边形内部或外部的点
你好我需要知道一个点是在多段线的内部还是外部。非常感谢。Punto dentro o fuera de Polilina。图纸 我相信你说的是闭合多段线。一种解决方案是尝试使用该点调用边界命令,并检查图形中的最后一个图元。如果添加了新的多段线,则在基准多段线内拾取。 试试这个。。。。(defun c:Test (/ p1 p2 gr)
;;;;; Tharwat 28. June. 2012 ;;;;;
(if (and (setq p1 (getpoint "\n Specify point :"))
(setq p2 (getcorner p1 "\n Corner :"))
)
(while (eq (car (setq gr (grread t 15 1))) 5) (redraw)
(foreach n '((0.5 0.5 0.0) (-0.5 0.5 0.0)(-0.5 -0.5 0.0)(0.5 -0.5 0.0))
(grdraw
(cadr gr)
(mapcar '+ (mapcar (function (lambda (x) (* x (/ (getvar "VIEWSIZE") 25.))))
(trans n 1 0))
(cadr gr)
)
1
0
)
)
(if
(and
(< (car p1) (car (cadr gr)))
(> (car p2) (car (cadr gr)))
(> (cadr p1) (cadr (cadr gr)))
(< (cadr p2) (cadr (cadr gr)))
)
(princ "\n inside ...... ")
(princ "\n outside ..... ")
)
)
)
(redraw)
(princ)
)
您可以根据自己的代码对其进行调整:
(defun c:TestPick( / refEntity thePoint )
(setq refEntity (entlast))
(setq thePoint (getpoint "\nPick a point:"))
(command "_BOUNDARY" thePoint "")
(if (equal refEntity (entlast))
(prompt "\nPicked outside!")
(progn
(prompt "\nPicked inside!")
(entdel (entlast))
)
)
(princ)
) 谢谢你们俩。太棒了。谢谢 以下是我的方法:
;; Point Inside-p-Lee Mac
;; Utilises a ray-casting algorithm to determine whether a
;; given point (WCS) resides within a supplied object.
(defun LM:PointInside-p ( pt obj / lst ray )
(setq lst
(vlax-invoke
(setq ray
(vla-addray
(vla-objectidtoobject (vla-get-document obj) (vla-get-ownerid obj))
(vlax-3D-point pt)
(vlax-3D-point (mapcar '+ pt '(1.0 0.0 0.0)))
)
)
'intersectwith obj acextendnone
)
)
(vla-delete ray)
(= 1 (logand 1 (length lst)))
)
要测试:
(defun c:test ( / ent obj pnt )
(if (setq ent (car (entsel "\nSelect Polyline: ")))
(if (vlax-method-applicable-p (setq obj (vlax-ename->vla-object ent)) 'intersectwith)
(while (setq pnt (getpoint "\nPick Point: "))
(if (LM:PointInside-p (trans pnt 1 0) obj)
(alert "Point is INSIDE")
(alert "Point is OUTSIDE")
)
)
(princ "\nInvalid Object selected.")
)
)
(princ)
)
(vl-load-com) (princ)
对于投影光线平行于相交边缘的情况,可能需要进行更严格的测试。但上述内容足以满足大多数一般应用。
我喜欢它
谢谢分享。 我相信我已经回答了这个话题,是你robierzo。。。
http://www.cadtutor.net/forum/showthread.php?72815-指向另一个实体的内部或外部
M、 R。 李,太棒了。对我来说太复杂了。谢谢分享,塔瓦特,姆萨苏,李Mac。
不客气
页:
[1]
2