次のメソッドは、3ds Max シーンのロード、保存、合成、読み込み、書き込みに使用します。
トピック ナビゲーション | |
---|---|
3ds Max の[ロード](Load)および[保存](Save)ダイアログ |
現在開いているシーンのファイル名を定義する文字列値が含まれています。
これは、後述の loadMaxFile() メソッドと saveMaxFile() メソッドを使用してシーンをロードおよび保存するときに自動的に設定されます。
質問と回答の「現在のシーンのファイル名を取得する方法」も参照してください。
現在開いているシーンのディレクトリ パスを定義する文字列値が含まれています。
これは、後述の loadMaxFile() メソッドと saveMaxFile() メソッドを使用してシーンをロードおよび保存するときに自動的に設定されます。
質問と回答の「現在のシーンのファイル名を取得する方法」も参照してください。
次のメソッドは、3ds Max シーンのロード、保存、合成、読み込み、書き込みに使用します。
ファイルが見つかり正常にロードされた場合は true を返し、それ以外の場合には false を返します。
useFileUnits:false の場合、ファイル オブジェクトは現在のシステム単位スケールに再スケールされます。
true の場合、システム単位スケールはファイル単位スケールに変わります。
このオプションは、[システム単位設定](System Units Setup)ダイアログ ボックスの[ファイル内のシステム単位を重視](Respect System Units in Files)オプションの設定に関係なく適用されます。
useFileUnits:true を使用してファイルをロードすると、3dsmax.ini ファイルのシステム単位設定は変更されません。
useFileUnits の既定値は、3ds Max では false 、Autodesk VIZ では true です。
quiet: オプションの詳細は、「抑制モード」を参照してください。
警告 |
---|
loadMaxFile() は、警告表示なしに、現在のシーン コンテンツをファイル コンテンツに置き換えます。 このメソッドを使用すると、「シーンが修正されています。変更を保存しますか?」というメッセージは、 quiet:false を指定した場合でも表示されません。 保存が必要な場合にシーンの現在の内容が失われないようにする方法については、このページの CheckForSave() および saveMaxFile() を参照してください。 |
<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> ] \ [ missingXRefsAction: <actions> ] [ missingXRefsList: <&variable> ] \ [ mergedNodes: <&variable>
引数は、先頭のファイル名以外はすべてオプションです。フラグ引数は、どんな順序で指定してもかまいません。
オプションの名前または文字列の配列は、合成するソース シーン ファイルのオブジェクトを識別します。指定しなければ、すべてのオブジェクトが合成されます。
指定すると、標準の[合成](Merge)ダイアログ ボックスが開きます。
指定すると、合成するときに新規に合成されるオブジェクトが選択されます。
mergeMAXFile() を何度も呼び出し、最後のファイル合成が終了するまで再描画を遅らせたい場合に指定すると、スクリーンの再描画を遅らせることができます。
入ってくるオブジェクトと同じ名前を持つ既存のシーン オブジェクトを削除します。これは、置き換えと同等です。
名前の競合を無視します。合成する場合に名前が重複する場合があります。
現在のシーン中に既に存在する名前を持つ取り込みオブジェクトの名前を自動的に変更します。ダイアログはポップアップされません。3ds Max 2011 以降で使用可能です。
既定値で、重複したマテリアルが見つかるとユーザに確認画面を表示します。
受け取ったマテリアルで重複したものを合成し、名前を変更します。
quiet: オプションの詳細は、「抑制モード」を参照してください。
ファイルが見つかり正常にロードされた場合、 mergeMAXFile は true を返します。引数に拡張子が .DRF のファイルが指定されている場合は、 false を返します。
完全なパス名を指定しない場合、3ds Max シーン ディレクトリでファイルを検索し、次に 3ds Max 実行ディレクトリ、PATH 環境ディレクトリを検索します。
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 |
標準の 3ds Max ファイルの保存ダイアログ ボックスを表示して、ユーザが選択したファイル名を返します。ユーザがキャンセルした場合は undefined を返します。
オプションの filename: 文字列引数を指定し、この引数にファイル名のパターンのみが含まれている場合、パターンに一致するファイルのみが表示されます。 ファイル パスも含まれている場合は、パターンに一致するディレクトリのコンテンツも表示されます。
実際のファイル保存は実行されず、選択したファイルの名前だけが返されます。保存を実行する場合は、この関数の結果('undefined' でないこと)を、引数としてこのページで説明する saveMaxFile() に渡します。
標準の 3ds Max ファイルを開くダイアログ ボックスを表示して、ユーザが選択したファイル名を返します。ユーザがキャンセルした場合は undefined を返します。
オプションの filename: 文字列引数を指定し、この引数にファイル名のパターンのみが含まれている場合、パターンに一致するファイルのみが表示されます。 ファイル パスも含まれている場合は、パターンに一致するディレクトリのコンテンツも表示されます。
オプションの dir: 文字列を指定すると、ダイアログは指定されたパスで開き、ファイル名フィールドは現在のシーン ファイル名( maxFileName グローバル変数にあります)に設定されます。シーンが[タイトルなし(Untitled)]の場合、フィールドは空になります。
文字列の配列を返します。 1 つは与えられた 3ds Max ファイルの各オブジェクト名です。
これによって、他のシーン ファイルのオブジェクトのプレビュー リスト(名前順)を取得する方法を提供します。 mergeMAXFile() 関数を使用して、スクリプト コントロールで合成するオブジェクトのユーザ選択を設定できます。
getMAXFileObjectNames は、引数に拡張子が .DRF のファイルが指定されている場合、空の配列を返します。
quiet: オプションの詳細は、「抑制モード」を参照してください。
getMAXFileObjectNames は 3ds Max 7 以降では、3ds Max の前バージョンのような名前値の配列ではなく、文字列値の配列を返します。 mergeMaxFile で使用されるオブジェクト名では大文字と小文字が区別されますが、名前値ではラップされる文字列の大文字/小文字が必ずしも保持されません。
<bool>saveMaxFile <filename_string> [saveAsVersion:<integer>] [clearNeedSaveFlag:<bool>] [useNewFile:<bool>] [quiet:<bool>]
提供されたファイル名に明示的なディレクトリ パスがない場合、現在の 3ds Max シーン ディレクトリにシーンを保存します。ファイル名の拡張子が指定されていない場合は、「.max」が自動的にファイル名に追加されます。
オプションのキーワードの既定値は true であり、3ds Max 6 よりも前の既存の動作に一致します。ただし、3ds Max 2011 以降で以前のバージョンとして保存する場合、 useNewFile: は false と仮定され、以前のバージョンのファイルが最新のファイルになるのを防ぎます。
3ds Max 2011 以降では、 saveAsPrevious: を使用して有効な以前のバージョンが指定された場合、シーンは指定された以前のバージョンのファイル形式で保存されます。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 を返します。
3ds Max の[編集](Edit) > [一時保存](Hold)の操作に相当します。
3ds Max の[編集](Edit) > [一時保存を呼び出し](Fetch)の操作に相当します。 quiet: オプションの詳細は、「抑制モード」を参照してください。
指定されたファイルが MAX ファイルである場合は、true を返します。
このメソッドは、指定されたファイルの内部構造をテストして、MAX ファイルと互換性があるかどうかを調べます。
MAX ファイルでない場合、または指定したファイルが存在しない場合は、false を返します。
有効な読み込みプラグインを使用してファイルを読み込むことができます。読み込まれるファイル タイプは、 .dxf には DXF、 .3ds には 3DS DOS というようにファイル名の拡張子によって決まります。
#noPrompt フラグは、既定値の設定を使用する場合に、設定 ダイアログ ボックスまたはコントロール ダイアログ ボックスが表示されないようにします。
オプションのキーワード引数 using: を指定した場合は、それぞれの I/O クラスが使用されて読み込みが実行されます。複数のプラグインで同じファイル フォーマット拡張子がサポートされている場合に便利です。3ds Max 8 以降 で使用可能です。
使用可能なすべての読み込みプラグイン クラスを確認するには、 importerPlugin の値の .classes プロパティにアクセスできます。このプロパティでは、インストールされているすべての読み込みプラグインが返されます。
読み込みプラグインと書き出しプラグインの設定への MAXScript アクセスについては、「フィルタのインポート、エクスポート」も参照してください。
有効な書き出しプラグインを使用して、ファイルを書き出すことができます。
書き出されるファイル タイプは、 .dxf には DFX、 .3ds には 3DS DOS というようにファイル名の拡張子によって決まります。
#noPrompt フラグは、既定値の設定を使用する場合に、設定 ダイアログ ボックスまたはコントロール ダイアログ ボックスが表示されないようにします。
selectedOnly キーワード パラメータが true に設定されている場合は、選択したノードだけが書き出されます。既定値は false です。
オプションのキーワード引数 using: を指定した場合は、それぞれの I/O クラスが使用されて書き出しが実行されます。複数のプラグインで同じファイル フォーマット拡張子がサポートされている場合に便利です。3ds Max 8 以降 で使用可能です。
使用可能なすべての書き出しプラグイン クラスの配列を取得するには、 exporterPlugin の値の .classes プロパティにアクセスできます。
読み込みプラグインと書き出しプラグインの設定への MAXScript アクセスについては、「フィルタのインポート、エクスポート」も参照してください。
指定された名前で新規の .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 を返します。
以前にファイルを保存し、それ以降にファイルが変更されている場合、この関数を呼び出すとメッセージ ボックスが開き、ユーザにシーンが変更されていることを通知し、シーンを保存するかどうかを尋ねるプロンプトが表示されます。
この関数は、ユーザが保存をキャンセルした場合は false を返し、そうでない場合は true を返します。関数自体が保存を実行するのではありません。この関数は、シーンが変更されていて、かつその後のアクションに関するユーザの決断が返された場合にプロンプトを表示するだけです。実際の保存やファイルの存在の確認は、MAXScript コードによって実行する必要があります。
「3ds Max の終了およびリセット」 も参照してください。
常に doesFileExist() を使用して、ターゲット ファイルが存在していないことを確認するためのプロンプトを表示します。
この場合の doesFileExist() の使用方法を示す 2 つの例をあげます。