nascondi user data

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

Moderators: Arkimed, natas, visualtricks, cappellaiomatto

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

nascondi user data

Post by 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 ?


Code: Select all

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)
Attachments
Shot.jpg
Shot.jpg (38.01 KiB) Viewed 1167 times
Shot 3.jpg
Shot 3.jpg (20.01 KiB) Viewed 1167 times
Shot 2.jpg
Shot 2.jpg (32.4 KiB) Viewed 1167 times
User avatar
abe3d
Posts: 1110
Joined: Mon Dec 07, 2009 1:48 pm

Re: nascondi user data

Post by 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...
User avatar
nafta
Posts: 154
Joined: Wed Feb 01, 2006 12:38 pm
Contact:

Re: nascondi user data

Post by 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
User avatar
abe3d
Posts: 1110
Joined: Mon Dec 07, 2009 1:48 pm

Re: nascondi user data

Post by abe3d »

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

Code: Select all

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)
Attachments
On.jpg
On.jpg (14.02 KiB) Viewed 1162 times
Off.jpg
Off.jpg (11.54 KiB) Viewed 1162 times
User avatar
nafta
Posts: 154
Joined: Wed Feb 01, 2006 12:38 pm
Contact:

Re: nascondi user data

Post by nafta »

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

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

Re: nascondi user data

Post by nafta »

dubbio , ma il tag = null.GetTag(c4d.Tuserdata,0) lo zero rappresenta il tag ?
User avatar
abe3d
Posts: 1110
Joined: Mon Dec 07, 2009 1:48 pm

Re: nascondi user data

Post by abe3d »

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

Code: Select all

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
User avatar
abe3d
Posts: 1110
Joined: Mon Dec 07, 2009 1:48 pm

Re: nascondi user data

Post by 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
Post Reply