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

dbWorks: esportare documenti in formato pdf con letture da file esterno

Michele1980

Utente Junior
Professione: progettista
Software: Ansys Inventor SolidWorks OpenFOAM
Regione: Italia
#1
Buonasera a tutti,

chiedo se qualcuno potrebbe aiutarmi con uno script per esportare i drawings in formato pdf, ma con una particolarità:

dato un file esterno (excel, txt) in cui sono segnati degli input, vorrei esportare il drawings in formato pdf concatenando i dati tabulati del file esterno.

Es.

Input:____Colonna 1___Colonna2____Output
riga1____ ID_________revisione
riga2____ABCD_______00-----------> ABCD_00.pdf
riga 3____EFGH______01------------> EFGH_01.pdf


in pratica dopo vorrei che lo script leggesse la prima e la seconda colonna di una riga, e ricercasse nel database di dbWorks, il corrispondente ID ed esportasse i fogli del file drawing in formato pdf, come da output.

C'è qualcuno che si intende di programmazione e potrebbe aiutarmi?
Magari domani al lavoro provo a pubblicare il file con la funzione di export già presente, che vorrei modificare come sopra.

Grazie

Michele
 

jenuary

Utente Standard
Professione: Progettista e Programmatore VB.Net
Software: Solidworks
Regione: Veneto
#2
Ciao,
perdonami ma ho capito fino ad un certo punto...tu vorresti una macro che leggesse un file (Excel per esempio), che leggesse e concatenasse la colonna A + B e creasse quindi un nome file AB.pdf.
A questo punto ci si collega a DBWorks? Lui ritorna un ID? Non capisco questo passaggio e a cosa serve farlo (non utilizzo Pdm).

Non è sufficiente salvare il file AB.pdf? (in quale percorso, lo stesso del file .slddrw?)
Esiste il rischio di avere due file con lo stesso nome se il percorso di salvataggio è comune a tutte le esportazioni?

Bisogna secondo me capirne di più, se però cè di mezzo DBWorks non ti conviene chiedere a chi ti da assistenza DBWorks?
Tutto il resto è più che fattibile.
 

Michele1980

Utente Junior
Professione: progettista
Software: Ansys Inventor SolidWorks OpenFOAM
Regione: Italia
#3
Ciao,

lo scopo è creare il file AB.pdf.
La colonna 1 è la colonna di ricerca all'interno del database del campo ID del file (univoco in dbWorks).
la colonna 2 è la colonna della revisione del file che scrive l'utente.
Lo script quindi utilizza le celle della colonna 1 per ricercare nel database l'ID della cella e quando lo trova concatena la corrispondente cella della colonna 2.

Lo script che ho qua al al lavoro è già configurato per esportare in c:\Temp il file in formato pdf: vorrei solamente aggiungere le funzioni di ricerca e concatenamento.

Ecco lo scirpt in allegato View attachment ExportSelectedDrawings.zip
 

jenuary

Utente Standard
Professione: Progettista e Programmatore VB.Net
Software: Solidworks
Regione: Veneto
#4
Ciao,
purtroppo non riesco ad aiutarti a livello di DBWorks nella fase di ricerca per recuperare l'ID.
Per il concatenamento nessun problema.

Io però imposterei qualcosa del genere:
- Foglio Excel con dentro i tuoi campi
- Macro di Excel che si collega a DBWorks e ritorna l'ID (ripeto qui non so aiutarti)
- Concatenamento stringa
- Collegamento a SolidWorks da Excel ed esportazione PDF

Bisognerebbe fare una ricerca in internet per trovare una Function che ricava l'ID, poi per il resto nessun problema.

Hai chiesto all'assistenza di DBWorks se ti passa solo questa Function?
 

jenuary

Utente Standard
Professione: Progettista e Programmatore VB.Net
Software: Solidworks
Regione: Veneto
#6
Dai un occhiata a questi link

http://www.mechworks.com/faq-category/scriptingapidbwforms/
https://www.yumpu.com/en/document/view/10797468/dbworks-r13-mechworks-srl

Dai un occhiata se riesci a tirare fuori qualcosa per DBWorks, come Query e collegamenti tramite Script.

In VBA il collegamento con una macro dovrebbe essere simile al seguente, ma non avendolo non posso provare

Sub main()
Set DBWApp = CreateObject("DBWAlone.Api")
okDBW = DBWApp.CallBack("@StartApplication")
MsgBox "done, check task manager"
Set DBWApp = nothing
End Sub
 

jenuary

Utente Standard
Professione: Progettista e Programmatore VB.Net
Software: Solidworks
Regione: Veneto
#7
Dai un occhiata anche qui, sepur versione 2007 le Api di solito non vanno in "pensione" presto:

http://62.101.95.130/whatsnew2007ita/contents.htm

Dentro a questa presentazione ci sono varie macro e script che tagliando e cucendo potresti venirne fuori, vedi esempio sotto preso appunto da li:

.VBSCRIPT
sub main()
DBWInit(TRUE)

' the parent document unique id
documentUniqueId = DBWInput("@DOCUMENT_UNIQUE_ID")

' to be used for revision-dependent attachments ; still not supported
documentRevision = DBWInput("@DOCUMENT_REVISION")

if documentUniqueId = 0 then
exit sub
end if

nameFieldT = DBWLookUp("NAME_FIELD_T")
nameFieldDESCRIPTION = DBWLookUp("NAME_FIELD_DESCRIPTION")
nameFieldFILE_NAME = DBWLookUp("NAME_FIELD_FILE_NAME")
nameFieldFILE_DIRECTORY = DBWLookUp("NAME_FIELD_FILE_DIRECTORY")
nameFieldDOCUMENT_UNIQUE_ID = DBWLookUp("NAME_FIELD_DOCUMENT_UNIQUE_ID")

' build the tab query
query =_
"SELECT " &_
nameFieldT & "," &_
nameFieldDESCRIPTION & "," &_
nameFieldFILE_NAME & "," &_
nameFieldFILE_DIRECTORY & "," &_
nameFieldDOCUMENT_UNIQUE_ID &_
" FROM DBW_ATTACHMENTS WHERE " &_
nameFieldDOCUMENT_UNIQUE_ID & "=" & documentUniqueId

' return the query to DBWorks
DBWOutput "@QUERY",query,ForWriting
end sub
 

Michele1980

Utente Junior
Professione: progettista
Software: Ansys Inventor SolidWorks OpenFOAM
Regione: Italia
#8
Ciao,

grazie mille. Ho visto solo adesso perchè il mio account qui ha come indirizzo un'altra mail di un'altro lavoro.

Stasera provo a dargli un occhio.

Ciao