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

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

  • Thread starter Thread starter lollo76
  • Start date Start date
mi pare funzioni

Code:
    ' 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

grazie mille! domani la provo e ti dico! gentilissimo.
 
l'ultima macro postata non riesco a farla funzionare, non sono riuscito a capire il motivo. sul modulo 1 ho già caricata la macro precedente, ho provato ad incollare il testo postato sotto la macro e non mi funziona, nel senso che non compaiono altre diciture nella finestra dei pulsanti programmabili da macro. ho provato a togliere la macro esistente e fare la stessa procedura, ma con lo stesso infelice risultato...dove sbaglio?

poi ho dato un'occhiata alla soluzione alternativa e in effetti è molto semplice da implementare, però anche qui forse sbaglio qualcosa, infatti crea il pdf e dwg solo al primo salvataggio nei successivi salvataggi non sovrascrive i file creati precedentemente.

scusate l'imbranataggine...:confused:
 
l'ultima macro postata non riesco a farla funzionare, non sono riuscito a capire il motivo. sul modulo 1 ho già caricata la macro precedente, ho provato ad incollare il testo postato sotto la macro e non mi funziona, nel senso che non compaiono altre diciture nella finestra dei pulsanti programmabili da macro. ho provato a togliere la macro esistente e fare la stessa procedura, ma con lo stesso infelice risultato...dove sbaglio?
...

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:
Code:
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
 
salve a tutti, è da un pezzo che avevo una domanda :
i tasti collegati alle macro, mi appaiono tutti con la stessa icona
Cattura.JPG

c'è modo di cambiarle ?
grazie.
 
scusate, ma alla fine qualcuno è riuscito ad esportare in pdf un'intera cartella di idw già esistenti??
 
scusate, ma alla fine qualcuno è riuscito ad esportare in pdf un'intera cartella di idw già esistenti??

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


Code:
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
 
provato e funziona.
però se cerco di salvare il default.ivb ( nel quale avevo incollato il diridw ) mi dice :

msg.JPG

che può essere ?

mille grazie.
 
provato e funziona.
però se cerco di salvare il default.ivb ( nel quale avevo incollato il diridw ) mi dice :

View attachment 39358

che può essere ?

mille grazie.

non ho idea... sparo a caso:
siete in più persone in ufficio e condividete il file default.ivb? solo il primo ad aver aperto una sessione di inventor può salvarlo
hai usato l'editor vba di inventor per fare la cosa?
ci sono password/diritti di amministratore/ecc sul disco dove lavori?
ti dà lo stesso errore anche se provi a scrivere qualcosa e salvare, tipo
"public sub pippo()
end sub"

e soprattutto, hai riavviato il computer e riprovato?
 
purtroppo non va...:confused:
al primo avvio della macro converte tutti gli .idw in .dwg e tutti gli .idw in .pdf tranne 2
al secondo tentativo i .dwg sempre ok e i .pdf tutti tranne 4
al terzo tentativo i .dwg sempre ok e i .pdf tutti tranne 6
e così via..
sembra che ci sia qualche contatore che ad ogni lancio della macro tolga 2 file da convertire
da notare che gli .idw si aprono automaicamente tutti durante la macro, ma alcuni non vengono convertiti in .pdf
boh???
purtroppo non capisco una mazza di vb.. vedo se qualche collega...
 
purtroppo non va...:confused:
al primo avvio della macro converte tutti gli .idw in .dwg e tutti gli .idw in .pdf tranne 2
al secondo tentativo i .dwg sempre ok e i .pdf tutti tranne 4
al terzo tentativo i .dwg sempre ok e i .pdf tutti tranne 6
e così via..
sembra che ci sia qualche contatore che ad ogni lancio della macro tolga 2 file da convertire
da notare che gli .idw si aprono automaicamente tutti durante la macro, ma alcuni non vengono convertiti in .pdf
boh???
purtroppo non capisco una mazza di vb.. vedo se qualche collega...


- hai provato ad aprire i disegni che danno problemi e ad usare la versione "manuale" della macro per vedere che succede? non mi viene in mente proprio niente...
- qualcun altro ha provato e ha avuto problemi simili?

- hai riavviato tutto? e' un toccasana collaudato, vale sempre la pena provare :biggrin:
 
devo ancora provare a riavviare il pc, inventor ovviamente l'ho riavviato più volte
il fatto strano è che al primo giro va bene e converte tutti gli .idw, poi ogni volta che riprovi si perde i primi 2 files della lista
esempio: 21 files ok al primo giro, poi 19, 17, 15, 13.......
se riprovo su un'altra cartella riparte bene, poi di nuovo lo stesso errore
e' vero che mi basterebbe che funzionasse bene la prima volta x convertire in blocco tutti i disegni, poi eventuali modifiche/aggiunte dovrei gestirle singolarmente.
proverò ancora, grazie comunque
 
ho provato a riavviare il pc... miracolo!! funziona!! (x adesso.... :rolleyes: )
ho anche suddiviso la macro: una x i pdf e una x i dwg

grazie mille !! :finger:
 

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