Here's an upgrade for it 
Code:
;; ============ pLen.lsp ===============
;;
;; FUNCTION:
;; Will Display the Length of a
;; Line or Polyline upon selection.
;;
;; SYNTAX: pLen
;;
;; AUTHOR:
;; Copyright (c) 2009, Lee McDonnell
;; (Contact Lee Mac, CADTutor.net)
;;
;;
;; VERSION:
;; 1.0 ~ 30.06.2009
;;
;; ====================================
(defun c:pLen (/ *error* doc spc ent cObj tStr tSze
tBox wBse gr cPt pt cAng lAng)
(vl-load-com)
(defun *error* (msg)
(and tObj
(not
(vlax-erased-p tObj))
(vla-delete tObj))
(if
(not
(wcmatch
(strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
(princ
(strcat
"\n<< Error: " msg " >>")))
(princ))
(if
(eq 4
(logand 4
(cdr (assoc 70
(tblsearch "LAYER"
(getvar "CLAYER"))))))
(progn
(princ "\n<< Current Layer Locked >>") (exit)))
(setq doc (vla-get-ActiveDocument
(vlax-get-Acad-Object))
spc (if
(zerop
(vla-get-activespace doc))
(if (= (vla-get-mspace doc) :vlax-true)
(vla-get-modelspace doc)
(vla-get-paperspace doc))
(vla-get-modelspace doc)))
(while
(progn
(setq ent
(car (entsel "\nSelect Object: ")))
(cond
((eq 'ENAME (type ent))
(setq cObj (vlax-ename->vla-object ent))
(if (vlax-property-available-p cObj 'length)
(not
(print
(setq tStr
(vl-princ-to-string
(vla-get-length cObj)))))
(princ "\n** Invalid Object Selected **")))
(t (princ "\n** Nothing Selected **")))))
(or *Mac$Per* (setq *Mac$Per* (/ pi 2.)))
(or *Mac$tOff* (setq *Mac$tOff* 1.))
(or tSze (setq tSze (getvar "TEXTSIZE")))
(setq tBox (textbox
(list
(cons 1 (strcat tStr ".."))
(cons 40 tSze)
(cons 7 (getvar "TEXTSTYLE"))))
wBse (textbox
(list
(cons 1 ".")
(cons 40 tSze)
(cons 7 (getvar "TEXTSTYLE"))))
wBse (- (caadr wBse) (caar wBse)))
(vla-put-attachmentpoint
(setq tObj
(vla-addMText spc
(vlax-3D-point '(0 0 0))
(setq tWid (- (caadr tBox) (caar tBox))) tStr))
acAttachmentPointMiddleCenter)
(vla-put-Height tObj tSze)
(princ "\n<< Type [+] or [-] for offset, [P]er & [<] or [>] for MText Width >>")
;; Place Text
(while
(or
(and
(setq gr (grread t 15 0))
(eq (car gr) 5))
(and
(eq 2 (car gr))
(vl-position (cadr gr)
'(43 ; +
45 ; -
61 ; + (as =)
80 112 ; P/p
60 62 44 46)))) ; < > , .
(cond ((and (eq 5 (car gr)) (listp (setq cPt (cadr gr))))
(setq pt (vlax-curve-getClosestPointto cObj cPt)
cAng (angle pt cPt)
lAng (+ cAng *Mac$Per*))
(cond ((and (> lAng (/ pi 2)) (<= lAng pi))
(setq lAng (- lAng pi)))
((and (> lAng pi) (<= lAng (/ (* 3 pi) 2)))
(setq lAng (+ lAng pi))))
(vla-move tObj
(vla-get-InsertionPoint tObj)
(vlax-3D-point
(polar pt cAng (* tSze *Mac$tOff*))))
(vla-put-Rotation tObj lAng))
((eq 2 (car gr))
(cond ((vl-position (cadr gr) '(43 61))
(setq *Mac$tOff*
(+ (/ 1 10.) *Mac$tOff*)))
((eq (cadr gr) 45)
(setq *Mac$tOff*
(- *Mac$tOff* (/ 1 10.))))
((vl-position (cadr gr) '(80 112))
(setq *Mac$Per* (- (/ pi 2.) *Mac$Per*)))
((vl-position (cadr gr) '(60 44))
(if (> (- (vla-get-Width tObj) wBse) 0)
(vla-put-Width tObj
(- (vla-get-Width tObj) wBse))))
((vl-position (cadr gr) '(62 46))
(vla-put-Width tObj
(+ (vla-get-Width tObj) wBse)))))))
(princ))
(princ
(strcat "\nCurve Length by Lee McDonnell " (chr 169) " June 2009."
"\n Type \"PLEN\" to Invoke"))
(princ)
Bookmarks