On 25/06/2017 at 10:25, xxxxxxxx wrote:
Is there anyway to get something similar to InExcludeData but for storing tag instead of object?
On 25/06/2017 at 10:25, xxxxxxxx wrote:
Is there anyway to get something similar to InExcludeData but for storing tag instead of object?
On 26/06/2017 at 03:12, xxxxxxxx wrote:
Hi,
In which context do you want to have an InExcludeData with tags? Do you want to manipulate an arbitrary InExcludeData object or one for a description parameter?
Note, an InExcludeData can store any base list element, not only objects. The documentation isn't clear.
And in a description resource file, filter the accepted base list elements with the ACCEPT/REFUSE flags.
For instance, to accept only tags use:
IN_EXCLUDE PLUG_INEXCLUDE { ACCEPT { Tbase; } }
On 26/06/2017 at 03:19, xxxxxxxx wrote:
It would be nice to have it directly into userData.
since I build my ui from user data for some reasons instead of passing via desciption.
Anyway thanks you
On 26/06/2017 at 05:59, xxxxxxxx wrote:
It's also possible to setup the ACCEPT settings for an InExclude user data.
This can be done via code with BaseList2D.GetUserDataContainer()/SetUserDataContainer() that retrieve/set a user data description.
The following script changes all the InExclude user data of the active object to only accept tags:
import c4d
def main() :
if op is None:
return
# Loop through active object user data
udList = op.GetUserDataContainer()
for udID, udBC in udList:
# Filter INEXCLUDE user data
if udID[1].dtype == c4d.CUSTOMDATATYPE_INEXCLUDE_LIST:
# Setup DESC_ACCEPT settings container
accept = c4d.BaseContainer()
accept.InsData(c4d.Tbase, "")
# Set DESC_ACCEPT settings container
udBC[c4d.DESC_ACCEPT] = accept
# Set changed user data settings
op.SetUserDataContainer(udID, udBC)
c4d.EventAdd()
if __name__=='__main__':
main()