Lots of scripts are using Object.Get() where Scene.GetCurrent().getChildren() is what is needed.

When through and replaced the obvious ones but there are still a a few Id rather not touch without more about whats going on.

Did quite a few changes to export-iv also.
This commit is contained in:
Campbell Barton 2006-07-03 05:05:28 +00:00
parent acef774a61
commit a33feaf49b
6 changed files with 229 additions and 228 deletions

@ -296,7 +296,7 @@ class xExport:
#*********************************************** #***********************************************
def analyzeScene(self): def analyzeScene(self):
parent_list = [] parent_list = []
for obj in Object.Get(): for obj in Blender.Scene.GetCurrent().getChildren(): #Object.Get():
mesh = obj.getData() mesh = obj.getData()
if type(mesh) == Types.ArmatureType or type(mesh) == Types.NMeshType or obj.getType() == "Empty": if type(mesh) == Types.ArmatureType or type(mesh) == Types.NMeshType or obj.getType() == "Empty":
pare = obj.getParent() pare = obj.getParent()
@ -307,14 +307,14 @@ class xExport:
def getChildren(self,obj): def getChildren(self,obj):
children_list = [] children_list = []
for object in Object.Get(): for object in Blender.Scene.GetCurrent().getChildren(): #Object.Get():
pare = object.parent pare = object.parent
if pare == obj : if pare == obj :
children_list.append(object) children_list.append(object)
return children_list return children_list
def getArmChildren(self,obj): def getArmChildren(self,obj):
for object in Object.Get(): for object in Blender.Scene.GetCurrent().getChildren(): #Object.Get():
pare = object.parent pare = object.parent
if pare == obj : if pare == obj :
return object return object
@ -404,7 +404,7 @@ class xExport:
self.file.write("} // End of the Root Frame\n") self.file.write("} // End of the Root Frame\n")
if anim : if anim :
self.file.write("AnimationSet {\n") self.file.write("AnimationSet {\n")
for obj in Object.Get(): for obj in Blender.Scene.GetCurrent().getChildren(): #Object.Get():
mesh = obj.getData() mesh = obj.getData()
if type(mesh) == Types.NMeshType or obj.getType() == "Empty": if type(mesh) == Types.NMeshType or obj.getType() == "Empty":

@ -439,7 +439,7 @@ def createCURVES(courbes):
elif scale_==3: elif scale_==3:
SCALE=r[3]-r[1] SCALE=r[3]-r[1]
[o.select(0) for o in Object.Get()] [o.select(0) for o in Scene.GetCurrent().getChildren()] #[o.select(0) for o in Object.Get()] - will not work
for I in courbes.ITEM: for I in courbes.ITEM:
c = Curve.New() c = Curve.New()
# ---------- # ----------

@ -280,7 +280,7 @@ def NEWMEcreation(obj):
for ozero in OBJ: for ozero in OBJ:
if ozero.getType()=='Mesh': if ozero.getType()=='Mesh':
namelist.append(ozero.getData().name) namelist.append(ozero.getData(name_only=1))
ozero=obj ozero=obj
nomdelobjet=ozero.getName() nomdelobjet=ozero.getName()

@ -103,13 +103,13 @@ def flipFace(v):
# return object with given object name (with variable parts) and mesh name # return object with given object name (with variable parts) and mesh name
def getObjectByName(obj_name, mesh_name): def getObjectByName(obj_name, mesh_name):
objs = Blender.Object.Get() objs = Blender.Scene.GetCurrent().getChildren() #Blender.Object.Get()
for obj in objs: for obj in objs:
if obj.getType() == "Mesh": if obj.getType() == "Mesh":
# if obj.getName()[0:len(obj_name)] == obj_name and obj.getData().name == mesh_name: # if obj.getName()[0:len(obj_name)] == obj_name and obj.getData().name == mesh_name:
# use only mesh_name so bone name and weight (in the envelope name) # use only mesh_name so bone name and weight (in the envelope name)
# can be changed by the user and mirrored by the script. # can be changed by the user and mirrored by the script.
if obj.getData().name == mesh_name: if obj.getData(name_only=1) == mesh_name:
return obj return obj
return False return False
@ -118,7 +118,7 @@ SUFFIX_LEN = len(REF_SUFFIX);
Blender.Window.EditMode(0) Blender.Window.EditMode(0)
count = 0 count = 0
objs = Blender.Object.Get() objs = Blender.Scene.GetCurrent().getChildren() #objs = Blender.Object.Get()
for obj in objs: for obj in objs:
if obj.getType() != 'Mesh': if obj.getType() != 'Mesh':
continue continue

@ -40,261 +40,262 @@ Note:
# #
import Blender import Blender
import os math_pi= 3.1415926535897931
import math
def WriteHeader(file): def WriteHeader(file):
file.write("#Inventor V2.1 ascii\n\n") file.write("#Inventor V2.1 ascii\n\n")
file.write("Separator\n") file.write("Separator\n")
file.write("{\n") file.write("{\n")
file.write(" ShapeHints\n") file.write(" ShapeHints\n")
file.write(" {\n") file.write(" {\n")
file.write(" vertexOrdering COUNTERCLOCKWISE\n") file.write(" vertexOrdering COUNTERCLOCKWISE\n")
file.write(" }\n") file.write(" }\n")
def WriteFooter(file): def WriteFooter(file):
file.write("}\n") file.write("}\n")
def WriteMesh(file, object): def WriteMesh(file, object):
file.write(" Separator\n") file.write(" Separator\n")
file.write(" {\n") file.write(" {\n")
file.write(" # %s\n" % object.getName()) file.write(" # %s\n" % object.getName())
WriteMatrix(file, object) WriteMatrix(file, object)
mesh = object.getData() mesh = object.getData()
WriteMaterials(file, mesh) WriteMaterials(file, mesh)
WriteTexture(file, mesh) WriteTexture(file, mesh)
WriteNormals(file, mesh) WriteNormals(file, mesh)
WriteVertices(file, mesh) WriteVertices(file, mesh)
WriteFaces(file, mesh) WriteFaces(file, mesh)
file.write(" }\n") file.write(" }\n")
def WriteMatrix(file, object): def WriteMatrix(file, object):
matrix = object.getMatrix() matrix = object.getMatrix()
file.write(" MatrixTransform\n") file.write(" MatrixTransform\n")
file.write(" {\n") file.write(" {\n")
file.write(" matrix\n") file.write(" matrix\n")
for line in matrix: for line in matrix:
file.write(" %s %s %s %s\n" % (line[0], line[1], line[2], line[3])) file.write(" %.6f %.6f %.6f %.6f\n" % (line[0], line[1], line[2], line[3]))
file.write(" }\n") file.write(" }\n")
def WriteColors(file, mesh): def WriteColors(file, mesh):
file.write(" vertexProperty VertexProperty\n") file.write(" vertexProperty VertexProperty\n")
file.write(" {\n") file.write(" {\n")
file.write(" orderedRGBA\n") file.write(" orderedRGBA\n")
file.write(" [\n") file.write(" [\n")
for face in mesh.faces: for face in mesh.faces:
for I in range(len(face.v)): for I in xrange(len(face)):
file.write(" 0x%02x%02x%02x%02x,\n" % (face.col[I].r, file.write(" 0x%02x%02x%02x%02x,\n" % (face.col[I].r,
face.col[I].g, face.col[I].b, face.col[I].a)) face.col[I].g, face.col[I].b, face.col[I].a))
file.write(" ]\n") file.write(" ]\n")
file.write(" materialBinding PER_VERTEX\n") file.write(" materialBinding PER_VERTEX\n")
file.write(" }\n") file.write(" }\n")
def WriteMaterials(file, mesh): def WriteMaterials(file, mesh):
if mesh.materials: if mesh.materials:
file.write(" Material\n") file.write(" Material\n")
file.write(" {\n") file.write(" {\n")
file.write(" ambientColor\n") file.write(" ambientColor\n")
file.write(" [\n") file.write(" [\n")
for mat in mesh.materials: for mat in mesh.materials:
file.write(" %s %s %s,\n" % (mat.mirCol[0], mat.mirCol[1], file.write(" %.6f %.6f %.6f,\n" % (mat.mirCol[0], mat.mirCol[1],
mat.mirCol[2])) mat.mirCol[2]))
file.write(" ]\n") file.write(" ]\n")
file.write(" diffuseColor\n") file.write(" diffuseColor\n")
file.write(" [\n") file.write(" [\n")
for mat in mesh.materials: for mat in mesh.materials:
file.write(" %s %s %s,\n" % (mat.rgbCol[0], mat.rgbCol[1], file.write(" %.6f %.6f %.6f,\n" % (mat.rgbCol[0], mat.rgbCol[1],
mat.rgbCol[2])) mat.rgbCol[2]))
file.write(" ]\n") file.write(" ]\n")
file.write(" specularColor\n") file.write(" specularColor\n")
file.write(" [\n") file.write(" [\n")
for mat in mesh.materials: for mat in mesh.materials:
file.write(" %s %s %s,\n" % (mat.specCol[0] * mat.spec / 2.0, file.write(" %.6f %.6f %.6f,\n" % (mat.specCol[0] * mat.spec / 2.0,
mat.specCol[1] * mat.spec / 2.0, mat.specCol[2] * mat.spec / 2.0)) mat.specCol[1] * mat.spec / 2.0, mat.specCol[2] * mat.spec / 2.0))
file.write(" ]\n") file.write(" ]\n")
file.write(" emissiveColor\n") file.write(" emissiveColor\n")
file.write(" [\n") file.write(" [\n")
for mat in mesh.materials: for mat in mesh.materials:
file.write(" %s %s %s,\n" % (mat.rgbCol[0] * mat.emit, file.write(" %.6f %.6f %.6f,\n" % (mat.rgbCol[0] * mat.emit,
mat.rgbCol[1] * mat.emit, mat.rgbCol[0] * mat.emit)) mat.rgbCol[1] * mat.emit, mat.rgbCol[0] * mat.emit))
file.write(" ]\n") file.write(" ]\n")
file.write(" shininess\n") file.write(" shininess\n")
file.write(" [\n") file.write(" [\n")
for mat in mesh.materials: for mat in mesh.materials:
file.write(" %s,\n" % (mat.hard / 255.0)) file.write(" %.6f,\n" % (mat.hard / 255.0))
file.write(" ]\n") file.write(" ]\n")
file.write(" transparency\n") file.write(" transparency\n")
file.write(" [\n") file.write(" [\n")
for mat in mesh.materials: for mat in mesh.materials:
file.write(" %s,\n" % (1.0 - mat.alpha)) file.write(" %.6f,\n" % (1.0 - mat.alpha))
file.write(" ]\n") file.write(" ]\n")
file.write(" }\n") file.write(" }\n")
file.write(" MaterialBinding\n") file.write(" MaterialBinding\n")
file.write(" {\n") file.write(" {\n")
file.write(" value PER_FACE_INDEXED\n") file.write(" value PER_FACE_INDEXED\n")
file.write(" }\n") file.write(" }\n")
def WriteTexture(file, mesh): def WriteTexture(file, mesh):
texture = mesh.faces[0].image texture = mesh.faces[0].image # BAD Ju Ju
if texture: if texture:
file.write(" Texture2\n") file.write(" Texture2\n")
file.write(" {\n") file.write(" {\n")
file.write(' filename "%s"\n' % texture.getName()) file.write(' filename "%s"\n' % texture.getName())
file.write(" }\n") file.write(" }\n")
file.write(" TextureCoordinate2\n") file.write(" TextureCoordinate2\n")
file.write(" {\n") file.write(" {\n")
file.write(" point\n") file.write(" point\n")
file.write(" [\n") file.write(" [\n")
if mesh.hasVertexUV(): if mesh.hasVertexUV():
for vert in mesh.verts: for vert in mesh.verts:
file.write(" %s %s,\n" % (vert.uvco[0], vert.uvco[1])) file.write(" %s %s,\n" % (vert.uvco[0], vert.uvco[1]))
file.write(" ]\n") file.write(" ]\n")
file.write(" }\n") file.write(" }\n")
file.write(" TextureCoordinateBinding\n") file.write(" TextureCoordinateBinding\n")
file.write(" {\n") file.write(" {\n")
file.write(" value PER_VERTEX_INDEXED\n") file.write(" value PER_VERTEX_INDEXED\n")
file.write(" }\n") file.write(" }\n")
elif mesh.hasFaceUV(): elif mesh.hasFaceUV():
for face in mesh.faces: for face in mesh.faces:
for uv in face.uv: for uv in face.uv:
file.write(" %s %s,\n" % (uv[0], uv[1])) file.write(" %.6f %.6f,\n" % (uv[0], uv[1]))
file.write(" ]\n") file.write(" ]\n")
file.write(" }\n") file.write(" }\n")
file.write(" TextureCoordinateBinding\n") file.write(" TextureCoordinateBinding\n")
file.write(" {\n") file.write(" {\n")
file.write(" value PER_VERTEX\n") file.write(" value PER_VERTEX\n")
file.write(" }\n") file.write(" }\n")
def WriteVertices(file, mesh): def WriteVertices(file, mesh):
file.write(" Coordinate3\n") file.write(" Coordinate3\n")
file.write(" {\n") file.write(" {\n")
file.write(" point\n") file.write(" point\n")
file.write(" [\n") file.write(" [\n")
for vert in mesh.verts: for vert in mesh.verts:
file.write(" %s %s %s,\n" % (vert[0], vert[1], vert[2])) file.write(" %.6f %.6f %.6f,\n" % (vert[0], vert[1], vert[2]))
file.write(" ]\n") file.write(" ]\n")
file.write(" }\n") file.write(" }\n")
def WriteNormals(file, mesh): def WriteNormals(file, mesh):
file.write(" Normal\n") file.write(" Normal\n")
file.write(" {\n") file.write(" {\n")
file.write(" vector\n") file.write(" vector\n")
file.write(" [\n") file.write(" [\n")
# make copy of vertex normals # make copy of vertex normals
normals = [] normals = []
for face in mesh.faces: for face in mesh.faces:
if len(face.v) in [3, 4]: if len(face.v) in [3, 4]:
if face.smooth: if face.smooth:
for v in face.v: for v in face.v:
normals.append(v.no) normals.append(v.no)
else: else:
for v in face.v: for v in face.v:
normals.append(face.no) normals.append(face.no)
# write normals # write normals
for no in normals: for no in normals:
file.write(" %s %s %s,\n" % (no[0], no[1], no[2])) file.write(" %.6f %.6f %.6f,\n" % (no[0], no[1], no[2]))
file.write(" ]\n") file.write(" ]\n")
file.write(" }\n") file.write(" }\n")
# write way how normals are binded # write way how normals are binded
file.write(" NormalBinding\n") file.write(" NormalBinding\n")
file.write(" {\n") file.write(" {\n")
file.write(" value PER_VERTEX\n") file.write(" value PER_VERTEX\n")
file.write(" }\n") file.write(" }\n")
def WriteFaces(file, mesh): def WriteFaces(file, mesh):
file.write(" IndexedFaceSet\n") file.write(" IndexedFaceSet\n")
file.write(" {\n") file.write(" {\n")
# write vertex paint # write vertex paint
if mesh.hasVertexColours(): if mesh.hasVertexColours():
WriteColors(file, mesh) WriteColors(file, mesh)
# write material indexes # write material indexes
file.write(" materialIndex\n") file.write(" materialIndex\n")
file.write(" [\n") file.write(" [\n")
for face in mesh.faces: for face in mesh.faces:
file.write(" %s,\n" % (face.mat)); file.write(" %i,\n" % face.mat);
file.write(" ]\n") file.write(" ]\n")
# write faces with coordinate indexes # write faces with coordinate indexes
file.write(" coordIndex\n") file.write(" coordIndex\n")
file.write(" [\n") file.write(" [\n")
for face in mesh.faces: for face in mesh.faces:
if len(face.v) == 3: face_v= face.v
file.write(" %s, %s, %s, -1,\n" % (face.v[0].index, if len(face_v) == 3:
face.v[1].index, face.v[2].index)) file.write(" %i, %i, %i, -1,\n" % (face_v[0].index,
elif len(face.v) == 4: face_v[1].index, face_v[2].index))
file.write(" %s, %s, %s, %s, -1,\n"% (face.v[0].index, elif len(face_v) == 4:
face.v[1].index, face.v[2].index, face.v[3].index)) file.write(" %i, %i, %i, %i, -1,\n" % (face_v[0].index,
file.write(" ]\n") face_v[1].index, face_v[2].index, face_v[3].index))
file.write(" }\n") file.write(" ]\n")
file.write(" }\n")
def WriteCamera(file, object): def WriteCamera(file, object):
camera = object.getData(); camera = object.getData();
# perspective camera # perspective camera
if camera.type == 0: if camera.type == 0:
file.write(" PerspectiveCamera\n") file.write(" PerspectiveCamera\n")
file.write(" {\n") file.write(" {\n")
file.write(" nearDistance %s\n" % (camera.clipStart)) file.write(" nearDistance %s\n" % (camera.clipStart))
file.write(" farDistance %s\n" % (camera.clipEnd)) file.write(" farDistance %s\n" % (camera.clipEnd))
file.write(" }\n") file.write(" }\n")
# ortho camera # ortho camera
else: else:
print camera.type print camera.type
def WriteLamp(file, object): def WriteLamp(file, object):
lamp = object.getData(); lamp = object.getData();
# spot lamp # spot lamp
if lamp.type == 2: if lamp.type == 2:
file.write(" SpotLight\n") file.write(" SpotLight\n")
file.write(" {\n") file.write(" {\n")
file.write(" intensity %s\n" % (lamp.energy / 10.0)) file.write(" intensity %s\n" % (lamp.energy / 10.0))
file.write(" color %s %s %s\n" % (lamp.col[0], lamp.col[1], file.write(" color %s %s %s\n" % (lamp.col[0], lamp.col[1],
lamp.col[2])) lamp.col[2]))
#file.write(" location %s\n" % ()) #file.write(" location %s\n" % ())
#file.write(" direction %s\n" % ()) #file.write(" direction %s\n" % ())
file.write(" dropOffRate %s\n" % (lamp.spotBlend)) file.write(" dropOffRate %s\n" % (lamp.spotBlend))
file.write(" cutOffAngle %s\n" % (lamp.spotSize * math.pi / 180.0)) file.write(" cutOffAngle %s\n" % (lamp.spotSize * math_pi / 180.0))
file.write(" }\n") file.write(" }\n")
# script main function # script main function
def ExportToIv(file_name): def ExportToIv(file_name):
scene = Blender.Scene.GetCurrent() scene = Blender.Scene.GetCurrent()
file = open(file_name, "w") file = open(file_name, "w")
# make lists of individual object types # make lists of individual object types
meshes = [] meshes = []
lamps = [] lamps = []
cameras = [] cameras = []
for object in Blender.Object.Get(): for object in scene.getChildren():
if object.getType() == "Mesh": obtype= object.getType()
meshes.append(object); if obtype == "Mesh":
elif object.getType() == "Lamp": meshes.append(object);
lamps.append(object); #elif obtype == "Lamp":
elif object.getType() == "Camera": # lamps.append(object);
cameras.append(object); #elif obtype == "Camera":
else: # cameras.append(object);
print "Exporting %s objects isn't supported!" % object.getType() #else:
# print "Exporting %s objects isn't supported!" % object.getType()
# write header, footer and groups of object types # write header, footer and groups of object types
WriteHeader(file); WriteHeader(file);
#for camera in cameras: #for camera in cameras:
# WriteCamera(file, camera); # WriteCamera(file, camera);
#for lamp in lamps: #for lamp in lamps:
# WriteLamp(file, lamp) # WriteLamp(file, lamp)
for mesh in meshes: for mesh in meshes:
WriteMesh(file, mesh) WriteMesh(file, mesh)
WriteFooter(file) WriteFooter(file)
file.close() file.close()
def FileSelectorCB(file_name): def FileSelectorCB(file_name):
if(file_name.find('.iv', -3) <= 0): if not file_name.lower().endswith('.iv'):
file_name += '.iv' file_name += '.iv'
ExportToIv(file_name) ExportToIv(file_name)
Blender.Window.FileSelector(FileSelectorCB, "Export IV") Blender.Window.FileSelector(FileSelectorCB, "Export IV", Blender.sys.makename(ext='.iv'))

@ -1210,7 +1210,7 @@ def export_xsi(filename):
#OBJ = Blender.Object.GetSelected() #OBJ = Blender.Object.GetSelected()
#if not OBJ: #if not OBJ:
OBJ = Blender.Object.Get() OBJ = Blender.Scene.GetCurrent().getChildren() #Blender.Object.Get()
# we need some objects, if none specified stop # we need some objects, if none specified stop
if not OBJ: if not OBJ: