Í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 

Borrar DgnCache

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


Registrado: 12 Ago 2008
Mensajes: 76

MensajePublicado: Jue Feb 16, 2012 2:17 pm    Título del mensaje: Borrar DgnCache Responder citando

Hola,

Tengo un programa en MVBA que guarda todos los elementos almacenados en una BD Oracle Spatial en un fichero DGN. Al hacer el ActiveModelreference.AddElement de cada elemento, guarda también el elemento en caché. Como son muchos elementos, el programa consume mucha memoria.
Me gustaría saber si es posible eliminar los elementos de la caché o hacer que no se guarden en ella.
Según la documentación de MDL:

MicroStation reads Models from external files (e.g. V8 DGN files, V7 dgn files, or DWG files) into memory to work with them. The internal object created by MicroStation to hold a Model in memory is called a DgnCache. Every loaded Model is held in a DgnCache and every DgnCache holds one and only one Model. For this reason, the terms "Model" and "DgnCache" are often used interchangeably. [N.B. The only distinction between Models and DgnCaches is that some Models of a file may not be loaded into memory, and therefore there is no DgnCache for them.]

¿Cuáles son esos Models que pueden no ser cargados en memoria y cómo hacer que no se carguen en memoria?

Muchas gracias.

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: Vie Feb 17, 2012 8:39 am    Título del mensaje: Cache Responder citando

Hola, No es algo que haya tratado pero, ¿quieres hacerlo por código?
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo Visitar sitio web del autor
vicmon
Entusiasta
Entusiasta


Registrado: 12 Ago 2008
Mensajes: 76

MensajePublicado: Vie Feb 17, 2012 9:08 am    Título del mensaje: Responder citando

Hola,

Me da igual hacerlo por alguna opción de configuración de MicroStation o por código, ya sea MVBA o MDL.

Estoy probando a guardar los elementos en un fichero vinculado en lugar de en el fichero actual, abriendo el fichero vinculado como un WorkDgn con las instrucciones de MDL mdlWorkDgn_openFile, mdlWorkDgn_write y mdlWorkDgn_closeFile, a ver si de esta forma no crea la caché y, por lo tanto, no consume tanta memoria.
Al escribir en el WorkDgn lo escribe en memoria, pero al cerrarlo se supone que vacia la memoria.

Lo pruebo y te cuento.

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: Vie Feb 17, 2012 11:32 am    Título del mensaje: Comprimir diseño Responder citando

¿Has probado a comprimir el diseño? ¿Qué tamaño tiene el DGN antes y después de vincular los elementos?

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


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

MensajePublicado: Mar Feb 21, 2012 11:14 am    Título del mensaje: mscache Responder citando

¿Qué pasó al final?
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo Visitar sitio web del autor
vicmon
Entusiasta
Entusiasta


Registrado: 12 Ago 2008
Mensajes: 76

MensajePublicado: Mar Feb 21, 2012 12:28 pm    Título del mensaje: Responder citando

Hola,

Al comprimir el diseño no se reduce apenas tamaño.
El problema estaba en que aparte de consumir mucha memoria, cuando acababa el proceso hacía la escritura de todos los elementos en disco y eso hacía que el programa en un PC de 4Gb o menos abortara.
Aunque pusiera la instrucción ActiveDesignFile.Save después de ActiveDesignFile.AddElement elemento, seguía haciendo la escritura masiva al acabar.

Al final he sustituido la instrucción

Código:

ActiveDesignFile.AddElement elemento


por

Código:

elemDescrPP = elemento.MdlElementDescrP
pModelRef = ActiveDesignFile.MdlModelRefP
mdlWorkDgn_write elemDescrPP, -1, pModelRef


y al final del proceso

Código:

mdlWorkDgn_saveChanges pModelRef


Con esto no ahorra en memoria, pero por lo menos el programa aparentemente graba los cambios en el fichero con cada elemento y al final el programa no aborta.

Un saludo.
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