Í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 Grupos Graficos

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



Registrado: 12 Nov 2008
Mensajes: 3

MensajePublicado: Jue Nov 13, 2008 10:02 pm    Título del mensaje: Borrar Grupos Graficos Responder citando

Hola.Me gustaria saber como puedo hacer una macro que me borre varios grupos graficos a la vez en Microstation SE ó V8

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 Nov 14, 2008 12:30 pm    Título del mensaje: Conocimientos Responder citando

Hola,

¿Tienes conocimientos de programación en MS?

Lo que no entiendo es lo que quieres hacer realmente. ¿Borrar los elementos que tienen un determinado GG o quitar el GG de unos elementos y ponerle 0?

Si es borrar los elementos puedes seguir el siguiente post:

http://mediocad.com/phpBB2/viewtopic.php?t=1368

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



Registrado: 12 Nov 2008
Mensajes: 3

MensajePublicado: Vie Nov 14, 2008 6:44 pm    Título del mensaje: Responder citando

Gracias Mediocad, lo que que me gustaria es saber si se puede hacer una MACRO y ponerle que borre varios grupos graficos a la vez.Por que con el bloqueo de grupo grafico hay que ir haciendo uno por uno y con cuidado de no equivocarte y borrar algo que no debes, aparte de acordarte despues de desactivarlo.
Se manejar algo Micro y he creado algunas Macros para que me realice algunas tareas, cambios de Nivel, Stylo grasor etc. pero no GG

Saludos
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 Nov 17, 2008 3:04 pm    Título del mensaje: Visual Basic Responder citando

Hola,

Lo que te voy a comentar es para hacerlo en MVBA. Yo de macros estoy pez, pero si sabes Visual Basic podrás implementarlo sin problema. De todos modos si tienes algún problema lo vamos solventando.

Debes crearte un proyecto y en el módulo que se abre por defecto pegar el siguiente código:

Código:
Sub BorraGG(lngGG As Long)

Dim ScanCriteria      As New ElementScanCriteria
Dim oScanEnumerator   As ElementEnumerator
Dim oElement          As Element

On Err GoTo errorGG

  ScanCriteria.ExcludeNonGraphical 'excluye elementos no gráficos
  ScanCriteria.IncludeOnlyGraphicGroup lngGG 'busca sólo los del GG pasados al Sub
 
  ActiveModelReference.UnselectAllElements 'quita selección a cualquier elemento del diseño
 
  Set oScanEnumerator = Application.ActiveModelReference.Scan(ScanCriteria) 'realiza el escaneo
 
  oScanEnumerator.Reset 'resetea
 
 Do While oScanEnumerator.MoveNext 'recorre la colección
    Set oElement = oScanEnumerator.Current 'toma el activo en el recorrido de elementos encontrados
    ActiveModelReference.SelectElement oElement 'selecciónalo
    oElement.Redraw msdDrawingModeHilite 'resáltalo
'    ActiveModelReference.RemoveElement oElement 'bórralo
 Loop
 
  CadInputQueue.SendCommand "delete element"
   
errorGG:

'MsgBox Err.Description
'MsgBox Err.Number
 
End Sub


Como verás, es un procedimiento al que le pasas un Long que es el número de GG donde vas a buscar. En el criterio que ponemos sólo buscas elementos con ese GG por lo que es imposible que seleccione otros.

Dos cosas a tener en cuenta:

- Puedes borrar elemento a elemento habilitando la línea
Código:
ActiveModelReference.RemoveElement oElement 'bórralo

o dejando que corra el While y cuando haya seleccionado todos poner:

Código:
CadInputQueue.SendCommand "delete element"

dentro del Sub() tal como está ahí o al final de la búsqueda de todos, para que veas tú que ha seleccionado los elementos y después borrarlos con ese comando (te borrar todo lo que tengas seleccionado que serán tus GG).

La parte que te toca es pasarle al Sub() lo GG que deseas encontrar y borrar. Puedes crear un TextBox donde pases lo GG separados por "," y en tu programa separarlos (con Split()) y en un bucle ir llamando al Sub() pasándole cada uno. O un mostrar los GG que haya en un DGN en un ListBox y que puedas ir seleccionando los que quieras borrar para que cuando pulses un botón pasarle al Sub() cada uno de ellos. A tu gusto.

Si tienes alguna duda lo vamos viendo.

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



Registrado: 12 Nov 2008
Mensajes: 3

MensajePublicado: Lun Nov 17, 2008 6:45 pm    Título del mensaje: Responder citando

Gracias por responder tan rapido, pero la verdad es que no tengo ni idea de programar en Visual Basic, lo unico que he realizado han sido Macros utilizando las herramientas de micro, para en vez de utilizar varias utilidades de una en una, crear una macro para que las hiciera seguidas.pero siempre con utilidades de micro que estan en las distintas paletas y no he logardo encontrar ni en la ayuda nada de seleccionar por GG.Por eso mi pregunta de si alguien sabia como hacerlo.

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