[Bf-python] 'obj.data' returns NMesh data object even when made with Mesh class.
Dietrich Bollmann
diresu at web.de
Mon Aug 6 07:50:05 CEST 2007
Hi,
When making a Mesh object the member 'data' returns a NMesh and
not a Mesh data object. Because of this an assignment of new
materials to 'object.data.materials' fails. When the original
Mesh object is used, the operation is successful:
>>> import Blender
>>> from Blender import *
# making a simple mesh
>>> vertexes = [[1, 1, 0], [-1, 1, 0], [-1, -1, 0], [1, -1, 0], [0, 0,
1.27]]
>>> faces = [[3, 2, 1, 0], [0, 1, 4], [1, 2, 4], [2, 3, 4], [3, 0,
4]]
>>> mesh = Mesh.New('mesh')
>>> mesh.verts.extend(vertexes)
>>> mesh.faces.extend(faces)
>>> scene = Scene.GetCurrent()
>>> object = scene.objects.new(mesh, 'object')
>>> Redraw()
# 'mesh' is of type Mesh
>>> mesh
[Mesh "mesh"]
# but 'object.data' returns a NMesh object
>>> object.data
<Blender NMesh object at 0xb74616b0>
# making a simple material
>>> material = Material.New('material')
>>> material.rgbCol = [0.3, 0.6, 0.9]
# setting 'materials' on 'object.data' doesn't work:
>>> object.data.materials
[]
>>> object.data.materials = [ material ]
>>> object.data.materials
[]
# setting 'materials' on 'mesh' works:
>>> mesh.materials
[]
>>> mesh.materials = [ material ]
>>> mesh.materials
[[Material "material.001"]]
It took me quite a while to find the second way and I thought I
should report this somewhere to make it easier to find this
solution for the next person trying :)
Cheers,
Dietrich
More information about the Bf-python
mailing list