Netview でスクリプトを実行する

 
 
 

Softimage のデータを設定するだけでなく、Softimage からのデータを取得したり動的な情報を表示したりできる Netview ページを作成できます。たとえば、カスタム ツール用に一続きのスクリプトを記述し、Web ページ内に Dynamic HTML、フォーム、ボタンを使用したユーザ インタフェースを作成することができます。無限の可能性を秘めていますが、初めて作成する場合は、このセクションを参照してください。

注:単純なスクリプトを、まるで Script Editor から実行しているかのように、Netview ページから実行するには、「スクリプトへのリンクを作成する」を参照してください。

セキュリティを設定する

Netview からスクリプトを実行する前に、スクリプトが保存されているドメインのセキュリティ レベルを[低](Low)に設定してください。低いセキュリティでは、すべてのスクリプトと ActiveX コンテンツを実行できます。Softimage と通信するために、スクリプトは XSI.Application ActiveX オブジェクトをインスタンス化する必要があります。

重要:低いセキュリティを設定するドメインは慎重に設定してください。安全でない ActiveX コンテンツは、システムやデータを損傷させることがあります。この設定を使用するのは、プライベート イントラネット上の特定アドレスに限定することを強く推奨します。

Windows でインターネットのセキュリティ レベルを設定するには

Windows では、次の 2 つの方法のいずれかで、特定ドメインのセキュリティ レベルを設定できます。

  • Internet Explorer 内からの設定

    または

  • Windows のコントロール パネルからの設定

正確な設定手順は、使用している Windows と Internet Explorer のバージョンによって異なるため、詳細については、Internet Explorer のオンラインヘルプを参照してください。

重要:ドメインのセキュリティ設定を変更すると、Softimage のほか、ご使用のコンピュータのすべてのプログラムに適用されます。

Linux でインターネットのセキュリティ レベルを設定するには

Linux では、Mainwin Control Panel を使用して特定ドメインのセキュリティ レベルを設定できます。

  1. ターミナル ウィンドウまたはシェル ウィンドウを開きます。

  2. 次のように入力して、Softimage 環境スクリプトのソースを指定します。

    source ~/.xsi_2013
  3. 次のように入力して、MainWin Control Panel を起動します。

    mwcontrol
  4. [インターネット]アイコンをダブルクリックします。[インターネットのプロパティ]ダイアログ ボックスが開きます。

  5. [Security]タブで、[Trusted sites]を選択し、[Sites]ボタンをクリックします。[Trusted sites]ダイアログ ボックスが開きます。

  6. ドメインのアドレスを入力して[追加](Add)をクリックします。

埋め込まれたスクリプトを自動実行する

HTML ページのボディに埋め込まれたスクリプトは、そのページが Netview にロードされると自動的に解析されて実行されます。グローバル コード(つまり、どのプロシージャにも含まれないコード)はそのグローバル コードから呼び出される関数またはサブルーチンとともに実行されます。

たとえば、次のように記述します。

<body>
<!-- HTML elements go here -->
...
<script language="vbscript">
'Global code 
'This gets executed automatically
...
sub mySub()
'This procedure is executed only when it is called
...
end sub
</script>
<!-- More HTML elements go here -->
...
</body>

埋め込みスクリプト コードをボタンやホットスポットから実行する

ユーザが HTML ページ上のボタンやホットスポットをクリックすると、スクリプト コードが実行されるよう設定できます。この処理を実現するには、プロシージャを記述してから、ボタンやホットスポットの [onclick] イベントからプロシージャを呼び出します。

たとえば、VBScript を使用して mySub を実行する HTML ボタンを作成するには、次のように記述します。

<script language="vbscript">
...

sub mySub()
'Code goes here
end sub
...

</script>
...

<input id=bClickMe
		type=button
		value="Click Me"
		name=button1
		language=vbscript
		onclick="mySub()">

Softimage と通信する

データをやり取りする前に、Netview スクリプトを Softimage にリンクする必要があります。Netview のスクリプトは実際には Internet Explorer 内で実行されるため、通信する前に Softimage へのポインタを取得しておく必要があるからです。ポインタを取得するには、スクリプトで XSI.Application オブジェクトをインスタンス化する必要があります。

たとえば、VBScript では次のようになります。

On Error Resume Next

Set myXSI = CreateObject("XSI.Application")
Set myApp = myXSI.Application

if err.number <> 0 then
	document.write "Open this page in Softimage's Netview."
end if

XSI.Application へのポインタを取得したら、それを Softimage オブジェクト モデル内の任意のオブジェクト、メソッド、またはプロパティの名前の前に付加することができます。たとえば、VBScript を使用して Softimage 内の現在の選択範囲を取得するには、次のように指定します。

Set mySel = myApp.Selection

Softimage スクリプト コマンドを実行する

前セクションの「Softimage と通信する」で説明したように XSI.Application オブジェクトへのポインタを取得すれば、Netview スクリプト内で Softimage オブジェクト、メソッド、プロパティを使用することができます。では、オブジェクト モデル内に同等のものがないSoftimageスクリプト コマンドを使用する必要がある場合はどうすればよいでしょうか。これを行うためのいくつかの方法があります。

注:LogMessage や Version などの一部の「コマンド」は、実際には Application オブジェクトのメソッドです。これらのメソッドは解決策なしで実行できます。

COM オートメーションからスクリプト コマンドを実行する

XSI.Application へのポインタを取得すると、これを使用して任意の Softimage スクリプト コマンドを COM オートメーションから実行できます。たとえば、次のように記述します。

'Get a pointer to XSI.Application
Set myXSI = CreateObject("XSI.Application")
Set myApp = myXSI.Application
'Get the selection
Set mySel = myApp.Selection
'Run a command, e.g. InspectObj
myApp.InspectObj(mySel(0))

ExecuteScriptCommand によるスクリプト コマンドの実行

XSIApplicationオブジェクトのExecuteScriptCommandメソッドによって、カスタムコマンドを含む、Softimageスクリプトコマンドを実行することができます。本来このメソッドは COM C++のコマンドを実行するためのものですが、Netview でも使用できます。引数はあらかじめ配列にパッケージ化しておく必要があります。詳細については、「ExecuteScriptCommand」(『SDK ガイド』)を参照してください。

ExecuteScript によりスクリプト ファイルを実行する

XSIApplicationオブジェクトのExecuteScriptメソッドによって、1つのSoftimageスクリプトコマンドではなく、スクリプトを実行することができます。引数はあらかじめ配列にパッケージ化しておく必要があります。詳細については、「ExecuteScript」(『SDK ガイド』)を参照してください。

データを動的に表示する

Netview ページに、Softimage からの情報を動的に表示することができます。

  1. 書き込むデータを保持する <div> エレメントを HTML のボディに作成して、そのエレメントにユニークな ID を割り当てます。たとえば、次のように記述します。

    <div id="myDiv"> </div>

    必要に応じて、デフォルト テキストまたは他の HTML エレメントを開始 div タグと終了 div タグの間に挿入できます。

  2. テキストの文字列を HTML 形式で作成し、<div> の innerHTML プロパティに代入するルーチンを記述します。

    たとえば、VBScript では次のようになります。

    Sub writeSel()
    
    Set mySel= myApp.Selection
    
    if mySel.Count <> 0 then
    	myStr = ""
    	for each thing in mySel
    		myStr = myStr & "<p>My name is <b>" & thing.Name & "</b>.</p>"
    	next
    else
    	myStr= "<p>Select an object first.</p>"
    end if
    
    myDiv.innerHTML= myStr
    End Sub
  3. 何らかの方法でルーチンを呼び出します。たとえば、次のように、VBScript サブルーチンを呼び出すボタンを作成します。

    <input id=bWhoAmI
    		type=button
    		value="Who am I?"
    		name=button1
    		language=vbscript
    		onclick="writeSel()"
    		>

ダイナミック HTML ページのサンプル

Softimage へのポインタを取得し、ボタンからスクリプトを実行し、選択したオブジェクトの名前を動的に出力するページの簡単なサンプルについては、Netview の Help ページを参照してください。