Basic help writing a simple blender exporter.

I’m trying to write a simple exporter to blender in python for my on format, however I’m having trouble just printing to a file. Here’s the code:


import bpy
class BXMLExporter(bpy.types.Operator):
    bl_idname = "bxml_exporter"
    bl_label = "BXML Exporter"
    
    def execute(self, context):
        file = open("//Users//Julian//Documents//Jobb//Programmering//Raytracing//Bulletracer//test.txt", "w")
        #file = open("C:\\Users\\Julian\\Desktop\	est.txt", "w")
        file.write("<scene>
")

        #########################################################
        ################# SAVE MESHES ###########################
        #########################################################
        for obj in bpy.data.meshes:
            file.write("	<Object name=\"" + str(obj.name) + "\" materialName=\"" + str(obj.materials[0].name) + "\">
")
            
            vertData = obj.verts
            for face in obj.faces:
                file.write("		<Face>
")
               
                vertices = face.verts
                if len(vertices) == 4: #quad
                    file.write("			<Vertex>" + str(vertData[vertices[0]].co[0]) + ";" + str(vertData[vertices[0]].co[1]) + ";" + str(vertData[vertices[0]].co[2]) + "</Vertex>
")
                    file.write("			<Vertex>" + str(vertData[vertices[1]].co[0]) + ";" + str(vertData[vertices[1]].co[1]) + ";" + str(vertData[vertices[1]].co[2]) + "</Vertex>
")
                    file.write("			<Vertex>" + str(vertData[vertices[2]].co[0]) + ";" + str(vertData[vertices[2]].co[1]) + ";" + str(vertData[vertices[2]].co[2]) + "</Vertex>
")
                    file.write("		</Face>
")
                   
                    file.write("		<Face>
")
                    file.write("			<Vertex>" + str(vertData[vertices[0]].co[0]) + ";" + str(vertData[vertices[0]].co[1]) + ";" + str(vertData[vertices[0]].co[2]) + "</Vertex>
")
                    file.write("			<Vertex>" + str(vertData[vertices[3]].co[0]) + ";" + str(vertData[vertices[3]].co[1]) + ";" + str(vertData[vertices[3]].co[2]) + "</Vertex>
")
                    file.write("			<Vertex>" + str(vertData[vertices[2]].co[0]) + ";" + str(vertData[vertices[2]].co[1]) + ";" + str(vertData[vertices[2]].co[2]) + "</Vertex>
")
                    file.write("		</Face>
")
                else:
                    file.write("			<Vertex>" + str(vertData[vertices[0]].co[0]) + ";" + str(vertData[vertices[0]].co[1]) + ";" + str(vertData[vertices[0]].co[2]) + "</Vertex>
")
                    file.write("			<Vertex>" + str(vertData[vertices[1]].co[0]) + ";" + str(vertData[vertices[1]].co[1]) + ";" + str(vertData[vertices[1]].co[2]) + "</Vertex>
")
                    file.write("			<Vertex>" + str(vertData[vertices[2]].co[0]) + ";" + str(vertData[vertices[2]].co[1]) + ";" + str(vertData[vertices[2]].co[2]) + "</Vertex>
")
                    file.write("		</Face>
")
                    
            file.write("	</Object>
")
            #self.report({'INFO'}, str(obj.name))
            
        ##########################################################
        #################### SAVE LAMPS ##########################
        ##########################################################
        file.write("abc")
        for obj in bpy.data.objects:
            if obj.Type == 'LAMP':
                lamp = obj.data
                file.write("	<Lamp name=\"" + str(lamp.name) + "\" intensity=\"" + str(lamp.energy) + "\" falloff=\"" + str(lamp.distance) + "\">
")
                file.write("		<Color>" + str(lamp.color[0]) + ";" + str(lamp.color[1]) + ";" + str(lamp.color[2]) + "</Color>
")
                file.write("		<Pos>" + str(obj.location[0]) + ";" + str(obj.location[1]) + ";" + str(obj.location[2]) + "</Pos>
")
                file.write("	</Lamp>
")
        file.write("</scene>
")
        file.close()
        self.report({'INFO'}, "Saved data to BXML-file..")
        return {'FINISHED'}
        
bpy.types.register(BXMLExporter)

Everything to the “SAVE LAMPS”-sections works fine but the code after that doesn’t print anything at all to the file.

Thanks!

obj.Type should be obj.type.

sigh Thanks! I’m new to python and thought errors like these would get caught in the interpretor.