Esportare tavola in pdf in automatico

Filo

Utente Standard
Professione: Perditempo
Software: Inventor2015 ANSYS Fluent Gambit SolidWorks Algor
Regione: Veneto
#21
Molto interessante, adesso apro il file con il codice VB e studio un po'

Oppure se hai un assieme aperto puoi usare l'esempio che c'è nell'help API di Inventor e fare una scansione ricorsiva di tutti i documenti, controllare se esiste la tavola associata, aprirla, esportarla, ecc. ecc.

Ne ho una pronta, devo risistemarla e se hai pazienza la posto...
Ciao!
Questa soluzione non è il massimo per le mie esigenze...

Altre soluzioni che ho trovato sono:

- usare "Utilità di pianificazione" e pianificare una stampa sfruttando una stampante pdf clicca qui(però personalmente non mi piace molto)
- programmi a pagamento per lanciare in automatico lo script vb presente nei vari file (non metto il link perché è un sito commericiale)
- questo bellissimo programma (www.autohotkey.com) free ed opensource molto completo che ti permette di fare molte cose ma che necessita anche di un po' di studio

Ciao
 

Nosf3r

Utente Junior
Professione: Disegnatore/Progettista
Software: Inventor - AutoCAD Mechanical - Vault - SolidWorks
Regione: Piemonte (CN)
#22
BIRRA, non riconoscenza, grazie :tongue:
Se il tutorial :mixed: per l'inserimento delle macro non è abbastanza chiaro arrangiate... ehm, fatemi sapere che provo a miglioralo :wink:

Codice:
Public Sub PubblicaPDF()
    
    ' 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
    
    
    Dim oDrw As DrawingDocument
    Set oDrw = oDoc
    
    ' Get the PDF translator Add-In.
    Dim PDFAddIn As TranslatorAddIn
    Set PDFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")


    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

    ' Check whether the translator has 'SaveCopyAs' options
    If PDFAddIn.HasSaveCopyAsOptions(oDrw, 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
    Dim fn As String
    fn = oDrw.FullFileName
    fn = Strings.Left(fn, Len(fn) - 4) & ".pdf"

    oDataMedium.FileName = fn

    'Publish document.
    Call PDFAddIn.SaveCopyAs(oDrw, oContext, oOptions, oDataMedium)
End Sub

Public Sub PubblicaDWG()
    
    ' 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
    
    
    Dim oDrw As DrawingDocument
    Set oDrw = oDoc
    ' Get the DWG translator Add-In.
    Dim DWGAddIn As TranslatorAddIn
    Set DWGAddIn = ThisApplication.ApplicationAddIns.ItemById("{C24E3AC2-122E-11D5-8E91-0010B541CD80}")


    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

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

        Dim strIniFile As String
        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
    Dim fn As String
    fn = oDrw.FullFileName
    fn = Strings.Left(fn, Len(fn) - 4) & ".dwg"
    oDataMedium.FileName = fn


    'Publish document.
    Call DWGAddIn.SaveCopyAs(oDrw, oContext, oOptions, oDataMedium)
End Sub
Nota: sono adattamenti degli esempi che si trovano nell'help di Inventor

View attachment 34912 View attachment 34913
Lo script funziona alla grande ma mi salva il pdf generato nella stessa cartella del file. Come posso fare dirgli di salvar in una cartella di mia scelta?
Stessa cosa per il pubblica dwg che mi servirebbe moltissimo per esportare qualsiasi disegno (dwg o idw) in dwg 2000 seguendo un file ini di mia scelta e in una cartella sempre custom.
 

Filo

Utente Standard
Professione: Perditempo
Software: Inventor2015 ANSYS Fluent Gambit SolidWorks Algor
Regione: Veneto
#23
Lo script funziona alla grande ma mi salva il pdf generato nella stessa cartella del file. Come posso fare dirgli di salvar in una cartella di mia scelta?
L'ho scritto senza testarlo, prova a vedere se funziona...
Leggiti il codice e cambia la riga dove devi dare il percorso della cartella, altriimenti cos' com'è ti crea il file sul desktop

Codice:
Public Sub PubblicaPdf()

' 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


Dim oDrw As DrawingDocument
Set oDrw = oDoc
' Get the Dxf translator Add-In.
Dim PdfAddIn As TranslatorAddIn
Set PDFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")


Dim oContext As TranslationContext
Set oContext = ThisApplication.TransientObjects.CreateTranslation Context
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

' Check whether the translator has 'SaveCopyAs' options
If PDFAddIn.HasSaveCopyAsOptions(oDrw, 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

' Sets directory for file save
Dim PDFDirectory As String
'La riga sottostante salva il file sul desktop se vuoi cambiare cartella cancella la riga sottostante e incolla PDFDirectory = "percorso cartella"
PDFDirectory = Environ("allusersprofile") & "\Desktop\"

'Set the destination file name
Dim fn As String
Dim fna As String
Dim fnb As String

fna = oDrw.FullFileName
fna = Strings.Right(fna, Len(fna) - InStrRev(fna, "\"))
fnb = Strings.Left(fna, Len(fna) - 4) & ".pdf"
fn = PDFDirectory & fnb
oDataMedium.FileName = fn

'Publish document.
Call PDFAddIn.SaveCopyAs(oDrw, oContext, oOptions, oDataMedium)
End Sub
Stessa cosa per il pubblica dwg che mi servirebbe moltissimo per esportare qualsiasi disegno (dwg o idw) in dwg 2000 seguendo un file ini di mia scelta e in una cartella sempre custom.
Vedendo le modifiche che ho fatto io prova a modificare anche lo script per il dwg...
Comunque se volete imparare qualcosa spendete un'ora dell'a vostra vita e imparate ad usare iLogic che per fare queste cose va bene ed è facile da usare.

Ciao
Filippo
 

Filo

Utente Standard
Professione: Perditempo
Software: Inventor2015 ANSYS Fluent Gambit SolidWorks Algor
Regione: Veneto
#24
Partendo dal programma segnalatomi da Catafratto

Ho apportato alcune modifiche ed adesso si può scegliere la cartella di di destinazione del pdf.
L'ho testato un po' e funziona abbastanza bene anche se a volte con dei disegni molto pesanti si inchioda...

Logicamente è un file exe ma non ci sono virus o altre stupidate.
Per scaricarlo cliccate qui sotto
View attachment SaveAsPDF_Out.zip

Ciao
Filippo
 

citri

Utente Standard
Professione: Disegnatore meccanico
Software: Design Suite Ultimate 2016
Regione: Lombardia
#25
Ciao a tutti

Riesumo questo vecchio post per chiedervi un'informazione nel caso qualcuno ci sia riuscito.
Ho "creato" lo script ed il pulsante in questione per l'esportazione in PDF (l'ho messo tra parentesi perchè nella versione 2016 in mio possesso, era già presente tutto e quindi non ho fatto nulla se non appunto posizionare il pulsante nella barra comandi).
Sapete se è possibile automatizzare questo script? nel senso, posso magari tramite un'attività pianificata, selezionare ad esempio una cartella contenente tutti idw e fargliela esportare senza dover aprire il disegno?