Home > Foro de Autocad >

Debates de Autocad > Rutina o lisp para sumar longitudes

Rutina o lisp para sumar longitudes

Escrito por Roberto el 24/02/2008
Hola, quisiera saber si existe alguna rutina que sume las longitudes de las lineas que se señalen. Utilizo el AutoCad 2008 gracias

Citar  |  
Ver mensaje      

Fernando
Perú, Perú
Escrito por Fernando el 28/02/2008

Te envio un lisp ojala te sirva :

(defun suma-linpol   ()
  (initget "Capa Seleccion")
  (setq opt (getkword " Sumar por [Capa/Seleccion] <Seleccion>: "))

  (if (= opt nil)
    (setq opt "Seleccion")
  )

  (if (= opt "Seleccion")
    (progn
      (setq lineas (ssget))
      (setq polilineas lineas)
   (progn
     (setq   m-lin (sslength lineas)
      m     0
     )
     (setq objlin 0)
     (repeat m-lin
       (setq nombre (ssname lineas m))
       (if   (= "LINE" (cdr (assoc 0 (entget nombre))))
         (progn
      (setq p1 (cdr (assoc 10 (entget nombre)))
            p2 (cdr (assoc 11 (entget nombre)))
      )
      (setq distancia-l (distance p1 p2))
      (setq lst-distancia (cons distancia-l lst-distancia))
      (setq objlin (1+ objlin))
         )
       )
       (setq m (1+ m))
     )
     (setq lonlin-total (apply "+ lst-distancia))
   ) ;_progn
     
   (progn
     (setq   n-pol (sslength polilineas)
      n     0
     )
     (setq objpol 0)
     (repeat n-pol
       (setq nombre (ssname polilineas n))
       (if   (= "LWPOLYLINE" (cdr (assoc 0 (entget nombre))))
         (progn
      (command "_. Area" "_o" nombre)
      (setq lon (getvar "perimeter"))
      (setq longitud (cons lon longitud))
      (setq objpol (1+ objpol))
         )
       )
       (setq n (1+ n))
     )
     (setq lonpol-total (apply "+ longitud))
     (alert (strcat "("(rtos n-pol 2 0)")"
          "  Objetos seleccionados"
          " ______________________________   "
          "       "
          "("(rtos objlin 2 0)")"
          "  Líneas"
          " "
          (rtos lonlin-total 2 2)
          "  unid. "
          "       "
          "("(rtos objpol 2 0)")"
          "  Polilíneas"
          " "
          (rtos lonpol-total 2 2)
          "  unid. "
          " ______________________________   "
          " "
          "TOTAL  "
          "("(rtos (+ objlin objpol) 2 0)")"
          "  Líneas + Polilíneas"
          "       "
          (rtos (+ lonlin-total lonpol-total) 2 2)
          "  unid. "
          " "
       )
     )
   ) ;_progn
    ) ;_prong
    (progn
      (setq sel-capa
        (cdr
          (assoc 8
            (entget (car (entsel " Seleccione Objeto: ")))
          ) 
        )
      )
      (setq lineas
        (ssget "_x"
          (list "(0. "LINE") (cons 8 sel-capa))
        )
      )
      (if (/= lineas nil)
   (progn
     (setq   m-lin (sslength lineas)
      m     0
     )
     (setq objlin 0)
     (repeat m-lin
       (setq nombre (ssname lineas m))
       (if   (= "LINE" (cdr (assoc 0 (entget nombre))))
         (progn
      (setq p1 (cdr (assoc 10 (entget nombre)))
            p2 (cdr (assoc 11 (entget nombre)))
      )
      (setq distancia-l (distance p1 p2))
      (setq lst-distancia (cons distancia-l lst-distancia))
      (setq objlin (1+ objlin))
         )
       )
       (setq m (1+ m))
     )
     (setq lonlin-total (apply "+ lst-distancia))
   ) ;_progn
        (progn
     (setq lonlin-total 0)
          (setq objlin 0)
   )
      ) ;_if
    (progn
      (setq polilineas
        (ssget "_x"
          (list "(0. "LWPOLYLINE") (cons 8 sel-capa))
        )
      )
      (if (/= polilineas nil)
   (progn
     (setq   n-pol (sslength polilineas)
      n     0
     )
     (setq objpol 0)
     (repeat n-pol
       (setq nombre (ssname polilineas n))
       (if   (= "LWPOLYLINE" (cdr (assoc 0 (entget nombre))))
         (progn
      (command "_. Area" "_o" nombre)
      (setq lon (getvar "perimeter"))
      (setq longitud (cons lon longitud))
      (setq objpol (1+ objpol))
         )
       )
       (setq n (1+ n))
     )
     (setq lonpol-total (apply "+ longitud))

   ) ;_progn
        (progn
     (setq lonpol-total 0)
          (setq objpol 0)
   )
      ) ;_if
     (alert (strcat "Capa  "
          """
          sel-capa
          """
          " ______________________________   "
          "       "
          "("(rtos objlin 2 0)")"
          "  Líneas"
          " "
          (rtos lonlin-total 2 3)
          "  unid. "
          "       "
          "("(rtos objpol 2 0)")"
          "  Polilíneas"
          " "
          (rtos lonpol-total 2 3)
          "  unid. "
          " ______________________________   "
          " "
          "TOTAL  "
          "("(rtos (+ objlin objpol) 2 0)")"
          "  Líneas + Polilíneas"
          "       "
          (rtos (+ lonlin-total lonpol-total) 2 3)
          "  unid. "
          " "
       )
     )
      ) ;_progn
    ) ;_progn
  ) ;_if
)

(defun c:sulipo   (/      tipo      polilineas   lineas
       n-pol      n      m-lin      m
       nombre      lon      longitud   linpol
       lonlin-total   lonpol-total   p1      p2
       distancia-l   lst-distancia   opt      sel-capa
      )
  (setvar "cmdecho" 0)
  (suma-linpol)
  (setvar "cmdecho" 1)
  (prin1)
)

(prompt " *** nuevo comando SuLiPo definido. ***")
(prin1)



Copias esta rutina, lo pegas en un block de notas lo guardas con extencion "LSP"  es todo lo cargas al cad y listo es lo que nesecitas


Citar  |  
Ver mensaje     

Escrito por Julio Cesar Fernandez el 19/09/2008

Hola compañero podrias explicar como cargar las rutinas lisp gracias


Citar  |  
Ver mensaje     

Curro Aguiló
Madrid, España
Escrito por Curro Aguiló el 19/09/2008

Hola, Julio César


Tal como te indica Fernando, debes copiar los datos en un archivo de texto, salvarlo como SULIPO. TXT y después renombrarlo como SULIPO. LSP. Después usas el comando APPLOAD de AutoCAD, buscas el archivo y le das a CARGAR. Para usar la utilidad tan sólo has de teclear SULIPO.


Gracias Fernando por tu aporte. Un saludo


Curro


Citar  |  
Ver mensaje     

Escrito por Idi el 06/10/2008

Hola, he intentado probar esto y cuando pongo sulipo me dice comando sulipo desconocido, he probado con otros nombres y tampoco me va.

Necesito alguna forma de sumar todas las longitudes de los elementos de un dibujo pliiiiiis


Citar  |  
Ver mensaje     

Curro Aguiló
Madrid, España
Escrito por Curro Aguiló el 06/10/2008
"hola, he intentado probar esto y cuando pongo sulipo me dice comando sulipo desconocido, he probado con otros nombres y tampoco me va.
necesito alguna forma de sumar todas las longitudes de los elementos de un dibujo pliiiiiis
"

por (Octubre 2008)


Hola forero anónimo,


Danos alguna pista. ¿Se te cargó correctamente (apareció una confirmación en la línea de comandos justo después de cerrar el cuadro de diálogo de APPLOAD)?


Ya nos cuentas. Saludos


Curro



Citar  |  
Ver mensaje     

Escrito por Idi el 07/10/2008
mira, he guardado el texto de arriba como sulipo. Txt y luego lo cambio a sulipo. Lsp
voy al autocad (2007) y pongo appload, en la ventana que aparece seleccion sulipo. Slp y le doy a cargar. Cuando salgo, pone esto:

Comando: APPLOAD
sulipo. Lsp correctamente cargado(s).
Comando: ; error: error de sintaxis
Comando:
y luego pongo sulipo y me sale lo de comando desconocido

Citar  |  
Ver mensaje     

Escrito por A D R el 07/10/2008

Comando: _appload sulipo. LSP correctamente cargado(s).
Comando: ; error: error de sintaxis

Que hago mal , gracias


Citar  |  
Ver mensaje     

Curro Aguiló
Madrid, España
Escrito por Curro Aguiló el 09/10/2008

Hola ADR


Efectivamente parece que esta versión de SULIPO tiene algún error de sintaxis (le sobrará algún paréntesis) que no estoy dispuesto a buscar. Te adjunto el archivo SULIPO. TXT (que yo copié en algún otro post) que a mí sí que me funciona y al que debes cambiarle la extensión a LSP. Espero que así no tengas problema. Un saludo


Curro



Ficheros adjuntos:
sulipo

Citar  |  
Ver mensaje     

Escrito por Juankaz el 14/11/2008

Gracias amigos funciona el archivo sulipo. Txt, yo no sabía que podrían agregarse este tipo de complementos al autocad.

Ahora quisiera que me indiquen donde encuentro la descripción de estos comandos utilizados en el sulipo, formatos, y un editor de los mismos, etc para realizar mas aplicaciones en el autocad. Deseo aprender a programar en ese código. Y por cierto si no es mucho pedir donde encuentro más codigos o aplicaciones como el sulipo para autocad listos para usar. Gracias de antemano, ustedes son muy buenos en esto y yo deseoi conocer MAS.


Citar  |  
Ver mensaje     

Curro Aguiló
Madrid, España
Escrito por Curro Aguiló el 16/11/2008

Hola Juankaz,

En internet dispones de multitud de rutinas programadas en lenguaje LISP. SI te interesa aprender programación en este lenguaje también puedes encontrar cursos. Quizá te interese comprar un buen manual de programación LISP.

Un saludo

Curro


Citar  |  
Ver mensaje     

Escrito por Ruben el 27 de Mayo
Mis estimados amigos, a mi me funciono de maravillas, gracias, se los agradesco mucho..
Sulipo. Txt
Tamaño: 4442
Tipo: text/plain
"

por Curro (Octubre 2008)




Citar  |  
Ver mensaje     

Alberto
Madrid, España
Escrito por Alberto el 4 de Junio
Para utilizar la rutina sulipo la tengo que cargar cada vez que quiero utilizarla, hay forma de que al teclear el comando sulipo salga automaticamente
"
Mis estimados amigos, a mi me funciono de maravillas, gracias, se los agradesco mucho..
Sulipo. Txt
Tamaño: 4442
Tipo: text/plain
"

por Curro (Octubre 2008)




"

por Ruben (Mayo 2009)




Citar  |  
Ver mensaje     

Escrito por Raul el 23 de Julio

Una maravilla perfecto gracias por todo me inscribo en la pagina y ya a compartir informacion... Saludos a todos


Citar  |  
Ver mensaje     

Curro Aguiló
Madrid, España
Escrito por Curro Aguiló el 25 de Julio

Hola Raúl,

No hay de qué. Me alegro de haberte sido de ayuda. Un saludo

Curro


Citar  |  
Ver mensaje     

Ernesto Villalpando
Jalisco, México
Escrito por Ernesto Villalpando el 1 de Noviembre

Muchisimas gracias me ahorraste 2 dias de cuantificar lineas.


Citar  |  
Ver mensaje     


Responder


Quiero recibir alertas por email cuando haya mensajes nuevos en este debate

Al escribir en el debate:
  1. Repasa la ortografía y no escribas en formato SMS.
  2. Lee el texto dos veces antes de publicar.
  3. No escribas todo en mayúsculas o negritas.
 
Páginas internacionales: España  |  Italia  |  Francia  |  México  |  Alemania  |  Reino Unido  |  Argentina  |  Chile  |  Colombia  |  USA

Búsquedas frecuentes: conjuntivitis en bebes trancas y barrancas disfraz taquicardia sinusal definicion de deterioro ambiental no puedo acceder a mi router

Emagister cumple la Ley Orgánica 15/1999 de 13 de diciembre, de Protección de datos de Carácter Personal, y posee el código de inscripción nº 2002010053 del Registro General de la Agencia de Protección de Datos. Copyright © 1999/2000 - Grupo Intercom - Todos los derechos