Beginner:How to assign A-material to B-cube by python?

  • (😁 Thanks to all the good people who kindly answer questions to a green hand like me in recent days ,i have certainly made a huge pregress due to you zealous guys in such a super forum)

    Well,i meet the problem to assign a material to another object in my project,i reviewed history post but not so solvable,let me take an easy example of A material and B cube,how to assign A to B?

    Below is example pic
    mat assign.png

    import c4d
    def main():
       A = c4d.BaseObject(c4d.Ocube)
    #lost on how to make assignment

    Thanks !

  • Hi Ilad, thanks for reaching out us.

    With regard to your request, I warmly recommend to have a look at Materials and Shaders Overview where the basic of Cinema 4D materials and shading handling are discussed. Consider that even if the documentation refers to C++ the described concepts can be applied to Python as well.

    Briefly the solution to your request is:

    def main():
        # get first object
        cubeA = doc.GetActiveObject()
        if cubeA is None: 
        # get second object
        cubeB = op.GetNext()
        if cubeB is None:
            cubeB = op.GetPred()
        #get first material
        matA = doc.GetActiveMaterial()
        if matA is None: 
        # get second material
        matB = matA.GetNext()
        if matB is None:
            matB = matA.GetPred()
        # create the texture tags for A and B
        ttagA = c4d.TextureTag()
        ttagB = c4d.TextureTag()
        # assign the swapped materials to the texture tags
        # insert the tags to the corresponding objects
        # queue an event

    Last but not least, it's recommended for future threads to use the appropriate category and mark it as "Ask as a question" upon creation.

    Best, Riccardo

  • @r_gigante Thanks!Greate help for me! I got it!😁