nascondi user data

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

Moderatori: Arkimed, natas, visualtricks, cappellaiomatto

Rispondi
  • Advertising
Avatar utente
nafta
Messaggi: 154
Iscritto il: mer feb 01, 2006 12:38 pm
Contatta:

nascondi user data

Messaggio da nafta »

Ciao sto cercando di convertire questo script ma non riesco, in realtà lo script funziona benissimo con gli user data dell’oggetto nullo ma volevo adattarlo al tag User data di c4d (vedi immagini ) pensate che sia possibile ?


Codice: Seleziona tutto

import c4d
from c4d import gui


def main():

    null = op.GetObject()
    h1 = null.GetUserDataContainer()



    for descId, container in h1:


        if descId[1].id == 409:


            if null[c4d.ID_USERDATA,60] == 1:
               container[c4d.DESC_HIDE] = True
               null.SetUserDataContainer(descId, container)

            if null[c4d.ID_USERDATA,60] == 0:
               container[c4d.DESC_HIDE] = False
               null.SetUserDataContainer(descId, container)
Allegati
Shot.jpg
Shot.jpg (38.01 KiB) Visto 1165 volte
Shot 3.jpg
Shot 3.jpg (20.01 KiB) Visto 1165 volte
Shot 2.jpg
Shot 2.jpg (32.4 KiB) Visto 1165 volte
Avatar utente
abe3d
Messaggi: 1110
Iscritto il: lun dic 07, 2009 1:48 pm

Re: nascondi user data

Messaggio da abe3d »

Ciao nafta, dal tuo post non è chiaro chi detiene lo script nel quale la variabile null si riferisce all'oggetto possessore del tag python (GetUserDataContainer), il quale legge gli userdata dell'oggetto "Null" (in questo caso) ma di cui non c'è traccia nel tuo file.
Per essere più chiaro e per capire se è fattibile nascondere gli user data di un tag, ammettendo che a detenere il codice sia un tag python, devi cercare l'userdatacontainer del tag in questione, quindi, prima stabilici l'oggetto che possiede il tag poi cerchi il tag incriminato e di conseguenza applichi lo script al tag...
Avatar utente
nafta
Messaggi: 154
Iscritto il: mer feb 01, 2006 12:38 pm
Contatta:

Re: nascondi user data

Messaggio da nafta »

Ciao Abe3d lo scrip è ripreso da questo video che ti allego
https://www.youtube.com/watch?v=5g_t9F6vT6g

ho solo provato ad inserirlo dentro il file rig che so lavorando ma siccome ho usato i usr data tag non funziona , ho provato a fare come sul video inserendolo in oggetto nullo e ovviamente funziona
vorrei usarlo con gli user data tag

spero di essermi spiegato

mille grazie
Avatar utente
abe3d
Messaggi: 1110
Iscritto il: lun dic 07, 2009 1:48 pm

Re: nascondi user data

Messaggio da abe3d »

Questo è il codice da usare (in un tag python)

Codice: Seleziona tutto

import c4d
from c4d import gui


def main():
    null = op.GetObject()
    tag = null.GetTag(c4d.Tuserdata,0)
    h1 = tag.GetUserDataContainer()
    
    
    
    for descId, container in h1:
    
    
        if descId[1].id == 2 or descId[1].id == 3 or descId[1].id == 4:
    
    
            if tag[c4d.ID_USERDATA,1] == False:
                container[c4d.DESC_HIDE] = True
                tag.SetUserDataContainer(descId, container)
            
            if tag[c4d.ID_USERDATA,1] == True:
                container[c4d.DESC_HIDE] = False
                tag.SetUserDataContainer(descId, container)
Allegati
On.jpg
On.jpg (14.02 KiB) Visto 1160 volte
Off.jpg
Off.jpg (11.54 KiB) Visto 1160 volte
Avatar utente
nafta
Messaggi: 154
Iscritto il: mer feb 01, 2006 12:38 pm
Contatta:

Re: nascondi user data

Messaggio da nafta »

Mille grazie come sempre il migliore
sono un principiante sto facendo qualche corso di python ma sono parecchio indietro

Mille grazie
Avatar utente
nafta
Messaggi: 154
Iscritto il: mer feb 01, 2006 12:38 pm
Contatta:

Re: nascondi user data

Messaggio da nafta »

dubbio , ma il tag = null.GetTag(c4d.Tuserdata,0) lo zero rappresenta il tag ?
Avatar utente
abe3d
Messaggi: 1110
Iscritto il: lun dic 07, 2009 1:48 pm

Re: nascondi user data

Messaggio da abe3d »

No, Tuserdata rappresenta il tag specifico, lo zero è la posizione indice da cercare (nel caso ci fossero più tag dello stesso tipo).

Codice: Seleziona tutto

import c4d
from c4d import gui

def main():
    tag = op.GetObject().GetTag(c4d.Tuserdata,0)
    h1 = tag.GetUserDataContainer()    
    for descId, container in h1:
        if descId[1].id != 1 :    
            container[c4d.DESC_HIDE] = tag[c4d.ID_USERDATA,1]
            tag.SetUserDataContainer(descId, container)
...Versione abbreviata
Avatar utente
abe3d
Messaggi: 1110
Iscritto il: lun dic 07, 2009 1:48 pm

Re: nascondi user data

Messaggio da abe3d »

@Masterzone:
Ale, com'è che il code editor non rispetta le indentazioni?
Ho fatto qualche prova e non tiene conto ne degli spazi ne della TAB, tra l'altro, la TAB conta ben 8 posizioni, il che comporterebbe comunque una riformattazione del copyt&paste nell'editor di cinema.
Sarebbe comodo aggiornare questa funzione dell'editor in particolare nel caso di condivisioni di codice di una certa complessità... :P
  • Advertising
Rispondi