- In AutoCAD 2011: Tips, Tricks, and Industry Secrets, Jeff Bartels shows AutoCAD users how to become more efficient power users, reducing the amount of time it takes to accomplish a task, increasing profit margins, and strengthening marketplace competitiveness.The course covers everything from shortcuts used in geometry creation, to program customization, to real world solutions to common problems.
- ADDLEN (full AutoCAD only) - the fastest way to get the total length, especially for larger number of line objects, or when adding lengths by layers - using the freeware LISP utility AddLen - see www.cadstudio.cz/download and the related tip 7005 (in AutoCAD LT with the add-on utillity LT Extension you can use a similar function 'Report lengths').
AutoCAD Field is a great tool for AutoCAD 2005 or later. Fields are a really nice addition that give you quick access to various types of information via TEXT, MTEXT or an Attribute.
You can calculate the length of a single AutoCAD object (Line, Circle, Polyline etc.) with AutoCAD Object Field. But you can’t calculate the length of multiple AutoCAD objects. AutoField provides an additional field to do it.
1. Use the Insert menu or right click to choose Insert ->Field.

2. Select “AF Objects Length” in the left panel of the Field dialog.
3. Select the objects (supports LINE, POLYLINE, CIRCLE, ARC) to calculate.
4. Click OK to insert the field to the drawing.
Here is a lisp that collects the lengths of lines or polylines on selected layers:
Upon issuing the command syntax LF (Length Field) at the AutoCAD command-line, the program first prompts the user to make a selection of objects for which to return the length summation. At this prompt, the user may select any number of Arcs, Circles, Lines, 2D Polylines (light or heavy), or 3D Polylines. Apr 30, 2015 Type ARX in command line, then Load and pick on GeomProps2006.arx if use Autocad 2006 or GeomProps2007.arx if use Autocad 2007-2009. This operation needs to be made once After that simply choose objects and in a window of properties look the area, volume, length Important!!!
;;; LENLYR.LSP a program to find the length of all
;;; entities on any selected layer
;;;
(defun err (s)
(if (= s 'Function cancelled')
(princ 'nLENLYR - cancelled: ')
(progn (princ 'nLENLYR - Error: ') (princ s)
(terpri))
); if
(resetting)
(princ 'SYSTEM VARIABLES have been resetn')
(princ)
); err
(defun setv (systvar newval)
(setq x (read (strcat systvar '1')))
(set x (getvar systvar))
(setvar systvar newval)
); setv
(defun setting ()
(setq oerr *error*)
(setq *error* err)
(setv 'CMDECHO' 0)
(setv 'BLIPMODE' 0)
); end of setting
(defun rsetv (systvar)
(setq x (read (strcat systvar '1')))
(setvar systvar (eval x))
); restv
(defun resetting ()
(rsetv 'CMDECHO')
(rsetv 'BLIPMODE')
(setq *error* oerr)
); end of resetting
(defun dxf (code ename)
(cdr (assoc code (entget ename)))
); dxf

(defun lenlyr ( / LayerList EntityList EntityLengths)
(setq LayerList (get-lyrs)
EntityList (get-ents LayerList)
EntityLengths (do-len EntityList)
) ; setq
(prin1 (read (rtos EntityLengths 2 2)))
); lenlyr
(defun get-lyrs ( / isent lyr-list ss i lname)
(setq isent nil lyr-list nil)
(prompt
'nSelect object(s) on required layer(s): ')
(setq ss nil)
(while (not ss)
(setq ss (ssget))
(if (not ss)
(prompt 'nNo entities were selected.')
); if
); while
(setq i (- 1))
(repeat (sslength ss)
(setq lname (dxf 8 (ssname ss (setq i (1+ i)))))
(if (not (member lname lyr-list))
(setq lyr-list (append lyr-list (list lname)))
); if
); repeat
lyr-list
); get-lyrs

(defun get-ents (LayerList / lstr lst lyr str
filtlist i ss ename elist)
(setq lstr (strcat (car LayerList) ','))
(setq lst (cdr LayerList))
(foreach lyr lst
(setq str (strcat lyr ',')
lstr (strcat lstr str)
); setq
); foreach
(setq lstr (substr lstr 1 (1- (strlen lstr))))
(setq filtlist (list
(cons 8 lstr)
'(-4 . '<or')
'(0 . 'LINE')
'(0 . 'ARC')
'(0 . 'CIRCLE')
'(0 . 'POLYLINE')
'(0 . 'LWPOLYLINE')
'(-4 . 'or>')
); list
); setq
(setq i (- 1) elist nil ss nil)
(setq ss (ssget 'X' filtlist))
(if ss
(progn
(repeat (sslength ss)
(setq ename (ssname ss (setq i (1+ i))))
(setq elist (append elist (list ename)))
); repeat
(princ (strcat 'nTotal length of all '
'entities on layer(s) ' lstr ': ')
); print
); progn
(progn
(alert (strcat 'No eligible entities on '
'layer(s) n' lstr 'naborting.'))
(exit)
); progn
); if
elist
); get-ents
(defun do-len (EntityList / TotalLength ent len)
(setq TotalLength 0 len 0)
(foreach ent EntityList
(setq len (ent-len ent))
(if len
(setq TotalLength (+ len TotalLength))
); if
); foreach
); do-len
(defun ent-len (en / elength)
(setq elength
(cond
((= (dxf 0 en ) 'LINE') (do-line en))
((= (dxf 0 en ) 'ARC') (do-arc en))
((= (dxf 0 en ) 'CIRCLE') (do-circle en))
((= (dxf 0 en ) 'POLYLINE') (do-pline en))
((= (dxf 0 en ) 'LWPOLYLINE') (do-lwpline en))
); cond
); setq
elength
); ent-len

(defun do-line (en / p10 p11 len)
(setq p10 (dxf 10 en)
p11 (dxf 11 en)
len (distance p10 p11)
); setq
len
); do-line
(defun do-arc (en / rad sang eang theta len)
(setq rad (dxf 40 en)
sang (dxf 50 en)
eang (dxf 51 en)
theta (- eang sang)
); setq
(if (minusp theta)
(setq theta (+ theta pi pi))
); if
(setq len (* rad theta))
); do-arc
(defun do-circle (en / rad len)
(setq rad (dxf 40 en)
len (* rad pi 2)
); setq
len
); do-circle
(defun do-pline (en / is-closed vlist vvlist len)
(setq is-closed (dxf 70 en))
(if (/= is-closed 100)
(progn
(setq en (entnext en))
(setq vlist nil
vvlist nil
); setq
(while (/= 'SEQEND' (dxf 0 en))
(setq vlist (dxf 10 en)
vlist (reverse vlist)
vlist (cdr vlist)
vlist (list (reverse vlist))
); setq
(setq vlist
(append vlist (list (dxf 42 en))))
(setq vvlist (append vvlist (list vlist)))
(setq en (entnext en))
); while
); progn
); if
(setq len (do-polylen vvlist is-closed))
); do-pline

(defun do-lwpline (en / num-vert is-closed elist
vlist vvlist len)
(setq num-vert (dxf 90 en)
is-closed (dxf 70 en)
elist (entget en)
elist (member (assoc 10 elist) elist)
vlist nil
vvlist nil
); setq
(repeat num-vert
(setq vlist (list (cdr (assoc 10 elist))))
(setq vlist
(append vlist (list (cdr (assoc 42 elist)))))
(setq vvlist (append vvlist (list vlist)))
(setq elist (cdr elist)
elist (member (assoc 10 elist) elist)
); setq
); repeat
(setq len (do-polylen vvlist is-closed))
); do-lwpline
(defun do-polylen (vvlist is-closed / closed seglen
plen first p10 p11 bulge)
(setq closed (logand is-closed 1)
seglen 0
plen 0
); setq
(if (= closed 1)
(progn
(setq first (car vvlist)
vvlist (append vvlist (list first))
); setq
); progn
); if
(repeat (1- (length vvlist))
(setq p10 (caar vvlist)
p11 (caadr vvlist)
bulge (cadar vvlist)
); setq
(setq seglen (do-seg p10 p11 bulge))
(setq plen (+ plen seglen))
(setq vvlist (cdr vvlist))
); repeat
plen
); do-polylen
(defun do-seg (p1 p2 bulg / seglen ang4 ang dis rad)
(if (= bulg 0.0)
(progn
(setq seglen (distance p1 p2))
); progn
(progn
(setq ang4 (atan bulg)
ang (* 4.0 ang4)
dis (distance p1 p2)
rad (/ (/ dis 2.0) (sin (/ ang 2.0)))
seglen (* rad ang)
); setq
); progn
); if
seglen
); do-seg
(defun c:lnl ()
(setting)
(lenlyr)
(resetting)
(princ)
); c:lnl
Autocad Sum Length Of Lines Worksheet
(prompt 'nEnter LNL to start')
Autocad Sum Length Of Lines Diagram
Edited by msplcdykee69 - 27.Aug.2009 at 22:54
Comments are closed.