Índice del Foro www.mediocad.com www.mediocad.com
TODO SOBRE MICROSTATION. MDL, MVBA, MACROS.
 
 F.A.Q.F.A.Q.   BuscarBuscar   Lista de MiembrosLista de Miembros   Grupos de UsuariosGrupos de Usuarios   RegístreseRegístrese 
 PerfilPerfil   Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   ConectarseConectarse 

Programa que rotula áreas

 
Publicar Nuevo Tema   Responder al Tema    Índice del Foro www.mediocad.com -> MVBA
Ver tema anterior :: Ver siguiente tema  
Autor Mensaje
mediocad
Gran Maestro
Gran Maestro


Registrado: 09 Jun 2005
Mensajes: 1509
Ubicación: Madrid

MensajePublicado: Mar Sep 06, 2005 6:57 pm    Título del mensaje: Programa que rotula áreas Responder citando

He realizado un programa en BVA para la V8 que rotula el área de los elementos SHAPE (tipo 6) y COMPLEXSHAPE (tipo 14).

Se realiza un cercado en modo dentro que englobe las áreas y el programa los rotula insertando el texto en el centroide.

El texto sería el siguiente: <<AERA: XXXXXX.XXX>>. Redondea a tres decimales.

Si alguien desea tener el código que deje mensaje con email.

Saludos.
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo Visitar sitio web del autor
carmen123



Registrado: 31 Oct 2006
Mensajes: 8

MensajePublicado: Lun Oct 08, 2007 10:38 am    Título del mensaje: poligonos en Ms y elementos dentro Responder citando

Muy buenas,
a mi me gustaría que me enviaras el ejemplo de etiquetado de polígoonos y además quiero preguntarte algo!!

Cómo puede desarrollar en vba una funcion que compruebe si dentro de los polígoono o fuera de los mismos o superpuesto a ellos existen deteminados elementos.. (ejemplo determinar si cada poligono tiene un texto en su interior)

Creo que existe una función que ya verifica si existe un punto en el interior de un rectángulo, pero no me es válido para el resto de polígonos, ¿existe otra función a usar? o tienes código hecho que pueda ayudarme??

un ejemplo que se me ocurre es ir haciendo que cada polígono al ir recorriéndolo sea un cercado y comprobar que existe ese o esos elementos a localizar, dentro, fuera.. superpuesto... ¿cual es tu opinión?

Otra consulta es: cómo se te ocurre puedo preparar una función que localice que no hay dos células iguales en una determinada distancia??? puedes pasarme algo de código u orientarme con las funciones a usar??
Mi correo ktxu_tena@yahoo.es
El trabajo lo voy a realizar tirando del motor de microStation v8 2004 desde Visual Basic .NET

Volver arriba
Ver perfil del usuario Enviar mensaje privado
mediocad
Gran Maestro
Gran Maestro


Registrado: 09 Jun 2005
Mensajes: 1509
Ubicación: Madrid

MensajePublicado: Lun Oct 08, 2007 11:52 am    Título del mensaje: Varias cosas Responder citando

Hola,

- El código que pedías lo he puesto como un post fijo en esta sección.
- Yo no conozco esa función que verifica si existe punto dentro de un polígono. ¿Cuál es? Lo que se ha hecho hasta ahora es "lanzar" una línea horizontal desde el punto y si corta al polígono una vez está dentro; si son dos veces, fuera.
- Para el texto, tú has dado con la solución. Busca polígono, crea cercado sobre él, define modo cercado dentro, fuera, superpuesto... y encuéntralos.
- Para las células, yo lo que haría sería crear un cercado a la distancia donde desees buscar la célula y ver si hay alguna. Tienes las coordenadas de la célula; en X,Y le das la distancia a buscar y calculas nuevos puntos sumándoles esas X,Y que son los que definirán el cercado.
Para hacerte la función sólo deberías pasarle las coordenadas de la célula o la célula y la distancia que hará el cercado más grande o más pequeño. Has de tener en cuenta las UORs para que en cualquier fichero con unidades diferentes siempre sea la misma distancia.

Un saludo
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo Visitar sitio web del autor
carmen123



Registrado: 31 Oct 2006
Mensajes: 8

MensajePublicado: Mar Oct 16, 2007 3:38 pm    Título del mensaje: Determina puntos dentro de un área Responder citando

Hola medio, gracias por tu pronta respuesta.
Entonces crees que no haya ningún problema en generar una función
que compruebe si dentro de los polígonos o fuera de los mismos o superpuesto a ellos existen deteminados elementos.. (ejemplo determinar si cada poligono tiene un texto en su interior, si está superpuesto con determinadas líneas..) tal y como te comentaba...???

Conoces alguna forma de comprobar que los polígonos (tipo 6 o 12) por ejemplo los que conforman las comunidades de España estén todos OK y no haya entre ellos huecos o solapamientos. Si se te ocurre cualquier opción por favor comunícamelo. (sin usar Geographics). ¿¿Sabes si se pudiera usar alguna librería de objetos de Geographics sin necesidad de Licencia o al menos que no se tenga que tener este otra aplicacion instalada??

Por otro lado... La funcion a la que me refería es la función
mdlDialog_rectPointInside usada para determinar si un punto está dentro de un rectangulo. (La verdad nunca la he usado, yo Mdl nunca).
Un saludo
Volver arriba
Ver perfil del usuario Enviar mensaje privado
mediocad
Gran Maestro
Gran Maestro


Registrado: 09 Jun 2005
Mensajes: 1509
Ubicación: Madrid

MensajePublicado: Jue Oct 18, 2007 3:21 pm    Título del mensaje: Solucionado Responder citando

Hola,

No creo que haya ningún problema, es más, ya lo tienes hecho. Hemos creado la función que lo hace y la hemos puesto en el subforo de MVBA. Puedes ir directamente desde aquí: http://mediocad.com/phpBB2/viewtopic.php?p=4223#4223

En este caso se ha usado la función mdlDialog_rectPointInside que comentabas aplicada a MVBA. Verás que es fácil de entender y aplicar, por lo que sólo tienes que adaptarla a tu código.

Tu caso, se puede resolver de tres formas (programando):

1) Leer uno a uno los tipos 6 o 12 (por código). Según los vas encontrando creas un cercado a partir de elemento (el cercado lo pones dentro, fuera o superpuesto), buscas en contenido del cercado y si te da True has encontrado algo y si es False nada.

2) Sabiendo las coordenadas del punto o texto (origen) pasarle la función MDL como se ha puesto en el subforo MVBA. También debes saber las del área. Pero este caso sólo es para rectángulos.

3) Usar el método Point3dInPolygonXY de MVBA. Usando este método, le debes pasar como parámetros las coordenadas del punto y un array con las coordenadas de los vértices del polígono. Éste es tú caso, ya que si utilizas la opción 1 encontrará (modo cercado fuera) todo lo que haya fuera.

Respecto al tema de los polígonos de las comunidades de España, sin Geographics lo veo complicado. Se puede hacer y correr un proceso de búsqueda de undershoot, overshoot, jirones, bucles....pero habría que programarlo. Estamos hablando de edición cartográfica y como tal, no encontraréis nada que lo haga automáticamente al 100% ya que hay veces que el operador debe tomar la decisión de dar solución correcta al caso. Si es verdad que se puede señalar el error y luego se decide. Si os urge y necesitáis un desarrollo poneros en contacto con desarrollos@mediocad.com y explicar lo que necesitáis.

Y por último, no sé como usar las librerías de GEO sin licencia. Si fuera fácil, todo el mundo las tendría y no pagarían licencia. Además, nunca se me ha dado el caso de tener que probarlo por lo que no sé si funciona.

Un saludo y nas nos contarás como te ha ido.


Ultima edición por mediocad el Mie Oct 24, 2007 8:19 am; editado 6 veces
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo Visitar sitio web del autor
carmen123



Registrado: 31 Oct 2006
Mensajes: 8

MensajePublicado: Vie Oct 19, 2007 10:22 am    Título del mensaje: Determina puntos dentro de un área Responder citando

Muchas gracias...
ya te iré contando, además cuando me meta de lleno con ello me surgirán más dudas, seguro!!. Desde luego necesito contar con vuestra ayuda.

Gracias por hacer que estos foros funcionen y en general te Felicito por la gestión y organización de toda la página.

Un saludo
Volver arriba
Ver perfil del usuario Enviar mensaje privado
Orphen



Registrado: 21 Dic 2005
Mensajes: 38

MensajePublicado: Vie May 30, 2008 7:59 am    Título del mensaje: Como hacerlo para un poligono dibujado con linea simple Responder citando

El ejemplo que realizaste solo puede calcular el area en un poligono con tipo linstring, pero por ejemplo yo deseo calcular el area de varios poligonos que fueron dibujados con linea simple.

Me gustaria que me avisara de una aplicacion para obtener las coordenadas de este tipo de poligonos ya que obteniendo sus coordenadas deseo de alguna manera plasmar una tabbla con sus numero de vertice y sus coordenadas.

Gracias
Volver arriba
Ver perfil del usuario Enviar mensaje privado
mediocad
Gran Maestro
Gran Maestro


Registrado: 09 Jun 2005
Mensajes: 1509
Ubicación: Madrid

MensajePublicado: Vie May 30, 2008 9:35 am    Título del mensaje: Varias cosas Responder citando

Hola,

1) El programa que rotula áreas rotula los áreas de los siguientes tipos de elementos:

2 (Encabezado de Célula-CELL HEADER)
6 (Forma Poligonal-SHAPE)
14 (Forma Poligonal Compleja-COMPLEXSHAPE)
15 (Elipse o Círculo-ELLIPSE)

Estos tipos de elementos, son elementos cerrados que forman área y se puede medir. Una LineString no es un elemento cerrado. Cuando usas la herramienta SmartLine y no unes los vértices inicio y final te crea una Linestring. Si los unes (sin la opción cerrar elemento seleccionada) te crea Lines. Y si los unes con la opción cerrar marcada, te crea Shapes. Puedes tener LineString unidas en sus extremos pero sin ser elementos cerrados (utiliza la herramienta mediar área y verás que no puedes).

Para poder medir el área en una LineString ha de pasarse a elemento tipo Shape o ComplexShape. Por lo que si quieres medir el área en polígonos dibujados con línea simple has de pasarlo a este tipo de elementos. Esto se podría programar y que además de cerrar el elemento te devolviese el área.

2) Para obtener las coordendas tienes dos opciones:

a) Utilizar la herramienta de MS Exportar Coordenadas (Herramientas\Anotación\Texto XYZ)
b) Descargarte un MVBA que hay en el portal llamado ExportaLineas que hace lo mismo que el de MS pero te da información adicional del elemento como el tipo de elemento, nivel y color.

Cuando hablas de la tabla con nº de vértice ¿Te refieres a que los tienes rotulados o es el nº de vértice del propio elemento? Esto último podría ser una mejora de salida en el fichero ASCII.

NOTA: Programando se pueden hacer muchas cosas. En tu caso, se podría hacer una aplicación que cerrase (o no) los polígonos, calculase el área y escribiese en un fichero ASCII o Excel la información que quisieses. Podría exportar el tipo de elemento, nivel en el que se encuentra, color, nº de vértice, coordenadas de esos vértices y el área. Si os puede interesar poneros en contacto con nosotros a través de desarrollos@mediocad.com

Un saludo
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo Visitar sitio web del autor
Orphen



Registrado: 21 Dic 2005
Mensajes: 38

MensajePublicado: Lun Jun 02, 2008 5:51 pm    Título del mensaje: Si la encontre la de exportacion de la linea Responder citando

Bueno, pude ver que la informacion que me presenta en el ASCII es muy importante la del numero del vertice y sus coordendas respectivas, pero bueno por politica personales pues nose tiene acceso al codigo, por favor pornganse en contacto a mi correo elvispz@hotmail.com.
Volver arriba
Ver perfil del usuario Enviar mensaje privado
Mostrar mensajes anteriores:   
Publicar Nuevo Tema   Responder al Tema    Índice del Foro www.mediocad.com -> MVBA Todas las horas están en GMT + 1 Hora
Página 1 de 1

 
Saltar a:  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas


Powered by phpBB © 2001, 2005 phpBB Group