 - ; a way to find a closed polyline by point inside
- ;Lee Mac
- (defun polyfrominsidepoint (p / e i r s)
- (if
- (setq i -1
- s
- (ssget "_X"
- (list '(0 . "LWPOLYLINE")
- '(-4 . "&=")
- '(70 . 1)
- (if (= 1 (getvar 'cvport))
- (cons 410 (getvar 'ctab))
- '(410 . "Model")
- )
- )
- )
- )
- (while (and (null r) (setq e (ssname s (setq i (1+ i)))))
- (if (raycast p
- (mapcar 'cdr
- (vl-remove-if-not '(lambda (x) (= 10 (car x)))
- (entget e)
- )
- )
- )
- (setq r e)
- )
- )
- )
- r
- )
- (defun raycast (p l)
- (= 1
- (logand 1
- (length
- (vl-remove 'nil
- (mapcar
- '(lambda (a b)
- (inters p (mapcar '+ p '(1e8 0.0)) a b)
- )
- (cons (last l) l)
- l
- )
- )
- )
- )
- )
- )
- (defun c:SelPolylinebyPoint (/ e p)
- (if (setq p (getpoint "\nSpecify point: "))
- (if (setq e (polyfrominsidepoint p))
- (sssetfirst nil (ssadd e))
- (princ "\nNo polyline found.")
- )
- )
- (princ)
- )
大家看看,李麦克的用法,是什么讲究? |