So now it is ok to some degree , gui only showing choices, if an absolute path to an csv (comma separated numbers, first maybe text, 2 or more colums) is given.
using this
import bpy
from random import random
def makeMaterial(name, diffuse, specular, alpha):
mat = bpy.data.materials.new(name)
mat.diffuse_color = diffuse
mat.diffuse_shader = 'LAMBERT'
mat.diffuse_intensity = 1.0
mat.specular_color = specular
mat.specular_shader = 'COOKTORR'
mat.specular_intensity = 0.5
mat.alpha = alpha
mat.ambient = 1
return mat
#global lightGrey
#lightGrey = makeMaterial('lightGrey',(0.91,0.91,0.91),(1,1,1),1)
#darkRed = makeMaterial('darkRed',(0.91,0,0),(1,1,1),1)
objTypes =['Cylinder','Cube','BezierCurve']
def setMaterial(ob, mat):
me = ob.data
me.materials.append(mat)
allCube = [el for el in bpy.data.objects if el.name.startswith('Cube')]
allCylinder = [el for el in bpy.data.objects if el.name.startswith('Cylinder')]
allBezierCurve = [el for el in bpy.data.objects if el.name.startswith('BezierCurve')]
ranCols = [(random(),random(),random()) for el in range(len(allCube))]
for nr,obj in enumerate(allCylinder ):
print(nr, obj.name)
mat = makeMaterial(obj.name,ranCols[nr],(1,1,1),1)
setMaterial(obj,mat)
for nr,obj in enumerate(allBezierCurve):
print(nr, obj.name)
mat = makeMaterial(obj.name,ranCols[nr],(1,1,1),1)
setMaterial(obj,mat)
for nr,obj in enumerate(allCube):
print(nr, obj.name)
mat = makeMaterial(obj.name,ranCols[nr],(1,1,1),1)
setMaterial(obj,mat)
random colors to the same values are given :evilgrin: see picture
Negative values are possible for cubes or cylinders, but than no %tage is shown etc.
in the pie-case negative values are discarded (not meaningfull in a pie) …
Attachments