startObjectCreation() メソッドは、ユーザが特定のオブジェクト クラスの[作成パネル](Create Panel)ボタンを探して押す動作をシミュレートするのに使われます。これを使用すると、そのオブジェクト クラスに対して 3ds Max が作成モードになります。
形式は次のとおりです。
startObjectCreation <maxobjclass> [ returnNewNodes:<flag>] [ newNodeCallback:<fn>] このメソッドは、右タブとカテゴリを持つ[作成] (Create)パネルを開き、適切なオブジェクト ボタンを押します。
例:
startObjectCreation box startObjectCreation targetSpot
このメソッドは、主にマクロ スクリプトで使用しますが、一般化されたスクリプト内でも使用できます。スクリプトの実行は、作成モードになった直後に継続されるので、オブジェクトの作成に影響を及ぼさないよう注意する必要があります。
オプションの returnNewNodes: キーワード引数には、true、false (既定値)、または #first を指定できます。true を指定すると、現在の作成モードを終了するまでに作成されたすべてのノードが配列で返されます。#first を指定すると、最初に作成されたノードだけが、作成直後に返されます。この関数は、ユーザが作成モードを終了するまで待機しません。
オプションの newNodeCallback: キーワード引数は、1 つの引数のスクリプト関数を、開始される作成モードに指定できます。 この関数は、引数に新しいノードを指定してノードが作成されるたびに呼び出されます。これは、pickObject() フィルタ関数を指定する場合に似ています。ただし、newNodeCallback: 関数の戻り値は無視されます。
例:
fn setColor n = n.wireColor= red startObjectCreation box newNodeCallback:setColorこれにより、開始した作成モードで作成されたすべての新規ボックスのワイヤ カラーが赤になります。
returnNewNodes: と newNodeCallback: は、両方とも同じ呼び出しに指定できます。コールバックは各ノードで呼び出され、startObjectCreation() 関数の結果として配列で返されます。
okToCreate <maxclass> 指定した maxclass をユーザ インタフェースで作成できる場合は true を、作成できない場合は false を返します。引数が undefined の場合にも、false を返します。
例:
okToCreate terrain少なくとも 1 つのシェイプが選択されていない場合、または非シェイプが選択されている場合は、
falseを返します。これは、オブジェクトのボタンが使用可能かどうかに対応します。
isCreatingObject [ <maxclass> ] 指定した maxclass がユーザ インタフェース上で現在作成されている場合は true を、作成されていない場合は false を返します。
引数なしで呼び出された場合、ユーザ インタフェース上で何らかのオブジェクトが作成されている場合には true を、作成されていない場合には false を返します。
3ds Max 2010 以降では、okToCreate() との整合性のため、引数が undefined の場合にも false を返します。
3ds Max 9 以降で使用可能です。
例:
--go to Create panel, click the Box button and evaluate: isCreatingObject Box true --in the Create panel, click on the Cone button and evaluate: isCreatingObject Box false isCreatingObject Cone true isCreatingObject() true