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

Macro x PDF

vespa_83

Utente Standard
Professione: disegnatore
Software: Solid Edge
Regione: Romagna
#81
io farei così, lo implemento al prossimo rilascio.
Codice:
' decommentare al bisogno: objApp.StartCommand (32876) 'Refresh F5

fullfilepath3DIMG = percorso + "\" + nome + "." + "jpg"

seImageQuality = 3    ' seImageQualityLow 1 ; seImageQualityMedium 2 ; seImageQualityHigh 3
objApp.ActiveWindow.view.SaveAsImage(fullfilepath3DIMG, 318, , , , , seImageQuality ) '318 è la larghezza che mi serve, l'altezza viene di conseguenza
attenzione al nome completo del file che vuoi chiamare "fullfilepath3DIMG" così come hai scritto ci sono diversi errori
 

cop1

Utente Junior
Professione: progettista
Software: solidedge
Regione: italia
#82
Grazie per questa macro!
Si può evitare che venga richiesto se si vuole sovrascrivere il pdf (se già esiste), facendolo sovrascrivere automaticamente?
Cop1
 

vespa_83

Utente Standard
Professione: disegnatore
Software: Solid Edge
Regione: Romagna
#83
sovrascrivere senza avviso non è una azione raccomandata. Non è previsto nei parametri del metodo di SolidEdge "SaveAs" , quindi se vuoi procedere in tal senso la soluzione sarebbe verificare la presenza del file prima del salvataggio e quindi elimirarlo.
 

cop1

Utente Junior
Professione: progettista
Software: solidedge
Regione: italia
#85
In effetti uso questa macro per salvare contemporaneamente in DWG, PDF e STP.
Il file DFT aperto non viene sovrascritto, ed il salvataggio dei 3 files mi interessa allo stato attuale del dft, quindi mi va bene di sovrascriverli.
Il codice da aggiungere alla macro (quello che controlla se il file esiste ed eventualmente lo cancella) potrei averlo?
Grazie
 

ApeGana

Utente Standard
Professione: Progettista
Software: Solid Edge ST8
Regione: Marche
#86
A passarti il codice non ho problemi, però quello completo è pesantemente personalizzato rispetto a quello di Vespa per tenere conto delle esigenze di archiviazione della mia azienda (nomi dei file, percorsi, indici di revisione....).

Ti metto qui sotto le poche righe che fanno verifica e cancellazione per DXF e PDF. Se interpreti bene le variabili dovresti riuscire ad usarli, sennò dimmelo che ti posto il codice completo, ma penso che diventa più complicato.

Codice:
' *** PDF ***
	filePDF = (percorso + "\" + nome + "." + "pdf")							' Costruisce il nome completo del file pdf
	if fso.FileExists (filePDF) Then										' Verifica se già esiste e in caso affermativo lo cancella
		Del = Fso.DeleteFile(filePDF)										' Cancella
	end if															
Call objDoc.SaveAs(filePDF)     											' salva il nuovo pdf nel percorso stabilito
	
	
	' *** DXF ***
	fileDXF = (percorso + "\" + nome + "." + "dxf")							' Costruisce il nome completo del file dxf
	if fso.FileExists (fileDXF) Then										' Verifica se già esiste e in caso affermativo lo cancella
		Del = Fso.DeleteFile(fileDXF)										' Cancella
	end if
Call objDoc.SaveAs(fileDXF)                                                                                         ' salva il nuovo dxf nel percorso stabilito
 

cop1

Utente Junior
Professione: progettista
Software: solidedge
Regione: italia
#87
A passarti il codice non ho problemi, però quello completo è pesantemente personalizzato rispetto a quello di Vespa per tenere conto delle esigenze di archiviazione della mia azienda (nomi dei file, percorsi, indici di revisione....).

Ti metto qui sotto le poche righe che fanno verifica e cancellazione per DXF e PDF. Se interpreti bene le variabili dovresti riuscire ad usarli, sennò dimmelo che ti posto il codice completo, ma penso che diventa più complicato.

Codice:
' *** PDF ***
	filePDF = (percorso + "\" + nome + "." + "pdf")							' Costruisce il nome completo del file pdf
	if fso.FileExists (filePDF) Then										' Verifica se già esiste e in caso affermativo lo cancella
		Del = Fso.DeleteFile(filePDF)										' Cancella
	end if															
Call objDoc.SaveAs(filePDF)     											' salva il nuovo pdf nel percorso stabilito
	
	
	' *** DXF ***
	fileDXF = (percorso + "\" + nome + "." + "dxf")							' Costruisce il nome completo del file dxf
	if fso.FileExists (fileDXF) Then										' Verifica se già esiste e in caso affermativo lo cancella
		Del = Fso.DeleteFile(fileDXF)										' Cancella
	end if
Call objDoc.SaveAs(fileDXF)                                                                                         ' salva il nuovo dxf nel percorso stabilito
Grazie ApeGana,
ho inserito il codice, ma mi invia il messaggio "necessario oggetto FSO" alla riga "if fso.FileExists (filePDF) Then".
Provo a vedere altri post in cui si sia presentato un errore simile.
 

ApeGana

Utente Standard
Professione: Progettista
Software: Solid Edge ST8
Regione: Marche
#88
Nella parte iniziale della macro, dove definisci le variabili, devi mettere:

Set fso = CreateObject("Scripting.FileSystemObject")

Scusa non l'ho scritto perchè mi sembrava di ricordare che ci fosse anche nell'originale di Vespa, ma evidentemente l'ho aggiunto io.
Ciao
 

vespa_83

Utente Standard
Professione: disegnatore
Software: Solid Edge
Regione: Romagna
#89
Salva ed esporta v1.2

nel codice sono riportati esempi di utilizzo per quanto richiesto nei post sopra.

Version :
v.1.2 Inserita funzione DeleteFileIfExists ('Elimina file se esiste') con relativi esempi prima di ogni "Save",
per evitare la domanda: 'Il file esiste già, sovrascrivere?'
Attenzione: un uso scorretto e/o una programmazione scorretta provocano la cancellazione e la sovrascrizione di file senza richiesta di conferma da parte dell'utente.
Per questo motivo la funzione è normalmente non attiva ma commentata, utilizzarla a proprio rischio e pericolo
v.1.1 Salva Come Immagine e Salva Sviluppato per Sheetmetal
Salva tutti i file 3D di primo livello collegati al draft​
 

Allegati

cop1

Utente Junior
Professione: progettista
Software: solidedge
Regione: italia
#90
Nella parte iniziale della macro, dove definisci le variabili, devi mettere:

Set fso = CreateObject("Scripting.FileSystemObject")

Scusa non l'ho scritto perchè mi sembrava di ricordare che ci fosse anche nell'originale di Vespa, ma evidentemente l'ho aggiunto io.
Ciao
Grazie di nuovo. funziona perfettamente.
 

cop1

Utente Junior
Professione: progettista
Software: solidedge
Regione: italia
#91
Salva ed esporta v1.2

nel codice sono riportati esempi di utilizzo per quanto richiesto nei post sopra.

Version :
v.1.2 Inserita funzione DeleteFileIfExists ('Elimina file se esiste') con relativi esempi prima di ogni "Save",
per evitare la domanda: 'Il file esiste già, sovrascrivere?'
Attenzione: un uso scorretto e/o una programmazione scorretta provocano la cancellazione e la sovrascrizione di file senza richiesta di conferma da parte dell'utente.
Per questo motivo la funzione è normalmente non attiva ma commentata, utilizzarla a proprio rischio e pericolo
v.1.1 Salva Come Immagine e Salva Sviluppato per Sheetmetal
Salva tutti i file 3D di primo livello collegati al draft​
Grazie Vespa,
ho provato anche la macro "salva ed esporta", ma la versione 1.2 dà errore alla riga 263, mentre la versione 1.0 funziona molto bene.
Siete proprio indispensabili...senza il vostro supporto non avrei saputo come risolvere.
 

vespa_83

Utente Standard
Professione: disegnatore
Software: Solid Edge
Regione: Romagna
#92
Grazie Vespa,
ho provato anche la macro "salva ed esporta", ma la versione 1.2 dà errore alla riga 263, mentre la versione 1.0 funziona molto bene.
Siete proprio indispensabili...senza il vostro supporto non avrei saputo come risolvere.
Ciao. Alla riga 263 io ho un "End Sub" che non può dare errore: verifica di non aver aggiunto o tolto righe oppure fai un Ctrl-C per copiare il messaggio di errore completo per darmi qualche informazione in più.
Quelle righe riguardano il salva sviluppo. Se hai attivato "esporta3D = true", spiegami in quale situazione sei (dft o psm, file aperti o chiusi).
La macro funziona se c'è una sola istanza di SolidEdge aperta (in Windows taskmanager trovi un solo edge.exe), e lavora sul documento (/finestra file) attivo.
 

cop1

Utente Junior
Professione: progettista
Software: solidedge
Regione: italia
#93
Ciao. Alla riga 263 io ho un "End Sub" che non può dare errore: verifica di non aver aggiunto o tolto righe oppure fai un Ctrl-C per copiare il messaggio di errore completo per darmi qualche informazione in più.
Quelle righe riguardano il salva sviluppo. Se hai attivato "esporta3D = true", spiegami in quale situazione sei (dft o psm, file aperti o chiusi).
La macro funziona se c'è una sola istanza di SolidEdge aperta (in Windows taskmanager trovi un solo edge.exe), e lavora sul documento (/finestra file) attivo.
Buongiorno Vespa,
questo mi dà la macro quando mi trovo in un DFT ("esporta3D = false")
Cattura.JPG
 

vespa_83

Utente Standard
Professione: disegnatore
Software: Solid Edge
Regione: Romagna
#94
'Version:
' v.1.3 bug fix. Ora nelle Opzioni Generali è possibile abilitare le funzioni aggiuntive
' v.1.2 Inserita funzione DeleteFileIfExists ('Elimina file se esiste') con relativi esempi prima di ogni "Save",
' per evita la domanda: 'Il file esiste già, sovrascrivere?'
' Attenzione: un uso scorretto e/o una programmazione scorretta provocano la cancellazione e la sovrascrizione di file richieste di conferma da parte dell'utente.
' Per questo motivo la funzione è normalmente non attiva ma commentata, utilizzarla a proprio rischio e pericolo
' v.1.1 Salva Come Immagine e Salva Sviluppato per Sheetmetal

Ho cambiato un po' la struttura del codice per semplificare l'abilitazione delle principali funzioni impostando True/False (= vero/falso), raggruppate sotto la sezione Opzioni Generali.

La cartella di esportazione (variabile percorso) è considerata normalmente uguale alla cartella del file di origine.
Chi vuole personalizzarla dovrà modificare manualmente il codice.
 

Allegati

ApeGana

Utente Standard
Professione: Progettista
Software: Solid Edge ST8
Regione: Marche
#95
Buongiorno a tutti.
In alcuni dft ho un foglio con un nome specifico, mettiamo "FoglioProva".
Vorrei riuscire a modificare il SalvaPDF in modo che: se nel dft non c'è FoglioProva la macro funzioni normalmente, se invece FoglioProva c'è, mi dia in output 2 file pdf, uno con il solo FoglioProva, l'altro con tutti gli altri fogli nello stesso ordine in cui si trovano.

Io da solo non ce la faccio, se qualcuno avesse voglia di darmi una mano... :redface:
I problemi principali che ho sono i seguenti:
  • identificare quanti fogli ha un dft e che nomi hanno
  • interagire con le opzioni del Salva come PDF e in particolare come impostare i fogli da convertire

Qualche generoso?
Grazie
Matteo
 

vespa_83

Utente Standard
Professione: disegnatore
Software: Solid Edge
Regione: Romagna
#96
i fogli sono in Activedocument.Sheets o simile, poi andrebbero iterati (passati uno a uno) tutti i folgi per leggere il nome (.Name)
.
Il problema diventa il secondo punto: interagire con il salva in pdf che non mi para abbia molte opzioni....

quindi forse è più semplice salvare il draft con un nome temporaneo, si toglie il foglioProva e si prosegue. E' una strada molto più semplice. in bocca al lupo.
 
Professione: Progettista/Disegnatore
Software: Solid Edge ST10
Regione: Rimini - Emilia Romagna
#97
Buongiorno, ho la stessa necessità di capire come poter fare una determinata operazione. La macro Save+PDF.wsf gestisce il salvataggio del PDF e del DWG direttamente pigiando il tasto della macro. Vorrei poter capire come poter effettuare il salvataggio (possibilmente in automatico quando spingo "SALVA") della campitura sviluppata quindi del DXF. Grazie mille per la cortesia!
 

ApeGana

Utente Standard
Professione: Progettista
Software: Solid Edge ST8
Regione: Marche
#98
i fogli sono in Activedocument.Sheets o simile, poi andrebbero iterati (passati uno a uno) tutti i folgi per leggere il nome (.Name)
.
Il problema diventa il secondo punto: interagire con il salva in pdf che non mi para abbia molte opzioni....

quindi forse è più semplice salvare il draft con un nome temporaneo, si toglie il foglioProva e si prosegue. E' una strada molto più semplice. in bocca al lupo.
Grazie Vespa, adesso ho iniziato un lavoro grosso e ho poco tempo per pensare alle macro.... riaffronterò la cosa tra qualche settimana anche se a occhi e croce supera le mie competenze.
 

vespa_83

Utente Standard
Professione: disegnatore
Software: Solid Edge
Regione: Romagna
#99
Buongiorno, ho la stessa necessità di capire come poter fare una determinata operazione. La macro Save+PDF.wsf gestisce il salvataggio del PDF e del DWG direttamente pigiando il tasto della macro. Vorrei poter capire come poter effettuare il salvataggio (possibilmente in automatico quando spingo "SALVA") della campitura sviluppata quindi del DXF. Grazie mille per la cortesia!
Il Salva standatard fa quello e basta. Ci sono metodi di programmazione BeforeSave e AfterSave, ma andrebbe creato un Add-In , è molto complicato.

Se invece usi la macro, ti metti la sua icona e clicchi su di essa (argomento già affrontato in altri post).
L'ultima versione se lanciata in ambiente sheetmetal psm ha la funzione dxf che chiedi.

'Version:
' v.1.3 bug fix. Ora nelle Opzioni Generali è possibile abilitare le funzioni aggiuntive
' v.1.2 Inserita funzione DeleteFileIfExists ('Elimina file se esiste') con relativi esempi prima di ogni "Save",
' per evita la domanda: 'Il file esiste già, sovrascrivere?'
' Attenzione: un uso scorretto e/o una programmazione scorretta provocano la cancellazione e la sovrascrizione di file richieste di conferma da parte dell'utente.
' Per questo motivo la funzione è normalmente non attiva ma commentata, utilizzarla a proprio rischio e pericolo
' v.1.1 Salva Come Immagine e Salva Sviluppato per Sheetmetal

Ho cambiato un po' la struttura del codice per semplificare l'abilitazione delle principali funzioni impostando True/False (= vero/falso), raggruppate sotto la sezione Opzioni Generali.

La cartella di esportazione (variabile percorso) è considerata normalmente uguale alla cartella del file di origine.
Chi vuole personalizzarla dovrà modificare manualmente il codice.