Página 1 de 1

Contar longitud de polilineas

Publicado: Mié Nov 25, 2009 8:55 am
por RAFX
¿Hay alguna forma de saber la longitud total de un grupo de polilineas independientes?. Lo necesito para contabilizar metros de conductos o de tuberias. Ahora lo hago a pedal, junto todas las polilineas y me da la longitud total.
Gracias

Publicado: Mié Nov 25, 2009 9:33 am
por theolddeli
Hola
Existe un lisp que suma lineas, creo que funciona con polilineas tambien te lo voy a buscar y te digo algo.

Publicado: Mié Nov 25, 2009 10:03 am
por theolddeli
tengo la rutina que ya te comente
efectivamente te suma lineas y polilineas, te sustituye un texto con la longitus que deses y alguna tonteria mas.

Como quieres que te la pase

Publicado: Mié Nov 25, 2009 10:15 am
por theolddeli
he decidido colgartela aqui y tu te dreas el lisp, bueno tu y tod@s los que esten interesados.

Para crearte el lisp sigue estas fantasticas indicaciones

viewtopic.php?t=1914

el lisp es:

Código: Seleccionar todo

; Obtener la suma de las líneas o las polilíneas seleccionadas.

; Programa desarrollado por Mario Torres Pejerrey
; http://www.construcgeek.com/

;|Este es un lisp en formato original, se puede ver el código fuente, la intención, es de que el código fuente
; pueda ser modificado y adaptado a la necesidad de cada usuario, lo único que siempre se solicita en estos
; casos es de que siempre se haga referencia al autor del mismo (es decir que no se modifique la autoría del lisp),
; salvo que este se modifique ampliamente, si se construye un nuevo programa tomando como partes un lisp publicado,
; se debería de hacer el comentario de que parte del nuevo programa esta basado en el autor original.|;

; Programa descargado desde http://www.construcgeek.com/
; ConstrucGeek 2008

;Cargar las funciones ActiveX (Visual Lisp)
(vl-load-com)

(defun c:lpl()

;Variable para resumir la ruta de ubicacion en el registro de AX
  (setq Clave "HKEY_CURRENT_USER\\Software\\Construcgeek.com\\Longitud linea.Lsp\\")
  
;Verificamos el numero de decimales
  (setq numDecimalesDef (vl-registry-read (strcat Clave "Opciones") "Número de decimales"))
  (if (null numDecimalesDef)(setq numDecimalesDef 2)) ;Si no esta almacenado en el registro: Nro de decimales por defecto
  
  
  
(setq len 0)
(setq n 0)

(setq MSGDECIMALES (STRCAT "\nIngrese el número de decimales para las longitudes <ITOA>vla-object ename))
			    (setq	param (vlax-curve-getendParam oname))
			    (setq	lenHallada (vlax-curve-getDistAtParam oname param))
			    
			    (setq Len (+ len lenHallada))
			    (setq n(+ n 1))
			    
			)
	
			(if (/= len 0)
				(progn  
					(setq entSup (car (entsel "\nSeleccione el texto a reemplazar con la suma de las longitudes obtenidas o <Enter>: ")))
		
					(if (not (null entSup))
				  		(progn
				        	(setq entSupvla (vlax-ename->vla-object entsup))
							(setq texto (vla-get-TextString entSupvla))
			
							(setq cont 0)
					  
							(while
					  			(and (> (strlen texto) cont) (/= (substr texto (- (strlen texto) cont) 1) "=")  (<= (- cont 1) (strlen texto)))
					 	  		(setq cont (1+ cont))
					  		)
					  		  
							(setq TextoDescripcion (substr texto 1 (- (strlen texto) cont)))
							(if (= TextoDescripcion "")(setq TextoDescripcion "Longitud ="))
			
							(setq Longitud (strcat TextoDescripcion "" (rtos len 2 NUMDECIMALESDEF) " ml"))
			
				        	(vla-put...-TextString entSupvla Longitud)
						)
						(progn
				  			(princ (strcat "\nLongitud: " (rtos len 2 NUMDECIMALESDEF) " ml"))
				  			(princ)
						)
			     	)
			    )
			)
		)
	)
	(princ)

)

(setvar "modemacro" "http://www.construcgeek.com/")
el comando es lpl
si lo deseas se puede modificar

espero que te solucione tu problema

longitud polilineas

Publicado: Jue Nov 26, 2009 9:33 am
por RAFX
Buenos dias.
He estado intentando cargar el lisp que me enviaste siguiendo las instrucciones de Afga y todo bien, pero cuando tecleo lpl para ejecutar la orden, me dice que comando desconocido, no se que habré hecho mal.

Gracias

Publicado: Jue Nov 26, 2009 9:51 am
por theolddeli
Has cargado la aplicacion en el cad???

longitud polilineas

Publicado: Jue Nov 26, 2009 10:53 am
por RAFX
Si la he cargado pero he observado que en la lista de aplicaciones cargadas aparece en gris en lugar de en negro.

Publicado: Jue Nov 26, 2009 11:35 am
por theolddeli
Te vuelvo a colgar el texto del lsp
; Obtener la suma de las líneas o las polilíneas seleccionadas.

; Programa desarrollado por Mario Torres Pejerrey
; http://www.construcgeek.com/

;|Este es un lisp en formato original, se puede ver el código fuente, la intención, es de que el código fuente
; pueda ser modificado y adaptado a la necesidad de cada usuario, lo único que siempre se solicita en estos
; casos es de que siempre se haga referencia al autor del mismo (es decir que no se modifique la autoría del lisp),
; salvo que este se modifique ampliamente, si se construye un nuevo programa tomando como partes un lisp publicado,
; se debería de hacer el comentario de que parte del nuevo programa esta basado en el autor original.|;

; Programa descargado desde http://www.construcgeek.com/
; ConstrucGeek 2008

;Cargar las funciones ActiveX (Visual Lisp)
(vl-load-com)

(defun c:lpl()

;Variable para resumir la ruta de ubicacion en el registro de AX
(setq Clave "HKEY_CURRENT_USER\\Software\\Construcgeek.com\\Longitud linea.Lsp\\")

;Verificamos el numero de decimales
(setq numDecimalesDef (vl-registry-read (strcat Clave "Opciones") "Número de decimales"))
(if (null numDecimalesDef)(setq numDecimalesDef 2)) ;Si no esta almacenado en el registro: Nro de decimales por defecto



(setq len 0)
(setq n 0)

(setq MSGDECIMALES (STRCAT "\nIngrese el número de decimales para las longitudes <ITOA>vla-object ename))
(setq param (vlax-curve-getendParam oname))
(setq lenHallada (vlax-curve-getDistAtParam oname param))

(setq Len (+ len lenHallada))
(setq n(+ n 1))

)

(if (/= len 0)
(progn
(setq entSup (car (entsel "\nSeleccione el texto a reemplazar con la suma de las longitudes obtenidas o <Enter>: ")))

(if (not (null entSup))
(progn
(setq entSupvla (vlax-ename->vla-object entsup))
(setq texto (vla-get-TextString entSupvla))

(setq cont 0)

(while
(and (> (strlen texto) cont) (/= (substr texto (- (strlen texto) cont) 1) "=") (<= (- cont 1) (strlen texto)))
(setq cont (1+ cont))
)

(setq TextoDescripcion (substr texto 1 (- (strlen texto) cont)))
(if (= TextoDescripcion "")(setq TextoDescripcion "Longitud ="))

(setq Longitud (strcat TextoDescripcion "" (rtos len 2 NUMDECIMALESDEF) " ml"))

(vla-put...-TextString entSupvla Longitud)
)
(progn
(princ (strcat "\nLongitud: " (rtos len 2 NUMDECIMALESDEF) " ml"))
(princ)
)
)
)
)
)
)
(princ)

)

(setvar "modemacro" "http://www.construcgeek.com/")
Espero que soluciones el problema

LONGITUD POLILINEAS

Publicado: Jue Nov 26, 2009 12:54 pm
por RAFX
Siento volver a molestarte pero sigo igual

Publicado: Vie Nov 27, 2009 8:22 am
por theolddeli
En la pagina: http://es.bibliocad.com/biblioteca/dibu ... ndex1.html
es de donde me lo descargue, solo tienes que registrarte para descargartela.

Espero solucionar el problema

Publicado: Vie Nov 27, 2009 10:11 am
por theolddeli
En esta otra pagina tambien existen bastantes aplicaciones y entre ellas la que buscas.

http://www.construcgeek.com

Publicado: Vie Nov 27, 2009 5:18 pm
por Difrab
Hola RAFX, te sale errores en la carga del lisp, porque parece que como se pasa de web en web, el lisp se a manipulado y ya no esta como originalmente lo crearon, por eso lo mejor es que lo bajes de la fuente original.

La dirección es ésta:

http://www.construcgeek.com/recursos/ru ... eccionadas

Además ahí te dicen como se debe de utilizar el lisp, además si te queda alguna duda puedes hacer las preguntas que quieras en sus foros.

Suerte!

LONGITUD POLILINEAS

Publicado: Mié Dic 09, 2009 12:06 pm
por RAFX
Antes de nada disculparme por la tardanza encontestar, pero hemos tenido dos entregas y ya sabeis lo que pasa.
He hecho lo que me dijiste en tu ultimo correo y efectivamente ha funcionado.
Muchas gracias.
Un saludo.