頻繁に使用するカスタムコマンドを 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);
}
} |