PDA

Voir la version complète : Script qui plante, bizarre, bizarre



Steph3D ::.
19/03/2005, 15h30
J'ai écrit le petit script suivant

main(doc,op) {
var Obj=doc->FindObject("test");
var Tag = Obj->GetFirstTag();
if (!Tag) return;
Tag->Remove();
EventAdd();
}
Prenez par exemple cette scène http://stephlx.free.fr/c4df/TagTest.c4d
Renommez l'objet Sphère en test
Mon script va effacer comme prévu les Tags et se stopper une fois qu'il y en a plus, jusque-là tout va bien...
Mais maintenant, créez un nouveau tag sur la sphère. Comme logiquement prévu, mon script supprime le nouveau Tag, mais rapidement suivit par un beau crash de C4D :o

C'est mon C4D qui ne tourne pas rond ? :? Ou je mis prend mal, et je viens d'inventé le 1er virus pour c4d ? :shock:
Si je l'utilise sur un objet polygonal, ça efface même les polys :o

kald01
19/03/2005, 15h59
Si ça peut te rassurer ça plante aussi chez moi (pc), par contre je ne peut pas t'aider pour le script désolé :oops:

Steph3D ::.
19/03/2005, 16h25
Pas bien grave pour maintenant, dans le sens où je n'ai pas besoin d'effacer de tag dans mes plug pour le moment, mais c'est bizarre quand même ça :o

padawa
19/03/2005, 18h50
Je vais peut etre dire une betise :oops:

mais ton if n'est attibuer que pour le return il me semble.
Donc le reste du script s'execute quoi qu'il arrive.

essai

if (!Tag)
{return; }
else
{Tag->Remove();
(EventAdd(); ca je sais pas ce que sait alors tu vois si c'est avec ou pas )
}


Mais c'est surement pas ca :coup:

Steph3D ::.
19/03/2005, 19h07
Non, mon script est juste, ta pas besoin de mettre les accolades sur une ligne, et return fait quitter le script quoi qu'il arrive ;-)

EventAdd force les expressions de C4D à s'exécuter en permanence, sinon il faudrait cliquer plusieurs fois dans la vue ou lancer la timeline pour que le script efface tous les Tag.

Tengaal
20/03/2005, 00h43
Le plantage doit certainement être dû à l'effacement automatique trop rapide du tag, C4D le créé mais je pense que ton script le supprime avant même que la tag n'aie eu le temps d'être rafraichis (définition des paramètres (container)).

En ce qui concerne l'objet polygonal, c'est logique que l'effacement de ses tag aboutissent à une disparition des polygones puisque la structure de point et de polygone est stockée dans un tag caché (structure Hermite Tag). Même si ce tag est caché, ton script le détecte et donc l'efface.

RAIDHO
20/03/2005, 08h44
oui Steph3D tu es bien l'inventeur du 1er virus C4D destructeur de polygone en tout genre ! :mrgreen: :mrgreen: :mrgreen:
ok-------je :arrow:

Steph3D ::.
20/03/2005, 19h38
Ah*!? m'en douter qu'il y avait des Tags cachés dans C4D, vu qu'ont peu en crée normalement, mais j'ai pas encor essayé. Intéressant à savoir pour éviter les conneries imprévues dans les expressions plus complexes et chercher bêtement des heures des bugs incomphensif :roll:

Merci pour les précisions :poucehaut:

Tengaal
20/03/2005, 20h38
Un PluginTag (plugin qui est représenté par un tag) peut être visible ou non en définissant cet état dans la code du plugin où il y a la fonctions DisplayAllowed, dans laquelle on met "return TRUE;" (tag visible) ou "return FALSE;" (tag invisible). :wink: