Active Objects - Change attributes
On 03/06/2017 at 19:51, xxxxxxxx wrote:
I'm trying to change some attributes from a different objects at the same time, in this case I'm trying to change "use color" and "display color" attribute for testing with that.
When I use the code with one object works fine but if the object have some children objects the console shows me "IndexError: list assignment index out of range" but I don't understand why, because I've use a GetActiveObjects with a c4d.GetActiveObject_Children flag.
I need to get the entire objects selection with other way maybe? Here is the code:
import c4d from c4d import gui def geo_color() : doc = c4d.documents.GetActiveDocument() #activeObject = doc.GetActiveObject() activeObject = doc.GetActiveObjects(c4d.GETACTIVEOBJECTFLAGS_CHILDREN) #List of selected objects print activeObject #geo color actions activeObject[c4d.ID_BASEOBJECT_USECOLOR]=2 #cdlg = c4d.gui.ColorDialog(1) #activeObject[c4d.ID_BASEOBJECT_COLOR]=cdlg #update scene c4d.EventAdd() if __name__=='__main__': geo_color()
On 04/06/2017 at 00:10, xxxxxxxx wrote:
Get activeObjects return you a list of BaseList2D So you have to iterate throught this list basicly do
import c4d def geo_color() : doc = c4d.documents.GetActiveDocument() activeObjects = doc.GetActiveObjects(c4d.GETACTIVEOBJECTFLAGS_CHILDREN) #If we get nothing select we quit if not activeObjects: return #Loop through the content of activeObjects and call each element of activeObjects obj #obj are BaseList2D so we can set their value for obj in activeObjects: obj[c4d.ID_BASEOBJECT_USECOLOR] = 2 # update scene c4d.EventAdd() if __name__ == '__main__': geo_color()
On 12/06/2017 at 14:54, xxxxxxxx wrote:
Thanks! That's make sense.