AddUserKeyword
 
 
 

AddUserKeyword

Introduced

v8.0 (2010)

Description

Preserves the existing keywords and adds the new keyword to the end of the list. If the object already has the specified keyword set, nothing happens.

To completely replace the existing keywords with new keyword(s), use the SetUserKeyword command instead.

Scripting Syntax

AddUserKeyword( [InputObjs], Keywords );

Parameters

Parameter Type Description
InputObjs SelectionList or Selection

Default Value: If not specified, the current selection is used.

Keywords String

Examples

Python Example

#
# This example demonstrates how to set, get, and add user keywords
#
def BuildSampleScene() :
        app = Application
        app.NewScene("", False)
        oNulls = XSIFactory.CreateActiveXObject( "XSI.Collection" )
        i=0
        while i<20 :
                oNulls.Add( app.ActiveSceneRoot.AddNull() )
                i = i + 1
        # Now store some user keywords on the newly created nulls.
        # Some nulls have several keywords applied
        for i in [0,1,2,3,4,5,6,7,8,9] :
                app.SetUserKeyword( oNulls(i), "important" )
        for i in [0,1,2,3,4] :          
                app.AddUserKeyword( oNulls(i), "alpha" )
        for i in [15,16,17,18,19] :             
                app.AddUserKeyword( oNulls(i), "beta" )
        for i in [5,6,7,8,9,10,11,12,13,14] :
                app.AddUserKeyword( oNulls(i), "placeholder" )
        for i in [10,11,12,13,14,15,16,17,18,19] :              
                app.AddUserKeyword( oNulls(i), "useless" )
        # Remove keywords from one of the nulls 
        app.ClearUserKeyword( oNulls(12)  )
# GetUserKeyword returns a collection of strings.
# This function turns that collection into a comma separated
# string suitable for printing out.
def GetKeywordsAsString( in_obj ) :
        oKeywords = Application.GetUserKeyword( in_obj )                
        return ",".join( oKeywords )
# Find all X3DObjects with a certain keyword
#
# User keywords can be stored on almost 
# any Softimage object, but in this case we only search
# X3DObjects
def FindObjectsWithKeyword( in_keyword ) :
        app = Application
        # Set keywords to lowercase
        strSearchKeyword = in_keyword.lower()
        oReturnCollection = XSIFactory.CreateActiveXObject( "XSI.Collection" )
        oAllX3DObjects = app.ActiveSceneRoot.FindChildren()
        for oX3DObject in oAllX3DObjects :
                oKeywords = app.GetUserKeyword( oX3DObject )
                for sKey in oKeywords:          
                        if sKey == strSearchKeyword :
                                # Found object with this keyword
                                oReturnCollection.Add( oX3DObject )
                                break
        return oReturnCollection
BuildSampleScene()
# Display X3DObjects that include the keyword "Useless"
oUselessNulls = FindObjectsWithKeyword( "Useless" )
for oUseless in oUselessNulls :
        Application.LogMessage( oUseless.Name + " has keywords: " + GetKeywordsAsString( oUseless ) )
# Expected results:
# INFO : null10 has keywords: placeholder,useless
# INFO : null11 has keywords: placeholder,useless
# INFO : null13 has keywords: placeholder,useless
# INFO : null14 has keywords: placeholder,useless
# INFO : null15 has keywords: beta,useless
# INFO : null16 has keywords: beta,useless
# INFO : null17 has keywords: beta,useless
# INFO : null18 has keywords: beta,useless
# INFO : null19 has keywords: beta,useless

See Also

AddUserTab RemoveUserTab ClearUserTab GetUserTab SetUserTab RemoveUserKeyword ClearUserKeyword GetUserKeyword SetUserKeyword