Writing data to the .c4d file
-
@blastframe For me, it works fine this way. Did you really "close and reopen" the document? Not "save", "close", "load"? Because if you just close the document, the data from the container is gone, which leads to your error message.
The Q regarding MyUniqueId vs. PLUGIN_ID is not relevant (probably typed in a hurry), you can use either. But the ID value should come from Maxon in the end, so you avoid collisions with existing IDs.
-
-
hi,
you could use the same ID, you just have to be sure that you are the only one to use that ID to store datas.
That's why we use plugin's ID.Cheers
Manuel. -
@m_magalhaes Thanks, Manuel.
How would I delete the data of an individual sub-BaseContainer in the case of your script?
I've tried several methods below but the
doc[MyUniqueId][1000]
still shows data in theprint
call.bc = doc.GetDataInstance().GetContainer(MyUniqueId) print bc.RemoveData(1000) # True print doc[MyUniqueId].RemoveData(1000) # True doc[MyUniqueId].FlushAll() print doc[MyUniqueId][1000] #hello
I was able to delete all of the data this way, but what if I want to keep the data in
subBc[2000]
?docBC.RemoveData(MyUniqueId)
Thank you!
-
hello,
there's a difference between GetContainer and GetContainerInstance
The first return a copy of the container the second the original link.
So either you retrieve a copy and set back the container to the parent withSetData
and/orSetContainer
or you retrieve the original link and the changes are reflected immediately.You can also use
del
that is pythonicbc = doc.GetDataInstance().GetContainerInstance(MyUniqueId) bc.RemoveData(2000) #del (bc[2000])
Cheers,
Manuel -
@m_magalhaes said in Writing data to the .c4d file:
You can also use
del
that is pythonicbc = doc.GetDataInstance().GetContainerInstance(MyUniqueId) bc.RemoveData(2000) #del (bc[2000])
Wonderful, @m_magalhaes , thank you so much!