Í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 

Consulta> Inserta Texto.mvba

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



Registrado: 20 Oct 2008
Mensajes: 4

MensajePublicado: Mar Oct 21, 2008 1:10 pm    Título del mensaje: Consulta> Inserta Texto.mvba Responder citando

Hola a todos

Muy bueno el foro, en mi trabajo tengo que insertar texto desde un excel a planos dgn, y en la seccion de descarga hay un programa que lo probe y funciona "Inserta Texto.mvba", pero deseo adaptarlo a mis necesidades, alguien tiene la clave de esa aplicación , ya que el codigo esta protegido....

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: Mar Oct 21, 2008 2:00 pm    Título del mensaje: Clave Responder citando

Hola,

Soy uno de los administradores del foro y del portal y también quien desarrolló esa aplicación como la mayoría que hay.

Siento decirte que las claves de los programas protegidos no se proporcionan a nadie. Hay varias aplicaciones de acceso libre al código para que podáis ver como se programa.

granrooster, piensa que esas aplicaciones han requerido un tiempo para hacerlas, que se hacen de manera altruista, sin requerimiento alguno hacia quien la usa y son bastante personalizadas. Si dejásemos el código libre, habría personas que se aprovecharían de quien desarrolla los programas y poder venderlos como propios por ser tan personalizados como dije antes. Cualquiera de nosotros te ayudará en las consultas que desees hacer para realizar el programa que tu quieras.

De todos modos y hablando de la aplicación, decirte que en su día se amplió el programa y que además de insertar el texto en XY lo pudiese hacer en Z para 3D, poder seleccionar una serie de atributos para el texto, otros para el elemento puntual o célula y poder importar los datos tanto de un fichero Access, ASCII o un Excel (ver imagen).



Esto está casi desarrollado, pero por falta de tiempo se ha ido dejando y ahí está. Alguna vez se terminará. Alegre

Por otro lado, que sepas que aquí desarrollamos aplicaciones a medida y si necesitas un programa puedes ponerte en contacto con desarrollos@mediocad.com. Seguro que te ayudarán y te harán un buen precio. También cabe la posibilidad de comprar el código del programa Inserta Texto.mvba.

PDT.: Si tienes los datos en un Excel importa desde Access ese Excel y ya tienes los datos para utilizar el programa ¿no?

Un saludo


Ultima edición por mediocad el Jue Oct 23, 2008 11:21 am; editado 1 vez
Volver arriba
Ver perfil del usuario Enviar mensaje privado Enviar correo Visitar sitio web del autor
granrooster



Registrado: 20 Oct 2008
Mensajes: 4

MensajePublicado: Mar Oct 21, 2008 2:33 pm    Título del mensaje: Responder citando

Sip, tienes toda la razón. Pense que alguien tenia la Clave por si acaso.. Laughing

Explorando en el foro logre fucionar unos codigos abiertos, y hacer una simple prueba, abrir un excel copiar una celda y pegar el contedio en una ubicacion especifica en el plano.

Pero me di cuenta, de que lo que necesito para mi aplicacion es hacerlo al reves, o sea, con una macros desde el excel abrir un dgn e insertar la información como texto y guardar el dgn, en forma repetiva ya que son muchos planos.

No se si tendrás a la mano por ahi el codigo para abrir y cerrar un dgn desde VB.

Y muy buena la página

Código:
Sub pruebaexcel()

Set xlsApp = CreateObject("Excel.application")
'Set xlsWb = CreateObject("Workbook")
'Set xlsSht = CreateObject("Worksheet")
'Dim xlsApp        As Excel.Application     ' Declara la variable para mantener la referencia.
'Dim xlsWb         As Workbook 'Libro excel
'Dim xlsSht        As Worksheet 'Hoja Excel

  'Set xlsApp = New Excel.Application
  xlsApp.Visible = True 'False=No vemos como se abre el fichero
  strExcel = "C:\pm.xls"
  xlsApp.DisplayAlerts = False 'No salen mensajes
  Set xlsWb = xlsApp.Workbooks.Open(strExcel) 'strExcel es un string donde está guardado el Excel y su path
  Set xlsSht = xlsWb.Worksheets(1) '1: abre la primera hoja 1
 
  'para leer una celda de esa hoja
  Dim strDato As String
  strDato = xlsSht.Cells(1, 1) 'lee celda 1,1
  MsgBox strDato 'muestra el contenido de la celda
 
  'Cerramos la conexión con Excel
  xlsWb.Save
  If Not xlsWb Is Nothing Then xlsWb.Close
  Set xlsWb = Nothing
  xlsApp.Quit
  Set xlsApp = Nothing
 
 
 
  Dim punto As Point3d
    Dim texto As TextElement
   
    punto.X = -4087639
    punto.Y = -1170160
    punto.Z = 1.3
   
    Set texto = Application.CreateTextElement1(Nothing, strDato, punto, Matrix3dIdentity)
    Application.ActiveModelReference.AddElement texto
    texto.TextStyle.Width = 100
    texto.TextStyle.Height = 100
    texto.LineWeight = 1
    texto.Redraw
    texto.Rewrite
   
   
End Sub

[/code]
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 Oct 22, 2008 8:09 am    Título del mensaje: Abrir y cerrar DGN desde VB Responder citando

Hola,

Para hacer lo que pretendes has de referenciar primero la DLL de MS que es el propio fichero ustation.exe. Hecho esto puedes abrir y cerrar un DGN de distintas formas.

Aquí puedes ver como abrir un fichero y salvarlo con otro nombre. Si deseas guardarlo en el mismo DGN en vez del método .SaveAs utiliza .Save:

Código:
Application.OpenDesignFile "c:\temp\mediocad.dgn", False, msdV7ActionWorkmode    'Abro Micro y el fichero seleccionado

Application.ActiveDesignFile.SaveAs "c:\temp\Nuevomediocad.dgn", True, msdDesignFileFormatV8 'Guardo como V8

A través del objeto Connector:

Código:
Public oAL                As ApplicationObjectConnector       
Public Formato            As MicroStationDGN.Application 

  Set oAL = New ApplicationObjectConnector
  Set Formato = oAL.Application
  Formato.Visible = False 'no se abre la sesión de MS
  Formato.OpenDesignFile "c:\temp\mediocad.dgn"

   ************ cuando vayas a salir de MS ************
  oAL.Application.Quit 'cierra microstation
  Set Application = Nothing

Te recomiendo la segunda forma. Espero que te sirva de ayuda y bienvenido al portal.

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



Registrado: 20 Oct 2008
Mensajes: 4

MensajePublicado: Mie Oct 22, 2008 1:47 pm    Título del mensaje: Responder citando

Gracias por tu ayuda Mediocad... te cuento un poco


Ayer trabajando habia hecho algo parecido a lo que expones en el metedo 1, pero parece que es algo inestable la conexión, ya que al abrir los dgn y en el proceso de modificación se pierde la conexión y aparece un error "The remote server machine does not exist or is unavalible" pero sucede de 10 veces que ejecuto el programa ocurre 3, no sé si sera problema con la red donde trabajo, ya que no trabajo en el disco duro del pc, sino en Red.

Finalmente, estoy usando el siguiente codigo para poner el texto que yo deseo en la pocision designada xyz, desde las celdas de excel.
Pero como se ve cree un "For" para repetir el procedimiento, y poner todos los textos que necesito.


Código:
 Dim punto As MicroStationDGN.Point3d
          Dim texto As MicroStationDGN.TextElement
       
       
For i = 1 To 5
    itag = Cells(11, i)
    If itag = "" Then GoTo 2
    punto.X = Cells(3, i)
    punto.Y = Cells(4, i)
    punto.Z = 1.3
     
    Set texto = MCV8.CreateTextElement1(Nothing, itag, punto, Matrix3dIdentity)
    MCV8.ActiveModelReference.AddElement texto
    texto.TextStyle.Width = 0.071
    texto.TextStyle.Height = 0.079
    texto.LineWeight = 0
    texto.Redraw
    texto.Rewrite

2
Next i


Pero a mi me gustaria algo distinto, por ejemplo en el dgn patron poner palabras claves , ejemplo "Clave.nombreplano", entonces a través del programa buscar la palabra clave "Clave.nombreplano" y reemplazarla por el nombre de plano correspondiente. Y no depender de las coordenadas como la situación actual.

He visto por el foro que hay programa que busca texto node y lo cambia por texto, voy a ver si se puede utilizar esa mecanica para buscar el texto y después reemplazarlo por lo que deseo. no sé si es lo mismo, si hay alguien que sepa hacer lo que deseo , que me de una mano..please


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 Oct 22, 2008 2:41 pm    Título del mensaje: Código Responder citando

Mira a ver si te sirve esto:

Código:
Sub EncuentraTexto(strTextoBusca As String, strTextoSustituir As String)
Dim oScanCriteria       As ElementScanCriteria
Dim oScanEnumerator     As ElementEnumerator 'Colección de elementos
Dim oElement            As Element 'Elemento encontrado
Dim textEncontrado      As TextElement

  Set oScanCriteria = New ElementScanCriteria
  oScanCriteria.ExcludeAllTypes
  oScanCriteria.IncludeType msdElementTypeText
   
  Set oScanEnumerator = ActiveModelReference.Scan(oScanCriteria)
  Do While oScanEnumerator.MoveNext
    Set oElement = oScanEnumerator.Current
    Set textEncontrado = oElement.AsTextElement

    If textEncontrado.Text=strTextoBusca
      With textEncontrado
         .Redraw msdDrawingModeErase
         .Text = strTextoSustituir
         .Color = 241
         .Level = oLevel
         .Rewrite
         .Redraw msdDrawingModeNormal
       End With
     End If

  Loop   
End Sub


Es un procedimiento donde le pasas el texto a buscar (strTextoBusca) y el texto a sustituir (strTextoSustituir). El texto a buscar sería tu Clave.nombreplano y a sustituir el que recoges del Excel.

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



Registrado: 20 Oct 2008
Mensajes: 4

MensajePublicado: Mie Oct 22, 2008 3:32 pm    Título del mensaje: Responder citando

Grande compañero Grande....

Deje corriendo el programa para unos 50 planos .... jaajja

Gracias
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