v8.0 (2010)
既存の既存のキーワードを保持し、リストの最後に新しいキーワードを追加します。 指定されたキーワードのセットがすでにオブジェクトに追加されている場合は、何も起こりません。
既存のキーワードを新しいキーワードと完全に置換する場合は、代わりに SetUserKeyword コマンドを使用します。
AddUserKeyword( [InputObjs], Keywords ); |
#
# 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 |