(defun PL_plpick(msg la flag / ename entl en ent _ent More _la p1 p2 pp Vx vlist) (setq _ent nil More T ) (while More (if (not (zerop (logand flag 1))) (setq ent (nentsel msg)) (setq ent (entsel msg)) ) (if ent (progn (setq ename (car ent) pp (cadr ent) pp (osnap pp "_nea") entl (entget ename) en (LI_item 0 entl) ) (if (member en (list "POLYLINE" "LWPOLYLINE" "VERTEX")) (progn (setq _la (LI_item 8 entl)) (if (wcmatch _la la) (progn (if (= en "VERTEX") (setq p1 (LI_item 10 entl) p2 (LI_item 10 (entget (entnext ename))) ename (PL_SeekMain ename) vlist (PL_plist ename) Vx (GE_LocateVx pp vlist) _ent (list ename p1 p2 pp Vx vlist) ) (progn (setq vlist (PL_plist ename) Vx (GE_LocateVx pp vlist) ) (if Vx (setq _ent (list ename (nth (1- Vx) vlist) (nth Vx vlist) pp Vx vlist)) ) )) (setq More nil) ) (princ (strcat "\nPicked polyline is not on layer : " la)) ) ) (princ "\nPicked object is not a polyline.") ) ) (if (= flag 0) (setq More nil)) ) ) _ent )