En este grupo En todos

Foro de Autocad



SE PUEDEN SUMAR VARIAS LUNGITUDES DE LINEAS A LA VEZ

JUAN CARLOS
Pf2 bemen 3
Escrito por Juan Carlos Lozano Garcia
el 29/09/2008

Se que se pueden sumar varias areas a la vez, pero mi pregunta es si la sumas se pueden hacer tambien con las longitudes de varias lineas a la vez..

Me seria muy util para saber los metros lineales de tubo de  riego una obra , para las mediciones.

Hay muchas lineas cortas y las tengo que sumar manualmente.

Puedo convertilas en polilineas pero muchas se cruzan y tengo que sumar igualmente.

Gracias.

Manuel B Alonso
Desarrollo de proyectos urbanísticos y...
Escrito por Manuel B Alonso
el 29/09/2008

Hola Juankas. 

Con una rutina podemos conseguir lo que buscas.

Realiza las siguientes funciones:

SUMCAM, si quieres sumar distancias consecutivasmente entre puntos que se pediran en pantalla.
SUMCNC, que suma longitudes entre puntos consecutivos.
SUMARCO, que suma longitudes de arcos.
SUMLINEA, que suma longitudes de líneas.
SUMLP: Suma longitudes de lineas y/o polilineas.
SUMAREA: Suma areas y perimetros.
SUMLCA: Suma las longitudes de todas las lineas de la capa, seleccionando 1 sola.

Si te puede servir de ayuda deja una dirección de correo y te envío la rutina.

Un saludo. Manolo.


Manuel B Alonso
Desarrollo de proyectos urbanísticos y...
Escrito por Manuel B Alonso
el 29/09/2008
" Hola Juankas. 
Con una rutina podemos conseguir lo que buscas.
Realiza las siguientes funciones:
SUMCAM, si quieres sumar distancias consecutivasmente entre puntos que se pediran en pantalla.
SUMCNC, que suma longitudes entre puntos consecutivos.
SUMARCO, que suma longitudes de arcos.
SUMLINEA, que suma longitudes de líneas.
SUMLP: Suma longitudes de lineas y/o polilineas.
SUMAREA: Suma areas y perimetros.
SUMLCA: Suma las longitudes de todas las lineas de la capa, seleccionando 1 sola.
Si te puede servir de ayuda deja una dirección de correo y te envío la rutina.
Un saludo. Manolo.
 
"

por Manolo (Septiembre 2008)


Bueno, directamente te dejo aquí la de sumar líneas.

Copia lo siguiente a un archivo de texto y guárdalo con el nombre sumlp y con la extensión lsp.

(defun C:sumlp (/ p l e sxy exy sum1 sum2 sum3)
   (setq p  (ssget   (list (cons -4 "<or")
                              (cons 0 "LINE")
                              (cons 0 "LWPOLYLINE")
                              (cons -4 "<and")
                                 (cons 0 "POLYLINE")
                                 (cons -4 "<not")
                                    (cons -4 "&") (cons 70 (+ 16 32 64))
                                 (cons -4 "not>")
                              (cons -4 "and>")
                           (cons -4 "or>")
                     )
            )
         sum1 0.0
         sum2 0.0
         sum3 0.0
   )
   ;check for null selection set
   (if p
      (progn
         (setq l 0)
         (repeat (sslength p)
            (cond
               (= "LINE" (cdr (assoc 0 (setq e (entget (ssname p l))))))
                  (setq sxy (cdr (assoc 10 e))
                        exy (cdr (assoc 11 e))
                        sum1 (+ sum1 (distance sxy exy))
                  )
                  (terpri)
               )
               (= "LWPOLYLINE" (cdr (assoc 0 (entget (setq e (ssname p l))))))
                  (command "_. Area" "_E" e)
                  (setq sum2 (+ sum2 (getvar "perimeter")))
                  (terpri)
               )
               (= "POLYLINE" (cdr (assoc 0 (entget (setq e (ssname p l))))))
                  (command "_. Area" "_E" e)
                  (setq sum2 (+ sum2 (getvar "perimeter")))
                  (terpri)
               )
            )
            (setq l (1+ l))
         )
         (setq sum3 (+ sum1 sum2))
         (princ " La suma total de longitudes para lineas es: ")
         (princ (rtos sum1))
         (princ " La suma total de longitudes para polilineas es: ")
         (princ (rtos sum2))
         (princ " La suma total de longitudes para lineas y/o polilineas es: ")
         (princ (rtos sum3))
      )
      (princ " No has seleccionado ninguna linea o polilinea")
   )
   (princ)
)

Escrito por Juan Carlos Lozano Garcia
el 29/09/2008
"
" Hola Juankas. 
Con una rutina podemos conseguir lo que buscas.
Realiza las siguientes funciones:
SUMCAM, si quieres sumar distancias consecutivasmente entre puntos que se pediran en pantalla.
SUMCNC, que suma longitudes entre puntos consecutivos.
SUMARCO, que suma longitudes de arcos.
SUMLINEA, que suma longitudes de líneas.
SUMLP: Suma longitudes de lineas y/o polilineas.
SUMAREA: Suma areas y perimetros.
SUMLCA: Suma las longitudes de todas las lineas de la capa, seleccionando 1 sola.
Si te puede servir de ayuda deja una dirección de correo y te envío la rutina.
Un saludo. Manolo.
 
"

por Manolo (Septiembre 2008)

Bueno, directamente te dejo aquí la de sumar líneas.
Copia lo siguiente a un archivo de texto y guárdalo con el nombre sumlp y con la extensión lsp.
(defun C:sumlp (/ p l e sxy exy sum1 sum2 sum3)
   (setq p  (ssget   (list (cons -4 "<or")
                              (cons 0 "LINE")
                              (cons 0 "LWPOLYLINE")
                              (cons -4 "<and")
                                 (cons 0 "POLYLINE")
                                 (cons -4 "<not")
                                    (cons -4 "&") (cons 70 (+ 16 32 64))
                                 (cons -4 "not>")
                              (cons -4 "and>")
                           (cons -4 "or>")
                     )
            )
         sum1 0.0
         sum2 0.0
         sum3 0.0
   )
   ;check for null selection set
   (if p
      (progn
         (setq l 0)
         (repeat (sslength p)
            (cond
               (= "LINE" (cdr (assoc 0 (setq e (entget (ssname p l))))))
                  (setq sxy (cdr (assoc 10 e))
                        exy (cdr (assoc 11 e))
                        sum1 (+ sum1 (distance sxy exy))
                  )
                  (terpri)
               )
               (= "LWPOLYLINE" (cdr (assoc 0 (entget (setq e (ssname p l))))))
                  (command "_. Area" "_E" e)
                  (setq sum2 (+ sum2 (getvar "perimeter")))
                  (terpri)
               )
               (= "POLYLINE" (cdr (assoc 0 (entget (setq e (ssname p l))))))
                  (command "_. Area" "_E" e)
                  (setq sum2 (+ sum2 (getvar "perimeter")))
                  (terpri)
               )
            )
            (setq l (1+ l))
         )
         (setq sum3 (+ sum1 sum2))
         (princ " La suma total de longitudes para lineas es: ")
         (princ (rtos sum1))
         (princ " La suma total de longitudes para polilineas es: ")
         (princ (rtos sum2))
         (princ " La suma total de longitudes para lineas y/o polilineas es: ")
         (princ (rtos sum3))
      )
      (princ " No has seleccionado ninguna linea o polilinea")
   )
   (princ)
)
"

por Manolo (Septiembre 2008)


Muchas gracias Manolo.

Manuel B Alonso
Desarrollo de proyectos urbanísticos y...
Escrito por Manuel B Alonso
el 29/09/2008
"
"
" Hola Juankas. 
Con una rutina podemos conseguir lo que buscas.
Realiza las siguientes funciones:
SUMCAM, si quieres sumar distancias consecutivasmente entre puntos que se pediran en pantalla.
SUMCNC, que suma longitudes entre puntos consecutivos.
SUMARCO, que suma longitudes de arcos.
SUMLINEA, que suma longitudes de líneas.
SUMLP: Suma longitudes de lineas y/o polilineas.
SUMAREA: Suma areas y perimetros.
SUMLCA: Suma las longitudes de todas las lineas de la capa, seleccionando 1 sola.
Si te puede servir de ayuda deja una dirección de correo y te envío la rutina.
Un saludo. Manolo.
 
"

por Manolo (Septiembre 2008)

Bueno, directamente te dejo aquí la de sumar líneas.
Copia lo siguiente a un archivo de texto y guárdalo con el nombre sumlp y con la extensión lsp.
(defun C:sumlp (/ p l e sxy exy sum1 sum2 sum3)
   (setq p  (ssget   (list (cons -4 "<or")
                              (cons 0 "LINE")
                              (cons 0 "LWPOLYLINE")
                              (cons -4 "<and")
                                 (cons 0 "POLYLINE")
                                 (cons -4 "<not")
                                    (cons -4 "&") (cons 70 (+ 16 32 64))
                                 (cons -4 "not>")
                              (cons -4 "and>")
                           (cons -4 "or>")
                     )
            )
         sum1 0.0
         sum2 0.0
         sum3 0.0
   )
   ;check for null selection set
   (if p
      (progn
         (setq l 0)
         (repeat (sslength p)
            (cond
               (= "LINE" (cdr (assoc 0 (setq e (entget (ssname p l))))))
                  (setq sxy (cdr (assoc 10 e))
                        exy (cdr (assoc 11 e))
                        sum1 (+ sum1 (distance sxy exy))
                  )
                  (terpri)
               )
               (= "LWPOLYLINE" (cdr (assoc 0 (entget (setq e (ssname p l))))))
                  (command "_. Area" "_E" e)
                  (setq sum2 (+ sum2 (getvar "perimeter")))
                  (terpri)
               )
               (= "POLYLINE" (cdr (assoc 0 (entget (setq e (ssname p l))))))
                  (command "_. Area" "_E" e)
                  (setq sum2 (+ sum2 (getvar "perimeter")))
                  (terpri)
               )
            )
            (setq l (1+ l))
         )
         (setq sum3 (+ sum1 sum2))
         (princ " La suma total de longitudes para lineas es: ")
         (princ (rtos sum1))
         (princ " La suma total de longitudes para polilineas es: ")
         (princ (rtos sum2))
         (princ " La suma total de longitudes para lineas y/o polilineas es: ")
         (princ (rtos sum3))
      )
      (princ " No has seleccionado ninguna linea o polilinea")
   )
   (princ)
)
"

por Manolo (Septiembre 2008)


Muchas gracias Manolo.

"

por juankas (Septiembre 2008)


De nada Juankas. Encantado de que la rutina te sea útil.

Un saludo. Manolo.

Escrito por Hernan Cordoba
el 09/12/2008

Hola amigos, quisiera saber como sumo varias longitudes de lineas o polilineas en un dibujo de autocad, necesito sumar muchas distancias de una red de alcantarillado y de acueducto, tengo autocad en ingles

Nyugueros Yaco.2008
León, España
Escrito por Nyugueros Yaco.2008
el 21/04/2009
"
" Hola Juankas.
Con una rutina podemos conseguir lo que buscas.
Realiza las siguientes funciones:
SUMCAM, si quieres sumar distancias consecutivasmente entre puntos que se pediran en pantalla.
SUMCNC, que suma longitudes entre puntos consecutivos.
SUMARCO, que suma longitudes de arcos.
SUMLINEA, que suma longitudes de líneas.
SUMLP: Suma longitudes de lineas y/o polilineas.
SUMAREA: Suma areas y perimetros.
SUMLCA: Suma las longitudes de todas las lineas de la capa, seleccionando 1 sola.
Si te puede servir de ayuda deja una dirección de correo y te envío la rutina.
Un saludo. Manolo.

"

por Manolo (Septiembre 2008)

ME ENCANTARIA TENER ESTAS RUTINAS PUESTO QUE ESTOY HACIENDO MEDICIONES Y ME SERIAN MUY IMPORTANTES PARA AHORRARME TRABAJO Y TIEMPO, PODRIAS FACILITARMELAS MANOLO

MUCHAS GRACIAS

Manuel B Alonso
Desarrollo de proyectos urbanísticos y...
Escrito por Manuel B Alonso
el 21/04/2009
Hola Nyugeros.
Subo dos archivos. Renombra el fichero Mediciones. Txt por Mediciones. Lsp. En el otro fichero tienes los comandos.
Un saludo. Manolo.


Ficheros adjuntos:
Mediciones
Leyenda
Lucas Cristalli
Córdoba, Argentina
Escrito por Lucas Cristalli
el 15/07/2009

Cuando sumo las lineas, selecciono pero en ningun lado me da la suma de las medidas, adónde se ve la suma?

Manuel B Alonso
Desarrollo de proyectos urbanísticos y...
Escrito por Manuel B Alonso
el 16/07/2009
Hola Lucas, bienvenido al foro.
Los resultados se pueden observar en la línea de comandos. Para maximizarla, pulsa la tecla F2.
Un saludo. Manolo.
Vladimir Jimenez
Álava, España
Escrito por Vladimir Jimenez
el 18/02/2010

Hola Manolo, quisiera agradecerte por este tremendo aporte. Si que son excelentes aplicaciones.

Muchisimas gracias.

Manuel B Alonso
Desarrollo de proyectos urbanísticos y...
Escrito por Manuel B Alonso
el 18/02/2010

Hola Vladimir.


No hay de qué. Me alegra saber que te ha servido de ayuda. Gracias por tu comentario.


Un saludo. Manuel.

Alfredo Ururi
La Paz, Bolivia
Escrito por Alfredo Ururi
el 21/08/2010

Que tal manuel.. Gracias por las aportaciones que nos son de mucha utilidad para todos los del foro... Una pregunta maestro... Habra una rutina en la que vayas agarrando linea por linea y que en lña pantalla te vayan dando sus distancias y que al final del proceso te de la suma total?.. Si fuera asi me seria de mucha ayuda.. De antemano gracias

Alfredo Ururi
La Paz, Bolivia
Escrito por Alfredo Ururi
el 21/08/2010

Que tal manuel.. Gracias por las aportaciones que nos son de mucha utilidad para todos los del foro... Una pregunta maestro... Habra una rutina en la que vayas agarrando linea por linea y que en lña pantalla te vayan dando sus distancias y que al final del proceso te de la suma total?.. Si fuera asi me seria de mucha ayuda.. De antemano gracias

Manuel B Alonso
Desarrollo de proyectos urbanísticos y...
Escrito por Manuel B Alonso
el 23/08/2010

Hola Alfredo,


No me queda claro un aspecto de tu consulta. ¿El objetivo es hacer una suma correlativa o simplemente ver longitudes individuales y luego realizar la suma de ellas?


Si se trata del segundo caso, para obtener longitudes individuales siempre podemos recurrir a la paleta de propiedades. Seguidamente, usar la rutina comentada para obtener una suma de longitudes.


Por el contario, si tu objetivo es realizar una suma correlativa de longitudes, me temo que con la rutina anterior no alcanzaremos ese objetivo. Probablemente exista una rutina diseñada para tal fin, aunque no dispongo de ella.


Ya nos cuentas.


Un saludo


Manuel

Luis Munguia
Jalisco, México
Escrito por Luis Munguia
el 23/08/2010

Alfredo:


Para que te dé la distancia de cada línea, añádele este renglón a la rutina sumlp de Manuel en la sección donde calcula la distancia de las líneas:

(princ sxy) (princ exy) (princ (distance sxy exy))


La sección quedará así:

- - - - - - - - - - -

(= "LINE" (cdr (assoc 0 (setq e (entget (ssname p l))))) ;aquí sólo van cinco paréntesis
(setq sxy (cdr (assoc 10 e))
exy (cdr (assoc 11 e))
sum1 (+ sum1 (distance sxy exy))
)
(princ sxy) (princ exy) (princ (distance sxy exy)) ;éste es el renglón que hay que añadir
(terpri)

)

- - - - - - - - - - -

Va a escribir los puntos inicial y final de cada línea y su longitud.


Saludos.

Manuel B Alonso
Desarrollo de proyectos urbanísticos y...
Escrito por Manuel B Alonso
el 25/08/2010

Hola Luis,


En primer lugar, agradecerte el interés mostrado en el tema.


Comentar que he modificado la rutina según tus indicaciones, pero los resultados no son los esperados. Al igual que en la rutina inicial, el resultado aparece al realizar la selección de la totalidad de las líneas.


Un saludo


Manuel

Luis Munguia
Jalisco, México
Escrito por Luis Munguia
el 26/08/2010

Manuel:


Pensé que la intención era saber cuáles líneas se habían seleccionado y que no importaba el tiempo en que aparecieran, pero la siguiente rutina te muestra los resultados al seleccionar cada línea.


(defun C:LINSUM ( / tot obj ent pt1 pt2 dist )
(setq tot 0. 0 dis 0)
(SEL)
)
(defun SEL ()
(setq obj (entsel "Seleccione la línea"))
(princ "\n")
(if obj
(SUMADIS)
(princ)
)
(princ)
)
(defun SUMADIS ()
(setq ent (entget (car obj)))
(setq pt1 (cdr (assoc 10 ent)))
(setq pt2 (cdr (assoc 11 ent)))
(setq dist (distance pt1 pt2))
(princ "Longitud = ")(princ dist)(princ " ")
(setq tot (+ tot dist))
(princ " Suma = ")(princ tot)(princ "\n")
(SEL)
)


Saludos.

Manuel B Alonso
Desarrollo de proyectos urbanísticos y...
Escrito por Manuel B Alonso
el 28/08/2010

Hola nuevamente Luis,


La rutina que comentas, al ejecutarla en el programa, lanza un error al introducir el comando para iniciar la orden.


¿A qué puede deberse?


Un saludo


Manuel

Luis Munguia
Jalisco, México
Escrito por Luis Munguia
el 28/08/2010

Manuel:


En el segundo renglón de la rutina no debe haber espacio entre el punto decimal y el cero.

(setq tot 0. 0 dis 0)


El editor del foro lo incluye automáticamente.


¿Cómo colocas tú las rutinas para que no pase eso?


Saludos.