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_pathSo 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.