Adding object to In/Exclusion List



  • On 05/10/2017 at 11:58, xxxxxxxx wrote:

    I'm trying to create a null and add it to an in/exclusion list. The list is in the user data of an xpresso tag. This will be run off of a script. I have this code so far:

    import c4d
    from c4d import gui, utils

    def main() :
        document = doc
        tagowner = doc.SearchObject('StageLightMaster')
        xtag = tagowner.GetFirstTag()
        LinkList = xtag[c4d.ID_USERDATA,1]
        NullMaster = c4d.BaseObject(5140)
        document.InsertObject(NullMaster)
        LinkList.InsertObject(NullMaster,1)
        c4d.EventAdd()
    if __name__=='__main__':
        main()

    I can run a count before and after the object is added and it seems to be running properly, but when I go to the list in the tag it is not updated to include the null. I read somewhere that I need to update the gui object for the changes to take place, but I'm not sure how to call it. Any help is greatly appreciated! Thanks!



  • On 06/10/2017 at 02:05, xxxxxxxx wrote:

    Add

    xtag[c4d.ID_USERDATA,1] = LinkList
    

    Before your EventaAdd().

    If we go step by step in your program here is what happend.

    mport c4d
    from c4d import gui, utils
      
    def main() :
        #Get the obj
        document = doc
        tagowner = doc.SearchObject('StageLightMaster')
        
        #Get the tag
        xtag = tagowner.GetFirstTag()
        
        #Get a copy in memory of xtag[c4d.ID_USERDATA,1]
        LinkList = xtag[c4d.ID_USERDATA,1]
        
        #Create in memory a new object an copy it to NullMaster
        NullMaster = c4d.BaseObject(5140)
        
        #Insert The the object into the document
        document.InsertObject(NullMaster)
        
        #Insert the object into your linklist variable which is a copy in memory of the userdata
        LinkList.InsertObject(NullMaster,1)
        
        #Trigger an event
        c4d.EventAdd()
    if __name__=='__main__':
        main()
    

    So as you see you only change value on memory so you need to push back into the object ;)



  • On 06/10/2017 at 02:05, xxxxxxxx wrote:

    Hi and Welcome to the Plugin Cafe forums!

    LinkList in your script (retrieved with xtag[c4d.ID_USERDATA,1]) is a copy of the actual in/exclusion user data.
    So it has to be assigned to xtag[c4d.ID_USERDATA,1], after inserting the null object, for the in/exclusion user data to be updated in the GUI.



  • On 06/10/2017 at 05:40, xxxxxxxx wrote:

    Well you guys are just awesome! Thanks for explaining the logic behind the solution this helps me out tremendously.


Log in to reply