• このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

エクスポート "自動" idw に pdf-dxf

  • Thread starter Thread starter lollo76
  • Start date Start date

lollo76

Guest
buongiorno a tutti,
avrei la necessità di utilizzare una macro (o qualcosa di simile) che, una volta lanciata mi converta il file .idw in pdf e dxf e che i file creati me li salvi in una cartella pdf-dxf presente sul desktop.
evitando quindi tutte le volte di fare il salva copia con nome per ciascuna delle due estensioni...
qualcuno utilizza qualcosa di simile?
grazie
 
sarebbe utile anche a me! [emoji1] [emoji1] [emoji1]

menù start di windows
nella cartella autodesk\inventor****\strumenti
c'è il programma
programmazione operazioni

non è molto userfriendly, è migliorabile, ma mi toglie le castagne dal fuoco tante volte...
 
buongiorno a tutti,
avrei la necessità di utilizzare una macro (o qualcosa di simile) che, una volta lanciata mi converta il file .idw in pdf e dxf e che i file creati me li salvi in una cartella pdf-dxf presente sul desktop.
evitando quindi tutte le volte di fare il salva copia con nome per ciascuna delle due estensioni...
qualcuno utilizza qualcosa di simile?
grazie
crea una nuova regola con inventor ilogic per salvare in diversi formati
http://autodeskmfg.typepad.com/blog/2012/01/using-inventor-ilogic-to-save-multipl-formats.html
 
la regola ilogic sopra postata è sicuramente più compatta :wink:

devi fare un "salva copia con nome" > dwg e un "salva copia con nome" > dxf per creare i file di inizializzazione.
ho provato e a me va tutto bene: fammi sapere se non funziona.

Code:
public sub pubblicadxfdwg()
    
    ' obtain reference to drawing
    dim odoc as document
    set odoc = thisapplication.activedocument
    
    
    ' destination folder
    ' ---------------------------------------------------
    dim sexportpath as string
    sexportpath = "c:\users\utente\desktop\dwg-dxf\"
    ' ---------------------------------------------------
    
    if odoc.documenttype <> kdrawingdocumentobject then
        msgbox ("deve essere aperta una tavola")
        exit sub
    end if
    
    ' get the filename with no path
    dim sfilename as string
    sfilename = sexportpath & isolanome(odoc.fullfilename, true)
    
    ' 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}")
    
    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 = sfilename & ".dwg"


    'publish document.
    call dwgaddin.savecopyas(odoc, ocontext, ooptions, odatamedium)
    
    ' -------------------------------
    ' dxf
    ' -------------------------------
    
    ' check whether the translator has 'savecopyas' options
    if dxfaddin.hassavecopyasoptions(odoc, ocontext, ooptions) then
    
        ' file with exportation options
        strinifile = "c:\tempdxfout.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 = sfilename & ".dxf"

    'publish document.
    call dxfaddin.savecopyas(odoc, ocontext, ooptions, odatamedium)
    
end sub

'funzione che restituisce il nome del file togliendo il path ed il suffisso
public function isolanome(byval nomefile as string, optional trunc as boolean) as string
    
    'toglie il .ipt
    if trunc = true then
        nomefile = strings.left(nomefile, len(nomefile) - 4)
    end if
    
    dim pos as integer
    'ciclo che rimuove il path: trova "\" e tiene tutto a dx
    do
        pos = instr(nomefile, "\")
        nomefile = strings.right(nomefile, len(nomefile) - pos)
    loop until pos = 0
    isolanome = nomefile
end function
 

Attachments

buongiorno,
@aiq e erreerre : la mia operazione non può essere pianificata in automatico secondo qualche evento.
@catafratto: grazie per la macro ma non mi funziona. inoltre dovrei fare pdf e dxf (non dwg)
Immagine.jpg
purtroppo di vba non capisco una pizza... :(

- - - aggiornato - - -

comunque grazie a tutti.
 
sì, ho letto fischi per fiaschi... ma la correzione è un attimo.

cosa non ti funziona comunque? una volta copiata la macro mica bisogna capire come lavora...
 
la pianificazione può essere impostata con "subito", e lui parte subito. si chiamano operazioni pianificate, ma non ho mai pianificato oltre l'immediato.
sicuramente con la macro, si possono personalizzare le funzioni...



buongiorno,
@aiq e erreerre : la mia operazione non può essere pianificata in automatico secondo qualche evento.
@catafratto: grazie per la macro ma non mi funziona. inoltre dovrei fare pdf e dxf (non dwg)
View attachment 38543
purtroppo di vba non capisco una pizza... :(

- - - aggiornato - - -

comunque grazie a tutti.
 
prima di far partire la macro hai fatto il "salva copia con nome" nei vari formati dxf e dwg (ok, quest'ultimo a te inutile) manualmente come ti avevo indicato? l'operazione crea dei file di inizializzazione necessari per le esportazioni successive alla prima.
 
ecco la versione aggiornata, si può eliminare quello che non serve: è racchiuso tra i commenti (es. dwg ... fine dwg)

la macro è "garantita" in quanto poco più di un copia incolla di quanto contenuto nell'help di inventor stesso: se non funziona dev'essere per un particolare da poco, forse qualcun altro può fare un test (confermo che a me va tutto)

p.s.
la cartella di destinazione deve esistere già, ed il nome può cambiare da computer a computer: nella variabile sexportpath mettete quella che preferite.

Code:
public sub pubblicadxfdwgpdf()
    
    ' obtain reference to drawing
    dim odoc as document
    set odoc = thisapplication.activedocument
    
    
    ' destination folder
    ' ---------------------------------------------------
    dim sexportpath as string
    sexportpath = "c:\users\utente\desktop\dwg-dxf-pdf\"
    ' ---------------------------------------------------
    
    if odoc.documenttype <> kdrawingdocumentobject then
        msgbox ("deve essere aperta una tavola")
        exit sub
    end if
    
    ' get the filename with no path
    dim sfilename as string
    sfilename = sexportpath & isolanome(odoc.fullfilename, true)
    
    ' 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 = sfilename & ".dwg"


    'publish document.
    call dwgaddin.savecopyas(odoc, ocontext, ooptions, odatamedium)
    
    ' -------------------------------
    ' fine dwg
    ' ---------------------------------------------------------------------------
    
    
    ' ---------------------------------------------------------------------------
    ' dxf
    ' -------------------------------
    
    ' check whether the translator has 'savecopyas' options
    if dxfaddin.hassavecopyasoptions(odoc, ocontext, ooptions) then
    
        ' file with exportation options
        strinifile = "c:\tempdxfout.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 = sfilename & ".dxf"

    'publish document.
    call dxfaddin.savecopyas(odoc, ocontext, ooptions, odatamedium)
    ' -------------------------------
    ' fine dxf
    ' ---------------------------------------------------------------------------
    
    
    ' ---------------------------------------------------------------------------
    ' 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 = sfilename & ".pdf"


    'publish document.
    call pdfaddin.savecopyas(odoc, ocontext, ooptions, odatamedium)
    ' -------------------------------
    ' fine pdf
    ' ---------------------------------------------------------------------------
end sub
 
boooh...
dunque apro un .idw
vado in strumenti ->editor di visual basic e seguo tutte le istruzioni che hai messo nel file "come copiare le macro.txt"
eseguo il salvataggio ed esco da vb
faccio una salva copia con nome in dxf
faccio una salva copia con nome in pdf

poi avvio la macro.
 
in fondo alla macro "seconda versione" aggiungi questo, non l'avevo ricopiato:
fatto una volta il salva con nome non dovrebbe servire più.
Code:
'funzione che restituisce il nome del file togliendo il path ed il suffisso
public function isolanome(byval nomefile as string, optional trunc as boolean) as string
    
    'toglie il .ipt
    if trunc = true then
        nomefile = strings.left(nomefile, len(nomefile) - 4)
    end if
    
    dim pos as integer
    'ciclo che rimuove il path: trova "\" e tiene tutto a dx
    do
        pos = instr(nomefile, "\")
        nomefile = strings.right(nomefile, len(nomefile) - pos)
    loop until pos = 0
    isolanome = nomefile
end function
 
ciao, la discussione interessa mooolto anche a me. ( ho 50.000 articoli da sincronizzare )

dunque, i punti sono questi: la macro vba per l'esportazione in .pdf funziona , ma solo a livello di documento, cioè col codice iniettato nel documento, o nel template, siccome la mia necessità è quella di avere sincronizzato il .idw col .pdf ( per i fornitori), questa macro dovrebbe girare a livello di applicazione, globalmente, eseguendo il suo lavoro su tutti gli idw ( anche quelli vecchi ); per fare questo, bisognava dichiarare le variabili globali all'interno del file "devault.ivb" , eseguito a livello applicazione, purtroppo dico "bisognava" perchè dalla release 2013 autodesk ha deciso di non far girare macro a livello applicazione. ( il mio intento è quello di salvare in .pdf una copia, ogni volta che salvo in .idw)
ho provato ad associare ad un pulsante specifico la marco, e funziona, ma mi devo ricordare di schiacciare quel pulsante!! :) mentre se potessi modificare l'azione del pulsante "salva" tutto si risolverebbe, ma non ho trovato come fare.

@aiq, per le operazioni pianificate, funzionano bene sui cambi di release (migra file), su tutte le stampe possibili, ma purtroppo non in pdf ! :(

la mia domanda, è come andare a modificare l'azione globale intrapresa quando viene richiesto un salvataggio.

buon lavoro a tutti.

mario
 
purtroppo dico "bisognava" perchè dalla release 2013 autodesk ha deciso di non far girare macro a livello applicazione.

???
a livello di applicazione tutto funziona benissimo (io faccio solo così e uso la 2014): quello che hanno fatto è stato togliere l'esecuzione automatica legata agli eventi (es. all'apertura, alla chiusura, ecc.)

puoi sempre collegare la macro ad un tasto e aggiungere la riga:

odoc.save()

in modo che prima di fare le esportazioni ti salva il documento...
 
a me da sempre problemi questa macro... boh.
anche aggiungendo in fondo l'ultima parte non mi funziona.
 
a me da sempre problemi questa macro... boh.
anche aggiungendo in fondo l'ultima parte non mi funziona.

con "non mi funziona" non posso aiutare oltre...
com "mi da' questo errore: [descrizione del problema]" darò molto volentieri ulteriori indicazioni.
 
con "non mi funziona" non posso aiutare oltre...
com "mi da' questo errore: [descrizione del problema]" darò molto volentieri ulteriori indicazioni.


già hai ragione. comunque copio la macro, salvo. chiudo e apro un .idw. lancio la macro e mi esce questo:
Immagine.jpg

grazie
 

Forum statistics

Threads
46,674
Messages
380,976
Members
2
Latest member
loop80
このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

Members online

No members online now.
Back
Top