distancias entre puntos?

Ver el tema anterior Ver el tema siguiente Ir abajo

distancias entre puntos?

Mensaje por bernie67 el Vie Abr 22, 2016 5:09 am

Buenos días  compañeros de foro

Tengo una duda y no se si alguien tiene alguna forma de hacerlo con una rutina. Debo realizar un cuadro con las distancias entre puntos remates de polilineas. La tabla se llena con las distancias a cada uno de los puntos entre si. Yo lo hago primero partiendo las polilineas hasta los vértices donde se desprende un ramal (uso una rutina para ello) a continuación ubico textos con valor xxxx sobre las polilineas, y con otra rutina listo las dimensiones y las pego en esos textos. Así ya tengo las distancias de las polilineas. Y con otra rutina sumo los valores y los pego en la tabla. Así como veréis se vuelve tedioso y largo. La tabla la trabajo en excel y en algunos casos se pueden usar formulas de sumar o restar.
Si alguien tiene o sabe de algún programa, le agradecería, pues siempre son como 200 puntos
https://www.dropbox.com/sh/f8ns40uinso30l7/AAAq0kWbvZo-KeDMEHU1g1vga?dl=0
Adjunto las rutinas y un ejemplo
Cordial saludo
Bernardo Corradine
avatar
bernie67

Mensajes : 53
Fecha de inscripción : 22/03/2016
Edad : 50
Localización : Bogota DC-Colombia

Ver perfil de usuario

Volver arriba Ir abajo

Re: distancias entre puntos?

Mensaje por nolo el Vie Abr 22, 2016 2:36 pm

Hola Bernardo, o parece muy difícil si cada ramal es una sola polilinea y no deriva, pero hace falta conocer mas sobre el estado previo:

- el ramal principal es siempre una polilinia entera de principio a fin ??
- los círculos y las letras de los pozos están ya dibujados y numerados ??
- no hay nunca polilineas curvas ??

Un saludo

nolo

Mensajes : 136
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: distancias entre puntos?

Mensaje por bernie67 el Vie Abr 22, 2016 4:05 pm

Hola Nolo:

Gracias por responder y aclarare las dudas que me planteas

-Todos los ramales son polilineas y si faltase algún tramo lo completaría y pegaría para hacerlo una sola polilinea (ajustar el dibujo para manejo fácil).
-Los círculos los haría yo, pues el plano es de pozos de exploración de petroleo y viene con su plataforma correspondiente. El circulo se haría en el contrapozo (punto de perforación). Los textos los coloco yo, ya que los pozos vienen identificados con un leader con su nombre y coordenadas geograficas
-No debería de haber polilineas curvas, ya que son los tracks de las vías y se hacen con gps y el programa los une punto a punto con polilinea recta
Voy a subir un dibujo de uno que ya realice y la manera en que lo maneje es la misma del ejemplo, solo que no use los círculos
https://www.dropbox.com/s/zj67jl5pip5nniq/real%20pozos.dwg?dl=0

Cordial saludo y me comentas que se te ocurre
Gracias
Bernardo
avatar
bernie67

Mensajes : 53
Fecha de inscripción : 22/03/2016
Edad : 50
Localización : Bogota DC-Colombia

Ver perfil de usuario

Volver arriba Ir abajo

Re: distancias entre puntos?

Mensaje por nolo el Sáb Abr 23, 2016 12:13 am

Bueno, la cosa no podía ser tan fácil como lo imaginaba.
Fundamentalmente porque el ramal principal no es único por lo que aparecen derivaciones sobre las derivaciones por lo que se concierte en un problema de topología de verdad, tipo cálculo de rutas gps.
Voy a ver si encuentro por ahí, alguna formula que se pueda aplicar aquí. Mientras mira los resultados de esta rutina y me explicas como sería la tabla con estos datos. Veo que si que hay curvas y que algunos puntos definidos con texto y bloque, no se conectan con ninguna polilinea.
Código:
(defun c:informe( / )
;; case -> lista de puntos bloques en cruz de los extremos
;; txtcase -> entidad, texto y midpoint del texto junto a cada bloque extremo
;; indice -> lista con los nombres
;obtener extremos con sus nombres
(setq case (ssget "a" (list (cons 2 "centro de distribución 2,COORDENADA RECU" )))
 case (vl-remove-if 'listp (mapcar 'cadr (ssnamex case)))
 case (mapcar '(lambda(a)(list (cdr (assoc 10 (entget a))) a)) case)
 txtcase (ssget "a" (list (cons 1 "CASE*,CSE*,RECU*,EST*,PAD*,FAU*" )))
 txtcase (vl-remove-if 'listp (mapcar 'cadr (ssnamex txtcase)))
 txtcase (mapcar '(lambda(a)(reverse(cons a
 (reverse(mapcar 'cdr (vl-remove-if-not '(lambda(c) (member(car c)'(1 11))) (entget a))))
 ))) txtcase)
 indice (acad_strlsort (mapcar 'car txtcase))
)
;; asociamos textos en los extremos con el centro de su bloque
;; txtcase - > lista entidad, texto y punto inserción bloque mas cercano
(setq txtcase (mapcar '(lambda(a / e p blos )
 (cons a(setq e (assoc a txtcase)
 p (cadr e)
 blos (mapcar '(lambda(c)(list (distance p (car c))(car c) ) )case)
 p (cdr (assoc (apply 'min (mapcar 'car blos)) blos))
 ))
 ) indice)
)
;; lista polilineas con punto principio, final y longitudes
(print (strcat (itoa (length
(setq pols (ssget "a" '((0 . "LWPOLYLINE")))
 pols (vl-remove-if 'listp (mapcar 'cadr (ssnamex pols)))
 pols (mapcar'(lambda(a) (setvar 'cmdecho 0)(command-s "_LENGTHEN" a "")(setvar 'cmdecho 1)
 (setq a (entget a)
 a (vl-remove-if '(lambda(c)(/= (car c) 10)) a)
 a (mapcar 'cdr a)
 a (list (car a)(last a) (getvar 'perimeter))
 )
 )pols)
)
))" polilineas encontradas"))
(princ "\nTotal Longitud ")
(princ (apply '+ (mapcar 'last pols)) )
(princ "\nNombre     Punto sobre anterior      Longitud 1er ramal")
;;; lista de puntos intersección de  cada derivación con su ramal anterior y distancia al origen
(setq pro (mapcar '(lambda(a / p pol )
 (cons (car a)
 (setq p (cadr a)
 pol (car(vl-remove-if-not '(lambda(c)(or (< (distance p (car c)) 10.)(< (distance p (cadr c)) 10.)))pols))
 p (if pol (append (vl-remove-if '(lambda(c)(< (distance p c) 10.))(cdr(reverse pol)))(list(last pol)) )
 "No conectado")
 ))
 ) txtcase)
)
(textscr)
(mapcar 'print pro)(princ)
)

Sólo he avanzado las distancias entre el último y penúltimo punto de cada terminal que si fuera de ramal principal único (como en el ejemplo de los círculos) estaría casi resuelto porque solo habría que sumarle los parciales sobre el ramal principal.
Al finalizar le pensaba añadirle vlisp para dibujar tablas de autocad y calcular las distancias ya que ahora las calculo con un command-s (solo válido para las versiones 2014-2016, en las anteriores se debe poner un command normal y corriente).

Te cuento lo que averigüe
Un saludo

nolo

Mensajes : 136
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: distancias entre puntos?

Mensaje por bernie67 el Sáb Abr 23, 2016 1:16 am

Hola Nolo
Antes que nada, muchísimas gracias por tu tiempo y disposición (algo que valoro por lo que significa para todos). Es una situación bastante compleja como lo mencionas, por la ramificación de las vías
Tienes razón, en este caso si que tenia curvas, no lo recordaba. Te comento que yo trabajo en autocad 2014, pero como siempre se pedía el archivo en autocad 2010. Intente correr la rutina como la tienes hasta el momento, pero no me corrió. Me parece que debo generar un bloque con el texto? Para efectos varios yo completaría todas las polilineas hasta el punto del pozo, de esa forma el texto y el bloque o figura, estaría efectivamente al final de cada polilinea. Si las curvas son problema bajaría arkitools y trataría de convertir en segmentos rectos.
Me cuentas como mas se podría tratar de usar el dibujo para obtener los datos
Nuevamente muy agradecido por tu interes en el tema y espero que se pueda sacar algo avante, si no me dare la pela jajajaja
Saludos
Bernardo Corradine
avatar
bernie67

Mensajes : 53
Fecha de inscripción : 22/03/2016
Edad : 50
Localización : Bogota DC-Colombia

Ver perfil de usuario

Volver arriba Ir abajo

Re: distancias entre puntos?

Mensaje por Admin el Dom Abr 24, 2016 1:59 am

Hola Bernie, yo haría que el bloque tenga uno o mas atributos, de tal modo que el texto sea un atributo, y que el bloque pertenezca a la polilinea que le corresponda

Admin
Admin

Mensajes : 164
Fecha de inscripción : 16/03/2016
Edad : 69
Localización : CORDOBA ARGENTINA

Ver perfil de usuario http://acadhispano.foroargentina.net

Volver arriba Ir abajo

Re: distancias entre puntos?

Mensaje por bernie67 el Dom Abr 24, 2016 2:49 am

Hola Gabriel, me puedes enviar un ejemplo para entender mejor
Saludos
Bernardo
avatar
bernie67

Mensajes : 53
Fecha de inscripción : 22/03/2016
Edad : 50
Localización : Bogota DC-Colombia

Ver perfil de usuario

Volver arriba Ir abajo

Re: distancias entre puntos?

Mensaje por Admin el Dom Abr 24, 2016 7:27 pm

Bernie , por favor detalla como recibes el DWG o como lo generas .
Segun dices son datos de un gps .
Te adjunto el mismo dwg con un nuevo bloque  

con bloque recu-nro

Admin
Admin

Mensajes : 164
Fecha de inscripción : 16/03/2016
Edad : 69
Localización : CORDOBA ARGENTINA

Ver perfil de usuario http://acadhispano.foroargentina.net

Volver arriba Ir abajo

Re: distancias entre puntos?

Mensaje por nolo el Mar Abr 26, 2016 12:24 am

Efectivamente es una simplificación importante tener unido desde el principio bloque y texto (la mitad de las líneas del lisp que adjunte se dedican solo a coordinar textos y bloques), pero lo verdaderamente importante es que cada bloque este realmente en el final de una polilinea y que esté fielmente seguido el criterio a la hora de partir las mismas (me ha estado volviendo loco el caso la poli del CASE0038 que no esta partida en la intersección).
Cómo dice Gabriel, sería importante ver el dibujo de partida para automatizar el proceso de poner los bloques y partir las polilineas. Poner distintos textos se puede hacer después editándolo, bien como atributo o bien como texto.

Un saludo

nolo

Mensajes : 136
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: distancias entre puntos?

Mensaje por bernie67 el Mar Abr 26, 2016 1:27 am

Pues la verdad el nuevo dibujo esta casi que virgen (no tiene los tracks de las vías). Me envían un poco de pozos y la vías. En este caso tendría que ir generando las polilineas que recorren la vía ( por el eje) y verificar que los pozos estén, o sino insertarlos desde un listado de excel, así como completar el tramo de vía desde el pozo hasta un vértice cercano a la vía existente. Esa es la parte que yo digo que es de pulir el dibujo.
Les agradecería si me regalan un correo personal y le remito el enlace al dropbox, pues la información es de propiedad de la empresa petrolera
avatar
bernie67

Mensajes : 53
Fecha de inscripción : 22/03/2016
Edad : 50
Localización : Bogota DC-Colombia

Ver perfil de usuario

Volver arriba Ir abajo

Re: distancias entre puntos?

Mensaje por nolo el Lun Mayo 23, 2016 5:20 pm

Hola Berni, me imagino que a estas alturas tendrás soliciando tu problema aunque sea a "manuela" pero he seguido trabajando en el tema (un reto que no me ha sido fácil) y aqui te dejo el resultado por si te sirve para comprobar
tabla_distancias_solucion_nolo.rar

No quise seguir por el camino de partir desde los datos de la Petrolera porque, aunque sería lo mejor para que el dibujo no tuviera errores, me pareció que era meterse donde no me llaman ya que creo que para la interpretación de los datos haría falta conocimientos de lo que busca la Empresa, conocimientos que seguro tu tienes y serían difíciles de compartir.

De todas formas, lo importante es seguir al pie de la letra unos criterios que luego puedan ser interpretados por la máquina y creo que salvo contados errores, tu ya tienes esos criterios:
   - Bloques para identificar los pozos y puntos desde los que contar las distancias (con textos asociados por cercanía o con atributos como dice el Maestro).
   - Tramos de polilineas 2d, rectos o curvos uniendo cada singularidad (desvíos o pozos)
   - Líneas que no suman distancias para identificar un pozo sobre la polilinea

Veras, en el rar, ademas del vlx (el lsp esta muy pero que muy guarreras) hay tres archivos dwg.
    real pozos_mal.dwg que corresponde a tu dibujo original señalando en amarillo errores del criterio.
    real pozos_1.dwg con la tabla resultado de aplicar el comando < calcula > del vlx adjunto
    real pozos_2.dwg el dibujo original con mi corrección de errores de criterio (hay polilineas de mas, restos de polilinea en cruces, cruces sin coincidencia en alguna polilineas, polilineas de desvío a pozo no divididas, etc y falta el  CASE0008 )

Ademas del comando < calcula >, lo he dotado de otro que se llama < prueba > y que te permite elegir un origen desde un desplegable y te va mostrando en amarillo los distintos caminos hasta el resto de pozos (o singularidades) a la vez que lista las distancias parciales por la pantalla de texto <F2> (si lo quieres en un archivo, acuérdate de las variables LOGFILEMODE, LOGFILENAME y del comando _COPYHIST)
Al ejecutar el comando <calcula>, lo primero que hace el lisp es comprobar si existen errores en el criterio y te los va señalando con un punto (he elegido la cruz - pdmode 3- para mostrarlos y el color amarillo que se ve muy bien sobre el negro de mi pantalla). Si son de asociación de textos, los ignora, pero si son en el trazado se para. Luego va creando una serie de listas-esquema grafos del árbol con los distintos orígenes y calculando las longitudes de cada polilinea para luego sumarlas (OJO solo suma longitudes si el tramo es POLILINEA LW, si es LÍNEA no).
OJO+OJO, cuando lleva unos cuantos orígenes, mi Autocad dice NO RESPONDING y parece colgado, pero cuando acaba, se recupera y dibuja la tabla en el punto que se especificó al principio.
He intentado arreglar esto incluyendo en un comando < calcula2 > una barra de avance en dcl siguiendo las enseñanzas de mi Maestro Gerardo (Lastima que no nos acompañe aquí) pero no me ha servido de nada, se sigue SEMI-COLGANDO mi autocad 2014. Si alguien tiene alguna idea de como arreglar eso POR FAVOR contarlo aquí. Lo he intentado con un command _delay (no en el dcl) y solo funciona si lo retardo mucho. También con un bucle while sobre los millisegundos pero nada,antes o después se semi-cuelga. Puedes probar tu también con < calcula2 > en vez de < Calcula > para comprobarlo.

La rutina solo esta preparada para tipos de árbol similares al que subiste, SIN BUCLES CERRADOS.
En este archivo, una vez corregidos los criterios, me funciona de impresión pero no se si lo hará siempre
Por favor, pruebala y me cuentas

Un saludo

nolo

Mensajes : 136
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: distancias entre puntos?

Mensaje por bernie67 el Mar Mayo 24, 2016 5:05 am

Nolo te agradezco por tu tiempo. Mañana con calma miro lo que hiciste y te comento
Un abrazo y gracias nuevamente
Bernardo
avatar
bernie67

Mensajes : 53
Fecha de inscripción : 22/03/2016
Edad : 50
Localización : Bogota DC-Colombia

Ver perfil de usuario

Volver arriba Ir abajo

Re: distancias entre puntos?

Mensaje por bernie67 el Mar Mayo 24, 2016 11:30 pm

Nolo no se que mas decirte si no mil gracias. Efectivamente lo hice a pedal y salimos. Pero me dejaste completamente descrestado. Funciona super bien y la verdad que parece magia jajajaja. Hice prueba sacando un pedazo del dibujo aparte y usando el lisp y funciona bien. Lo único que no logre hacer funcionar fue el comando prueba, no se si es por alguna variable que tengo activada/desactivada pero no corre me bota esto
Command: PRUEBA

Command: Regenerating model.

Generando entorno de listas
145 Líneas y polilineas encontradas
Revisando el arbol..
Comprobando ramas..
Comprobando emparejamientos ..
Arbol correcto ..
Generando arbol desde el punto de origen
Buscando rutas..
"RECU-18 -> CASE0001" VVC: Internal Error

Estoy usando autocad 2015 en ingles
Un abrazo y me encanto la utilidad le ahorra a uno días de trabajo
Un abrazo
Bernardo Corradine
avatar
bernie67

Mensajes : 53
Fecha de inscripción : 22/03/2016
Edad : 50
Localización : Bogota DC-Colombia

Ver perfil de usuario

Volver arriba Ir abajo

Re: distancias entre puntos?

Mensaje por nolo el Miér Mayo 25, 2016 11:17 am

Pues es una verdadera lástima, te pierdes lo mejor
vídeo del comando prueba

No se si será el command que utilizo en es rutina para que salgan las distancias en la pantalla de texto.
En < Calcula > utilizo vlisp y en < prueba > solo lisp (cosas de la guarrería del código )

Veré como lo puedo arreglar

Un saludo

nolo

Mensajes : 136
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: distancias entre puntos?

Mensaje por nolo el Miér Mayo 25, 2016 6:51 pm

Vuelve a bajarlo y a ver si funciona ahora,
tabla_distancias_solucion_nolo.rar
Le he quitado los command excepto para los undos y he descubierto que no ordenaba los RECU-NN y que el CASE0008 no faltaba si no que se había colado como CAS0008

Ahora no tengo el 2015 así que te toca a ti validarlo, pruebalo todo < prueba ><calcula >< calcula2 > incluso una utilidad que también tiene que es < spp > que es para poder seleccionar los puntos de un área sin tomar nada mas y luego poder borrarlos o moverlos.

Y me cuentas
Un saludo

nolo

Mensajes : 136
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: distancias entre puntos?

Mensaje por bernie67 el Jue Mayo 26, 2016 6:27 pm

Nolo esta genialisimo...magnifico, alucine completamente con tu lisp!!!!! Ya vi el comando prueba y es de lo mejor, pues le permite a uno visualizar y corroborar la información. El comando spp no logre correr pues cuando me dice que seleccione los puntos no me captura nada.
Pero en verdad que muy agradecido por tu tiempo y por la dedicación a esta solicitud, como herramienta es formidable pues es exacta y ademas le ahorra a uno montones de horas de sumas y restas
Voy a colgar las imagenes
https://www.dropbox.com/sh/17lmcpfdenj7ilg/AAC18iY-SF7kAYHts5o9BK12a?dl=0

Cordial saludo
Bernardo Corradine
avatar
bernie67

Mensajes : 53
Fecha de inscripción : 22/03/2016
Edad : 50
Localización : Bogota DC-Colombia

Ver perfil de usuario

Volver arriba Ir abajo

Re: distancias entre puntos?

Mensaje por nolo el Vie Mayo 27, 2016 7:31 pm

De nada, yo he aprendido mucho desarrollándola.
El comando spp en una utilidad sencilla para poder seleccionar los puntos que deja el lisp cuando encuentra un error y que se deben mostrar como unas aspas ya que le puse la variable pdmode en 3.
No tiene mas misterios y aquí la expongo
Código:
(defun c:spp( / ss)
(princ"\nSeleccionar puntos : ")
(setq ss (ssget '((0 . "POINT"))))
(sssetfirst ss ss)
(princ)
)
Si no hay puntos (no veo aspas en las imágenes) pues claro, no selecciona nada.

Cualquier problema, si lo describes detalladamente aquí, intentaré solucionarlo

Un saludo

nolo

Mensajes : 136
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: distancias entre puntos?

Mensaje por bernie67 el Sáb Mayo 28, 2016 3:26 pm

Nolo muchísimas gracias por tu colaboración y por solucionar esta solicitud. Es espectacular el resultado y la posibilidad de supervisar cada ruta. Valoro mucho tu ayuda y si en algo te puedo ser útil que tenga que ver con arquitectura, cuenta con ello
Un abrazo y nuevamente mil gracias
Bernardo Corradine
avatar
bernie67

Mensajes : 53
Fecha de inscripción : 22/03/2016
Edad : 50
Localización : Bogota DC-Colombia

Ver perfil de usuario

Volver arriba Ir abajo

Re: distancias entre puntos?

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.