• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Leggi altro.

Esportazione "automatica" idw to pdf-dxf

callaghan

Utente Junior
Professione: disegnatore
Software: Inventor 2014
Regione: Piemonte (TO)
#62
e lo so... ma mi sembrava impossibile..

P.S. cmq gran cosa sta macro, mi ha risolto un sacco di casini..
quando devo inviare 50 pdf al fornitore sai che noia a crearli uno x uno...
 
Professione: disegnatore
Software: Solidworks
Regione: Veneto
#63
Salve a tutti! Scusate l'intromissione.... Ho letto il post e sono abbastanza interessato all'argomento!
Io devo esportare in pdf un considerevole numero di file idw. L'operazione di stampa utilizzando l'utilità di programmazione operazioni è abbastanza lunga nel senso che, anche utilizzando una stampante pdf con poche impostazioni, ogni file che viene stampato necessita di aver specificato il percorso file, risoluzione e via così... il che ovviamente rende l'operazione ugualmente lunga. Trovo strano che non ci sia la possibilità di esportare automaticamente in pdf, ancor più strano se si pensa che il programma in questione è l'Inventor 2015. Esiste un comando pubblica equivalente a quello dell'Autocad che mi consenta di stampare alla stessa maniera tutti i presenti nella cartella??
Grazie!
 
Professione: disegnatore
Software: Solidworks
Regione: Veneto
#65
Ovviamente devo prendere familiarità con il concetto di macro... cosa di cui non so nulla! Però trovo strano che, visto l'utilizzo diffusissimo del formato pdf, i programmatori non abbiano previsto un sistema integrato di pubblicazione. Come sempre Autodesk ha pecche non da poco... Prendetelo come uno sfogo, ma di certo i programmi in questione non brillano, né per intuitività né per semplicità... Grazie comunque! :finger:
 

Moschitobrigante

Utente poco attivo
Professione: Disegnatore
Software: Inventor e Mechanical 2015
Regione: Veneto
#66
Non sbagli, sono io sbadato e ho perso l'inizio della macro nel copia/incolla :redface:

- - - Aggiornato - - -

... e premo invia risposta prima di aver finito la risposta :redface::redface:
Codice:
Public sub SAVE_IDWGWGPDF
    
    ' Obtain reference to drawing
    Dim oDoc As Document
    Set oDoc = ThisApplication.ActiveDocument
    
    If oDoc.DocumentType <> kDrawingDocumentObject Then
        MsgBox ("Deve essere aperta una tavola")
        Exit Sub
    End If
    
    ' Save the file with dependants
    oDoc.Save2
    
    Dim fn As String
    Dim DWGfn As String
    Dim PDFfn As String
    
    ' Generate the file names
    fn = oDoc.FullFileName
    DWGfn = Strings.Left(fn, Len(fn) - 4) & ".dwg"
    PDFfn = Strings.Left(fn, Len(fn) - 4) & ".pdf"
    
    
    ' Get the DWG translator Add-In.
    Dim DWGAddIn As TranslatorAddIn
    Set DWGAddIn = ThisApplication.ApplicationAddIns.ItemById("{C24E3AC2-122E-11D5-8E91-0010B541CD80}")

    ' Get the DXF translator Add-In.
    Dim DXFAddIn As TranslatorAddIn
    Set DXFAddIn = ThisApplication.ApplicationAddIns.ItemById("{C24E3AC4-122E-11D5-8E91-0010B541CD80}")
    
    ' Get the PDF translator Add-In.
    Dim PDFAddIn As TranslatorAddIn
    Set PDFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")
    
    Dim strIniFile As String
    
    
    ' Common init
    ' Create a Context object
    Dim oContext As TranslationContext
    Set oContext = ThisApplication.TransientObjects.CreateTranslationContext
    oContext.Type = kFileBrowseIOMechanism
      
    ' Create a NameValueMap object
    Dim oOptions As NameValueMap
    Set oOptions = ThisApplication.TransientObjects.CreateNameValueMap

    ' Create a DataMedium object
    Dim oDataMedium As DataMedium
    Set oDataMedium = ThisApplication.TransientObjects.CreateDataMedium

    ' ---------------------------------------------------------------------------
    ' DWG
    ' -------------------------------
    
    ' Check whether the translator has 'SaveCopyAs' options
    If DWGAddIn.HasSaveCopyAsOptions(oDoc, oContext, oOptions) Then
        ' File with exportation options
        strIniFile = "C:\tempDWGOut.ini"
        ' Create the name-value that specifies the ini file to use.
        oOptions.Value("Export_Acad_IniFile") = strIniFile
    End If

    'Set the destination file name
    oDataMedium.filename = DWGfn


    'Publish document.
    Call DWGAddIn.SaveCopyAs(oDoc, oContext, oOptions, oDataMedium)
    
    ' -------------------------------
    ' FINE DWG
    ' ---------------------------------------------------------------------------
  
    
    ' ---------------------------------------------------------------------------
    ' PDF
    ' -------------------------------

    ' Check whether the translator has 'SaveCopyAs' options
    If PDFAddIn.HasSaveCopyAsOptions(oDoc, oContext, oOptions) Then

        ' Options for drawings...

        oOptions.Value("All_Color_AS_Black") = 0

        'oOptions.Value("Remove_Line_Weights") = 0
        'oOptions.Value("Vector_Resolution") = 400
        'oOptions.Value("Sheet_Range") = kPrintAllSheets
        'oOptions.Value("Custom_Begin_Sheet") = 2
        'oOptions.Value("Custom_End_Sheet") = 4
    End If

    'Set the destination file name
    oDataMedium.filename = PDFfn


    'Publish document.
    Call PDFAddIn.SaveCopyAs(oDoc, oContext, oOptions, oDataMedium)
    ' -------------------------------
    ' FINE PDF
    ' ---------------------------------------------------------------------------
End Sub
... Stranissimo, la prima riga della macro non si copia/incolla... ho dovuto scriverla a mano. BOH!
Comunque a me sovrascrive se non lo fa... non saprei perchè!

Sovrascrivi la vecchia macro


Buongiorno a tutti .. volevo sapere se esiste già una macro per il salvataggio di file ipt in dxf da utilizzare in ambiente lamiera (file per taglio laser).. o se si può integrare sulla macro citata??
 

callaghan

Utente Junior
Professione: disegnatore
Software: Inventor 2014
Regione: Piemonte (TO)
#70
fino a lunedì non rientro in ufficio...
comunque dal listato devi solo cancellare quello che c'è tra:
---
DWG
----

........
-----
FINE DWG
------
 

seimess

Utente poco attivo
Professione: barman
Software: inventor
Regione: veneto
#73
Buongiorno...
la macro funziona alla grandissima ed e' utilissima...
una domanda...
avrei bisogno, per esigenze di ufficio, che il dwg sia esportato per autocad 2007...e' fattibile???

Grazie mille!!!
e buon lavoro a tutti!
 

pincopall0

Utente poco attivo
Professione: d
Software: d
Regione: d
#74
Prova questo: ti compare una riga di input, inserisci il percorso della cartella dove vuoi fare il lavoro, apre ed esporta tutti gli idw che contiene: poichè ho buttato giù le cose in fretta fatti delle prove su cartelle copiate, prima, che non si sa mai :biggrin:! Le numerose (= 1) prove che ho fatto funzionavano. NON aggiungere il backSlash a fine percorso al momento dell'input sennò non va.

La macro da lanciare è DirIDW

Fammi sapere


Codice:
Public Sub DirIDW()

    Dim myDir As String
    Dim myName As String
    
    ' Richiede il percorso della cartella
    myDir = InputBox("Inserisci il percorso dei disegni (termina SENZA \)", "Richiesta percorso files")
    

    ' Visualizza i nomi in c:\ che rappresentano directory.
    myName = Dir(myDir & "\*.idw", vbNormal)   ' Recupera la prima voce.
    Debug.Print "Inizio ciclo"
    Dim i As Integer
    Do While myName <> ""    ' Avvia il ciclo.
        Debug.Print i, myDir & "\" & myName
        ExportDirToDWG_PDF (myDir & "\" & myName)
        myName = Dir    ' Legge la voce successiva.
        i = i + 1
    Loop

End Sub


Public Sub ExportDirToDWG_PDF(drawing As String)
    
    ' Obtain reference to drawing
    Dim oDoc As Document
    Set oDoc = ThisApplication.Documents.Open(drawing)
    
    
    Dim fn As String
    Dim DWGfn As String
    Dim PDFfn As String
    
    ' Generate the file names
    fn = oDoc.FullFileName
    DWGfn = Strings.Left(fn, Len(fn) - 4) & ".dwg"
    PDFfn = Strings.Left(fn, Len(fn) - 4) & ".pdf"
    
    
    ' Get the DWG translator Add-In.
    Dim DWGAddIn As TranslatorAddIn
    Set DWGAddIn = ThisApplication.ApplicationAddIns.ItemById("{C24E3AC2-122E-11D5-8E91-0010B541CD80}")

    ' Get the DXF translator Add-In.
    Dim DXFAddIn As TranslatorAddIn
    Set DXFAddIn = ThisApplication.ApplicationAddIns.ItemById("{C24E3AC4-122E-11D5-8E91-0010B541CD80}")
    
    ' Get the PDF translator Add-In.
    Dim PDFAddIn As TranslatorAddIn
    Set PDFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")
    
    Dim strIniFile As String
    
    
    ' Common init
    ' Create a Context object
    Dim oContext As TranslationContext
    Set oContext = ThisApplication.TransientObjects.CreateTranslationContext
    oContext.Type = kFileBrowseIOMechanism
      
    ' Create a NameValueMap object
    Dim oOptions As NameValueMap
    Set oOptions = ThisApplication.TransientObjects.CreateNameValueMap

    ' Create a DataMedium object
    Dim oDataMedium As DataMedium
    Set oDataMedium = ThisApplication.TransientObjects.CreateDataMedium

    ' ---------------------------------------------------------------------------
    ' DWG
    ' -------------------------------
    
    ' Check whether the translator has 'SaveCopyAs' options
    If DWGAddIn.HasSaveCopyAsOptions(oDoc, oContext, oOptions) Then
        ' File with exportation options
        strIniFile = "C:\tempDWGOut.ini"
        ' Create the name-value that specifies the ini file to use.
        oOptions.Value("Export_Acad_IniFile") = strIniFile
    End If

    'Set the destination file name
    oDataMedium.filename = DWGfn


    'Publish document.
    Call DWGAddIn.SaveCopyAs(oDoc, oContext, oOptions, oDataMedium)
    
    ' -------------------------------
    ' FINE DWG
    ' ---------------------------------------------------------------------------
  
    
    ' ---------------------------------------------------------------------------
    ' PDF
    ' -------------------------------

    ' Check whether the translator has 'SaveCopyAs' options
    If PDFAddIn.HasSaveCopyAsOptions(oDoc, oContext, oOptions) Then

        ' Options for drawings...

        oOptions.Value("All_Color_AS_Black") = 0

        'oOptions.Value("Remove_Line_Weights") = 0
        'oOptions.Value("Vector_Resolution") = 400
        'oOptions.Value("Sheet_Range") = kPrintAllSheets
        'oOptions.Value("Custom_Begin_Sheet") = 2
        'oOptions.Value("Custom_End_Sheet") = 4
    End If

    'Set the destination file name
    oDataMedium.filename = PDFfn


    'Publish document.
    Call PDFAddIn.SaveCopyAs(oDoc, oContext, oOptions, oDataMedium)
    ' -------------------------------
    ' FINE PDF
    ' ---------------------------------------------------------------------------
    
    oDoc.Close (True)
End Sub
La macro è perfetta, ti chiedo però se è possibile aggiungere una riga in modo da aprirti una finestra e chiedere dove destinare i file (come per l'apertura).
Grazie