Here’s a simple example of using an ICE attribute to drive a procedural texture. In this case, I’m using a random integer to drive the number of repeats of a checkerboard:
To set it up, I ran this script to programmatically add an ICE attribute. Unfortunately, I found I had to add an ICE tree to get the attribute to show up in the render tree.
import random si = Application for o in si.Selection: # Long, Single, Singleton a = o.ActivePrimitive.Geometry.AddICEAttribute("_random", 2, 1, 1 ) a.DataArray = [ (random.randint(1,8))] si.ApplyOp("ICETree", o, "siNode", "", "", 0)
And if you wanted to update the ICE attribute later, eg increase the range of random values, you could do something like this:
import random si = Application for o in si.Selection: a = o.ActivePrimitive.Geometry.ICEAttributes("_random") a.DataArray = [ (random.randint(1,12))]