Í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 

Necesito llevar XYZ de un mesh a un archivo de texto

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



Registrado: 16 Jun 2008
Mensajes: 22
Ubicación: Bolivia

MensajePublicado: Mie Sep 24, 2008 2:20 am    Título del mensaje: Necesito llevar XYZ de un mesh a un archivo de texto Responder citando

Hola amigos, como dije en el enunciado, necesito llevar las coordenadas de un mesh a un archivo de texto. Les aclaro que ya use la herrmienta "export coordinates", pero no funciona con objetos mesh.
Si alguien tiene un macro en microstation para conseguir esto le pido por favor que me de una mano.
Gracias anticipadas y un saludo especial a MedioCAD que me a ayudado tanto.
_________________
"Errar es humano"... dijo un pato bajándose de una gallina.
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo Visitar sitio web del autor Yahoo Messenger MSN Messenger
mediocad
Gran Maestro
Gran Maestro


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

MensajePublicado: Mie Sep 24, 2008 9:49 am    Título del mensaje: Malla Responder citando

Hola,

¿El tipo de elemento que compone la malla cuál es?

Si lo deseas puedes dejar en FTP un DGN o parte de él con una malla y lo vemos.

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



Registrado: 16 Jun 2008
Mensajes: 22
Ubicación: Bolivia

MensajePublicado: Jue Sep 25, 2008 1:58 am    Título del mensaje: Tomenlo como un reto personal, ya no es necesario. Responder citando

Ya subi la malla aquí:
http://www.4shared.com/file/64344886/b005925d/mesh.html
Les comento que lo guarde com archivo DWG para abordar el problema desde AutoCAD, (donde es más fácil programar para mi), pero no tuve los resultados que esperaba en el sentido de que el proceso demora mucho, debido a al proceso de creación del archivo de texto.
Se puede lograr resultados más ráipdos si sigo este camino desde MicroStation:
Hago Drop al la malla (dos veces) y cuando queda reducida a lineas simples ya puedo usar la herramienta Export Coordinates.
Me imagino que desde VBA del Microsttation se va tener el mismo problema de velocidad a la hora de crear el archivo de texto, así que no es necesario que realicen el programa que solicite originalmente.
De todas formas, si es que a alguien le pica el bichito del reto, y solo por "amor al deporte", he subido el mesh por si alguien quiere distraerse.
MedioCAD: De todas formas, te agradezco que hayas respondido tan rápido el primer mensaje.
_________________
"Errar es humano"... dijo un pato bajándose de una gallina.
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo Visitar sitio web del autor Yahoo Messenger MSN Messenger
mediocad
Gran Maestro
Gran Maestro


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

MensajePublicado: Jue Sep 25, 2008 3:41 pm    Título del mensaje: Tiempo Responder citando

Hola,

¿Cuánto tarda en terminar el fichero desde Autocad? ¿Y desde MS contando los drop?

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



Registrado: 16 Jun 2008
Mensajes: 22
Ubicación: Bolivia

MensajePublicado: Vie Sep 26, 2008 5:44 pm    Título del mensaje: He estado adentrandome en el vba de Microstation Responder citando

Hola mediocad, respondiendo a tu pregunta, el metodo ahciendo drop tarda como un minuto y el otro unos 5 aproximadamente, sin embrago descubrí que la escritura del texto no era el problema, si no la extracción de las coordendas. Este problema lo resolvia con algunos trucos que tenia bajo la manga, y al final la solucion (progrmando en AutoCAD) me lleva unos segundos, con lo que consegui lo que queria al principio.
Sin emabrgo no me quede alli, me rasque la cabeza hasta sangrar leyendo la ayuda del vba y logre programar lo mismo en microstation, sin embargo me topé con una problema:
La unica refrencia que me da el lenguaje de programación de la malla es un objeto tipo "msdElementTypeMeshHeader", el cual no admite el método ConstructVertexList, el cual es la unica forma que encontre de sacarle coordenadasa un elemento.
Para contextualizar mejor el problema, las mallas que estoy generando son obtenidas de GoogleEarth, asi que se me ocurrió cambiar la malla por una superfice de polilineas cuadraticas (Bspline Surface), el cual si adimte el método ConstructVertexList, sin embargo me genera una densidad de puntos mucho mas elevada que porque no me da los puntos de las intersecciones de la malla, si no una serie de puntos en los bordes de cada cuadradito de la malla, y de rato en rato me da puntos que se disparan no se porque razon.
En resumen, con mas conocimiento de causa, ahora pregunto:
¿Como se puedo llevar las coordenadas del objeto Mesh a una variable de vba?
Adjunto el codigo para obtener datos del Bspline Surface (en vba de Microstation):

Código:

Public Sub MeshData()
Dim Coo() As Point3d
Dim S() As String
Dim oEnumerator As ElementEnumerator
Dim Nm As Long
Dim oElement As Element
Dim msg As VbMsgBoxResult
Dim Arch As String
Dim Numlibre As Integer
Dim N As Long
Dim i As Long
Dim j As Long
Dim X As Double
Dim Y As Double
Dim Z As Double
Dim NDec As Integer
Dim Nl As Long
    Set oEnumerator = ActiveModelReference.GetSelectedElements
    Nm = 0
    Do While oEnumerator.MoveNext
        If oEnumerator.Current.Type = msdElementTypeBsplineSurface Then
            Nm = Nm + 1
        End If
    Loop
    If Nm = 0 Then
        MsgBox "No selecciono ningun objeto Bspline Surface"
        'oEnumerator.Reset
        Exit Sub
    End If
    msg = MsgBox("El programa exportara los datos de las mallas" & vbCr & "a un archivo de texto, desea continuar?", vbYesNo + vbInformation)
    If msg = vbNo Then
        'oEnumerator.Reset
        Exit Sub
    End If
    Arch = CStr(InputBox("Escriba el nombre del archivo donde se exportaran los datos:", , ActiveDesignFile.Path & "\"))
    NDec = CInt(InputBox("Introduzca número de decimales"))
    Numlibre = FreeFile
    Open Arch For Output As #Numlibre
    oEnumerator.Reset
    i = 0
    Nl = 0
    Do While oEnumerator.MoveNext
        Set oElement = oEnumerator.Current
        If oElement.Type = msdElementTypeBsplineSurface Then
            Coo = oElement.ConstructVertexList(10 ^ (-1 * NDec))
            N = UBound(Coo)
            i = 1 + i
            For j = 1 To N
                Nl = Nl + 1
                X = Round(Coo(j).X, NDec)
                Y = Round(Coo(j).Y, NDec)
                Z = Round(Coo(j).Z, NDec)
                Write #Numlibre, X, Y, Z
                ShowPrompt "Malla " & i & " de " & Nm & ": " & Format(j / N, "0.00%")
            Next j
        End If
    Loop
    Close #Numlibre
    ActiveModelReference.UnselectAllElements
    ShowPrompt "Se exportaron " & Nl & " puntos."
    'oEnumerator.Reset
End Sub


Un saludo afectuoso
_________________
"Errar es humano"... dijo un pato bajándose de una gallina.
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo Visitar sitio web del autor Yahoo Messenger MSN Messenger
mediocad
Gran Maestro
Gran Maestro


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

MensajePublicado: Vie Sep 26, 2008 6:02 pm    Título del mensaje: Resuelto Responder citando

Hola,

Como yo soy de los que se pican y al no haber tratado nunca el tipo de elemento mesh, me he puesto con ello y he sacado un MVBA que resuelve el problema que buscas. La aplicación tarda en exportar a un ASCII las coordenadas menos de 1 segundo.

Ejecutas el MVBA, un punto-dato para seleccionar la malla y otro para aceptar y en menos de 1s tienes el ASCII con el mismo nombre del DGN y en la misma carpeta que éste.

Lo puedes descargar desde el portal.

Desde MVBA es complicado tratar este tipo de objetos por la excasa información que hay; por lo que he optado por usar las funciones de MDL dentro del MVBA que si hay bastantes para los mesh.

Prueba y me dices.

Un saludo


Ultima edición por mediocad el Mie Oct 08, 2008 6:58 am; editado 2 veces
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo Visitar sitio web del autor
denarcien



Registrado: 16 Jun 2008
Mensajes: 22
Ubicación: Bolivia

MensajePublicado: Vie Sep 26, 2008 9:57 pm    Título del mensaje: Responder citando

Mediocad: no se como bajar el archivo con los datos que me diste, si no es mucho pedir enviame porfavor el archivo a denarcien@yahoo.com
Gracias de antemano.
_________________
"Errar es humano"... dijo un pato bajándose de una gallina.
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo Visitar sitio web del autor Yahoo Messenger MSN Messenger
denarcien



Registrado: 16 Jun 2008
Mensajes: 22
Ubicación: Bolivia

MensajePublicado: Sab Sep 27, 2008 3:28 pm    Título del mensaje: Maestro!!!! Responder citando

Shocked Question Muy Feliz
Realmente me quedó la boca abierta, te pasaste Mediocad, ya no deberias llamarte MEDIOCAD, deberías llamarte "CAD y MEDIO"!
Ya me hiciste dar ganas de aprender a usar estas funciones mdl, ¿existe algun manual a cerca del tema?.
Te comento que estoy aplicando la capacidad de importar imegenes y superficies del GoogleEarth al MicrostationXM para luego generar topografía y realizar predideños (a gran escala) de carreteras y hasta el momento los resultados son bastante alentadores. Me parece que esa aplicación se va ha hacer muy popular dentro de la consultoria de carreteras.
Te agardezco en gran medida la aplicación, me será de gran utilidad.
_________________
"Errar es humano"... dijo un pato bajándose de una gallina.
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo Visitar sitio web del autor Yahoo Messenger MSN Messenger
mediocad
Gran Maestro
Gran Maestro


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

MensajePublicado: Mie Oct 01, 2008 11:44 am    Título del mensaje: Mdls Responder citando

Hola,

De manuales de MDL casi que te puedes olvidar. Algo he visto pero en inglés y poco. No hay un libro como en MVBA que puedes comprar en Bentley. En el portal tienes dos guías de las funciones.

Me alegro que la aplicación te haya servido de ayuda y que funcione correctamente. Ya sabes que para cualquier otro desarrollo que os pueda ser útil, desarrollamos aplicaciones a medida. Si alguna vez necesitáis algo podéis remitirlo a desarrollos@mediocad.com

Un saludo
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo Visitar sitio web del autor
Mostrar mensajes anteriores:   
Publicar Nuevo Tema   Responder al Tema    Índice del Foro www.mediocad.com -> Macros 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