Xpresso salvare - importare valori user data

Forum per: Modellazione, Texturing, Animazione, Composting e tutto quello che riguarda il normale utilizzo di Cinema4D.

Moderators: Arkimed, natas, visualtricks, cappellaiomatto

  • Advertising
User avatar
nafta
Posts: 154
Joined: Wed Feb 01, 2006 12:38 pm
Contact:

Xpresso salvare - importare valori user data

Post by nafta »

Ciao una domanda su xpresso e python, e possibile creare uno script per esportare i dati contenuti dentro gli user data ? per esempio immaginate di avere una serie di user data come con alcuni valori impostati "vi allego una foto tanto per farvi un'idea" e di voler esportare i valori contenuti in essi in un file di testo o csv, per poi importarli in un altro file

mi server per un RIG che ho realizzato per un cliente dove verra usato per più prodotti differenti quindi file differenti volevo sapere se si poteva fare questo salvataggio ed importazione

mi servirebbe un suggerimento o un link dove poter imparare a farlo

mille grazie
Attachments
Shot 2.jpg
Shot 2.jpg (12.38 KiB) Viewed 1213 times
User avatar
abe3d
Posts: 1110
Joined: Mon Dec 07, 2009 1:48 pm

Re: Xpresso salvare - importare valori user data

Post by abe3d »

Ciao Nafta, si in teoria si potrebbe farlo, nella pratica però ci sarebbe da valutare l'effettiva quantità di dati da leggere,salvare,rileggere e reimpostare con la conseguente complessità (di nodi) per le interazioni nel tag Xpresso. In altre parole, se gli user data sono tanti, pur volendo semplificare con un unico nodo python che si occupa del file esterno, i nodi di riferimento nel tag xpresso per leggere e reimpostare i valori sarebbero comunque almeno il doppio degli user data stessi, sempre restando che questi siano tutti gestiti da xpresso. Dovrei fare qualche prova per capire se è possibile fare tutto dal nodo python (che per chiarezza ha diverse limitazioni)... Discorso totalmente diverso se a generare gli user data è direttamente un plugin python...

Edit:
Mi sa che ho detto quasi una c.zt, Cinema4d può già farlo ma singolarmente (dal menù che si apre con il tasto destro sull'user data), quindi, la cosa è sicuramente fattibile
da un tag python generator, un pò meno da un nodo python di xpresso (per le limitazioni di cui sopra). faccio qualche test...
User avatar
abe3d
Posts: 1110
Joined: Mon Dec 07, 2009 1:48 pm

Re: Xpresso salvare - importare valori user data

Post by abe3d »

...il file allegato è un esempio fatto con un solo nodo python , ti basta configurare l'oggetto e gli ID degli user data da monitorare(trovi le descrizioni del codice), purtroppo come ti accennavo il nodo python di xpresso non intercetta il Button (cosa che fa il generatore), quindi devi accontentarti di un escamotage con i boolean data type... provalo e fammi sapere...
Save_load_preset_userdata_0001.zip
(34.64 KiB) Downloaded 74 times
ps. il suffisso del file generato è .dat
User avatar
nafta
Posts: 154
Joined: Wed Feb 01, 2006 12:38 pm
Contact:

Re: Xpresso salvare - importare valori user data

Post by nafta »

Mille mille grazie stasera lo provo e ti so dire cosa riesco a fare , mille grazie
User avatar
nafta
Posts: 154
Joined: Wed Feb 01, 2006 12:38 pm
Contact:

Re: Xpresso salvare - importare valori user data

Post by nafta »

Ciao abe3d, ho provato lo script ma a quanto pare su C4d S24 non funziona o almeno quando lo provo c4d si inchioda, mentre in R20 non funziona,
io lavoro con la r20 ma sto passando alla nuova S24 per usare Vray 5

comunque ieri sera ho provato a mettere insieme questo che ti allego , pensavo che si poteva inserire dentro il tag python come il file allegato
Attachments
Reset-load preset .c4d.zip
(129.69 KiB) Downloaded 70 times
User avatar
abe3d
Posts: 1110
Joined: Mon Dec 07, 2009 1:48 pm

Re: Xpresso salvare - importare valori user data

Post by abe3d »

nafta wrote: Tue Jun 15, 2021 9:36 am mentre in R20 non funziona
Volevi dire " nella r20 funziona"? ... comunque, il problema sta nella versione diversa di python, non ho la S24, quindi se mi dai l'errore, posso risolverlo scrivendo il codice per il python 3.
Per quanto riguarda quel pezzo di codice che hai provato, è proprio quello che intercetta la chiamata del "Button" ma solo dal generatore Python non da xpresso ( questione di tread), se fai una prova dal nodo in xpresso, infatti, non c'è traccia della voce dell' UD Button, l'unica sarebbe farlo con un generatore (come hai fato tu) ma a quel punto non ti serve proprio più xpresso e nemmeno gli user data manuali, potendoli generare dinamicamente dal codice.
A questo punto però (visto il tuo file) mi sorge una domanda: non faresti prima a optare per l'inserimento dei diversi oggetti da gestire direttamente in un unico progetto utilizzando sempre un UD (tipo link)?
User avatar
nafta
Posts: 154
Joined: Wed Feb 01, 2006 12:38 pm
Contact:

Re: Xpresso salvare - importare valori user data

Post by nafta »

Su c4d R20 non funziona mi restituisce il seguente log

File "Python", line 17, in main
TypeError: coercing to Unicode: need string or buffer, NoneType found
Traceback (most recent call last):
File "Python", line 26, in main
TypeError: coercing to Unicode: need string or buffer, NoneType found


mentre su S24 quando clicco su save C4d si chiude e non vedo nessun errore dentro la console vedo questo

Traceback (most recent call last):
File "GePython", line 7, in <module>
AttributeError:module 'urllib' has no attribute 'urlretrieve'


A questo punto però (visto il tuo file) mi sorge una domanda: non faresti prima a optare per l'inserimento dei diversi oggetti da gestire direttamente in un unico progetto utilizzando sempre un UD (tipo link)?
solo per non fare confusione, cosa intendi di preciso con tipo link ?
User avatar
abe3d
Posts: 1110
Joined: Mon Dec 07, 2009 1:48 pm

Re: Xpresso salvare - importare valori user data

Post by abe3d »

Ieri sera l'ho provato sulla R21 (demo) e funziona, domani se riesco provo la S24, oggi sto incasinato e non riesco a metterci mano, comunque, l'errore sulla R20 dovrebbe essere il format non dichiarato. Se qualcuno può provarlo in altri ambiti e versioni, magari cerchiamo di farne una funzione a se per tutti i tipi di UD.
nafta wrote: Tue Jun 15, 2021 6:40 pm cosa intendi di preciso con tipo link ?
Intendo l'UD link che ti permette di passare a xpresso un oggetto trascinandolo nel campo, molto comodo quando hai necessità di variare l'oggetto senza doverlo ogni volta impostare da xpresso.
User avatar
cappellaiomatto
Moderatore
Posts: 1571
Joined: Mon May 07, 2012 5:12 pm

Re: Xpresso salvare - importare valori user data

Post by cappellaiomatto »

Ciao abe
Gli errori sono dovuti alla versione di python

Fino alla S22 cinema montava la 2.7

Dalle r23 in poi hanno portato tutto alla 3 e ogni edizione vanno avanti, con mia somma gioia :x

Il primo errore riguarda la gestione delle stringhe/buffer....non ho visto il codice ma suppongo che in quella riga tu stia caricando un file.....in python3 è obbligatorio specificare l’encoding dei caratteri, in python 2 a momenti non sanno nemmeno cosa è l’encoding. :lol:


Il secondo errore sono librerie tranciate via da python3 ....compatibilità verso il basso questa sconosciuta :@


Detto questo python 2 e python 3 ormai iniziano a essere lontani parenti... consiglio o sviluppi uno script x il 2 o per il 3.....gli ibridi sono un po una scommessa
User avatar
abe3d
Posts: 1110
Joined: Mon Dec 07, 2009 1:48 pm

Re: Xpresso salvare - importare valori user data

Post by abe3d »

Sig. Cappellaio buongiorno, è sempre un piacere sentirla, pensavo lei fosse oramai sbarcato in lontani paesi esotici a ricercar nuove e più emozionati sfide da risolvere, lasciandoci soli a combattere contro infime righe di rovinoso codice!! :lol: :lol:

Per formato intendevo proprio l' utf-8 da specificare e che non ho dichiarato, purtroppo non usando cinema per lavoro e non avendo più la possibilità di usare versioni in demo perpetuo (solo per testare il codice) ho un po di difficoltà a capire le incongruenze tra il 2.7 e il 3. Mi fa strano che, come riporta Nafta, la S24 addirittura si pianti senza vergogna. Comunque sono davvero 4 righe per prova e anche la gestione dei diversi tipi di UD è superficiale, non dovrebbe essere un grosso problema risolvere per il caso specifico.
  • Advertising
Post Reply