Cerco elenco API swx12 con spiegazioni ed esempi in italiano

reggio

Utente Senior
Professione: ...
Software: autocad11+swx16 sp4 w7 x64+Ready2W2012
Regione: Emilia - Modena
#1
Salve a tutti, mi piacerebbe capire come modificare le macro registrate per creare una o più funzioni "avanzate" da far eseguire a Swx2012.
Trattandosi di argomento ostico e sostanzialmente sconosciuto (VBA) mi piacerebbe trovare documentazione in Italiano, cosa che, pare essere difficile da trovare ...

Chiedo cortesemente aiuto per trovare documentazione varia in lingua Italiana (elenchi, esempi, tutorial, ...).
 

jenuary

Utente Standard
Professione: Progettista e Programmatore VB.Net
Software: Solidworks
Regione: Veneto
#2
Ciao Reggio,
in tanti anni di ricerca del materiale che anche a te interessa ci ho rinunciato.
Tutto è in inglese, e devo dirti che una volta rotto il ghiaccio, la lingua non ha più importanza, ovvero riesci a gestire il manuale anche in inglese.
Scommetto che se facessimo un libro sulle Api di Solidworks in italiano, dovremmo aprire una stamperia...

Se hai dei chiarimenti in merito alle Api, scrivi pure.

Ciao
 

reggio

Utente Senior
Professione: ...
Software: autocad11+swx16 sp4 w7 x64+Ready2W2012
Regione: Emilia - Modena
#3
Ciao e grazie, premetto che avevo iniziato a chiedere aiuto sul forum SWX Inglese (quì non avevo trovato molto su "API" e "MACRO"), ma causa la mia ignoranza in Inglese e la mia ignoranza su API&VBA&Macro mi sono arenato ... per questo volevo ripartire in Italiano...

Ciao Reggio,
in tanti anni di ricerca del materiale che anche a te interessa ci ho rinunciato.
Tutto è in inglese, e devo dirti che una volta rotto il ghiaccio, la lingua non ha più importanza, ovvero riesci a gestire il manuale anche in inglese.
Scommetto che se facessimo un libro sulle Api di Solidworks in italiano, dovremmo aprire una stamperia...

Se hai dei chiarimenti in merito alle Api, scrivi pure.

Ciao
Dopo la tu premessa quindi, prima domanda è: dove trovo "il manuale anche in inglese"? A quale ti riferisci? Qualcosa che si trova in rete?
2°Conosci siti che mostrino macro semplici per fare cose semplici in modo da capirne i meccanismi base? (questo in Inglese, per quello che riesco a capire, sembra fatto benino)
3° Tu come hai iniziato a capire le API?

Ora ti spiego cosa avevo in mente:

Quando ho iniziato a disegnare con autocad, creai un programma con LISP che permetteva di "assemblare" un gruppo di macchina grazie ai dati immessi dalla tastiera (a seconda delle scelte, il piccolo programmino LISP, sceglieva alcuni blocchi cad e li inseriva nella posizione X;Y corretta).
La macchina era concettualmente semplice, ma alla fine avevo aggiunto molti accessori che gestivo sempre con lo stesso programmino LISP ...

Ora vorrei fare una cosa simile con il mio Swx12, vorrei eseguire le scelte e i calcoli dei dati da un foglio excel e poi "chiedere" a SWX di "leggere" una cella del foglio excel, poi trovare ed inserire in un assieme, le parti e / o i sottoassiemi indicati dal foglio excel.

In passato avevo già cercato di capire le potenzialità di DriveWorks, ma penso che non sia in grado di aiutarmi in questo caso (o che io non riesco a capire come fare), quindi vorrei scartare questa soluzione e tentare con Macro/Api.

Alla fine, vorrei capire come poter "dare" a Swx12 i seguenti comandi:

0) Creare e aprire il gruppo "assieme.sldasm". (Questo passaggio non è essenziale)
1) aprire questo file excel "C:\folder123\excel-swx.xlsx".
2) cerca nella cella B2 del foglio "sheet1" il percorso del file della parte o del sottoassieme (ad esempio \\server2012\Disc J\disegni\P1_021_02_\P1_021_02_013\P1_021_02_013.SLDASM).
3) cerca nella C2 del foglio "sheet1" la distanza asse X dal centro di "assieme.sldasm" al centro della parte centrale o del sottoassieme nella della B2.
4) cerca nella cella D2 della scheda "sheet1" la distanza Y dal centro di "assieme.sldasm" al centro della parte centrale o del sottoassieme della cella B2.
5) cerca nella cella E2 del foglio "sheet1" distanza asse Z dal centro di "assieme.sldasm" al centro della parte centrale o del sottoassieme della cella B2.
6) inserire e fissare in tale posizione (X;Y;Z) la parte o il sottoassieme della cella B2.

torna al punto 2 e ripeti tutto con riferimento alla riga 3 , ri-partendo da B3 ... D3 , E3 , ... inserire e fissa ...
torna al punto 2 e ripeti tutto con riferimento alla riga 4 , ri-partendo da B4 ... D4 , E4 , ...
...
Continuare a scendere fino a che non trovi la scritta "fine" nella colonna B.


Chi mi riesce ad aiutare a creare questa connessione tra SWX12 e Excel2007?
Ripeto, purtroppo non ho alcuna preparazione con l'API , e io so molto poco di VBA , quindi vi chiedo molta pazienza e un sacco di esempi concreti :redface:

Quì ho messo le parti base e il foglio di excel con quello che sono riuscito a fare ...
 

jenuary

Utente Standard
Professione: Progettista e Programmatore VB.Net
Software: Solidworks
Regione: Veneto
#4
Ciao Reggio,
quello che vorresti fare è abbastanza semplice, ovviamente facendo i passaggi giusti.
Appena riesco ti imposto qualcosa, se sei d'accordo, perché spiegarti i vari passaggi, non so se ne sono capace, quindi leggendo il codice dovrebbe esserti più semplice.

Buona giornata
 

reggio

Utente Senior
Professione: ...
Software: autocad11+swx16 sp4 w7 x64+Ready2W2012
Regione: Emilia - Modena
#5
Ciao Reggio,
quello che vorresti fare è abbastanza semplice...
... speriamo :tongue:

Appena riesco ti imposto qualcosa, se sei d'accordo, perché spiegarti i vari passaggi, non so se ne sono capace, quindi leggendo il codice dovrebbe esserti più semplice.
Sono super d'accordo, quello è il mio metodo "d'imparamento" preferito :D
Con un esempio sotto, mi vado a vedere come e perchè funziona e cosa accade cambiando le cose ...
Oh io ci conto eh? Allora ti aspetto!! :finger:
 

jenuary

Utente Standard
Professione: Progettista e Programmatore VB.Net
Software: Solidworks
Regione: Veneto
#6
Ciao Reggio,
potresti mandarmi un tuo file di assieme montato con i pezzi in posizione come da file Excel? Così verifico che quanto verrà fatto sia conforme.
Alle volte poi ognuno si personalizza i file di assieme e i piani dell'assieme a modo suo, e non è detto che il mio file di assieme sia compatibile con il tuo.
Inoltre io lavoro con la 2013 e sto installando la 2014, spero non sia un problema, la macro dovrebbe girare lo stesso, altrimenti copio il codice in un file di testo e poi tu lo incolli nel tuo file di macro.

Aspetto il materiale allora...

Ciao
 

reggio

Utente Senior
Professione: ...
Software: autocad11+swx16 sp4 w7 x64+Ready2W2012
Regione: Emilia - Modena
#7
Ciao, ho rimesso la roba quì
PARAMETRICO2 (1).zip
.. nel rifare l'assieme mi sono accorto che sarà più complicato del previsto proprio perchè, le parti sono state disegnate su piani che magari non combaciano con i piani delle altre parti o dell'assieme (esempio io ho dovuto allineare un piano frontale di una parte con un piano superiore o destro di un altra parte) ... diciamo che in questa fase, se riesci addirritura a "ruotare" le parti applicando i valori che andrò ad inserire nella tab di excel sotto a "Rotazione su asse X" "Rotazione su asse Y" "Rotazione su asse Z" sarebbe perfetto, (e a riportare per ogni riga, sotto "RX","RY","RZ" perchè (questi disegni sono solo semplici esempi di ingombro) le parti reali che andrò ad inserire NON saranno certamente tutte allineate nel modo giusto rispetto l'assieme o la prima parte che andrò a inserire.

Questo modificherà la procedura così:

0) Creare e aprire il gruppo "assieme.sldasm". (Questo passaggio non è essenziale)
1) aprire questo file excel "C:\folder123\excel-swx.xlsx".
2) cerca nella cella B2 del foglio "sheet1" il percorso del file della parte o del sottoassieme (ad esempio \\server2012\PARAMETRICO\TN\modulo standard.SLDPRT).
3) cerca nella C2 del foglio "sheet1" la distanza asse X dal centro di "assieme.sldasm" al centro della parte centrale o del sottoassieme nella della B2.
4) cerca nella cella D2 della scheda "sheet1" la distanza Y dal centro di "assieme.sldasm" al centro della parte centrale o del sottoassieme della cella B2.
5) cerca nella cella E2 del foglio "sheet1" distanza asse Z dal centro di "assieme.sldasm" al centro della parte centrale o del sottoassieme della cella B2.
6) cerca nella F2 del foglio "sheet1" il valore della rotazione su asse X della parte centrale o del sottoassieme nella della B2 e ruotalo.
7) cerca nella G2 del foglio "sheet1" il valore della rotazione su asse Y della parte centrale o del sottoassieme nella della B2 e ruotalo.
8) cerca nella H2 del foglio "sheet1" il valore della rotazione su asse Z della parte centrale o del sottoassieme nella della B2 e ruotalo.
9) inserire e fissare in tale posizione (X;Y;Z) la parte o il sottoassieme della cella B2.

torna al punto 2 e ripeti tutto con riferimento alla riga 3 , ri-partendo da B3 ... D3 , E3 , F... inserire e fissa ...
torna al punto 2 e ripeti tutto con riferimento alla riga 4 , ri-partendo da B4 ... D4 , E4 , F...
...
Continuare a scendere fino a che non trovi la scritta "fine" nella colonna B.


... se questa "novità" complica troppo, fammi sapere che cerco di vedere in quale altro modo potrei risolvere ...
 

reggio

Utente Senior
Professione: ...
Software: autocad11+swx16 sp4 w7 x64+Ready2W2012
Regione: Emilia - Modena
#8
... :( già, è più complicato del previsto, è facile registrare delle macro che eseguano una singola operazione, ma poi mi blocco quando debbo "mettere in fila" le varie operazioni ... non basta incollarle in ordine e lì mi pianto ...

Chiedo aiuto :rolleyes:
 

reggio

Utente Senior
Professione: ...
Software: autocad11+swx16 sp4 w7 x64+Ready2W2012
Regione: Emilia - Modena
#9
Ciao riporto quì il tuo PM per praticità e beneficio futuro di chi potrà essere interessato.
jenuary ha detto:
Io ti consiglierei di disegnare i tuoi componenti in zero-zero, e stessa origine
Ok ...

jenuary ha detto:
La macro dovrà importare i componenti nel tuo assieme, posizionati in zero-zero e li fissa (sul posto)
... eh, sì, ma come si fà questa macro che sia in grado di inserire nel posto giusto leggendo i dati da excel?

jenuary ha detto:
intercetti le quote da cambiare dei tuoi componenti e crei il tuo assieme con i tuoi parametri.
...? no, excel a mè serve "solo" per far scegliere all'utente (io) quali pezzi inserire e quali no, le quote delle parti NON debbono essere cambiate (cambio quota=cambio codice; è l'utente che cambia codice e non quote da excel)

jenuary ha detto:
Cosi facendo potresti comporre qualsiasi cosa, comandando il tutto da Excel.
mmmmagari, ma come? è questo l'aiuto che mi serve, un esempio di macro che inserisca il codice scelto in quella casella, alla posizione x,y,z indicato in quell'altra casella excel (un pò come spiegato sopra) ... ma non sò da che parte iniziare :frown:

jenuary ha detto:
Qui sotto mi riporto un link dove trovi un esempio di collegamento a Solidworks mediante Excell:
http://www.cadsharp.com/blog/using-microsoft-excel-with-the-solidworks-api/
:confused: Codice API sconosciuto? ... aiuto!!! ...commentato in Inglese? ...aiuto^2 :(

jenuary ha detto:
...mi sento in colpa.
... eh eh eh, bene bene :wink:

jenuary ha detto:
Fammi sapere se ti serve qualcosa e scusami ancora se non sono stato tempestivo
...beh, un esempietto funzionante non guasterebbe :wink: