Aiuto nel creare una macro per Solid Edge

Professione: Studente
Software: Solid Edge ST
Regione: Lombardia
#1
Ciao a tutti,
per un progetto universitario ho la necessità di creare una macro per solid edge la quale svolga una serie di operazioni in automatico, ma non ho alcuna nozione a riguardo e per questo ho aperto il post.
CONTESTO:
Ho un assieme, chiamiamolo PRINCIPALE.asm, con diverse varianti (una sessantina, ma potrebbero aumentare), formato a sua volta da componenti creati come assiemi, chiamiamoli SECONDARIO_n.asm (con n crescente a partire da 1 per distinguerli), di diversi file .par; alcuni di questi .par sono parametrici, oppure contengono curve per tabelle e, sia parametri che curve, puntano a dei file .xlsx (excel) esterni, che chiamiamo PARAMETRI_n.xlsx (sempre con n crescente da 1), da me creati.
OBBIETTIVO:
Leggere un file .xlsx, diverso dai vari file PARAMETRI_n.xlsx e che chiamerò SCELTA.xlsx, andando a pescare un certo risultato in una cella; questo risultato non è detto che sia un valore numerico (la cosa è ancora in fase di definizione, potrebbe trattarsi di una sigla, un nome o altro) e definisce la variante dell'assieme PRINCIPALE.asm che a me interessa visualizzare a schermo al momento dell'apertura dell'assieme PRINCIPALE.asm stesso.
La variante che dev’essere visualizzata deve prima però “esser dimensionata”; con questo intendo dire che:
i componenti al suo interno, essendo parametrici o contenenti curve per tabelle, devono essere tutti aggiornati alle nuove dimensioni; queste vengono calcolate dai vari fogli excel PARAMETRI_n.xlsx.
Sto iniziando ora ad informarmi su come funzioni il linguaggio visual basic (che mi ha detto essere adatto per questo tipo di macro, ma se ne conoscete altri migliori suggeritemeli pure) e soprattutto su come dev’essere scritta la macro affinchè svolga le funzioni che interessano a me. Essendo totalmente alle prime armi riguardo all’argomento (per farvi capire il mio livello attuale, non ho nemmeno idea di come far utilizzare a Solid Edge la macro in questione una volta che l’ho scritta) qualunque opinione, consiglio o aiuto di ogni sorta è ben accetto. In particolare sono interessato a consigli sull’impostazione da dare alla macro al fine di farle svolgere al meglio e nel modo più semplice possibile tutte le operazioni necessarie.
Al momento mi sto documentando su questo sito (http://programmazione.html.it), ma ovviamente non è specifico per la programmazione di macro dedicate e Solid Edge; qualunque materiale possiate fornirmi è ben accetto.

Grazie mille in anticipo per l’aiuto che mi saprete dare.
 

Tequila

Utente Senior
Professione: teorico del paleocontatto
Software: Solid Edge ST7, scarabocchi su carta
Regione: Veneto (PD)
#2
purtroppo non me ne intendo neanch'io tanto di programmazione e quelle che necessitavo me le sono fatte fare dal rivenditore/assistenza. Quello che chiedi comunque non è cosi semplice anche se potresti fare tutto con una macro in excel. Per esempio ti crei un foglio xls dove richiami o digiti dati che andranno a riempire delle celle che saranno collegate ai modelli asm, par, ecc. da aprire e che si modificheranno in base ai dati ed alla fine avrai l'asm principale composto dalle varianti di assiemi e modelli. Per quanto riguarda i modelli esistono info sull'help su come linkarli ad excel, mentre per le varianti di assiemi non ho idea. Non ho neanche la possibilità di verificare ora... Esiste inoltre un documento in inglese sulla programmazione per solid edge scaricabile dal sito ftp della siemens sia per programmare in VB che .net

Inoltre sarebbe da capire se il tuo programma una volta creato il tuo asm + par in base alle specifiche che gli dai, deve salvarti i modelli creandoti un assieme autonomo o se basta solo ce ti faccia questa configurazione speciale.
 

Be_on_edge

Moderatore
Staff Forum
Professione: Progettazione
Software: Solid Edge
Regione: Emilia Romagna
#3
Io sto ancora programmando in VB6 e fino ad oggi non ho trovato limiti se non per le cose che le API di solid edge non ti permettono di fare.

Quindi inizia con qualcosa di semplice per imparare come funziona il tutto e poi se hai problemi fai domande specifiche.

Ciao
 

Leso

Utente Standard
Professione: Ufficiale tecnico
Software: Solid Edge ST9
Regione: Veneto
#4
Puoi cominciare con l'help di solid edge "Guida del programmatore di Solid Edge" e "Programmazione in solid edge". Comincia col copiare gli esempi e poi cominci a sbizzarrirti piano piano...
 
Professione: Studente
Software: Solid Edge ST
Regione: Lombardia
#5
Ok grazie per i consigli... rispondo con ordine.

X Tequila:
Non so se la tua soluzione (macro con excel) sia applicabile per due motivi: il primo è che la funzione principale che deve avere la mia macro è aprire la variante corretta del mio assieme in funzione del valore che gli restituisce il foglio excel di scelta; il secondo è che ho riscontrato il seguente problema nell'aggiornamento dei miei .par "parametrici": se questi sono stati parametrizzati utilizzando le varianti funziona tutto bene (ad eccezione del fatto che devo aprire espressamente i par per aggiornarli), ma se sono state parametrizzate le curve per tabelle allora queste non si aggiornano automaticamente quando viene modificato il file excel, ma va aggiornato (aprendolo in excel e poi salvandolo) il foglio excel che solid edge utilizza per disegnarle (che è un foglio di lavoro che credo "sia contenuto" nel par in questione, ma comunque diverso da quello che gli ho dato io in input la prima volta per disegnarle).

Leso:
Principalmente i consigli che chiedo riguardano la logica con cui costruire la mia macro e non tanto riguardo la programmazione vera e propria; il linguaggio di programmazione lo posso imparare e conosco qualcuno che mi può aiutare, ma il mio problema è che non ho idea di quale sia la strada migliore per impostare la struttura della macro in modo che svolga al meglio quel che interessa a me.
 

Tequila

Utente Senior
Professione: teorico del paleocontatto
Software: Solid Edge ST7, scarabocchi su carta
Regione: Veneto (PD)
#6
Tutto corretto quello che dici, la mia era solo una strada percorribile tenendo presente che di programmazione VB/C++/net/ecc. hai detto che sei alle prime armi per cui vista anche la complessità della tua richiesta mi sembrava una soluzione più semplice e logica.
Comunque nessuno ti vieta di farlo tramite pura programmazione, però tieni presente che i file cad se non sono aperti non si aggiornano in nessun caso. Non puoi pretendere di lanciare il tuo programmino, inserire i tuoi dati ed in 10 secondi ti apra il tuo bel assieme configurato perfetto.

La tua macro/programma che dovresti scrivere, dovrebbe far aprire i file desiderati in base alla configurazione della variante dell'assieme, far aprire i singoli file e sottoassiemi, aggiornarli, salvarli e chiuderli (diciamo quasi in background) e nel caso di file con collegamenti a curve per tabelle di file XLS compresi nel PAR dovrebbe aprirti il file XLS , aggiornarlo/salvarlo/chiuderlo... ed alla fine lasciarti il solo file di assieme aperto. Se poi hai anche delle tavole draft da aprire ed aggiornare la cosa diventa ancora più lunga.

Sicuramente diventa meno impegnativo farlo in questo modo che non editare 50 file singolarmente, ma prima di cimentarti in assiemi con 50-60 varianti con rispettivi sottoassiemi e varianti, fai delle prove con assiemi di 3-4 particolari e sottoassieme di 1-2 particolari cosi da valutare la strada logica di programmazione.

A parole sembra facile, però dovresti modellarti ed assemblare bene i particolari, creare le varianti, salvarti le variabili dei modelli che ti interessa editare e fare tutte le prove per vedere di non mandare in loop solid edge e non avere rifermenti circolari sui particolari (part. A, collegato a B, B collegato a C e di nuoco C collegato ad A).

Per cui segui i consigli di Leso e B_o_e leggendo il manuale che trovi sull'help di solid edge e facendo prove con gli esempi.
Se vai in C:\Program Files\Solid Edge ST3\Custom trovi degli esempi già fatti e mi sembra anche editabili.
 

Tequila

Utente Senior
Professione: teorico del paleocontatto
Software: Solid Edge ST7, scarabocchi su carta
Regione: Veneto (PD)
#7
mi sono dimenticato di chiederti se questa tua macro deve solamente configurare ed aprire un assieme o se poi ti deve salvare anche i singoli file in modo tale da essere scollegati dal programma che li ha generati.

Questo perchè se poi fai un'altra configurazione ti riaggiornerà sempre lo stesso assieme.
 
Professione: Studente
Software: Solid Edge ST
Regione: Lombardia
#8
Dunque io ho già creato tutto (assieme completo, assiemi "minori" formati dai vari file .par parametrizzati, etc) o quasi, in quanto il tutto fa parte di un progetto di cui la macro è l'ultimo passo.
Ovviamente so che non è possibile inserire dei dati in excel, ottenere un certo risultato e vedere a schermo la variante dell'assieme corrispondente; in mezzo ci sono tutte le operazioni che hai descritto tu e che ovviamente la macro svolgere, anch'esse in automatico. Diciamo che ho solo cercato di descrivere il mio obbiettivo a grandi linee per 2 motivi:
- non ho ancora definito alla perfezione la sequenza di operazioni da svolgere;
- accetto qualunque tipo di consiglio per quanto riguarda la logica da utilizzare e la struttura che è meglio dare alla macro (come ho già detto, e scusate se mi ripeto, è proprio in questo ambito che necessito dei maggiori consigli).

Per quanto riguarda quella che sarà "la fase test" ovviamente la svolgerò con un numero inferiore sia di file che di varianti altrimenti chiaramente diventa ingestibile.

Infine, per rispondere alla tua domanda, direi che secondo me (ma sono aperto a modifiche) la macro dovrebbe (ovviamente una volta letto il risultato dal foglio excel):
-modificare i vari .par parametrici;
-aggiornare gli "assiemi minori" (quelli contenenti i vari .par);
-aggiornare il file "assieme completo" (quello con le diverse varianti di configurazione);
-mostrare la variante che corrisponde al risultato ottenuto nel foglio excel.
Non so se sarà necessario o meno salvare le varie modifiche, anche se penso che, per seguire l'ordine che ho appena descritto, forse lo sarà; in ogni caso anche su quest'aspetto cercherò di trovare la strada più logica da seguire.
 
Professione: Studente
Software: Solid Edge ST
Regione: Lombardia
#9
Volevo chiedere se qualcuno poteva postare delle macro che ha scritto (mi interessa il codice), magari descrivendo, anche solo a grandi linee, che azioni deve compiere; mi sto leggendo varie guide ma vorrei vedere qualcosa di pratico, riferito a solid edge, anche per individuare meglio ciò su cui mi devo concentrare perchè al momento mi è tutto un pò vago.
 
Professione: Studente
Software: Solid Edge ST
Regione: Lombardia
#11
Ci ho già guardato ma purtroppo si possono scaricare dei file .zip che però non contengono il codice ma solo l'eseguibile... ammetto di non aver provato a scaricarli tutti però i primi sono così, quindi immagino lo siano tutti.
 

Leso

Utente Standard
Professione: Ufficiale tecnico
Software: Solid Edge ST9
Regione: Veneto
#12
Con un file par o asm aperto ti apre il corrispettivo file dft presente nella cartella \disegni
Il programmino confronta la prima parte del nome del file che nel mio caso è il codice dell'articolo e poi se ce n'è più di uno con quel codice ti fa scegliere.
E' in visual basic 2010.
Ciao
 

Allegati

Professione: Studente
Software: Solid Edge ST
Regione: Lombardia
#13
Grazie mille... ho visto che anche nella cartella Custom di solid edge sono presenti delle macro e sto cercando di comprenderne il linguaggio. Al momento è tutto molto vago per quel che mi riguarda...
 

Tequila

Utente Senior
Professione: teorico del paleocontatto
Software: Solid Edge ST7, scarabocchi su carta
Regione: Veneto (PD)
#14
Grazie mille... ho visto che anche nella cartella Custom di solid edge sono presenti delle macro e sto cercando di comprenderne il linguaggio. Al momento è tutto molto vago per quel che mi riguarda...
questo era quello che a grandi linee ti dicevo l'altro giorno su l'utilizzare delle macro o semplici formule/collegamenti a celle in excel al posto di fare programmazione pura in VB o altri linguaggi. Questo per il fatto che se non mastichi il linguaggio di programmazione diventa assai complicato e lungo l'apprendimento. Comunque nulla è impossibile e se non l'hai già guardato c'è il manuale di programmazione VB di solid edge e lo trovi aprendo l'indice delle guide in altro a destra su solid edge (libretto con punto interrogativo) e poi andando alla fine della prima parte "guida di solid edge" c'è la voce "guida del programmatore di solid edge" clicca e ti apre il pdf.

in bocca al lupo per la tua macro :finger:
 
Professione: Studente
Software: Solid Edge ST
Regione: Lombardia
#15
Scusa Tequila ma non ho ben capito la tua risposta! A cosa ti riferivi? All'utilizzo delle macro già presenti nella cartella custom?
Comunque sto leggendo un pò di tutto: il sito che ho linkato in precendenza (programmazione.html), la guida di solid edge che anche tu mi hai consigliato, altri post su internet, etc. Il problema principale per me ora è che la quantità di informazioni che ho a disposizione è veramente grande e devo cercare di capire cosa interessa realmente a me per costruire la mia macro.
 
Professione: Studente
Software: Solid Edge ST
Regione: Lombardia
#16
Una domanda la cui risposta che mi sarà utile in futuro... Quando io apro un file .asm contenente diverse varianti dello stesso assieme questo si apre automaticamente sulla prima; è possibile effettuare la scelta di quale variante visualizzare? Mi interessa saperlo perchè, nella scrittura della macro, dovrò ovviamente richiamare prima o poi l'apertura dell'assieme completo e vorrei evitare di visualizzare ogni volta la prima variante dell'assieme prima di poter scegliere quella che interessa a me.
 

Tequila

Utente Senior
Professione: teorico del paleocontatto
Software: Solid Edge ST7, scarabocchi su carta
Regione: Veneto (PD)
#17
Scusa Tequila ma non ho ben capito la tua risposta! A cosa ti riferivi? All'utilizzo delle macro già presenti nella cartella custom?
Comunque sto leggendo un pò di tutto: il sito che ho linkato in precendenza (programmazione.html), la guida di solid edge che anche tu mi hai consigliato, altri post su internet, etc. Il problema principale per me ora è che la quantità di informazioni che ho a disposizione è veramente grande e devo cercare di capire cosa interessa realmente a me per costruire la mia macro.
mi riferisco al fatto che non è cosi semplice programmare e niente di più. Quello che vuoi fare non è cosi semplice ma neanche impossibile. Devi cercare di trovare esempi semplici da riprodurre per capire la sintassi di scrittura. Ti devi armare di pazienza. Tempo fa (un anno e mezzo) volevo fare anch'io per delle macchine una macro, molto più semplice della tua, ma essendo a zero in fatto di programmazione (pur avendo mio fratello maggiore che è programmatore :eek:) alla fine ho optato per un semplice foglio excel con dati di input su celle e di output su altre che poi erano collegate ai modelli 3D che mi interessava manipolare.

Ma ripeto che non ti sto demoralizzando o altro... se hai la buona volonta, il tempo e la pazienza di imparare prima o poi riuscirai nell'impresa, ed inoltre sicuramente trovi chi nel forum ti sa aiutare.
ciao
 

Be_on_edge

Moderatore
Staff Forum
Professione: Progettazione
Software: Solid Edge
Regione: Emilia Romagna
#18
Una domanda la cui risposta che mi sarà utile in futuro... Quando io apro un file .asm contenente diverse varianti dello stesso assieme questo si apre automaticamente sulla prima; è possibile effettuare la scelta di quale variante visualizzare? Mi interessa saperlo perchè, nella scrittura della macro, dovrò ovviamente richiamare prima o poi l'apertura dell'assieme completo e vorrei evitare di visualizzare ogni volta la prima variante dell'assieme prima di poter scegliere quella che interessa a me.
Questo avviene perché lo apri con un doppio click, se lo apri dall'interfaccia di solidedge ti chiederà quale variante vuoi caricare.

Da programmazione invece insieme al nome file devi passare il nome della variante che vuoi aprire.

Ciao
 

Be_on_edge

Moderatore
Staff Forum
Professione: Progettazione
Software: Solid Edge
Regione: Emilia Romagna
#19
Io ti consiglio di farti un diagramma di flusso della tua macro, poi passo per passo vai a studiarti come fare la specifica operazione. Studiare molto adesso e poi partire è dispersivo e rischi di dover poi andare a leggere di nuovo.

Inizia con fare una macro che ti apre una specifica variante di un assieme alterno.

Saranno 4 o 5 righe di codice ma ti fanno capire tante cose.

Ciao
 

Be_on_edge

Moderatore
Staff Forum
Professione: Progettazione
Software: Solid Edge
Regione: Emilia Romagna
#20
Io ti consiglio di farti un diagramma di flusso della tua macro, poi passo per passo vai a studiarti come fare la specifica operazione. Studiare molto adesso e poi partire è dispersivo e rischi di dover poi andare a leggere di nuovo.

Inizia con fare una macro che ti apre una specifica variante di un assieme alterno.

Saranno 4 o 5 righe di codice ma ti fanno capire tante cose.

Ciao
Dimenticavo, per imparare come sono strutturati gli "oggetti" in SolidEdge mi ha aiutato tantissimo "SolidEdgeSpy", lo trovi sul sito di Jason Newel. Con una ricerca su google ci metti un'attimo.

Ri-Ciao