|
byghbcx的 关于 点与封闭线的关系
(defun c:TT2 (/ EN pt pt1 en1 intpnt tmppnt ang k)
(if (and (setq en (car (entsel)))
(or (vlax-curve-isClosed en)
(progn(princ"\n曲线未封闭")nil)
)
(setq pt (getpoint"\n拾取点: "))
)
(progn
(setq pt1 (vlax-curve-getClosestPointTo en pt))
(command "_.line" pt pt1 "")
(setq en1 (entlast))
(setq INTPNT (vla-intersectwith (vlax-ename->vla-object en1) (vlax-ename->vla-object en) acextendThisEntity)
TMPPNT (vlax-variant-value INTPNT)
)
(cond ((safearray-value TMPPNT)
(setq TMPLST (vlax-safearray->list TMPPNT))
(repeat (/ (length TMPLST) 3)
(setq PNTLST (cons (list (car TMPLST) (cadr TMPLST) (caddr TMPLST)) PNTLST)
TMPLST (cdddr TMPLST)
)
)
(reverse PNTLST)
)
(t NIL)
)
(command "_.erase" en1 "")
(setq ang (angle pt pt1) k 1)
(mapcar '(lambda(x) (setq k (* k (if (equal (angle pt x) ang 0.0001) 1 -1)))) PNTLST)
(cond ((= k -1)(alert "点在曲线内"))
((= k 1)(alert "点在曲线外"))
)
)
)
)