次のメソッドは、3ds Max シーンのロード、保存、合成、読み込み、書き込みに使用します。
トピック ナビゲーション | |
---|---|
システム グローバル:
maxFileName
現在開いているシーンのファイル名を定義する文字列値が含まれています。
この変数は読み取り専用です。
これは、後述の loadMaxFile() メソッドと saveMaxFile() メソッドを使用してシーンをロードおよび保存するときに自動的に設定されます。
質問と回答の「現在のシーンのファイル名を取得する方法」も参照してください。
maxFilePath
現在開いているシーンのディレクトリ パスを定義する文字列値が含まれています。
この変数は読み取り専用です。
これは、後述の loadMaxFile() メソッドと saveMaxFile() メソッドを使用してシーンをロードおよび保存するときに自動的に設定されます。
質問と回答の「現在のシーンのファイル名を取得する方法」も参照してください。
メソッド:
次のメソッドは、3ds Max シーンのロード、保存、合成、読み込み、書き込みに使用します。
<boolean>loadMaxFile <filename_string> [useFileUnits:<bool>] [quiet:<bool>] [allowPrompts:<bool>] [missingExtFilesAction: (#logmsg|#logToFile|#abort|<int>)] [missingExtFilesList:<&var array of strings>] [missingDLLsAction: (#logmsg|#logToFile|#abort|<int>)] [missingDLLsList:<&var array of strings>] [missingXRefsAction:(#logmsg|#logToFile|#abort|<int>)] [missingXRefsList:<&var array of strings>]
ファイルが見つかり正常にロードされた場合は true を返し、それ以外の場合には false を返します。
useFileUnits パラメータは、ファイルの単位スケールを採用するのか(true の場合)、それとも現在のシステムの単位スケールを採用するのか(false の場合、既定)を指定します。 このオプションは、[システム単位設定](System Units Setup)ダイアログ ボックスの[ファイル内のシステム単位を重視](Respect System Units in Files)オプションの設定に関係なく適用されます。 useFileUnits:true を使用してファイルをロードすると、3dsmax.ini ファイルのシステム単位設定は変更されません。
quiet: および missing* パラメータの詳細については、「抑制モード」を参照してください。
allowPrompts パラメータは、ファイルのロード処理中にダイアログ ボックスを表示するかどうかを指定します。既定は false です。
警告 |
---|
loadMaxFile() は、警告表示なしに、現在のシーン コンテンツをファイル コンテンツに置き換えます。 このメソッドを使用すると、「シーンが修正されています。変更を保存しますか?」というメッセージは、 quiet:false を指定した場合でも表示されません。 保存が必要な場合にシーンの現在の内容が失われないようにする方法については、このページの CheckForSave() および saveMaxFile() を参照してください。 |
3ds Max は filename_string で指定されたファイルを次の場所で検索します。
<boolean>mergeMAXFile <filename_string> [<name_array>] [#prompt] \ [ [ #select ] #noRedraw ] \ [ #deleteOldDups | #mergeDups | #skipDups | #promptDups | #autoRenameDups ] \ [ #promptMtlDups | #useMergedMtlDups | #useSceneMtlDups | #renameMtlDups ]\ [ #promptReparent | #alwaysReparent | #neverReparent ] \ [ quiet:<bool> ] \ [ missingExtFilesAction: <actions> ] [ missingExtFilesList: <&variable> ] \ [ missingDLLsAction: <actions>] [ missingDLLsList: <&variable>] [ missingXRefsAction: <actions> ] [ missingXRefsList: <&variable> ] \ [ mergedNodes: <&variable>
引数は、先頭のファイル名以外はすべてオプションです。フラグ引数は、どんな順序で指定してもかまいません。
引数については、以下を参照してください。
<filename_string>
合成するシーン ファイルです。指定した <filename_string> が 3ds Max によって検索される場所の詳細については、上記の「シーン ファイル パスの解決」を参照してください。
<name_array>
オプションの名前または文字列の配列は、合成するソース シーン ファイルのオブジェクトを識別します。指定しなければ、すべてのオブジェクトが合成されます。
#prompt
指定すると、標準の[合成](Merge)ダイアログ ボックスが開きます。
#select
指定すると、合成するときに新規に合成されるオブジェクトが選択されます。
#noRedraw
mergeMAXFile() を何度も呼び出し、最後のファイル合成が終了するまで再描画を遅らせたい場合に指定すると、スクリーンの再描画を遅らせることができます。
#deleteOldDups
入ってくるオブジェクトと同じ名前を持つ既存のシーン オブジェクトを削除します。これは、置き換えと同等です。
#mergeDups
名前の競合を無視します。合成する場合に名前が重複する場合があります。
#skipDups
重複した名前のオブジェクトは合成しません。
#promptDups
重複した解像度ダイアログ ボックスを放棄します。
#AutoRenameDups
現在のシーン中に既に存在する名前を持つ取り込みオブジェクトの名前を自動的に変更します。ダイアログはポップアップされません。3ds Max 2011 以降で使用可能です。
#promptMtlDups
既定値で、重複したマテリアルが見つかるとユーザに確認画面を表示します。
#useMergedMtlDups
受け取ったマテリアルを使用して合成します。
#useSceneMtlDups
シーン マテリアルを使用して合成します。
#renameMtlDups
受け取ったマテリアルで重複したものを合成し、名前を変更します。
#promptReparent
既定値で、ユーザに確認画面を表示します。
#alwaysReparent
ユーザへの確認は行わず、常にバインドします。
#neverReparent
ユーザへの確認は行わず、まったくバインドしません。
quiet: および missing* パラメータの詳細については、「抑制モード」を参照してください。
ファイルが見つかり正常にロードされた場合、 mergeMAXFile は true を返します。引数に拡張子が .DRF のファイルが指定されている場合は、 false を返します。
mergedNodes <&variable>
合成に成功した場合は、指定した変数に合成されたノードの配列が格納されます。
<nodes array>getLastMergedNodes()
3ds Max 2017 以降で使用可能: 前回の合成操作で合成されたノードの配列を返します。
現在のシーンで合成操作が実行されていない場合は、空の配列 #()を返します。
例 |
resetMaxFile #noPrompt --reset the scene --> OK getLastMergedNodes() --get the last merged nodes - returns an empty array, because nothing has been merged yet --> #() t = teapot() --create a teapot --> $Teapot:Teapot001 @ [0.000000,0.000000,0.000000] s = sphere pos:[100,0,0] --create a sphere to the right of the teapot --> $Sphere:Sphere001 @ [100.000000,0.000000,0.000000] b = box pos:[-50,0,0] --create a box to the left of the teapot --> $Box:Box001 @ [-50.000000,0.000000,0.000000] theFile = (GetDir #temp + @"\teapotAndSphere.max") --define a temp file to save --> "C:\Users\YOURNAME\AppData\Local\Autodesk\3dsMax\2017 - 64bit\ENU\temp\teapotAndSphere.max" saveNodes #(t,s,b) theFile --save the three objects to the file --> OK resetMaxFile #noPrompt --reset the scene again --> OK mergeMAXFile theFile #("Teapot001") --attempt to merge two teapots --> true m1 = getLastMergedNodes() --check to see what was merged - only one teapot actually exists in the file --> #($Teapot:Teapot001 @ [0.000000,0.000000,0.000000]) mergeMAXFile theFile #mergeDups #autoRenameDups --merge all objects, allowing duplicates to be renamed --> true m2 = getLastMergedNodes() --see what got merged... --> #($Teapot:Teapot002 @ [0.000000,0.000000,0.000000], $Sphere:Sphere001 @ [100.000000,0.000000,0.000000], $Box:Box001 @ [-50.000000,0.000000,0.000000]) move m2 [0,100,0] --move the objects merged in the second attempt 100 units along Y --> OK select m1 --and select the object from the first merge --> OK |
getMAXSaveFileName [filename:<seed_filename_string>]
標準の 3ds Max ファイルの保存ダイアログ ボックスを表示して、ユーザが選択したファイル名を返します。ユーザがキャンセルした場合は undefined を返します。
オプションの filename: 文字列引数を指定し、この引数にファイル名のパターンのみが含まれている場合、パターンに一致するファイルのみが表示されます。 ファイル パスも含まれている場合は、パターンに一致するディレクトリのコンテンツも表示されます。
実際のファイル保存は実行されず、選択したファイルの名前だけが返されます。保存を実行する場合は、この関数の結果('undefined' でないこと)を、引数としてこのページで説明する saveMaxFile() に渡します。
例 |
--Open the dialog at the current path (can be found or set via sysinfo.currentdir): theName = getMAXSaveFileName() --Open the dialog at "c:\temp\" and filter by pattern "test*.max" --The user must click a specific file if the pattern contains wildcards theName = getMAXSaveFileName filename:"c:\\temp\\test*.max" --Open the dialog at "c:\temp\" and set the file name to "test.max" --The user can click the Open button to get the specified file name if it exists, --otherwise a prompt will show up saying the file does not exist... theName = getMAXSaveFileName filename:"c:\\temp\\test.max" --If the result is not undefined, we can actually save the file: if theName != undefined do saveMaxFile theName |
getMAXOpenFileName [filename:<seed_filename_string>] [dir:<seed_directory_string>]
標準の 3ds Max ファイルを開くダイアログ ボックスを表示して、ユーザが選択したファイル名を返します。ユーザがキャンセルした場合は undefined を返します。
オプションの filename: 文字列引数を指定し、この引数にファイル名のパターンのみが含まれている場合、パターンに一致するファイルのみが表示されます。 ファイル パスも含まれている場合は、パターンに一致するディレクトリのコンテンツも表示されます。
オプションの dir: 文字列を指定すると、ダイアログは指定されたパスで開き、ファイル名フィールドは現在のシーン ファイル名( maxFileName グローバル変数にあります)に設定されます。シーンが[タイトルなし(Untitled)]の場合、フィールドは空になります。
例: |
--Open the dialog at the current path (sysinfo.currentdir): theName = getMAXOpenFileName() --Open the dialog at c:\temp and use current file name theName = getMAXOpenFileName dir:"c:\\temp" --Open the dialog at "c:\temp\" and filter by pattern "test*.max" --The user must click a specific file if the pattern contains wildcards theName = getMAXOpenFileName filename:"c:\\temp\\test*.max" --Open the dialog at "c:\temp\" and set the file name to "test.max" --The user can click the Open button to get the specified file name if it exists. theName = getMAXOpenFileName filename:"c:\\temp\\test.max" |
getMAXFileObjectNames <max_filename_string> [quiet:<bool>] \ [missingDLLsAction: (#logmsg|#logToFile|#abort|<int>)] [missingDLLsList:<&var array of strings>]
文字列の配列を返します。 1 つは与えられた 3ds Max ファイルの各オブジェクト名です。 指定した <filename_string> が 3ds Max によって検索される場所の詳細については、上記の「シーン ファイル パスの解決」を参照してください。
これによって、他のシーン ファイルのオブジェクトのプレビュー リスト(名前順)を取得する方法を提供します。 mergeMAXFile() 関数を使用して、スクリプト コントロールで合成するオブジェクトのユーザ選択を設定できます。
例: |
p=[1000,1000,1000] for i = 1 to 5 do box pos:(random p -p) -- create some boxes savemaxfile "mergetest.max" -- save to file for obj in objects do obj.name = "_"+obj.name -- rename the boxes objects.pos += [0,-1000,0] -- move them off to the side fobj_names = getmaxfileobjectnames "mergetest.max" -- get the object names from the file deleteitem fobj_names 3 -- delete the third name from the array mergemaxfile "mergetest.max" fobj_names #select -- merge in the objects and select them selection.count -- should be 4 objects.count -- should be 9 |
getMAXFileObjectNames は、引数に拡張子が .DRF のファイルが指定されている場合、空の配列を返します。
quiet: および missing* パラメータの詳細については、「抑制モード」を参照してください。
getMAXFileObjectNames は 3ds Max 7 以降では、3ds Max の前バージョンのような名前値の配列ではなく、文字列値の配列を返します。 mergeMaxFile で使用されるオブジェクト名では大文字と小文字が区別されますが、名前値ではラップされる文字列の大文字/小文字が必ずしも保持されません。
<bool>saveMaxFile <filename_string> [saveAsVersion:<integer>] [clearNeedSaveFlag:<bool>] [useNewFile:<bool>] [quiet:<bool>]
提供されたファイル名に明示的なディレクトリ パスがない場合、現在の 3ds Max シーン ディレクトリにシーンを保存します。ファイル名の拡張子が指定されていない場合は、「.max」が自動的にファイル名に追加されます。
警告: |
---|
saveMaxFile() では、警告表示なしに同じ名前の既存のファイルを上書きします。 このページの CheckForSave() と doesFileExist() を参照してください。 |
オプションのキーワードの既定値は true であり、3ds Max 6 よりも前の既存の動作に一致します。ただし、3ds Max 2011 以降で以前のバージョンとして保存する場合、 useNewFile: は false と仮定され、以前のバージョンのファイルが最新のファイルになるのを防ぎます。
3ds Max 2011 以降では、 saveAsVersion: を使用して有効な以前のバージョンが指定された場合、シーンは指定された以前のバージョンのファイル形式で保存されます。3ds Max 2011 では、有効な値は 2010 です。3ds Max 2012 では、有効な値は 2010 および 2011 です。その他の値によって、現在のバージョンの形式を使用して保存されることはありません。
clearNeedSaveFlag を false に設定した場合、ファイルは保存されますが、保存が必要であることを示すフラグはクリアされないため、3ds Max は、シーンが変更されて保存が必要であると認識したままです。
useNewFile が false の場合、保存されたファイルが現在のシーン ファイルとして設定されないので、[最近使用したファイルを開く](Most Recently Used)リストに表示されません。これによって、シーンのバックアップファイルは別の名前で保存され、その名前は現在の名前にはならず最新のファイルのリストにも表示されません。
3ds Max 8 においてこのメソッドに追加された quiet: オプションの詳細については、「抑制モード」を参照してください。
3ds Max 8 以降 では、このメソッドは、正常に終了した場合に true、保存がエラーになった場合(既存の読み取り専用ファイルを上書きしようとした場合など)に false を返します。
<bool> archiveMAXFile <filename_string> [quiet:<bool>] [saveAsVersion: <integer>] [missingExtFilesAction: (#logmsg|#logToFile|#abort|<int>)] [missingExtFilesList:<&var array of strings>]
3ds Max 2019.1 Update の新機能: 現在のシーン ファイルおよび関連するすべてのテクスチャ マップを ZIP アーカイブにアーカイブして、指定した文字列をファイル名として付けます
quiet が true の場合は、アセットが見つからないときに[アセット ファイルが見つかりません](Missing Asset Files)ダイアログが表示されません。
saveAsVersion パラメータは、保存したアーカイブに対して互換性のある 3ds Max のバージョンを指定します。指定しない場合は、現在の 3ds Max のバージョンが使用されます。
アセットが見つからない場合の動作は、missingExtFilesAction および missingExtFilesList パラメータによって決まります。 quiet: および missing* パラメータの詳細については、「抑制モード」を参照してください。
holdMaxFile()
3ds Max の[編集](Edit) > [一時保存](Hold)の操作に相当します。
fetchMaxFile [quiet:<boolean>] arc [missingDLLsAction: (#logmsg|#logToFile|#abort|<int>)] [missingDLLsList:<&var array of strings>] [missingXRefsAction:(#logmsg|#logToFile|#abort|<int>)] [missingXRefsList:<&var array of strings>]
3ds Max の[編集](Edit) > [一時保存を呼び出し](Fetch)の操作に相当します。 quiet: および missing* パラメータの詳細については、「抑制モード」を参照してください。
<bool>isMaxFile <filename_string>
指定されたファイルが MAX ファイルである場合は、true を返します。
このメソッドは、指定されたファイルの内部構造をテストして、MAX ファイルと互換性があるかどうかを調べます。
MAX ファイルでない場合、または指定したファイルが存在しない場合は、false を返します。
指定した <filename_string> が 3ds Max によって検索される場所の詳細については、上記の「シーン ファイル パスの解決」を参照してください。
例: |
isMaxFile "$scenes/ca_test1.max" --returns true if file exists isMaxFile "$max/autoback/maxhold.mx" --returns true if file exists isMaxFile "$matlibs/Nature.mat" --returns true if file exists isMaxFile (maxFilePath + maxFileName) --returns true unless the scene is Untitled |
importFile <filename_string> [#noPrompt] [using:<maxclass>]
有効な読み込みプラグインを使用してファイルを読み込むことができます。読み込まれるファイル タイプは、 .dxf には DXF、 .3ds には 3DS DOS というようにファイル名の拡張子によって決まります。
3ds Max では、シーン ファイルをロードする場合と同じ方法で、指定した <filename_string> を検索します。詳細については、上記の「シーン ファイル パスの解決」を参照してください。
#noPrompt フラグは、既定値の設定を使用する場合に、設定 ダイアログ ボックスまたはコントロール ダイアログ ボックスが表示されないようにします。
オプションのキーワード引数 using: を指定した場合は、それぞれの I/O クラスが使用されて読み込みが実行されます。複数のプラグインで同じファイル フォーマット拡張子がサポートされている場合に便利です。3ds Max 8 以降 で使用可能です。
使用可能なすべての読み込みプラグイン クラスを確認するには、 importerPlugin の値の .classes プロパティにアクセスできます。このプロパティでは、インストールされているすべての読み込みプラグインが返されます。
例: |
print importerPlugin.classes |
結果: |
3D_Studio 3D_Studio_Shape Adobe_Illustrator_Shape AutoCADImport FBXIMP DAEIMP STL_Import ATF_Solidworks_importer Revit_importer FileLinkAsDwgImporter ObjImp Alembic_Import VrmlImp ImportTRC XMLImp2 FltImport ATF_ProE_importer ImportHTR InventorImport LandXML___DEM_Model_Import sketchUp ATF_STEP_importer SATImport ATF_IGES_importer ATF_Alias_importer ATF_CATIA_V4_importer ATF_CATIA_V5_importer ATF_UG_NX_importer ATF_JT_importer |
読み込みプラグインと書き出しプラグインの設定への MAXScript アクセスについては、「フィルタのインポート、エクスポート」も参照してください。
exportFile <filename_string> [#noPrompt] [selectedOnly:<boolean>] [using:<maxclass>]
有効な書き出しプラグインを使用して、ファイルを書き出すことができます。
書き出されるファイル タイプは、 .dxf には DFX、 .3ds には 3DS DOS というようにファイル名の拡張子によって決まります。
#noPrompt フラグは、既定値の設定を使用する場合に、設定 ダイアログ ボックスまたはコントロール ダイアログ ボックスが表示されないようにします。
selectedOnly キーワード パラメータが true に設定されている場合は、選択したノードだけが書き出されます。既定値は false です。
オプションのキーワード引数 using: を指定した場合は、それぞれの I/O クラスが使用されて書き出しが実行されます。複数のプラグインで同じファイル フォーマット拡張子がサポートされている場合に便利です。3ds Max 8 以降 で使用可能です。
使用可能なすべての書き出しプラグイン クラスの配列を取得するには、 exporterPlugin の値の .classes プロパティにアクセスできます。
例: |
theClasses =exporterPlugin.classes exportFile (GetDir #scene + "/exportTest" ) using:theClasses[1] |
上の例では、配列内で最初に見つかったプラグインがエクスポートに使用されます。 |
読み込みプラグインと書き出しプラグインの設定への MAXScript アクセスについては、「フィルタのインポート、エクスポート」も参照してください。
<bool>saveNodes <node_collection> <filename_string> [saveAsVersion: <integer>] [quiet:<bool>]
指定された名前で新規の .max シーン ファイルを作成し、このファイルにノード コレクションを保存します。
<node_collection> 引数は、単一のノードまたは集めたノードの配列、ワイルドカード パス名、 selection や lights 、または <node>.children 配列などのビルトイン オブジェクト セットのいずれかです。
ファイル名の拡張子が指定されていない場合は、「.max」が自動的にファイル名に追加されます。
3ds Max 2011以降で使用可能: saveAsVersion: の値が 2010 の場合、得られるファイルは指定したバージョンのファイル形式で保存されます。3ds Max 2010 より前のバージョンはサポートされていません。その他の値が指定されている場合、または何も指定されていない場合は、現在のバージョンのファイル形式が使用されます。
3ds Max 8 においてこのメソッドに追加された quiet: オプションの詳細については、「抑制モード」を参照してください。
3ds Max 8 以降 では、このメソッドは、正常に終了した場合に true、保存がエラーになった場合(既存の読み取り専用ファイルを上書きしようとした場合など)に false を返します。
警告: |
---|
saveNodes() では、警告表示なしに同じ名前の既存のファイルを上書きします。 解決方法については、後述の CheckForSave() および doesFileExist() を参照してください。 |
checkForSave()
以前にファイルを保存し、それ以降にファイルが変更されている場合、この関数を呼び出すとメッセージ ボックスが開き、ユーザにシーンが変更されていることを通知し、シーンを保存するかどうかを尋ねるプロンプトが表示されます。
この関数は、ユーザが保存をキャンセルした場合は false を返し、そうでない場合は true を返します。関数自体が保存を実行するのではありません。この関数は、シーンが変更されていて、かつその後のアクションに関するユーザの決断が返された場合にプロンプトを表示するだけです。実際の保存やファイルの存在の確認は、MAXScript コードによって実行する必要があります。
「3ds Max の終了およびリセット」 も参照してください。
警告: |
saveNodes() および saveMaxFile() では、警告表示なしに同じ名前の既存のファイルを上書きします。 |
例 |
b = box() saveNodes b "foo.max" saveNodes b "foo.max" saveMaxFile "foo.max" --All these calls will overwrite the file "foo.max" --without notice. |
常に doesFileExist() を使用して、ターゲット ファイルが存在していないことを確認するためのプロンプトを表示します。
この場合の doesFileExist() の使用方法を示す 2 つの例をあげます。
スクリプト: |
b = box() -- if filename exists, ask user if ok to overwrite -- function returns true if file was saved, false otherwise fn maybe_saveNodes nodeArray filename = ( if getFilenamePath filename == "" do filename = getdir #scene + "\\" + filename if (not (doesfileexist filename)) or querybox ("filename: "+filename + "\nexists. Overwrite?") then ( saveNodes nodeArray filename true ) else false ) |
スクリプト: |
fn maybe_saveMaxFile filename = ( if getFilenamePath filename == "" do filename = getdir #scene + "\\" + filename if (not (doesfileexist filename)) or querybox ("filename: "+filename + "\nexists. Overwrite?") then ( saveMaxFile filename true ) else false ) |
上記の関数の使用法: |
maybe_saveNodes b "foo.max" maybe_saveNodes b "foo.max" maybe_saveMaxFile "foo.max" |