Also ich bin ein Neuling bei der Programmiersprache Python, habe aber Grundgendnisse in anderen Programmiersprachen.
Also mein Problem sieht so aus. Ich möchte aus zwei verschiedene Textdateien Daten in Python einlesen lassen. Die erste Datei liest er auch ohne Problem ein, aber bei der Zweite Datei bricht er mit dem Fehler ReferenceError: could not find 'main' in tag 'Null'
Habe mich schon im Netz nach einer Lösung gesucht.
Hier der Code:
Code: Alles auswählen
import c4d
#Welcome to the world of Python
#
# lese eine Ascii-File und erzeuge ein Objekt
#
def ReadAscii():
legoNamen = "Brick 1x1"
FehlerDaten = "Leider konnte ich den Legostein nicht konstruieren, \nda mir die Datei mit den Daten fehlen!"
pointFile = "d:\Temp\Test\Brick1x1_Punkte.txt"
try:
fpoints = open(pointFile)
except IOError:
c4d.gui.MessageDialog(FehlerDaten)
return
polysFile = "d:\Temp\Test\Brick1x1_Polygone.txt"
try:
fpolys = open(polysFile)
except IOError:
c4d.gui.MessageDialog(FehlerDaten)
return
#teile die Datei in eine Linen-Liste
lines = fpoints.readlines()
#wieviele Linien? pro Punkt
nrPoints = len(lines)
#teile die Datei in eine Linen-Liste
linesPolys = fpolys.readlines()
#wieviele Linien? pro Polygon
nrPolys = len(linesPolys)
#-1 for erste Linie
print "Nr. points-polys: ", nrPoints-1, nrPolys-1
#erzeuge eine Polygon Objekt mit Punktezähler der Linien
rebrick = c4d.BaseObject(c4d.Opolygon)
rebrick.ResizeObject(nrPoints-1, nrPolys-1)
#Punkte
for i, line in enumerate(lines):
#teile die Linien in Komponente
coord = line.split(",")
#ignoriere korrupte csv Linie
if len(coord)<4 : continue
try:
nr = int(coord[0])
x = float(coord[1])
y = float(coord[2])
z = float(coord[3])
except ValueError:
continue
rebrick.SetPoint(i-1,c4d.Vector(x,y,z))
print "Punkt eingefügt: ", i-1,x,y,z
#Polygone
for i, line in enumerate (linesPolys):
#teile die Linien in Komponente
coord = line.split(",")
#ignoriere korrupte csv Linie
if len(coord)<5 : continue
try:
nr = int(coord[0])
p1 = int(coord[1])
p2 = int(coord[2])
p3 = int(coord[3])
p4 = int(coord[4])
except ValueError:
continue
rebrick.SetPolygon(nr,c4d.CPolygon(p1,p2,p3,p4))
print "Polygon eingefügt: ", nr,x,y,z
doc.InsertObject(rebrick)
rebrick.Message (c4d.MSG_UPDATE)
c4d.EventAdd()
if __name__=='__main__':
ReadAscii()
Ich hoffe das ihr mir einen Tipp geben könnt wo der Schuh im den Code drückt
Gruss Andreas