I am trying to automatically update the object list in a Volume Builder. I am using a User Data link. When I drop a new object in the UD link field, the object in the Volume Builder list does not update. Is there a way to do this? Below is the code I am using:
import c4d
from c4d.modules import volume
import pprint
from c4d import documents
from c4d import utils
Bake_Button = 240
obj = op.GetObject()
#obj = doc.SearchObject("Spritz 4.0")
UD = obj.GetUserDataContainer()
bottle = obj[c4d.ID_USERDATA,5]
set_bottle = 242
delete_bottle = 243
document = op.GetDocument()
settings = c4d.BaseContainer()
selected = doc.GetActiveObjects(0)
taglist = doc.GetActiveTags()
presets = obj[c4d.ID_USERDATA,13]
drop_name = obj[c4d.ID_USERDATA,197]
def set_delete_UD_object():
vol_build = doc.SearchObject("VB Drops")
vol_build_drip_1 = doc.SearchObject("VB Drip 1")
if obj[c4d.ID_USERDATA, set_bottle] == 1:
vol_build.AddSceneObject(bottle, index = 0)
vol_build.SetBoolMode(0, 2)
vol_build_drip_1.AddSceneObject(bottle, index = 0)
vol_build_drip_1.SetBoolMode(0, 2)
obj[c4d.ID_USERDATA, set_bottle] = False
for descId, container in UD: # SET Object hide
if descId[1].id == 266:
container[c4d.DESC_HIDE] = True
obj.SetUserDataContainer(descId, container)
for descId, container in UD: # DELETE Object show
if descId[1].id == 267:
container[c4d.DESC_HIDE] = False
obj.SetUserDataContainer(descId, container)
if obj[c4d.ID_USERDATA, delete_bottle] == 1:
vol_build.RemoveObject(0)
vol_build_drip_1.RemoveObject(0)
obj[c4d.ID_USERDATA, delete_bottle] = False
for descId, container in UD: # SET Object show
if descId[1].id == 267:
container[c4d.DESC_HIDE] = True
obj.SetUserDataContainer(descId, container)
for descId, container in UD: # DELETE Object hide
if descId[1].id == 266:
container[c4d.DESC_HIDE] = False
obj.SetUserDataContainer(descId, container)
def main():
set_delete_UD_object()