[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