Indice de Foros
Foro Cartesia
Geomática y Topografía 
  Cartesia · Crea tu Blog · Cursos · Contacta · Publicidad   · Cartesia twitter ·
 Avanzada
 Indice  FAQFAQ  Registrarse EntrarEntrar 


[Civil3D] Quiero hacer un comando para crear secciones desde polilineas.   
Publicar nuevo tema   Responder al tema    Indice de Foros -> Topografía
Tema Anterior :: Tema siguiente  
Autor Mensaje
joantopo
Moderador


Registrado: 31 May 2006
Mensajes: 3459
Ubicación: Barcelona-ITT 68XX

MensajePublicado: Mon 09 Feb 2015, 16:20    Asunto: [Civil3D] Quiero hacer un comando para crear secciones desde Responder citando

Quiero hacer un comando para Civil 3D, parecido a lo que permiten hacer MDT e Ispol.

En MDT, es posible editar los perfiles transversales en el dibujo (que son meramente secciones en polilineas) y guardarlos de nuevo en un archivo .TRA para cubicar de nuevo con esa modificación.

En Ispol, en el Editor de Perfiles, se edita la superficie (perfil transversal), pero hay que guardar de nuevo el archivo y cargarlo (*.per) para ver la nueva cubicación.

Pues bien, mi idea es hacer esto mismo en Civil 3D pero presenta un inconveniente (que se podría convertir en ventaja) y es que Civil 3D no utiliza ficheros de perfiles transversales con lo que no es posible cubicar directamente para ellos.
Para eso, hace falta generar una superficie que generaría esos mismos perfiles transversales, y cargar esa superficie como "origen de datos" en el Grupo de Líneas de muestreo.

El usuario sólo tendría que dibujar una polilínea sobre la vista en sección simulando lo que sería la sección de una superficie.
Esas polilíneas, DEBEN estar todas a la misma capa.

Luego, al usuario se le pide seleccionar una capa donde hay esas polilineas, y mediante la API, se puede saber a qué vistas en sección hacen referencia, y por tanto, a qué Grupo de Líneas de muestreo pertenece.
de cada polilínea, se puede obtener sus coordenadas en (dist.eje y elevación) y generar automáticamente los puntos COGO.

Con la API, puedo crear una nueva superficie(incluso en otra base de datos que no tiene que ser en el mismo dibujo), obtener los puntos COGO(de los vértices de los perfiles transversales), generar una polilínea contorno y añadirla a esa superficie, y añadir los puntos a la definición de superficie.

Todo esto, como digo, en una nueva base de datos, sin generar un archivo de dibujo nuevo.

En vez de generar el dibujo con la superfície, la API permite exportar directamente un archivo DEM de la superfície que podría guardarse directamente en "C:\\"

Y luego, el usuario, en su propio dibujo, tendría que crear una superficie DEM y cargarle ese fichero DEM.

El inconveniente de este sistema, es que creo que si mi comando se vuelve a utilizar y genera de nuevo el archivo DEM, la superficie no recargará automáticamente ese archivo.

Otro modo, para que resultara más dinámico, supongo que sería que la superficie se creé siempre en otro archivo de dibujo, y añadir esa superficie (como acceso directo a datos) a nuestro dibujo, de esta forma, al utilizar el comando, elimina cualquier definición de esa superficie y genera de nuevo los puntos COGO..

La idea, como digo, sería que al modificar una polilínea sobre una vista en sección y llamar al comando, automáticamente se genere de nuevo su sección correspondiente en la vista en sección.
(de hecho, se podría hacer que sobre la vista en sección, se genere de nuevo la polilínea).
Y todo esto, dinámico sin tener que guardar y cargar ficheros de perfiles transversales para ir viendo las diferencias de cubicación.

_________________
No guardes nunca en la cabeza aquello que te quepa en un bolsillo.
Albert Einstein (1879-1955)
Yo diria que el "bolsillo" es cartesia.


Ultima edición por joantopo el Thu 12 Feb 2015, 17:15, editado 1 vez
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
joantopo
Moderador


Registrado: 31 May 2006
Mensajes: 3459
Ubicación: Barcelona-ITT 68XX

MensajePublicado: Mon 09 Feb 2015, 16:46    Asunto: Responder citando

por lo visto sí es útil pisando el archivo DEM cada vez, luego saldría el mensaje de si se quiere sobre-escribir, diciendo Sí, y aunque la superficie esté en regenerar automático, habría que hacer regenerar para que vuelva a leer el mismo fichero, aunque ese "regenerar" lo puedo hacer con la API.

La única cosa que no me gusta, es trabajar con un archivo DEM en vez de triangulación, puesto que intuyo que las secciones transversales no saldrían igual. Confused

El otro modo, sería usando un "acceso directo a datos" con una superficie de dibujo, que va actualizando sus datos de superficie de manera automática al ser llamado por un comando. (en ese caso sí podría usar una superfície TIN).

_________________
No guardes nunca en la cabeza aquello que te quepa en un bolsillo.
Albert Einstein (1879-1955)
Yo diria que el "bolsillo" es cartesia.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
joantopo
Moderador


Registrado: 31 May 2006
Mensajes: 3459
Ubicación: Barcelona-ITT 68XX

MensajePublicado: Tue 10 Feb 2015, 12:05    Asunto: Responder citando

me dicen que desde la API aún no se puede hacer acceso directo a datos o Referencias, así que tendré que crear la superfície en el mismo dibujo, pero se me ha ocurrido una manera que hará el dibujo más limpio sin tener que crear puntos COGO que definan esa superficie.

Lo que voy a hacer, es añadirle lo que se llama "Puntos de Superficie", que está en Superficie-Definición-Edición-Añadir punto, y eso también se puede hacer desde la API.

Voy a hacer también, que se genere una polilínea de contorno sólo si la alineación tiene alguna curva o clotoide, puesto que si sólo es una recta no hace falta contorno.

_________________
No guardes nunca en la cabeza aquello que te quepa en un bolsillo.
Albert Einstein (1879-1955)
Yo diria que el "bolsillo" es cartesia.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
joantopo
Moderador


Registrado: 31 May 2006
Mensajes: 3459
Ubicación: Barcelona-ITT 68XX

MensajePublicado: Wed 11 Feb 2015, 16:36    Asunto: Responder citando

Comando conseguido! Very Happy
Me falta ahora evitar que salgan las malditas etiquetas de sección.

Creo que valdrá la pena hacer un vídeo para mostrar su resultado.

_________________
No guardes nunca en la cabeza aquello que te quepa en un bolsillo.
Albert Einstein (1879-1955)
Yo diria que el "bolsillo" es cartesia.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
joantopo
Moderador


Registrado: 31 May 2006
Mensajes: 3459
Ubicación: Barcelona-ITT 68XX

MensajePublicado: Thu 12 Feb 2015, 17:09    Asunto: Responder citando

he mejorado en algunos aspectos el comando para que no provoque error:

-Antes sólo se pedía seleccionar una polilínea (de la cual se obtenía la capa de las polilíneas que harían de sección) y a partir de un vértice de ella, se podía saber la vista en sección dónde estaba ubicada.

Como es posible que los elementos de la capa seleccionada, algunos de ellos no estén sobre una vista en sección, provocando error, se decide que el usuario seleccione una Vista en Sección. (sólo con una basta).

Además, los elementos que no son polilíneas (pol2d,pol3d,lineas) de la capa, se ignoran, con lo que es posible tener una capa con elementos que no sean sólo las que representan polilineas de secciones.

A su vez, otro error posible, es que si un vértice de la polilinea está fuera de la vista en sección, no se va a generar dicho punto en la superficie, en ese caso, estoy pensando en generar un informe o algo, aunque el usuario debe tener cuidado con esto para que todos los vértices de la polilínea estén dentro de la vista en sección (sinó el programa no sabe calcular su pk,offset en ese vértice.

_________________
No guardes nunca en la cabeza aquello que te quepa en un bolsillo.
Albert Einstein (1879-1955)
Yo diria que el "bolsillo" es cartesia.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
joantopo
Moderador


Registrado: 31 May 2006
Mensajes: 3459
Ubicación: Barcelona-ITT 68XX

MensajePublicado: Sun 15 Feb 2015, 16:50    Asunto: Responder citando

Ya tengo el comando hecho y funcionando a pleno rendimiento: Very Happy

Aquí pongo las instrucciones, aunque trataré de hacer un vídeo.

Cita:
Uso del comando “secpol”:
Desde Civil 3D es posible cambiar el estado de edición de una sección, cambiando su propiedad de Dinámica a Estática.
Al tener una sección en Estática, es posible editar sus vértices y obtener nuevas cubicaciones, pero la edición de la sección es muy limitada (sólo posición del vértice) puesto que no se permite añadir o eliminar vértices de sección.
Desde esta limitación surge este comando:
“secpol” (secciones desde polilineas) ha sido diseñado para obtener rápidamente secciones a partir de polilineas dibujadas sobre varias Vistas en Sección, en particular, una polilinea en cada vista en sección.
Así que en vez de editar una sección existente, vamos a dibujar polilíneas (con la posibilidad de añadir o quitar los vértices que queramos), y al ejecutar este comando, se generará una superficie TIN representando esos perfiles transversales.
(Nota: Para el dibujado de polilineas, existe otro comando en VisorNET PRO que permite hacer un calco de una sección para obtener rápidamente una polilinea sobre ella, ya sea de manera individual o colectiva).
La superficie será agregada como Origen al Grupo de Líneas de Muestreo, de tal manera que automáticamente se representará las secciones de esa superficie con la misma geometría que las polilineas.
Para que este comando resulte práctico y ágil, dado que puede usarse repetitivamente, en especial para obtener nuevas cubicaciones, al ejecutar el comando, sólo se pide seleccionar 2 datos gráficamente desde la línea de comandos:
• Capa de las polilíneas:
para ello, se pide picar en el dibujo una polilinea 2D (debe ser polilinea 2D ligera) y se obtiene su correspondiente capa.
• Vista en sección:
se puede picar sobre cualquier vista en sección del grupo de Vistas en sección que usamos para dibujar las polilineas dentro de ellas.
Para agilizar el proceso como hemos dicho y no pedir un nombre de superficie, la nueva Superficie se crea siempre con el mismo nombre: VisorNET_secciones
En el caso que ya exista la superficie con ese nombre, porque se ha usado el comando previamente, no se crea la superficie y se utiliza la misma, vaciando absolutamente todas las Definiciones que haya en su interior.
Se recomienda, por tanto, no usar esta superficie para otros fines que no sean para este comando, puesto que si se llama este comando, actuará siempre contra esta superficie.
No elimine tampoco esta superficie, puesto que si es eliminada, automáticamente elimina las secciones que hemos obtenido. Recuerde que para que existan secciones en Civil 3D, debe existir su superficie correspondiente.

En todo caso, siempre puede asignarle un estilo de superficie que sea para ocultarla. El comando no modifica nunca el estilo de superficie.

Para no interferir con los datos de otras superficies, esta nueva superficie se crea sin puntos COGO ni polilinea que sea contorno.
La nueva superficie se genera EXCLUSIVAMENTE con datos de “Edición”, en la que se incluyen vértices (operación: Añadir vértices) de triangulación (puntos de superficie).
Con estos vértices, Civil 3D genera una triangulación, pero es posible que genere más triángulos de los necesarios, en el lado izquierdo y derecho .
Para ello, este comando, genera un contorno virtual y elimina las posibles aristas que queden fuera de este contorno.
La eliminación de estas aristas, aparece en la Definición de la superficie como “Eliminar líneas”, aunque puede haber situaciones, que no haga falta eliminar aristas porque todas están dentro del contorno.

RECOMENDACIONES
Se recomienda usar este comando de forma estricta y coherente, ya que en cualquier otro caso, podría obtener errores inesperados del programa.
Las siguientes recomendaciones son:
• Coloque todas las polilineas que quiere obtener una sección , en la misma capa, a ser posible, y muy recomendado, que la capa sólo contenga esos objetos.
Para ello, si hace falta, cree una nueva capa y coloque todas las polilineas que quiere obtener como secciones.
En un principio, el comando se ha curado en salud, y los objetos de la misma capa que NO sean polilineas 2D (polilineas ligeras) serán ignorados.
El inconveniente se presenta si la capa contiene polilineas 2D que no se quieren emplear como secciones, es decir, que estarán fuera de una Vista en Sección.
En ese caso, el programa contabiliza los vértices de esa polilínea como errores.

• Cree siempre las polilineas que quiere usar de sección, como entidad Polilinea 2D (polilinea ligera).
Como se ha dicho en el punto anterior, si son de otro tipo (poli2d pesada, pol3d, línea, etc..), aunque pertenezcan a la misma capa, son ignoradas (sus vértices NO se contabilizarán como error) y no se va a crear su sección. Cualquier otro tipo de entidad que pudiera tener la capa, también es ignorado.

• No dibuje más de una polilinea (de la misma capa) en la vista en Sección, en ese caso, el comando generará una sección que incluya todos los vértices de ambas polilineas.
A su vez, si crea varias polilineas en una misma Vista en sección como si fuera un trazo discontinuo, la sección ignora esos espaciados. En todo caso, si quiere conseguir ese efecto, tendría que añadir un contorno ISLA en la superficie.

• IMPORTANTE: los vértices de la polilinea deben estar dentro de la Vista en Sección.
Si algún vértice no se encuentra dentro, ese vértice se contabiliza como error y se generaría la sección sin ese vértice.
El comando siempre necesita las coordenadas del primer vértice de la polilinea, para verificar cual es su vista en Sección. Si dicho vértice se encuentra fuera de la vista en sección, no se va a generar la sección en esa polilínea y todos los vértices de la polilinea se contabilizan como error.


VENTAJAS:

• Puede dibujar la polilinea empezando de izquierda a derecha o de derecha a izquierda, eso no supone un problema al programa.

• Puede dibujar la polilinea en PK´s aleatorios de las Vistas en Sección, es decir, no tiene que empezar obligatoriamente por el primer PK.

Por ejemplo, dibuje la polilinea en la Vista en Sección del PK 0+150 y luego la polilinea en la Vista en Sección del PK 0+025

El programa se encarga de reordenar por PK´s.

• No supone un problema si va dibujando polilineas con Desfase al Eje máximo, distintos de cada polilínea, puesto que el programa genera un Contorno virtual, y como se ha dicho, se eliminan las aristas sobrantes.

• Cuando se generan las nuevas secciones, si no ha habido errores, se eliminan las polilineas y se generan nuevas polilineas sobre las secciones, para facilitar de nuevo la edición de esas polilineas.

Si desea no volver a repetir el comando, puede eliminar las polilineas (por ejemplo, por selección por Capa). Las polilineas no son dinámicas a las secciones, debe ejecutar el comando para regenerar las secciones. Y al finalizar el comando, puede eliminar las polilineas con absoluta libertad.

Otras características:
• Las vistas en sección pueden tener una deformación para la Escala Vertical, no supone un problema para obtener las coordenadas (en desfase y elevación sobre la vista en sección) de los vértices, aunque si dibuja usted las polilineas, es mejor que no aplique una deformación vertical para dibujar más fácilmente las polilineas como secciones.


• Para facilitar la visibilidad, el comando nunca permite que exista algún tipo de Grupo de etiquetas de sección para la creación de las nuevas secciones.
No obstante, si quisiera las etiquetas, una forma rápida es ir a “Muestrear más Orígenes”, quitar el Origen de “VisorNET_secciones” , [Aplicar] y volverlo a [Añadir].





Como se ha dicho, este comando contabiliza errores (vértices que no se han podido añadir a la sección, bien porque el vértice está fuera de la sección, o el primer vértice de la polilinea estaba fuera de la sección y se consideran todos los vértices de ella como errores.

Según el resultado final de errores, el programa al final actuará de una forma u otra, indicando con un MessageBox un caso u otro:
• Si se obtienen 0 errores (con lo cual indica plenamente que se generaron correctamente las secciones), se eliminan las polilineas sobre la vista en sección y crea nuevas polilineas (en la misma capa y color que las anteriores), justo encima de las nuevas secciones.
Esta operativa es ideal para poder usar el comando repetitivamente y ya tener la polilinea dibujada sobre la sección que se generó.

• Si se obtienen errores, se generan igualmente las secciones aunque puede que no sean correctas del todo.
Los vértices de polilineas que se han considerado como error, son marcados por puntos temporales de AutoCAD de color amarillo.
El usuario puede analizar y revisar estos vértices para verificar de dónde proceden estos errores.
Para hacer desaparecer esos puntos, sólo tiene que hacer un regenerado del dibujo.
Dado estas 2 formas de actuar, por eso se recomienda no cometer errores, para tener las nuevas polilineas ya generadas.

_________________
No guardes nunca en la cabeza aquello que te quepa en un bolsillo.
Albert Einstein (1879-1955)
Yo diria que el "bolsillo" es cartesia.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
joantopo
Moderador


Registrado: 31 May 2006
Mensajes: 3459
Ubicación: Barcelona-ITT 68XX

MensajePublicado: Mon 16 Feb 2015, 00:18    Asunto: Responder citando

Se ha acabado de pulir aún más el comando.

He visto que cuando se añaden los puntos (vértices) para hacer la triangulación, de forma transversal para cada PK, puede darse el caso que entre puntos consecutivos del mismo PK no haya una arista del triángulo.

Eso provoca, que la nueva sección no sale un fiel reflejo a la polilinea.

Eso no es ni más ni menos que el criterio de LA TRIANGULACIÓN DE DELAUNAY.
Para no añadir líneas de rotura, entre vértices consecutivos del mismo PK, se comprueba vértice a vértice (de su vecino) del mismo PK si están conectados por una arista.

Por suerte, la API tiene este método:
TinSurfaceVertex.Vertices

Que dá una colección de todos los vértices vecinos a un vértice concreto, de esta manera puedo comprobar si el vértice vecino al mismo PK está conectado a él.

Para no ralentizar la operación y hacer un intercambio de arista entre triángulos (que se tendría que calcular cúales son), se "añade una línea" (arista) y el programa ya se encarga de invertir las aristas en los triángulos.
Aunque sólo se añade esa línea ahí dónde realmente haga falta invertir la arista en triángulos.

Aquí pongo una imagen capturada:

http://s28.postimg.org/6tn7opp65/img3.jpg

La superficie hace de contenedor, al realizar otra llamada al comando, vacía todas las operaciones de edición.

En la imagen captura, por ejemplo, las secciones de color rojo son polilineas, que si las muevo o añado vértices y ejecuto el comando, la nueva sección sería un calco de la polilínea.

La única pega (que también podría solucionarse pero quizá tomaría mucho tiempo de cálculo), es que en las nuevas polilineas dibujadas en la vista en sección, a veces añade vértices intermedios(respetando la pendiente) entre los vértices que teníamos.
Eso pasa porque toma los cortes de la línea de muestreo con la triangulación.

De todos modos, la polilinea es correcta, sólo que con más vértices.
Esto también pasaría para el comando de "exportar secciones a archivo", generando más puntos (offset,elev) de puntos intermedios que no aportan ninguna información extra,puesto que no son vértices de quiebros.

_________________
No guardes nunca en la cabeza aquello que te quepa en un bolsillo.
Albert Einstein (1879-1955)
Yo diria que el "bolsillo" es cartesia.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
joantopo
Moderador


Registrado: 31 May 2006
Mensajes: 3459
Ubicación: Barcelona-ITT 68XX

MensajePublicado: Mon 16 Feb 2015, 18:41    Asunto: Responder citando

Lo de los vértices de más (puntos intermedios) en las nuevas polilíneas ya se ha solucionado también.

En la API hay el método Section.SectionPoints, que ofrece un SectionPointsCollection, pero no sé porqué dá esos puntos intermedios, cuando no existen ni en la triangulación, y además es información que no aporta nada, simplemente son vértices sin ser un punto de rotura.

Ya me he creado mi método "SectionPoints()" con varios parámetros, para que ese método sea sobrecargado y así ya ignora los puntos fuera de superficie y los puntos intermedios.

Nota: el el comando de exportar secciones a ficheros (.txt) aprovecharé este método para que elimine los puntos intermedios porque hasta la última versión actual no lo hacía.

_________________
No guardes nunca en la cabeza aquello que te quepa en un bolsillo.
Albert Einstein (1879-1955)
Yo diria que el "bolsillo" es cartesia.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
joantopo
Moderador


Registrado: 31 May 2006
Mensajes: 3459
Ubicación: Barcelona-ITT 68XX

MensajePublicado: Thu 19 Feb 2015, 15:50    Asunto: Responder citando

El comando se llamará finalmente "polTOsec".

(polylines to sections)

Y se podrá crear distintas superficies para cada capa (que contendrá sus correspondientes polilineas que simularían secciones).
Se ha puesto hasta 4 superficies, aunque se podrían crear más, no es ninguna limitación.

Después de pedir desde la línea de comandos seleccionar una polilinea y luego una vista en sección, se va a pedir el número de superficie, tal como muestra la imagen:

http://s1.postimg.org/h41ktku4f/img5.jpg

La nueva superficie se llamará "VisorNET_secciones_X" siendo X el número de superficie seleccionada.

Como generalmente trabajaremos con una única supeficie, la superficie 1, simplemente se presiona Enter y ya está.

Esto permite trabajar de forma combinada con varios tipos de polilinea(cada una en su capa) que representen distintas secciones. Very Happy

_________________
No guardes nunca en la cabeza aquello que te quepa en un bolsillo.
Albert Einstein (1879-1955)
Yo diria que el "bolsillo" es cartesia.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   

Temas similares
Tema Autor Foro Respuestas Ultimo Mensaje
No hay mensajes nuevos [Civil3D] Usar las secciones como sub... joantopo Topografía 1 Sun 15 May 2011, 21:11 Ver último mensaje
joantopo
No hay mensajes nuevos [Autocad] polilineas superpuestas Qui... NelTopo Topografía 1 Thu 05 Feb 2015, 15:45 Ver último mensaje
joantopo
No hay mensajes nuevos [Civil3D] Comando Explode joantopo Topografía 0 Fri 17 Jan 2014, 20:11 Ver último mensaje
joantopo
No hay mensajes nuevos crear polígonos a partir de polilínea... monigue SIG y Cartografía 3 Thu 28 Feb 2008, 21:36 Ver último mensaje
graby_herrera
No hay mensajes nuevos CREAR SECCIONES EN CIVIL 3D 2009 garcete1959 Varios 0 Tue 20 Oct 2009, 15:24 Ver último mensaje
garcete1959
No hay mensajes nuevos crear curvas de nivel a partir de las... danyboyoax Topografía 1 Wed 01 Apr 2009, 08:23 Ver último mensaje
joantopo
No hay mensajes nuevos [Inroads] Crear secciones cajeadas pa... calatravo Topografía 2 Fri 25 Apr 2008, 10:17 Ver último mensaje
calatravo
No hay mensajes nuevos [Civil3D 2008] POLILINEAS 3D, EXPLANA... DANIELOTOPO Topografía 3 Tue 03 Nov 2009, 15:07 Ver último mensaje
txus

Publicar nuevo tema   Responder al tema    Indice de Foros -> Topografía Todas las horas son CET (Europa)
Página 1 de 1

 
Cambiar a:  
Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
No puede adjuntar archivos en este foro
No Puede descargar archivos de este foro


Powered by Cartesia ©