Visual Basic For Application & VBA

folle76

Utente Standard
Professione: Ingegnere meccanico
Software: Creo Parametric 3.0, Solidworks 2016
Regione: -
#1
L'idea è sempre quella. Integrazione massima tra dati CAD e gestionali nelle piccole medie aziende. Abbiamo un gestionale che lavora con SQL Server e quindi grande facilità di creare viste personalizzate con SQL e reportistica con Crystal Reports. Abbiamo ProE e nessuna voglia nè soldi di acquistare un sistema PDM, posto che possa veramente interfacciarsi col nostro gestionale che è distributo da MondoEsa.
Col VBA e le API di ProE almeno ho potuto (dopo aver superato lo scoglio di una documentazione insufficiente) caricare nel database gestionale i parametri di modelli ProE ed, eventualmente al bisogno, poter fare il contrario. Ecco, per chi interessa e conosce VBA, un piccolo esempio per stampare nella finestra immediata i valori dei parametri di un modello attivo in sessione. Se qualcuno può farmi avere qualche esempio più complesso ed interessante gli sarei grato. Si scambiano volentieri le conoscenze, posto che approfondirò l'argomento.
ProE come modellatore è eccezionale, ProToolkit (incasinatissimo e con documentazione orribile) e VB API per ProE lo sono meno. C'è molta poca attenzione al riguardo e poca gente che ne capisce in giro.

Private Sub Comando0_Click()

Dim model As IpfcModel
Dim session As IpfcBaseSession
Dim Connection As IpfcAsyncConnection
Dim params As IpfcParameters
Dim paramValue As IpfcParamValue
Dim param2 As IpfcBaseParameter
Dim c As IpfcParameterOwner

On Error GoTo fine:

Dim classAsyncConnection As New CCpfcAsyncConnection
Set Connection = classAsyncConnection.Connect(DBNull, DBNull, DBNull, DBNull)
Set session = Connection.session
Set model = session.CurrentModel

Set c = model
Set params = c.ListParams()
For i = 0 To params.Count - 1
Set param2 = params(i)
Set paramValue = param2.Value
Debug.Print paramValue.StringValue
Next

fine:
If Not Connection Is Nothing And Connection.IsRunning Then
Connection.Disconnect (1)
End If

End Sub
 

maxopus

Mod. Creo e Reverse Eng.
Staff Forum
Professione: Progettista meccanico
Software: Creo Parametric
Regione: Marche (PU)
#4
Grazie Folle, stai facendo un bel lavoro.

Noi siamo uno studio di progettazione e anche se non abbiamo produzione, a volte capita di dover fornire ai clienti un sistema di dati completo e ben organizzato.

E' un argomento che stiamo cercando di approfondire in questo periodo.
Se ho qualcosa di interessante ... e soprattutto un pò di tempo per farla, contraccambierò volentieri la cortesia.
 

DANI-3D

Utente Senior
Professione: PROGETTISTA MECCANICO
Software: PRO-E WF5
Regione: TOSCANA
#5
io memorizzo in un file di ACCESS tutte le informazioni necessarie per gestire i miei progetti prelevando i dati contenuti nei parmetri di ProE tramite la distinta BOM salvata in formato TXT ed importata appunto in ACCESS con un programma in VBA, con il quale gestico le distinte e posso visualizzare i disegni in PDf.

Se vi intesessa posso preparare un file di esempio.

Saluti
 

folle76

Utente Standard
Professione: Ingegnere meccanico
Software: Creo Parametric 3.0, Solidworks 2016
Regione: -
#6
Prerequisito affinchè vi giri l'esempio è:

1) adattare il codice VBA che esporta i parametri del modello in sessione in una tabella locale di Access;
2) registrare la .dll e settare la variabile d'ambiente come in allegato.
 

Allegati

folle76

Utente Standard
Professione: Ingegnere meccanico
Software: Creo Parametric 3.0, Solidworks 2016
Regione: -
#7
io memorizzo in un file di ACCESS tutte le informazioni necessarie per gestire i miei progetti prelevando i dati contenuti nei parmetri di ProE tramite la distinta BOM salvata in formato TXT ed importata appunto in ACCESS con un programma in VBA, con il quale gestico le distinte e posso visualizzare i disegni in PDf.

Se vi intesessa posso preparare un file di esempio.

Saluti
Fondamentalmente so già come estrarre dati strutturati da un file .txt, ma chiaramente può interessare anche ad altri. Più che altro, sarà più banale ma non lo so, non so come si fa a salvare la BOM in un file .txt.

Quel file che ho postato io lo uso fondamentalmente per evitare di codificare due volte.
Siccome ho accesso alle tabelle SQL server del nostro sistema gestionale faccio una query di accodamento o di aggiornamento sulla tabella base dell'anagrafica articoli di SQL popolandola o aggiornandola con i parametri del .prt ProE.
Probabilmente in un prossimo futuro andrò, a partire da un assieme .asm, a popolare non solo la tabella dell'anagrafica articoli, ma anche quella della distinta base, di modo che non devo fare due volte la distinta (in ProE e nel sistema gestionale).

Per quanto riguarda il problema inverso (scrivere dal gestionale a ProE) devo capire bene se può essere produttivo o meno per l'azienda in cui lavoro.
Altre potenzialità delle API che non siano accesso ai dati non le ho esplorate. Comunque, se c'è qualcuno che ha un problema posso guardare bene le proprietà e i metodi di specifici oggetti delle API.
 

DANI-3D

Utente Senior
Professione: PROGETTISTA MECCANICO
Software: PRO-E WF5
Regione: TOSCANA
#8
Per salvare la distinta BOM in un .TXT basta fare:

info > distinta base > ok
File > salva con nome

generalmente ProE assegna al file l' estenzione .BOM.1, basta rinominarlo in .TXT

Appena possibile trasmetterò un file di access di esempio
 

DANI-3D

Utente Senior
Professione: PROGETTISTA MECCANICO
Software: PRO-E WF5
Regione: TOSCANA
#9
allego il file di access di esempio, con una piccola distinta .txt ed il file di scambio per la distinta .bom

occorre salvare il tutto in una cartella c:\PROVA

nella maschera della distinta con le frecce nere dx o sx si può scendere o salire nei vari livelli del progetto

A disposizione per qualsiasi chiarimento.
 

Allegati

Affaire79

Utente poco attivo
Professione: Progettista
Software: Pro Engineer
Regione: Veneto
#10
Ciao
è la prima volta che scrivo su questo forum...
Nell'azzienda dove lavoro, al fine di gestire tutti i file di ProE abbiamo acquistato PDMLink. Prima però stavo lavorando su un progettino per riuscire a gestire i file tramite Acess...
Ho creato un database per riuscire, in pochi secondi, a capire dove un pezzo fosse stato usato nei diversi assiemi caricati nel database.
Già che c'ero però ho sviluppato anche un applcativo che estrapolasse la distinta disegni e progetto di una intera macchina...
Per caricare il data base utilizzavo una macro che mi generava e poi esportava in una cartella precisa un file *.csv.
il file cvs non era altro che l'esportazione di una tabella creata a livello di assieme generale.
Se ti può interessare...
 

blubossa

Utente Standard
Professione: disegnatore
Software: CREO 2, WF5, SOLIDWORKS 2015, AUTOCAD 2016,
Regione: puglia
#11
Ciao
è la prima volta che scrivo su questo forum...
Nell'azzienda dove lavoro, al fine di gestire tutti i file di ProE abbiamo acquistato PDMLink. Prima però stavo lavorando su un progettino per riuscire a gestire i file tramite Acess...
Ho creato un database per riuscire, in pochi secondi, a capire dove un pezzo fosse stato usato nei diversi assiemi caricati nel database.
Già che c'ero però ho sviluppato anche un applcativo che estrapolasse la distinta disegni e progetto di una intera macchina...
Per caricare il data base utilizzavo una macro che mi generava e poi esportava in una cartella precisa un file *.csv.
il file cvs non era altro che l'esportazione di una tabella creata a livello di assieme generale.
Se ti può interessare...
a me interessa tantissimo, sono nella condizione di dover creare ed estrapolare una distinta base in in .xls / .mdb / .csv e non so proprio da dove iniziare.........quindi per favore illuminatemi in merito.

grazie
 

DANI-3D

Utente Senior
Professione: PROGETTISTA MECCANICO
Software: PRO-E WF5
Regione: TOSCANA
#12
Ai dato un occhio all' esempio che ho allegato io a suo tempo?
Serve ad importare in Access una distinta BOM
 

blubossa

Utente Standard
Professione: disegnatore
Software: CREO 2, WF5, SOLIDWORKS 2015, AUTOCAD 2016,
Regione: puglia
#13
Ai dato un occhio all' esempio che ho allegato io a suo tempo?
Serve ad importare in Access una distinta BOM

ho provato a salvare la distinta base che trovo in info ma non vedo nessun file prodotto, ti informo che sto provando sulla versione 5.

dove sbaglio?
 

blubossa

Utente Standard
Professione: disegnatore
Software: CREO 2, WF5, SOLIDWORKS 2015, AUTOCAD 2016,
Regione: puglia
#14
allego il file di access di esempio, con una piccola distinta .txt ed il file di scambio per la distinta .bom

occorre salvare il tutto in una cartella c:\PROVA

nella maschera della distinta con le frecce nere dx o sx si può scendere o salire nei vari livelli del progetto

A disposizione per qualsiasi chiarimento.
ho provato anche a salvare la cartella nella directory come sopra indicato, ma sembra che non funzioni.

mi chiarisci?

ciao e grazie
 

blubossa

Utente Standard
Professione: disegnatore
Software: CREO 2, WF5, SOLIDWORKS 2015, AUTOCAD 2016,
Regione: puglia
#15
ho provato a salvare la distinta base che trovo in info ma non vedo nessun file prodotto, ti informo che sto provando sulla versione 5.

dove sbaglio?
scusa DANI-3D,
sono riuscito ad aprire la distinta base in txt.

e per l'importazione in access dal programmino che hai fatto come faccio?

grazie
 

DANI-3D

Utente Senior
Professione: PROGETTISTA MECCANICO
Software: PRO-E WF5
Regione: TOSCANA
#16
Ciao.

Il programma in visual basic che importa i dati in access è impostato in modo da leggere il mio txt con un determinato tracciato record. Se conosci questo linguaggio di programmazione ti indico dove andare ad agire per leggere il tuo txt, altrimenti postamelo che vedo cosa posso fare.

Saluti
 

blubossa

Utente Standard
Professione: disegnatore
Software: CREO 2, WF5, SOLIDWORKS 2015, AUTOCAD 2016,
Regione: puglia
#17
Ciao.

Il programma in visual basic che importa i dati in access è impostato in modo da leggere il mio txt con un determinato tracciato record. Se conosci questo linguaggio di programmazione ti indico dove andare ad agire per leggere il tuo txt, altrimenti postamelo che vedo cosa posso fare.

Saluti
ciao DANI-3D,
ti elenco qui di seguiti i campi che vorrei estrapolare automaticamene:

codice
descrizione
quantità
n°_revisione
materiale
trattamento
area
peso
spessore
misura_X (ingombro max)
misura_Y (ingombro max)
misura_Z (ingombro max)

ovviamente mi serve per relazione padre/figlio

assieme_generale
sotto_assieme1
sotto_assieme2
sotto_assieme3
sotto_assieme3.1
sotto_assieme3.2
parti
...
..
..
..
spero di essere stato chiaro.

ciao e grazie.
blubossa
 

DANI-3D

Utente Senior
Professione: PROGETTISTA MECCANICO
Software: PRO-E WF5
Regione: TOSCANA
#18
Ciao,

Prima di portare i dati in access ti consiglio di fare i seguenti passaggi:

1) definire bene i parametri che ti sevono modificando la tabella di distinta che ti ho postato nei giorni scorsi il che è abbastanza semplice e contengono le informazioni che servono sia per la distinta che per la mascherina della messa in tavola.

2) Modificare il file definito nel BOM_FORMAT per esportare la distinta BOM.

3) importare il file in access

Una volta sistemato il punto 1 il resto è semplice

Tra i paranetri ti consiglio di inserirne uno che puoi chiamare TIPO che indica la tipologia del particolare o dell' assieme che è utile sia per noi che per chi deve leggere la distinta ed indica per es. se il codice è un assieme saldato, lavorato, paticolare in lamiera ecc.

Ti allego un file .txt con le relazioni e le tipologie che utilizzo io, con queste istruzioni creo inoltre un parametro di nome SPESS che contiene le dimensioni del grezzo di partenza.

Saluti
 

Allegati

blubossa

Utente Standard
Professione: disegnatore
Software: CREO 2, WF5, SOLIDWORKS 2015, AUTOCAD 2016,
Regione: puglia
#19
Ciao,

Prima di portare i dati in access ti consiglio di fare i seguenti passaggi:

1) definire bene i parametri che ti sevono modificando la tabella di distinta che ti ho postato nei giorni scorsi il che è abbastanza semplice e contengono le informazioni che servono sia per la distinta che per la mascherina della messa in tavola.

2) Modificare il file definito nel BOM_FORMAT per esportare la distinta BOM.

3) importare il file in access

Una volta sistemato il punto 1 il resto è semplice

Tra i paranetri ti consiglio di inserirne uno che puoi chiamare TIPO che indica la tipologia del particolare o dell' assieme che è utile sia per noi che per chi deve leggere la distinta ed indica per es. se il codice è un assieme saldato, lavorato, paticolare in lamiera ecc.

Ti allego un file .txt con le relazioni e le tipologie che utilizzo io, con queste istruzioni creo inoltre un parametro di nome SPESS che contiene le dimensioni del grezzo di partenza.

Saluti

Ciao,
alcuni chiarimenti:
1) quando dici di modificare la tabella distinta, inserendo bene i parametri che mi servono, ti riferisci al file in access??

2) dove trovo il file bom_format da modificare?


il parametro TIPO, mi era sfuggito.

le relazioni che mi hai postato sono interessanti.................
se mi chiarisci meglio il significato dei campi che utilizzi in access ho l'impressione
che sono gli stessi che servono a me.

probabilmente ti faccio delle domande banali, ma è da poco che cerco di capirci qualcosa con pro-e.

la mascherina da inserire nella messa in tavola l'ho già creata, vuoi che te l'ha posto per dargli un'occhiata?

ciao
 

DANI-3D

Utente Senior
Professione: PROGETTISTA MECCANICO
Software: PRO-E WF5
Regione: TOSCANA
#20
no, per il momento dimentica access, un passo alla vola.

Crea un drw di un assieme ed inserisci la tabella distinta.tbl

Tabella>insrisci>da file

Sicuramente ti apparirà una distinta con delle righe vuote, a questo punto
tasto dx del mouse nella cella subito sotto all'intestazione delle colonne > proprietà, e modifica l'istruzione che ti compare.
Per esempio se clicchi sotto la descrizione avrai &asm.mbr.descrizio dove descrizio è il nome del mio parametro, lo dedi sostituire con quello che usi tu.

es. &asm.mbr.PIPPO

Fai questo per ogni colonna della distinta fino a che non avrai tutte le informazioni ed alla fine salva la tabella.

Per le relazioni.txt copia il paragrafo che ti interessa nelle relazioni della parte ed inserici le quote principali al posto dello 0 nei parametri relativi alle dimensioni

/**************** QUOTE LAMIERA**********************
LATO1=0
LUNG=0
SP=0