Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
Hi everyone,
Very basic question here, but I'm trying to clear the a LinkBox field. Would you use GeDialog.Command()? If so what BaseContainer to use?
def Command(self, id, bc): if id == TAKES_LINKBOX: if type(self.linkBox.GetLink(activeDocument)) != c4d.modules.takesystem.BaseTake: test = c4d.BaseContainer() self.Command(TAKES_LINKBOX, **???**)
Thank you all in advance!
Andre
Hi Andre,
you can simply use SetLink(), the opposite of GetLink().
SetLink()
GetLink()
In order to clear a link box, you'd call: self.linkBox.SetLink(None)
self.linkBox.SetLink(None)
The type you do in your code snippet is a bit unconventional in terms of Cinema 4D's API (not wrong though), but usually we recommend to stay in our API for example with CheckType() or IsInstanceOf(). But in the end, I think, you don't even need the type check, if you simply restrict the types accepted by the link box. For example like so:
CheckType()
IsInstanceOf()
bcAcceptedObjects = c4d.BaseContainer() bcAcceptedObjects.InsData(c4d.TakeBase, "") # only allow BaseTakes to be accepted bcLinkBox = c4d.BaseContainer() bcLinkBox.SetData(c4d.DESC_ACCEPT, bcAcceptedObjects) self.linkBox = self.AddCustomGui(2001, c4d.CUSTOMGUI_LINKBOX, "My Link", c4d.BFH_SCALEFIT | c4d.BFV_CENTER, 0, 0, bcLinkBox)
I turned this thread into a question.
Cheers, Andreas
Hi Andreas,
Thank you very much! It works like a treat and I appreciate your thorough explanation!
Happy Friday!