頻繁に使用するカスタムコマンドを Softimage に登録します。別のコマンドと名前が競合する場合は、コマンドは登録されません。
注:名前とスクリプト名の両方を一意の値にすることをお勧めします。
PluginItem PluginRegistrar.RegisterCommand( String in_name, String in_ScriptName ); |
oReturn = PluginRegistrar.RegisterCommand( Name, [ScriptName] ); |
パラメータ | タイプ | 説明 |
---|---|---|
Name | String |
登録するカスタムコマンドの名前。同じ名前がスクリプト名として使用されている場合(推奨)、名前を文字から開始し、英数字とアンダースコア(_)記号のみを使用する必要があります。 コマンド名は、コマンドのコールバック関数(Execute や Init など)の名前を付ける場合に使用されますたとえば、"MyCommand"という名前のコマンドの Execute コールバックは"MyCommand_Execute"という名前になります。コマンド名にスペースが含まれている場合("My Simple Command"など)は、コールバック関数名でスペースを削除します("MySimpleCommand_Init"や"MySimpleCommand_Execute"など)。 コマンド名は、Softimage ユーザインターフェイスにも表示されます。また、XSIApplication.Commands によって戻される CommandCollection のコマンドの名前でもあります。 さらに、Menu.AddCommandItem を呼び出すときに使用する名前でもあります。 コマンド名は一意である必要があります。名前の重複を避けるために、会社名またはプラグイン名に基づくプレフィックス("ACME_TornadoKit_Apply"など)を使用することをお勧めします。 |
ScriptName | String |
コマンドの Command.ScriptingName ユーザがスクリプトでコマンドを簡単に実行できるようにするため、スクリプト名は文字から開始するようにする必要があります。以降に続く文字は、英字、数字、アンダースコア(_)のいずれも使用できます。 |
/*-------------------------------------------------------------------- This example shows how to register and implement a custom command When not specified, the Name argument is also used as the command's scripting name. README: Copy and paste the example into the script editor and run (F5). The command will be listed in the customize toolbar dialog in the 'Custom Commands' group. --------------------------------------------------------------------*/ function XSILoadPlugin( in_reg ) { in_reg.Author = "Softimage Co."; in_reg.Name = "PluginRegistrar.RegisterCommand Example"; in_reg.Major = 1; in_reg.Minor = 0; // register the ABC command plug-in item in_reg.RegisterCommand("ABCCommand", "ABC"); return true; } // initialize the ABC command arguments function ABCCommand_Init( in_ctxt ) { var cmd = in_ctxt.Source; cmd.Arguments.Add("argument0"); return true; } //function handler for the ABC command function ABCCommand_Execute( in_arg ) { Application.LogMessage("ABC command has been executed with argument: " + in_arg); } //-------------------------------------------------------------------- // Code to bootstrap example into system //-------------------------------------------------------------------- function ExampleSourceCode() { return "// XSISDK Doc Example\n" + ABCCommand_Init.toString() + "\n" + ABCCommand_Execute.toString() + "\n" + XSILoadPlugin.toString(); } // if we are running from script editor save code to // examples addon folder in the user's directory. if (GetUserPref("ScriptingSessionActive")) { var ex_name = "ExPluginRegistrarRegisterCommand"; var ex_subfolder = "Plugins"; var ex_folder = "XSISDKDocExamples"; var ex_langsuffix = ".js"; CreateAddonDirectories( InstallationPath(siUserPath), ex_folder ); var fso = XSIFactory.CreateActiveXObject("Scripting.FileSystemObject"); var filename = XSIUtils.BuildPath( InstallationPath(siUserAddonPath), ex_folder, "Application", ex_subfolder, ex_name+ex_langsuffix ); if (!fso.FileExists(filename)) { var f = fso.CreateTextFile ( filename ); f.write( ExampleSourceCode() ); f.close(); Application.LoadPlugin(filename); } } |