Í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 

Consultar coordenadas elementos

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



Registrado: 12 Ene 2009
Mensajes: 3

MensajePublicado: Mar Ene 13, 2009 4:10 pm    Título del mensaje: Consultar coordenadas elementos Responder citando

Hola, primero de todo saludos a la gente de este foro, me parece un muy buen recurso para la gente que estamos empezando en MS.

Soy un completo novato en esto de MS y estoy intentando crear un fichero (de texto o XML) a traves de MVBA que contenga información basica de todos los elementos que tengo en un fichero DGN. En este fichero tendría que constar, para cada elemento, su nombre, posición, rotacion y escalado.

Como puedo leer esta informacion de los elementos? De momento ya se como recorrer los elementos y crear un fichero de texto, pero solo he encontrado que los elementos tienen la propiedad rango con una posicion minima y una maxima (.Range), que no me sirve de mucho para lo que quiero hacer.

Código:

Sub RecopilaInfo()

    Dim scanCriteria As New ElementScanCriteria
    Dim enumerator As ElementEnumerator
    Dim ele As Element
   
    CadInputQueue.SendCommand "NULL"
   
    scanCriteria.Reset
    scanCriteria.ExcludeNonGraphical

   
    Set enumerator = ActiveModelReference.Scan(scanCriteria)
   

    Open "C:\Test.txt" For Output As #1
   
    Do While enumerator.MoveNext
   
        Set ele = enumerator.Current
       
        Write #1, "Elemento tipo ", ele.Type
        Write #1, ele.Range.Low.X, ele.Range.Low.Y, ele.Range.Low.Z
        Write #1, ele.Range.High.X, ele.Range.High.Y, ele.Range.High.Z
           
    Loop
    Close #1
   
End Sub


Alguien me podria hechar una mano? Gracias.

PD: Ayer pedí permiso para acceder a los manuales de la pagina principal pero aun no me ha llegado la confirmación.
Volver arriba
Ver perfil del usuario Enviar mensaje privado
mediocad
Gran Maestro
Gran Maestro


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

MensajePublicado: Mie Ene 14, 2009 9:34 am    Título del mensaje: Información de elementos Responder citando

Hola,

Bienvenido al foro TVist. Espero que te sirva de ayuda y puedas solucionar tus dudas.

Respecto a tus dudas vamos por partes:

-Nombre: ¿Te refieres al tipo de elemento que es?. Con .Type

-Posición: ¿En coordenadas? ¿Física en el DGN? Tienes .Fileposition que devuelve un Long de la posición de ese elemento en el DGN. Si lo guardas luego puedes recuperar ese elemento. Si por posición te refieres a coordenadas, tienes .GetVertices que devuelve un Array de puntos de los vértices del elemento. Tb. tienes .Origin y .EndPoint

-Rotación: Esto te lo has de currar a mano. No hay función para ello. Aquí te dejo un ejemplo de una función que te calcula el ángulo de rotación de un elemento lineal.

Código:
Function LineAngleGet(oLine As LineElement) As Double
Dim ZAngle As Double
  'Calcula el ángulo
  ZAngle = Atn2((oLine.EndPoint.Y - oLine.StartPoint.Y), oLine.EndPoint.X -  oLine.StartPoint.X)
  LineAngleGet = ZAngle
End Function

-Escalado: Este tema es complicado. Para tipos Cell tienes la propiedad .Scale. Para tipos lineales no existe pero puedes obtener el factor de escala que aplicas a los estilos de línea. Para ello tienes que tirar de MDL mediante las función mdlElement_getLineStyle que la implementarás en MVBA de la siguiente forma:

Código:
Private Declare Function mdlElement_getLineStyle Lib "stdmdlbltin.dll" (ByVal styleNameP As String, ByRef paramsP As MdlStyleParam, ByVal elementP As Long, ByVal modelRef As Long, ByVal lsIndex As Long) As Long

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



Registrado: 12 Ene 2009
Mensajes: 3

MensajePublicado: Mie Ene 14, 2009 10:38 am    Título del mensaje: Responder citando

Hola mediocad, gracias por la respuesta.

Veo que en Microstation los elementos tienen distintas propiedades según el caso, tendré que replantearme la forma en que quiero consultar la información del fichero.

Me podéis mandar la confirmación para poder bajar los manuales de la pagina principal?

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: Mie Ene 14, 2009 1:25 pm    Título del mensaje: Propiedades Responder citando

Hola,

Efectivamente, según el tipo de elemento tendrá unas propiedades u otras. La mayoría son comunes, pero por ejemplo a una línea no le podrás pedir una superficie.

Si he visto tu solicitud de alta pero la proceso en casa y ando un poco liado. Envíame un correo a josealh@mediocad.com antes de las 17:00 con el user y password y te doy de alta.

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



Registrado: 12 Ene 2009
Mensajes: 3

MensajePublicado: Mie Ene 14, 2009 1:41 pm    Título del mensaje: Responder citando

OK, el correo esta en camino.
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