hi ! im spe läuft alles problemlos , will ich das skript aber per batch oder in blender reinladen kommt immer:
NameError: global name `doc` is not defined
obwohl name im xml vorkommt und es auch im SPE läuft !?
habe wxpython PYXML und python 2.3 installiert !
PLZ Help!
hier der ausschnitt
-------------------
import Blender
from Blender import Scene
from Blender.Scene import Render
from xml.dom.ext.reader.Sax2 import FromXmlStream
doc = FromXmlStream("c:/go.xml")
Blender.Load("C:/2.blend")
def paul(e,x,y):
for element in doc.getElementsByTagName("name"):
-------------------
XML parsen
Globale Variablen gelten nicht automatisch in Funktionen. Warum das unter SPE geht, weiss ich nicht. Es muss Übrigens ist das schlechter Stil: Globale Variablen sowieso und vor allem die Parameter der Funktion e,x und y zu nennen. Weisst du in einem halben Jahr noch, was e, x und y sind?
Code: Alles auswählen
def paul(e,x,y):
global doc
for ...
thanx ! das mit den variablen ist nur zum testen!
aber es scheint nicht an dem global zu liegen sondern scheint mir irgendein bug zu sein.
mach ich das blend file vorher auf und lass dann das skript ohne Blender.Load laufen geht alles wunderbar auch ohne global doc!
will ich das aber alles per batch starten und quasi Blender.Load und dann noch rendern im script dann kommt diese not defined meldung ??
jemand ne idee ?
sollte ich vielleicht 2 skripte ausführen:
1. blend file öffnen
2. skript ausführen ?!
THANXX
aber es scheint nicht an dem global zu liegen sondern scheint mir irgendein bug zu sein.
mach ich das blend file vorher auf und lass dann das skript ohne Blender.Load laufen geht alles wunderbar auch ohne global doc!
will ich das aber alles per batch starten und quasi Blender.Load und dann noch rendern im script dann kommt diese not defined meldung ??
jemand ne idee ?
sollte ich vielleicht 2 skripte ausführen:
1. blend file öffnen
2. skript ausführen ?!
THANXX
Globale Namen sind auch in jeder Funktion "automatisch" sichtbar. Das einzige was man nicht machen kann, ist einen globalen Namen in einer Funktion an ein neues Objekt binden. Dann wird ohne ``global`` nämlich ein neuer Name im Namensraum der Funktion erzeugt und an den gebunden.Joghurt hat geschrieben:Globale Variablen gelten nicht automatisch in Funktionen. Warum das unter SPE geht, weiss ich nicht. Es mussÜbrigens ist das schlechter Stil: Globale Variablen sowieso und vor allem die Parameter der Funktion e,x und y zu nennen. Weisst du in einem halben Jahr noch, was e, x und y sind?Code: Alles auswählen
def paul(e,x,y): global doc for ...
Für das Beispiel braucht man ``global`` also nicht.