preimpostare settaggi di salva come immagine

Davimont

Utente Standard
Professione: Disegnatore meccanico Fai da te.
Software: Solid Edge ST10
Regione: Lombardia
#1
Buongiorno a tutti
uso spesso salvare l'immagine di quello che ho a schermo per svariati motivi tra cui anche la creazione di volantini o cataloghi.
Ho la necessità di preimpostare le dimensioni ad un determinato valore e lo stile della vista a "come visualizzato".
Ho provato a cercare i valori attuali in qualche file di SE ma senza risultato.
Sapete come reperire il file che contiene quelle impostazioni?
Grazie.

Immagine.png
 

vespa_83

Utente Standard
Professione: disegnatore
Software: Solid Edge
Regione: Romagna
#2
non saprei dove sono questi valori, ho cercato velocemente nel registro ma non ho trovato niente.
Ti potresti fare una piccola macro così imposti i valori e il percorso.

crea un file di testo di nome ed estensione: "SaveAsImage.vbs" con questo contenuto:
quando apri il file, viene salvato lo screenshot del documento attivo nel percorso indicato (nell'esempio "c:\")
Codice:
Dim objApp ' As Object
Dim percorso ' As String
Dim nomeFile ' As String
Dim estensione ' As String

percorso = "c:\"
estensione = "jpg"

const seImageQualityHigh = 3 ' copiato dalla guida

Set objApp = GetObject(, "SolidEdge.Application")

nomeFile = percorso & "\" & objApp.ActiveDocument.Name & " - " & Replace(Now(), "/", "_") & "." & estensione
msgbox(nomeFile)

Call objApp.ActiveWindow.view.SaveAsImage (nomeFile, 1920, 1080, , 1, 24, seImageQualityHigh, False)
' copiato dalla guida: "SaveAsImage Method"

Set objApp = Nothing
 

Davimont

Utente Standard
Professione: Disegnatore meccanico Fai da te.
Software: Solid Edge ST10
Regione: Lombardia
#3
Grazie Vespa :smile:
oggi sono indaffarato con imballaggi vari ma appena posso provo il tuo consiglio!
La cosa mi entusiasma perchè inizierei a maneggiare le macro che mi hanno sempre attirato!
 

Davimont

Utente Standard
Professione: Disegnatore meccanico Fai da te.
Software: Solid Edge ST10
Regione: Lombardia
#4
Allora
visto che poco alla volta vorrei capirci qualcosa anche io e con VB ci ho gia fatto qualcosa
ho aperto la guida Solid Edge ST6 SDK
Digitando nel campo di ricerca "SaveAsImage Method" esce questo

Codice:
Public Sub SaveAsImage( _
   ByVal Filename As String, _
   Optional ByVal Width As Variant, _
   Optional ByVal Height As Variant, _
   Optional ByVal AltViewStyle As Variant, _
   Optional ByVal Resolution As Variant, _
   Optional ByVal ColorDepth As Variant, _
   Optional ByVal ImageQuality As SeImageQualityType = 0, _
   Optional ByVal Invert As Boolean = False _
)
che è diverso dal codice che hai postato.

Codice:
Dim objApp ' As Object
Dim percorso ' As String
Dim nomeFile ' As String
Dim estensione ' As String

percorso = "c:\"
estensione = "jpg"

const seImageQualityHigh = 3 ' copiato dalla guida

Set objApp = GetObject(, "SolidEdge.Application")

nomeFile = percorso & "\" & objApp.ActiveDocument.Name & " - " & Replace(Now(), "/", "_") & "." & estensione
msgbox(nomeFile)

Call objApp.ActiveWindow.view.SaveAsImage (nomeFile, 1920, 1080, , 1, 24, seImageQualityHigh, False)
' copiato dalla guida: "SaveAsImage Method"

Set objApp = Nothing
Poi la pagina è molto scarna e spiega in pratica nulla.

Comunque provando la macro dal menù "Esegui Macro" sotto lo start di SE mi da errore
error.png
 

vespa_83

Utente Standard
Professione: disegnatore
Software: Solid Edge
Regione: Romagna
#5
forse sei in ambiente draft, metre funziona in ambiente asm sheetmetal e part. Io lancio con doppio click il file da windows, oppure aggiungo una icona dentro solidedge.

Nella guida dice quali sono gli argomenti del metodo che appartengono al membro view (si dice forse "classe", cioè classificazione, o tipo di oggetto) e l'ordine con cui vanno elencati gli argomenti.
 

Davimont

Utente Standard
Professione: Disegnatore meccanico Fai da te.
Software: Solid Edge ST10
Regione: Lombardia
#6
Non va, ne in part ne in psm. :confused:

Però vorrei capire una cosa
l'ultima chiamata dove fai il salvataggio vero e proprio l'hai copiata dalla guida ma nella guida che ho io non c'è.
Usi la guida integrata in SE?
 

vespa_83

Utente Standard
Professione: disegnatore
Software: Solid Edge
Regione: Romagna
#7
io per abitudine guardo come file della guida alla programmazione e sviluppo SDK:
C:\Program Files\Solid Edge ST7\SDK\sesdk.chm
che dovrebbe essere uguale al contenuto online (qui detto API):
http://support.industrysoftware.automation.siemens.com/training/se/107/api/webframe.html

a dire il vero ho preso spunto dalla guida e da cose già fatte, rimuovendo controlli del tipo che solid edge deve essere già aperto e il tipo di documento attivo sia in un ambiente predefinito.

Noto ora che tu hai ST6 e non ST7 ma dovrebbe essere uguale.
Guardando in
http://support.industrysoftware.aut.../api/SolidEdgeFramework~View~SaveAsImage.html
pare che tra le due versioni ST6 e ST7 il metodo SaveAsImage non sia cambiato.

c'è un argomento della chiamata di SaveAsImage che non gli piace, fai queste prove:

Call objApp.ActiveWindow.view.SaveAsImage (nomeFile, 1920, 1080, "nome vista 3D inesistente", 1, 24, seImageQualityHigh, False)

se non va:
Call objApp.ActiveWindow.view.SaveAsImage (nomeFile, 1920, 1080)

' tutti gli argomenti dopo il nome file sono opzionali ma va rispettato l'ordine
 

MdpMdp

Utente Junior
Professione: Progettista
Software: ThinkDesign/SolidEdge
Regione: Friuli
#8
Ciao a Tutti
Call objView.SaveAsImage("" & nomefile, 1920, 1080, "default", 1, 24,seImageQualityHigh, False)
con questa chiamata il tutto funziona correttamente.
Un'altra cosa.... ma se io volessi salvare solo una porzione dell'immagine definita da due "pick" dati dal mouse.... come si fà??
Io ho visto che, nell'sdk ci sono i mouse object, e i Mouse Object Members (es. ISEMouse, LastEventX, LastEventY....) ma non ho mica capito come fare le chiamate e poter registrare gli eventi in variabili, per poi usarli per determinare l'area di selezione (tipo la fence in 2D).
 

vespa_83

Utente Standard
Professione: disegnatore
Software: Solid Edge
Regione: Romagna
#9
Per i due punti da dare mi sembra più semplice fare uno zoom a finestra e poi lanciare la macro.

Per il discorso dei Mouse Object non ho mai avuto accasione di usarli, quindi non ti so aiutare. Una volta c'era un progetto template VB.NET per SolidEdge, ma sarà diventato obsoleto e nell'ultimo SDK c'è qualche esempio. Per utilizzare gli eventi del mouse direi che serve un IDE come Visual Studio o VB6, che compila un file exe.

Per quanto riguarda il tuo codice:
"" & nomefile
così suppongo obblighi la conversione a stringa, ma senza gli apici e la congiunzione ( "" & ) non ti funziona ?
 

Davimont

Utente Standard
Professione: Disegnatore meccanico Fai da te.
Software: Solid Edge ST10
Regione: Lombardia
#10
Ben ritrovati a tutti e spero abbiate passato delle buone ferie. (io ho seccato l'alternatore in autostrada:angry:)

Tornando a questa discussione, le ho provate tutte. Ho anche inserito un tasto in SE in modo da avere la finestra attiva quando pigio il bottone ma nulla:frown:
Anche l'ultimo consiglio di MdpMdp non da risultati e l'errore è sempre sulla riga della chiamata.
Allego il file della macro giusto per vedere se con lo stesso file funziona ad un'altro.
Provato in ASM e PAR
Se lo stesso file su un SE-ST6 funziona allora è un problema del mio programma.
 

Allegati

vespa_83

Utente Standard
Professione: disegnatore
Software: Solid Edge
Regione: Romagna
#11
Su mio PC il tuo file funziona in ambiente part, assemby e sheet metal. Non funziona in Draft come già detto.
Prima di mettere il bottone o tasto, bisogna che lo script funzioni con doppio click dall'Esplora Risorse di Windows.

La cosa più probabile è una incompatibilità con la Licenza di SolidEdge (se non hai una Classic o Foundation - vedi tuo file SELicense.dat),
oppure con la versione di Windows Script, verificabile con una istruzione tipo:
msgbox(Wscript.version)
 

MdpMdp

Utente Junior
Professione: Progettista
Software: ThinkDesign/SolidEdge
Regione: Friuli
#12
Ci sono 2 problemi:
il primo è dovuto alla funzione "Replace(Now(), "/", "_")".
Questa funzione fa un replace solo del "/" in _ ma non del ":", va sostituita con:
nomeFile = percorso & "\" & objApp.ActiveDocument.Name & "-" & Replace(Date(), "/", "_") & "-" & Replace(Time(), ":", "-") & "." & estensione
Il secondo problema è che nell'ambiente draft non è possible fare la chiamata:
Set objView = objCurWindow.View
perchè l'oggetto è attivo solo quando siamo in ambiente parte/assieme.
Tutto il resto è ok.

Sarebbe come scrivevo prima, utile implementare l'interazione con il mouse in modo tale che posso selezionare un porzione di finestra e salvarla nel file esterno.... sarebbe poi utile impostare lo sfondo in bianco... e poi reimpostarlo in quello OLD.
Una funzione così è utlie per fare porzioni di immagini magari da mandare ad un cliente senza ogni volta salvare l'mmagine per poi ritagliarla.
 

Davimont

Utente Standard
Professione: Disegnatore meccanico Fai da te.
Software: Solid Edge ST10
Regione: Lombardia
#13
@Vespa io ho SE Classic MP14 (106.00.14.06 x64) la versione di Windows Script è la 5.8.
Anche se lo lancio da Esplora Risorse non va.
 

vespa_83

Utente Standard
Professione: disegnatore
Software: Solid Edge
Regione: Romagna
#14
@Davimont forse MdpMdp con la sua riga ti ha aiutato. Sul mio PC l'orario è 15.35 , se forse 15:30 non è accettabile come nome file.
Per capire se il comando funziona o no metti questa riga prima di quella che genera l'errore:

Call objApp.ActiveWindow.view.SaveAsImage ("C:\nome fisso di prova.jpg", 1920, 1080)

nb: assicurati che hai i diritti di scrittura su c: oppure metti un altro percorso valido.
 

Davimont

Utente Standard
Professione: Disegnatore meccanico Fai da te.
Software: Solid Edge ST10
Regione: Lombardia
#15
:finger: Funziona!!
Ecco il codice dopo vari smanettamenti.

Codice:
Dim objApp ' As Object
Dim percorso ' As String
Dim nomeFile ' As String
Dim estensione ' As String

percorso = "C:\"
estensione = "jpg"

const seImageQualityHigh = 3 ' copiato dalla guida

Set objApp = GetObject(, "SolidEdge.Application")

nomeFile = percorso & "\" & objApp.ActiveDocument.Name & "-" & Replace(Date(), "/", "_") & "-" & Replace(Time(), ":", "-") & "." & estensione

msgbox(nomeFile)

Call objApp.ActiveWindow.view.SaveAsImage (nomeFile, 1920, 1080)
Set objApp = Nothing
Già così è buona, si potesse far comparire una textbox dove inserire il nome del file o addirittura la finestra di windows sarebbe il massimo.
Anche l'idea dello sfondo bianco non è male, io adesso lo metto bianco a mano per fare le foto e poi lo riporto com'era.
Intanto grazie a tutti e due!
 

vespa_83

Utente Standard
Professione: disegnatore
Software: Solid Edge
Regione: Romagna
#16
Modifiche:
- inserito Sostituisci dei caratteri illegali sul nome file (sperimentale) [fix per file.asm!Master<carattere illegale SOH>]
- inserto inputBox editabile con nome del file presettato
 

Allegati