Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
How can I use Python to select the sub-objects for a color assignment for grouped objects zero objects?
Hello WDP,
you mean the display color of an object?
It is just a parameter you can set as any other.
import c4d def main(): """Sets the display color of the selected object to red. """ if op is None: return # Set the "Display Color" parameter to "Custom" op[c4d.ID_BASEOBJECT_USECOLOR] = c4d.ID_BASEOBJECT_USECOLOR_ALWAYS # And set the "Color" parameter to red. op[c4d.ID_BASEOBJECT_COLOR] = c4d.Vector(1, 0, 0) c4d.EventAdd() if __name__=='__main__': main()
Cheers, Ferdinand
Hello @WDP,
thank you for reaching out to us. Unfortunately your question is not clear for me. I assume you want to retrieve all children of a null object, so that you can add a material to them (to change their diffuse color)?
It would be best if you could clarify your question. I have posted however an example for what seems likely to be your goal.
The result: The code:
"""Simple example for iterating over direct children and creating materials. To be run in the script manger. As discussed in: plugincafe.maxon.net/topic/13673/ """ import c4d import random def main(): """Simple example for iterating over direct children and creating materials. """ # Bail when there is no object selected. if not isinstance(op, c4d.BaseObject): print ("Please select an object.") return # Bail when the active object has no children. if len(op.GetChildren()) == 0: print ("Object has no children.") return # Start an undo group. doc.StartUndo() # Iterate over all direct children of the selected object. for child in op.GetChildren(): # Create a texture tag on the object and add an undo step for it. tag = child.MakeTag(c4d.Ttexture) doc.AddUndo(c4d.UNDOTYPE_NEWOBJ, tag) # Create a new material with a random color. color = c4d.Vector(random.uniform(0, 1), random.uniform(0, 1), random.uniform(0, 1)) material = c4d.BaseMaterial() material[c4d.MATERIAL_COLOR_COLOR] = color # Insert the material into the document, add an undo step and link the # material in the texture tag. doc.InsertMaterial(material) doc.AddUndo(c4d.UNDOTYPE_NEWOBJ, material) tag[c4d.TEXTURETAG_MATERIAL] = material # Close the undo group. doc.EndUndo() c4d.EventAdd() if __name__ == '__main__': main()
yes I would like to change the view color for the wireframe model
Hello @wdp,
without any further questions we will consider this topic as solved by Friday, December the 17th.
Thank you for your understanding, Ferdinand