Í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 

Ángulo de rotación

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



Registrado: 07 Mar 2008
Mensajes: 4

MensajePublicado: Lun Sep 01, 2008 8:43 am    Título del mensaje: Ángulo de rotación Responder citando

Buenas.

A partir de ficheros en formato dgn, he realizado una macro para pasar los datos de las geometrías a una base de datos oracle.

El problema que tengo es con el cálculo del angulo de rotación en las geometrías tipo arco. He consultado en diferentes foros y se comentaba que en mdl hay instrucciones que realizan directamente dicha operación, pero mi macro está realizada en microstation basic, por lo que necesito programar el algoritmo.

Alguna sugerencia?

Gracias.
Volver arriba
Ver perfil del usuario Enviar mensaje privado
Urq
Aficionado
Aficionado


Registrado: 12 Jun 2005
Mensajes: 176
Ubicación: Madrid

MensajePublicado: Lun Sep 01, 2008 9:05 am    Título del mensaje: Responder citando

Hola,

he movido el tema al foro de macros...

A qué te refieres con el ángulo de rotación de las geometrías tipo arco? Al elemento tipo 16 de MicroStation, ó al segmento definido entre dos nodos de un GIS?

Saludos
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo
Esteban



Registrado: 07 Mar 2008
Mensajes: 4

MensajePublicado: Lun Sep 01, 2008 9:19 am    Título del mensaje: Responder citando

Buenas.

Si, me refiero al tipo 16 de microstation.

En basic microstation utilizo la instrucción inElem.getRotation (rotMatrix), para recuperar la matriz para determinar el ángulo de rotación, pero no doy con él.

Saludos.
Volver arriba
Ver perfil del usuario Enviar mensaje privado
Urq
Aficionado
Aficionado


Registrado: 12 Jun 2005
Mensajes: 176
Ubicación: Madrid

MensajePublicado: Lun Sep 01, 2008 10:48 am    Título del mensaje: Responder citando

Hola de nuevo,

la instrucción MbeElement.getRotation(rotMatrix) devuelve una matriz cuadrada de dimensión 2 ó 3, en función de que estés trabajando en 2D ó 3D. En 2D, la matriz tiene de componentes:

(cos@ -sin@)
(sin@ cos@)

En 3D, la matriz respecto al eje Z es:

(cos@ -sin@ 0)
(sin@ cos@ 0)
(0 0 1)

siendo @ el ángulo de rotación en radianes.

En función de los senos y cosenos podrás obtener el ángulo de rotación del elemento.

Un saludo, espero que sea esto lo que preguntas.
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo
Esteban



Registrado: 07 Mar 2008
Mensajes: 4

MensajePublicado: Lun Sep 01, 2008 11:03 am    Título del mensaje: Responder citando

Buenas y muchas gracias.

El tema es que ya había llegado hasta donde me dices, pero la cuestión es que para calcular el valor del angulo, necesito calcular el valor de la matriz, es decir, si resuelvo la matriz me queda

cos@cos@ + sen@sen@ = ?

y como desconozco el valor al que tengo que igualar la matriz, no puedo calcular el angulo

Saludos.
Volver arriba
Ver perfil del usuario Enviar mensaje privado
Urq
Aficionado
Aficionado


Registrado: 12 Jun 2005
Mensajes: 176
Ubicación: Madrid

MensajePublicado: Lun Sep 01, 2008 11:53 am    Título del mensaje: Responder citando

El valor al que lo tienes que igualar es a 1...

La ecuación cumple que cos@cos@+sin@sin@=1, pero aún así, cómo piensas despejar @?

Un saludo
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo
Esteban



Registrado: 07 Mar 2008
Mensajes: 4

MensajePublicado: Lun Sep 01, 2008 1:27 pm    Título del mensaje: Responder citando

Buenas.

Pues lo que pasa a veces, cuando la solución la tienes delante y no la ves, montas un berenjenal descomunal.

Estaba confundio, no hace falta calcular la matrix, ya que lo que necesito son simplemente los valores de la matrix, es decir, con inElem.getRotation (rotMatrix) obtengo una matriz de valores siendo rotMatrix(1,1) el cos@ y rotMatrix(1,2) el sen@. A partir de prueba y error calculo @ y teniendo en cuenta el signo de rotMatrix(1,1) y rotMatrix(1,2) determino el signo de @.


Gracias.
Volver arriba
Ver perfil del usuario Enviar mensaje privado
Urq
Aficionado
Aficionado


Registrado: 12 Jun 2005
Mensajes: 176
Ubicación: Madrid

MensajePublicado: Lun Sep 01, 2008 1:37 pm    Título del mensaje: Responder citando

Efectivamente,

lo que has deducido se cumple perfectamente...

Un saludo
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo
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