その他の関数

hasCurrentExceptionStackTrace()

3ds Max 2017 の 新機能 : MAXScript スタック トレースを使用できる場合は true を返します。役に立つのはキャッチ ステートメント内のみです。キャッチ外で使用すると、false が返されます。キャッチ内では常に true が返されます。

   

hasCurrentExceptionCallStack()

3ds Max 2017 の 新機能 : C++ スタック トレースを使用できる場合は true を返します。役に立つのはキャッチ ステートメント内のみです。キャッチ外で使用すると、false が返されます。キャッチ内で true となるのは、キャッチされた例外がアクセス違反や 0による整数の除算などのシステム例外であった場合のみです。

   

getCurrentExceptionCallStack()

3ds Max 2017 の 新機能 : 例外が発生したときにキャプチャされた C++ スタック トレースを文字列として返します。キャッチ ステートメント内のみで役立ちます。キャッチ外で使用すると、「undefined」が返されます。キャッチ内で C++ スタック トレースがキャプチャされなかった場合は、空の文字列が返されます。

   

CaptureCallStack [skipFirstNStackLevels:<int>]

3ds Max 2017 の 新機能 : MAXScript コール スタックをキャプチャします。 skipFirstNStackLevels パラメータが指定されていない場合、既定値は 3 です。

   

freeSceneBitmaps() 	 

画像ファイルのビットマップ キャッシュが使用しているメモリをすべて解放します。これは、メモリがさまざまなビットマップでフラグメント化されており、現在アクティブなものだけを再ロードしたい場合に便利です。

   

rescaleWorldUnits <factor> [ #selOnly ]   

このメソッドは、3ds Max のワールド再スケール ユーティリティ プラグインと同じように機能します。 <factor> は、オブジェクトをスケールする係数です。 #selOnly が指定されている場合は、選択されているオブジェクトのみがスケールされます。

   

IsNetServer() 

3ds Max がネットワーク レンダリング モードで動作している場合は true 、通常のインタラクティブ モードで動作している場合は false を返します。

   

loadDllsFromDir <directory_path_string> <filename_wildcard_string> 

指定したディレクトリで見つかったすべてのプラグインをロードします。 directory_path_string は、「¥」で区切る必要があります。

LoadDllsFromDir "f:\\maxsdk\\plugin\\" "*.dlc"

   

scanForNewPlugins includeUnknownSuperclasses:<bool> 

新しいプラグイン クラスを検索し、MAXScript にこれらのクラスを公開します。通常は、 loadDllsFromDir() の呼び出しの後に呼び出されます。

includeUnknownSuperclasses: が false (既定値)の場合、未知のスーパークラスを持つクラスは無視されます。

3ds Max 2008 以降 で使用可能です。従来、[AVG] DLX 拡張機能として提供されていた機能です。

   

maxVersion() 

#(3000, 6, 0)のように 3ds Max リリース番号、max API 番号、SDK の改訂番号を示す 3 つの整数で配列を返します。

   

getMaxExtensionVersion()

3ds Max 2016 Extension 1 の新機能 : 3ds Max Extension のバージョンを示す整数を返します。Extension でない場合は、0 を返します。

   

getMAXWindowSize() 

3ds Max のウィンドウ サイズをピクセル単位で返します。

   

getMAXWindowPos() 

デスクトップの左上コーナーを基準にして、3ds Max ウィンドウの位置をピクセル単位で返します。アプリケーションが最大化されている場合は[-4、-4]を返します。

   

swap <destination> <destination> 

引数に 2 つの有効な代入(プロパティ、配列インデックス、変数)を取り、それらの値をスワップします。

例:

swap myMaterial.diffuseMap.map1 myMaterial.diffuseMap.map2
<color>ConvertKelvinToRGB <float>Kelvin <float>scale 

3ds Max 2017 の 新機能 : 最初の引数で指定された温度(ケルビン)に対応する黒体放射カラーを返します。2 番目の引数はカラー出力をスケールします。

値が 6,500 K の場合は、白色[255,255,255]を 1.0 のスケールで出力するか、R、G、B 値がすべて等しいカラーを他の任意のスケールで出力します。

例:

(
 	global Kelvin2RGBExplorerRollout
 	try(destroyDialog Kelvin2RGBExplorerRollout)catch()
 
 	rollout Kelvin2RGBExplorerRollout "Kelvin To RGB Explorer"
 	(
       	local theGradient = bitmap 600 50
       	local theGradient2 = bitmap 600 1
       	local theColorArray = #()
       	local theKelvinArray = #()
 
       	button btn_fromPreset1 "100" width:50 across:8 align:#left
       	button btn_fromPreset2 "1,000" width:50 align:#left offset:[-20,0]
       	button btn_fromPreset3 "1,500" width:50 align:#left offset:[-40,0]
       	button btn_fromPreset4 "2,500" width:50 align:#left offset:[-60,0]
       	button btn_fromPreset5 "5,000" width:50 align:#left offset:[-80,0]
       	button btn_fromPreset6 "6,500" width:50 align:#left offset:[-100,0]
       	button btn_fromPreset7 "10,000" width:50 align:#left offset:[-120,0]
       	spinner spn_fromKelvin "Start Temperature In Kelvin:" range:[0.01,10000000,100] fieldwidth:50 align:#right
       	
       	button btn_toPreset1 "100" width:50 across:8 align:#left
       	button btn_toPreset2 "1,000" width:50 align:#left offset:[-20,0]
       	button btn_toPreset3 "1,500" width:50 align:#left offset:[-40,0]
       	button btn_toPreset4 "2,500" width:50 align:#left offset:[-60,0]
       	button btn_toPreset5 "5,000" width:50 align:#left offset:[-80,0]
       	button btn_toPreset6 "6,500" width:50 align:#left offset:[-100,0]
       	button btn_toPreset7 "10,000" width:50 align:#left offset:[-120,0]
       	spinner spn_toKelvin "End Temperature In Kelvin:" range:[0.01,10000000,10000] fieldwidth:50 align:#right
       	
       	progressbar prg_scale height:15 width:480 align:#left across:2 offset:[0,0] value:100.0 color:green
       	spinner spn_scale "Scale:" range:[0.01,1.0,1.0] scale:0.01 fieldwidth:50 align:#right
       	
       	bitmap bmp_gradient width:600 height:50 align:#center
       	
       	edittext edt_Kvalue "Kelvin:" across:4 fieldwidth:100 align:#left
       	edittext edt_Rvalue "R:"  fieldwidth:120 align:#center
       	edittext edt_Gvalue "G:"  fieldwidth:120 align:#center
       	edittext edt_Bvalue "B:"  fieldwidth:120 align:#right
       	
       	fn convertKelvin2RGB =
       	(
            	theColorArray = #()
            	theKelvinArray = #()
            	local theColorScale = spn_scale.value
            	local currentValue = spn_fromKelvin.value
            	local increment = (spn_toKelvin.value-spn_fromKelvin.value)/599.0
            	for k = 1 to 600 do
            	(
                 	append theColorArray (ConvertKelvinToRGB currentValue theColorScale)
                 	append theKelvinArray currentValue
                 	currentValue+= increment
            	)
            	setPixels theGradient2 [0,0] theColorArray
            	copy theGradient2 theGradient
            	bmp_gradient.bitmap = theGradient
       	)
       	
       	on spn_fromKelvin changed val do
       	(
            	if val > spn_toKelvin.value do spn_toKelvin.value = val
            	convertKelvin2RGB()
       	)
       	on spn_toKelvin changed val do
       	(
            	if val < spn_fromKelvin.value do spn_fromKelvin.value = val
            	convertKelvin2RGB()
       	)
       	
       	on prg_scale clicked val do
       	(
            	if val < 1 do val = 1
            	prg_scale.value = val
            	spn_scale.changed (spn_scale.value = val/100.0)
       	)
 
       	on btn_fromPreset1 pressed do ( spn_fromKelvin.changed (spn_fromKelvin.value = 100))
       	on btn_fromPreset2 pressed do ( spn_fromKelvin.changed (spn_fromKelvin.value = 1000))
       	on btn_fromPreset3 pressed do ( spn_fromKelvin.changed (spn_fromKelvin.value = 1500))
       	on btn_fromPreset4 pressed do ( spn_fromKelvin.changed (spn_fromKelvin.value = 2500))
       	on btn_fromPreset5 pressed do ( spn_fromKelvin.changed (spn_fromKelvin.value = 5000))
       	on btn_fromPreset6 pressed do ( spn_fromKelvin.changed (spn_fromKelvin.value = 6500))
       	on btn_fromPreset7 pressed do ( spn_fromKelvin.changed (spn_fromKelvin.value = 10000))
 
       	on btn_toPreset1 pressed do ( spn_toKelvin.changed (spn_toKelvin.value = 100))
       	on btn_toPreset2 pressed do ( spn_toKelvin.changed (spn_toKelvin.value = 1000))
       	on btn_toPreset3 pressed do ( spn_toKelvin.changed (spn_toKelvin.value = 1500))
       	on btn_toPreset4 pressed do ( spn_toKelvin.changed (spn_toKelvin.value = 2500))
       	on btn_toPreset5 pressed do ( spn_toKelvin.changed (spn_toKelvin.value = 5000))
       	on btn_toPreset6 pressed do ( spn_toKelvin.changed (spn_toKelvin.value = 6500))
       	on btn_toPreset7 pressed do ( spn_toKelvin.changed (spn_toKelvin.value = 10000))
       	
       	on spn_scale changed val do
       	(
            	prg_scale.value = val*100.0
            	convertKelvin2RGB()
       	)
       	
       	on Kelvin2RGBExplorerRollout mousemove pos do
       	(
            	if pos.x >= bmp_gradient.pos.x and pos.x <= bmp_gradient.pos.x+601 and pos.y >= bmp_gradient.pos.y and pos.y <= bmp_gradient.pos.y+50 do
            	(
                 	theSample = pos.x-10
                 	if theSample < 1 do theSample = 1
                 	if theSample > 600 do theSample = 600
                 	edt_Kvalue.text = theKelvinArray[theSample] as string
                 	edt_Rvalue.text = theColorArray[theSample].r as string
                 	edt_Gvalue.text = theColorArray[theSample].g as string
                 	edt_Bvalue.text = theColorArray[theSample].b as string
            	)
       	)
       	
       	on Kelvin2RGBExplorerRollout open do convertKelvin2RGB()
 	)
 	createDialog Kelvin2RGBExplorerRollout 620 160
)

このスクリプトは、次のようなロールアウトを生成します。