Saltar al contenido

Comentar Imagen

Foto

Abrir ventana para seleccionar ruta (Common Dialog)


  • Please log in to reply
7 Respuesta(s) a este Tema

#1
Atan

Atan

    Principiante en AuxCAD

  • Miembros
  • 4 Mensajes
  • Auxis: 0
    • Pais: Country Flag

    Hola a todos!

     

    Aunque ya hace tiempo que sigo esta web, este será mi primer post. No consigo solucionarlo y ya no sé por donde más buscar.

     

    No me parece algo muy dificil pero no conozco la operación o no la escribo correctamente.

     

    Mi intención es crear un PDF partiendo de un Drawing de Catia. Eso lo he conseguido sin problemas. La macro está echa con el VBA Incorporado en Catia.

     

    Abre un cuadro, escribes tú la ruta exacta y la macro crea el PDF exactamente en esa ubicación.

     

    El problema viene al intentar mejorar la macro. Quiero que salga una ventana para poder escoger la ubicación, no tener que escribirla a mano (de la misma manera que la ventana que aparece cuando quieres hacer un "Save As").

     

    Buscando por la red he encontrado la opción "Common Dialog". La he activado (con Ctrl+T aparece una ventana para añadir opciones y he añadido "Microsft Common Dialogs") pero no consigo hacerla funcionar... Alguien me puede ayudar???

     

     

     

    --------------------------------------------------------------

    Sub CATMain()

    Dim drawingDocument1 As Document
    Set drawingDocument1 = CATIA.ActiveDocument

    Dim drawingSheets1 As DrawingSheets
    Set drawingSheets1 = drawingDocument1.Sheets

    Dim drawingSheet1 As DrawingSheet
    Set drawingSheet1 = drawingSheets1.ActiveSheet

    Dim Ruta As String
    Ruta = InputBox("Inserta la ruta donde guardar el PDF", , "Ruta")

    drawingDocument1.ExportData Ruta _
    & "\" & Left(CATIA.ActiveDocument.Name, Len(CATIA.ActiveDocument.Name) - 11), "pdf"

    MsgBox "PDF has been created", 64, "Save As PDF"

    End Sub
     

    -----------------------------------------------------


    • 0

    #2
    ferdo

    ferdo

      Experto en AuxCAD

    • Miembros
    • 215 Mensajes
  • Auxis: 104
    • Pais: Country Flag

    Hola,

     

    Codigo en CATScript, pero en catvba es misma

    Language="VBSCRIPT"
    
    Sub CATMain()
    
    Dim File, Folder, FileCollection
    Dim fso, ff As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ff = CreateObject("Shell.Application"). _
    BrowseForFolder(0, "Please select a folder", 0, "C:\\Temp")
    Dim tmpStr, strLine As String
    If Not ff Is Nothing Then
    GetFolder = ff.Items.Item.Path
    Else
    GetFolder = vbNullString
    End If
    
    If GetFolder = "" Then 
    Exit Sub 
    End If 
    
    Set Folder = fso.GetFolder(GetFolder)
    
    
    As Document Dim drawingDocument1
    September drawingDocument1 = CATIA.ActiveDocument
    
    Dim drawingSheets1 As DrawingSheets
    Set drawingSheets1 = drawingDocument1.Sheets
    
    Dim drawingSheet1 As DrawingSheet
    Set drawingSheet1 = drawingSheets1.ActiveSheet
    
    drawingDocument1.ExportData _
    Folder & "\" & Left ( CATIA.ActiveDocument.Name , Len ( CATIA.ActiveDocument.Name ) - 11), "pdf"
    
    MsgBox "PDF has-been created", 64, "Save As PDF"
    
    End Sub 
    

    • 1
    Un saludo cordial
    Fernando

    sites visited in RO
    sites visited in EU

    #3
    ferdo

    ferdo

      Experto en AuxCAD

    • Miembros
    • 215 Mensajes
  • Auxis: 104
    • Pais: Country Flag

    Esta es una versión más correcto

    Language="VBSCRIPT"
    
    Sub CATMain()
    
    Const WINDOW_HANDLE = 0
    Const NO_OPTIONS = 0
    Set objShell = CreateObject("Shell.Application") 
    Set objFolder = objShell.BrowseForFolder _
     (WINDOW_HANDLE, "Select a folder:", NO_OPTIONS, "C:\") 
    Set objFolderItem = objFolder.Self 
    objPath = objFolderItem.Path
    
    As Document Dim drawingDocument1
    Set drawingDocument1 = CATIA.ActiveDocument
    
    Dim drawingSheets1 As DrawingSheets
    Set drawingSheets1 = drawingDocument1.Sheets
    
    Dim drawingSheet1 As DrawingSheet
    Set drawingSheet1 = drawingSheets1.ActiveSheet
    
    drawingDocument1.ExportData _
    objPath & "\" & Left ( CATIA.ActiveDocument.Name , Len ( CATIA.ActiveDocument.Name ) - 11), "pdf"
    
    MsgBox "PDF has-been created", 64, "Save As PDF"
    
    End Sub 
    

    • 1
    Un saludo cordial
    Fernando

    sites visited in RO
    sites visited in EU

    #4
    Atan

    Atan

      Principiante en AuxCAD

    • Miembros
    • 4 Mensajes
  • Auxis: 0
    • Pais: Country Flag

    Eres un artista ferdo!!

     

    He probado tu código y hace exactamente lo que quería. Sin embargo, continúo preguntando a ver si se puede mejorar (más bien es para seguir aprendiendo yo... jejeje).

     

    Se me ocurren una duda y dos preguntas:

     

    1 - En la línea que indicas ----- Set objFolder = objShell.BrowseForFolder (WINDOW_HANDLE, "Select a folder:", NO_OPTIONS, "C:\") ----, que quiere decir la parte "NO_OPTIONS"??? Que otras opciones hay??

     

    Aunque esta macro haría exactamente lo que quiero me gusta más el aspecto de la ventana que me ofrece la opción : ------- strFilePath = CATIA.FileSelectionBox("Save As", "*.pdf", CatFileSelectionModeSave) -------

    Esto es por dos motivos:

     

    2 - En la ventana de tu macro no puedo cambiarle el nombre sino que automáticamente se graba con el nombre del archivo. Esta la opción de que automáticamente me marque el nombre del archivo pero me de la opción a cambiarlo si quiero??

     

    3 - En la ventana de tu macro solo puedo seleccionar las carpetas dentro de la unidad C:/, no puedo ir hacia arriba. El problema me lo encuentro por ejemplo en que si yo le pongo de ruta previa "C:/archivos de programa", puedo seleccionar las carpetas de dentro pero no puedo subir (en ese caso, no podría guardar el archivo en C:/).

     

     

    No se si me he explicado bien...


    • 0

    #5
    ferdo

    ferdo

      Experto en AuxCAD

    • Miembros
    • 215 Mensajes
  • Auxis: 104
    • Pais: Country Flag

    Hola,

     

    Con opciones...espero que esto es claro.

    Language="VBSCRIPT"
    Sub CATMain()
    Const WINDOW_HANDLE = 0
    Const NO_OPTIONS = 0
    Set objShell = CreateObject("Shell.Application") 
    '~ Set objFolder = objShell.BrowseForFolder _
     '~ (WINDOW_HANDLE, "Select a folder:", NO_OPTIONS, "C:\")  
     Set objFolder = objShell.BrowseForFolder _
     (WINDOW_HANDLE, "Select folder to Save File:", OPTIONS, strPath) 
         If objFolder Is Nothing Then
          Exit Sub 
         End If 
    Set objFolderItem = objFolder.Self 
    objPath = objFolderItem.Path
    As Document Dim drawingDocument1
    Set drawingDocument1 = CATIA.ActiveDocument
    Dim drawingSheets1 As DrawingSheets
    Set drawingSheets1 = drawingDocument1.Sheets
    Dim drawingSheet1 As DrawingSheet
    Set drawingSheet1 = drawingSheets1.ActiveSheet
    drawingDocument1.ExportData _
    objPath & "\" & Left ( CATIA.ActiveDocument.Name , Len ( CATIA.ActiveDocument.Name ) - 11), "pdf"
    MsgBox "PDF has-been created", 64, "Save As PDF"
    End Sub 
    

    • 0
    Un saludo cordial
    Fernando

    sites visited in RO
    sites visited in EU

    #6
    ferdo

    ferdo

      Experto en AuxCAD

    • Miembros
    • 215 Mensajes
  • Auxis: 104
    • Pais: Country Flag

    Pero....

    Sub CATMain()
    CATIA.StartCommand "Save As..."
    End Sub
    

    • 0
    Un saludo cordial
    Fernando

    sites visited in RO
    sites visited in EU

    #7
    ferdo

    ferdo

      Experto en AuxCAD

    • Miembros
    • 215 Mensajes
  • Auxis: 104
    • Pais: Country Flag

    Y un otra

    Sub CATMain ()
    
       Dim DataFile As CATBSTR
       DataFile = CATIA.FileSelectionBox ("SaveAs", "*.pdf", CATFileSelectionModeSave)
       If DataFile <> "" Then CATIA.ActiveDocument.SaveAs DataFile
    
    End Sub
    

    • 0
    Un saludo cordial
    Fernando

    sites visited in RO
    sites visited in EU

    #8
    Atan

    Atan

      Principiante en AuxCAD

    • Miembros
    • 4 Mensajes
  • Auxis: 0
    • Pais: Country Flag

    Gracias ferdo!

     

    Problema resuelto!!!


    • 0




    0 Usuario(s) están leyendo este Tema

    0 miembro(s), 0 invitado(s), 0 usuario(s) anónimo(s)