Second shot, a little faster (no Vlax...):
(defun C:ALE_ShLgPlSegments02 ( / SelSet EntNam EntDat Countr EntLst LenVal TmpLst)
(if (setq Countr 0 SelSet (ssget "_X" (list '(0 . "POLYLINE"))))
(progn
(setq TmpLst (list nil 1e308 nil -1.0))
(repeat (sslength SelSet)
(setq
EntNam (entnext (ssname SelSet Countr))
EntLst (list EntNam (entnext EntNam))
Countr (1+ Countr)
LenVal (distance
(cdr (assoc 10 (entget (car EntLst))))
(cdr (assoc 10 (entget (cadr EntLst))))
) )
(cond
( (> LenVal (cadddr TmpLst))
(setq TmpLst (list (car TmpLst) (cadr TmpLst) (car EntLst) LenVal))
)
( (< LenVal (cadr TmpLst))
(setq TmpLst (list (car EntLst) LenVal (caddr TmpLst) (cadddr TmpLst)))
)
)
(setq
EntLst (list (cadr EntLst) (entnext (cadr EntLst)))
EntDat (entget (cadr EntLst))
)
(while (= "VERTEX" (cdr (assoc 0 EntDat)))
(setq LenVal (distance (cdr (assoc 10 (entget (car EntLst)))) (cdr (assoc 10 EntDat))))
(cond
( (> LenVal (cadddr TmpLst))
(setq TmpLst (list (car TmpLst) (cadr TmpLst) (car EntLst) LenVal))
)
( (< LenVal (cadr TmpLst))
(setq TmpLst (list (car EntLst) LenVal (caddr TmpLst) (cadddr TmpLst)))
)
)
(setq
EntLst (list (cadr EntLst) (entnext (cadr EntLst)))
EntDat (entget (cadr EntLst))
)
)
)
)
)
TmpLst
)