Totlen é uma rotina autolisp que facilita a quantificação dos comprimentos de várias entidades como linhas curvas e polylines. Apenas não mede círculos fechados. A mais valia da rotina está no valor total que pode ser obtido seleccionando-se as diferentes entidadades em simultâneo. Por exemplo: Para medir guias de passeio. Basta uma boa utilização das layers e da rotina e tudo fica simples.
Totlen is an AutoLISP routine that facilitates the quantification of the lengths of various entities such as lines and polylines. Just do not measure closed circles. The added value of the routine is the total amount that can be obtained by selecting the different entidadades simultaneously. For example: To measure walking guides. Just a good use of layers and the routine and everything is simple.
Sorry for the poor translation, but is working at Google.
Download: Link
Código / Code:
;| TOTLEN.LSP c.2000 Rob Herr robherr@hotmail.com
'Add selected lines, plines, lwplines, splines, and arcs for total length'
Revisions:
1.0 Originally created 02/10/2000 Rob Herr
1.1 Added support for 4 Units 02/29/2000 Jeff Tippit
Arch, Deci-Arch, Engr, Deci-Engr
___________________________________________________________________
| PERMISSION HEREBY GRANTED BLA, BLA, BLA, TO MODIFY ETC. |
| As long as name and email remain with the original program |
| unaltered. However I would like to know of any bugs or problems |
| that arise with the actual program. And of course I take no |
| responsibility for lost limbs, auto repair bills, mechanical |
| or electronic difficulties, or snake venom. |
-------------------------------------------------------------------
------------------------------------------------------------------------
Modified by J. Tippit, SPAUG President
E-mail: cadpres@spaug.org
Web Site: http://www.spaug.org
------------------------------------------------------------------------
|;
(defun tlines ()
(setq lbeg (cdr (assoc '10 ent)))
(setq lend (cdr (assoc '11 ent)))
(setq llen (distance lbeg lend))
(setq tlen (+ tlen llen))
(ssdel sn ss1)
)
(defun tarcs ()
(setq cen (cdr (assoc '10 ent)))
(setq rad (cdr (assoc '40 ent)))
(setq dia (* rad 2.0))
(setq circ (* (* rad pi) 2.0))
(setq sang (cdr (assoc '50 ent)))
(setq eang (cdr (assoc '51 ent)))
(if (< eang sang)
(setq eang (+ eang (* pi 2.0)))
)
(setq tang (- eang sang))
(setq tang2 (* (/ tang pi) 180.0))
(setq circ2 (/ tang2 360.0))
(setq alen (* circ2 circ))
(setq tlen (+ tlen alen))
(princ)
(ssdel sn ss1)
)
(defun tplines ()
(command "area" "e" sn)
(setq tlen (+ tlen (getvar "perimeter")))
(ssdel sn ss1)
)
(defun tsplines ()
(command "area" "e" sn)
(setq tlen (+ tlen (getvar "perimeter")))
(ssdel sn ss1)
)
(DEFUN C:TOTLEN (/ tlen ss1 sn sn2 et)
(setq cmdecho (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq tlen 0)
(prompt "\nSelect only those entities you want for total length: ")
(setq ss1 (ssget))
(while (> (sslength ss1) 0)
(setq sn (ssname ss1 0))
(setq ent (entget sn))
(setq et (cdr (assoc '0 ent)))
(cond
((= et "LINE") (tlines))
((= et "ARC") (tarcs))
((= et "LWPOLYLINE") (tplines))
((= et "POLYLINE") (tplines))
((= et "SPLINE") (tsplines))
((or
(/= et "LINE")
(/= et "ARC")
(/= et "LWPOLYLINE")
(/= et "POLYLINE")
(/= et "SPLINE")
)
(ssdel sn ss1)
)
)
)
(alert
(strcat
"The Total Length of Selected Lines, Polylines, and Arcs is: "
"\n\n" "Arch\t->\t" (rtos tlen 4 6)
"\n\n" "Engr\t->\t" (rtos (/ tlen 12) 2 3) "'"
"\n\n" "Deci-Arch\t->\t" (rtos (* tlen 12) 4 6)
"\n\n" "Deci-Engr\t->\t" (rtos tlen 2 3)
)
)
(prompt
(strcat
"\nThe Total Length of Selected Lines, Polylines, and Arcs is: "
"\n" "Arch\t\t->\t" (rtos tlen 4 6)
"\t\t\t" "Engr\t\t->\t" (rtos (/ tlen 12) 2 3) "'"
"\n" "Deci-Arch\t->\t" (rtos (* tlen 12) 4 6)
"\t\t\t" "Deci-Engr\t->\t" (rtos tlen 2 3)
)
)
; (alert (strcat "\nThe Total Length of Selected Lines, Polylines, and Arcs is: " (rtos tlen 2 2)))
(setvar "cmdecho" cmdecho)
(princ)
)
(prompt "\nBy Rob Herr robherr@hotmail.com ")
(prompt "\nType TOTLEN to run.\tVersion 1.1 - Total Length routine ")
(princ)
