Display full version of the post: MULTIPLE LINE LENGTHS SUMMATION

Ikenna
13.05.2016, 15:36

Halo Forum Members, good afternoon.  Please I need to know if there is a single command I can use to get the total summation of the lengths of different, separate lines. For example, if I have five separate lines measuring 5,10, 10, 5 and 3 meters each. My question now is: Is there a way I can select the five lines at once and issue a command and the AutoCAD application will simply give me the total lengths as 33 metres!Thanks.

John Connor
13.05.2016, 15:44
There are lisp routines that will give you the total length of a series of lines.  One of them is called TLEN.lsp and it is from Tee Square Graphics.  You can also look for Lee Mac's Total Length program; it's on his website.

John Connor2016-05-13 15:52:56

Kent Cooper
23.05.2016, 22:20
Here's another one.  Some Searching will probably find several others.

Ikenna
27.05.2016, 11:39

Thanks so much John. Let me check it out.

Ikenna
27.05.2016, 11:58

Thanks very much Kent. I just tried this method and it worked! But the issue is that it gives the summations in feet and inches. Secondly, it doesn't select arcs for summation.

John Connor
27.05.2016, 12:14
You should have tried Lee Mac's program.http://www.lee-mac.com/totallengthandarea.html

Ikenna
27.05.2016, 14:35

John, thanks very much. I tried it and it worked perfectly. Everything was calculated - lines and arcs!, and the summation was given in metres!! Thanks again.

Ikenna
27.05.2016, 14:53

Sorry, I meant 'summation was given in metric units'. Yes, I got it in millimetres.

John Connor
27.05.2016, 15:09
You're welcomed.  Glad to hear you found something that suits your needs.

Kent Cooper
27.05.2016, 16:51
[QUOTE=Ikenna]
... the issue is that it gives the summations in feet and inches. Secondly, it doesn't select arcs for summation. [/QUOTE]It's odd that the description at the linked page mentions Arcs, but in fact the routine isn't written to accept them.  You can change that to include them, and far more entity types, by changing this line:  (setq sset (ssget '((0 . "LINE,LWPOLYLINE")))to this:   (setq sset (ssget '((0 . "LINE,*POLYLINE,ARC,CIRCLE,ELLIPSE,SPLINE"))) BUT since not all of those entity types have the same "length" VLA property [some have one but under a different name], you would also have to change this line:    (vla-get-length (vlax-ename->vla-object (ssname sset num))) to this:    (vlax-curve-getDistAtParam (setq ent (ssname sset num)) (vlax-curve-getEndParam ent)) which will find the length of any (vlax-curve-...)-compatible entity, open or closed. And you can have it report in whatever Units you like.  Change this:      llen (rtos llen 4)which reports in Architectural units [the 4] to just:      llen (rtos llen) if you want it to report in whatever your current Units and Precision settings are, or use other values for units and precision in the (rtos) function, to suit your requirements.[Also, I would change the (alert) to use a word like "object" instead of "line."]
Kent Cooper2016-05-27 16:52:32

jmontesmx
27.05.2016, 20:15

This can help you too, I ask the same thing some time agohttp://www.cadtom.com/Arquivo/AutoLISP/Sumper.zip

jmontesmx
27.05.2016, 20:18

;;; J.A.;;; www.jorgeanjos.com;;; www.cadtom.com;;; VER 1.0 - 2002-09-02;;; VER 2.0 - 2009-08-28;;; Begin Sumper.lsp - Application to calculate the length of selected objects(defun C:SUMPER (/   VADEC    VALLPRC  GLG      SSLEN    TPNAM   LGNAM   LGSTOTAL LGTOTAL  TERM     TXSTOTAL TXTOTAL   TESTE  )  (setq VADEC (getvar "cmdecho"))  (setvar "cmdecho" 0)  (command "undo" "begin")  (setq VALLPRC  (getvar "luprec") LGSTOTAL 0.0 TERM  0  )  (mlen)  (while (/= TERM nil)    (progn      (mlen)    )  )  (setq TXTOTAL (rtos LGSTOTAL 2 VALLPRC))  (princ "\n»» Total = ")  (princ TXTOTAL)  (command "undo" "end")  (setvar "cmdecho" VADEC));;;;;;(defun MLEN ()  (princ "\n»» Select entities to calculate the length: \n")  (terpri)  (setq GLG (ssget))  (if GLG    (progn      (setq SSLEN (sslength GLG))      (while (> SSLEN 0) (setq TPNAM  (ssname GLG (setq SSLEN (1- SSLEN)))       ENTGT  (entget TPNAM)       ENTLAY (cdr (assoc 0 ENTGT)) ) (if (equal ENTLAY "LINE")   (setq TESTE 1) ) (if (equal ENTLAY "POLYLINE")   (setq TESTE 1) ) (if (equal ENTLAY "LWPOLYLINE")   (setq TESTE 1) ) (if (equal ENTLAY "CIRCLE")   (setq TESTE 1) ) (if (equal ENTLAY "ARC")   (setq TESTE 1) ) (if (equal ENTLAY "SPLINE")   (setq TESTE 1) ) (if (equal ENTLAY "ELLIPSE")   (setq TESTE 1) ) (if (equal TESTE 1)   (progn     (command "lengthen" TPNAM "")     (setq LGTPNAM  (getvar "PERIMETER")    LGSTOTAL (+ LGTPNAM LGSTOTAL)    TESTE    0     )   ) )      )    )    (princ "\n»» No entity was selected: \n")  )  (setq TXSTOTAL (rtos LGSTOTAL 2 VALLPRC))  (initget "Add")  (princ "\n»» Subtotal = ")  (princ TXSTOTAL)  (terpri)  (setq TERM  (getkword " [A] Add more entities or <Enter> to finish:  ")  ))(princ "\n»» Type 'SUMPER' to start application ")     ; END Sumper.lsp

Vladimir Michl
28.05.2016, 11:48

See also AddLen:http://www.cadforum.cz/cadforum_en/total-length-of-lines-in-a-drawing-by-layer-tip7005