p2or
8/7/2015 - 3:57 PM

radial_gradient_script.py

# assumes the values of the first indices add up to 100.

import bpy
import random

mats = bpy.data.materials
nodes = mats['Material'].node_tree.nodes
elements = nodes['ColorRamp'].color_ramp.elements

RAN = random.random
get_random_color = lambda: (RAN(), RAN(), RAN(), 1.0)

procents_and_colors = [
    [20, get_random_color()],   # or fill these with prechosen colours
    [30, get_random_color()],
    [50, get_random_color()],
]

# this sections adds or removes elements if you update your 
# procents_and_colors list with more / fewer elements
diff = len(elements) - len(procents_and_colors)
if diff > 0:
    for i in range(abs(diff)):
        elements.remove(elements[-1])
elif diff < 0:
    for i in range(abs(diff)):
        elements.new(position=0.0)
    

position = 0
for idx, section in enumerate(procents_and_colors):
    elements[idx].color = section[1]
    elements[idx].position = position
    position += (section[0] / 100.0)