Storing BaseContainer inside object



  • On 17/06/2018 at 23:56, xxxxxxxx wrote:

    Hi guys, relative beginner with Python scripting but i've making good progress with a small internal plugin i've been working on for our studio. One thing i'm having trouble on, is saving a list generated by the plugin inside the document (or more specifically, the plugin object) so that the list is stored for next time the doc is opened/plugin is run and everything works as intended. Without copying the huge mess that is my code itself, i've create a cut down version of what i'm trying to do (which doesn't work).
        
           #To make and set the container:
           string_list = ['image_path1', 'image_path2']
           
           bc = c4d.BaseContainer()
           
           for index , image_path in enumerate(string_list) :
               bc[index] = image_path
               print bc[index]
           
           op[MYPLUGINVARIALBLE] = bc
           
           #To get the container again:
    bc = op[MYPLUGINVARIALBLE]
    print bc
           
           for index, image_path in bc:
               print index, image_path

    So i'm correctly assigning the strings to the base container and i'm creating and that prints as expected when testing. Then, I assign my object (with unique ID assigned to MYPLUGINVARIABLE) s the newly created base container.

    So then, I test trying to bring back the base container and printing the values which is the part that doesn't seem to work. When I assign 'bc' to be the value stored with my unique plugin ID, this prints (what I assume is) correctly as a base container.

    The part that doesn't work, which is where my code falls over and implies that i'm likely doing some silly, is that when I iterate through the values stored in this base container (which should be the string values) nothing is actually there and it doesn't seem to be working as I expect it to in my head.

    This little part of the code has been holding me up for a few weeks now so any help would be appreciated - even if i'm completely off the right track then it would be great if someone could point me in the right direction.

    Thanks,

    Col



  • On 18/06/2018 at 08:37, xxxxxxxx wrote:

    Hi Col,

    welcome to the Plugin Café forums 🙂

    Which version of Cinema 4D are you working in?
    There was a bug with retrieving BaseContainers in R18, which got fixed with R19 SP1. To me it sounds a bit like you may experience this bug. Fortunately you can work around it, see this thread: Plugin Specific Data not set



  • On 18/06/2018 at 23:47, xxxxxxxx wrote:

    Hi Andreas, thanks for the help!

    We are using R18 in the studio but I actually got this working perfectly yesterday using SetContainer and GetContainer thanks to some help from another user.

    Good to know that the initial way I was trying it wasn't 100% down to my lack of experience and may have been a bug!

    Thanks again for the help.


Log in to reply