ファイル プロパティは、このトピックで説明するメソッドを使用して MAXScript 内でアクセスすることができます。
ファイル プロパティは、3 種類のセットで構成されています。これらのセットは、メイン メニューの[ファイル] (File) > [ファイル プロパティ](File Properties)ダイアログ ボックスの 3 つのページに対応しています。
#summary
この設定の[概要] (Summary)ページには、[タイトル] (Title)、[サブタイトル] (Subject)、[作成者] (Author)、[キーワード] (Keywords)、[コメント] (Comments)のフィールドが配置されています。
#contents
このセットには、[管理者] (Manager)、[会社名] (Company)、[カテゴリ] (Category)、および[一般] (General)や[メッシュ総数](Mesh Totals)などの[内容] (Contents)ページのすべてのヘッダの配列が含まれます。[内容] (Contents)ページの内容は、ファイルが保存されたときのみ更新されるので注意してください。シーンを一時保存するには、max hold
を使用します。ファイルが保存され、[内容] (Contents)ページの内容が更新されます。
#custom
このセットには、[カスタム] (Custom)ページのすべてのフィールドが含まれます。
次のメソッドは、上記のセットにアクセスするために使用されます。<set_name>
は上記のいずれかの値です。
fileProperties.getNumProperties <set_name>
与えられたセット内のプロパティの数を返します。
例:
numProps=fileProperties.getNumProperties #summary
fileProperties.getPropertyName <set_name> <index>
与えられたインデックスのプロパティ名を文字列として返します。インデックスの基数は 1 です。
例:
nameProp=fileProperties.getPropertyName #summary 1
fileProperties.getPropertyValue <set_name> <index>
与えられたインデックスのプロパティ値を返します。値のタイプには、3ds Max の[ファイル プロパティ](File Properties)ダイアログ ボックスで現在サポートされている以下のいずれかを使用できます。角カッコ内の値はそれぞれ MAXScript の値の型に相当します。
プロパティ値の型:
Text [String]
Date [String] - contains the date eg:"03/23/99"
Number [Integer or Float based on actual value]
Yes or No [Boolean]
Headers [Array of strings]
ヘッダは、[一般] (General)や[メッシュ総数](Mesh Totals)などの項目で、[内容] (Contents)ページに表示されます。
例:
たとえば、[内容] (Contents)ページのヘッダの配列は、次のメソッドを使って取得できます。
fileproperties.getPropertyValue #contents 1
次のように返されます。
#("General", "Mesh Totals",...)
fileProperties.getItems <header_string>
与えられたヘッダのすべての項目を含む文字列の配列を返します。
例:
たとえば、[内容] (Contents)ページのヘッダの配列は、次のメソッドを使って取得できます。
fileProperties.getItems "Mesh Totals"
これは、次の値を返します。
#("Vertices: 488", "Faces: 968")
fileProperties.findProperty <set_name> <prop_name_string>
セット名とプロパティ名の文字列を渡し、プロパティのインデックスが見つかれば、そのインデックスを返して、見つからなければ 0 を返します。
例:
fileProperties.findProperty #custom "BoolVal"
fileProperties.addProperty <set_name> <prop_name_string> <prop_value> [#date]
指定のセットに新しいプロパティを追加し、そのプロパティの名前と値を追加します。
このプロパティ値は、前述した型のうち配列のように内容ページに追加できない型を除くすべての型を使用できます。
日付を含む文字列を渡す場合は、オプションの #date
引数を渡し、日付の値として追加する必要があります。
既存のプロパティ名に追加すると、既存の値が置き換えられて、セッター関数として動作します。fileProperties.setProperty()
メソッドがないのはそのためです。
例:
fileProperties.addProperty #custom "DateVal" "03/23/99" #date
これは、カスタム プロパティに
DateVal
という名前の日付プロパティを追加します。
fileProperties.deleteProperty <set_name> <prop_name_string>
これは、指定されたセットの <prop_name_string>
で示されるプロパティを削除します。
次の一覧は、現在のシーンの階層に含まれるすべてのファイル プロパティを出力する例です。
例:
-- Add some properties fileProperties.addProperty #summary "Title" "H2G2" fileProperties.addProperty #summary "Subject" "Earth" fileProperties.addProperty #summary "Author" "Ford Prefect" fileProperties.addProperty #contents "Manager" "Zarniwoop" fileProperties.addProperty #contents "Company" "Megadodo Publishing" fileProperties.addProperty #contents "Category" "Mostly Harmless" fileProperties.addProperty #custom "IntVal" 42 fileProperties.addProperty #custom "FloatVal" 1.234 fileProperties.addProperty #custom "BoolVal" true fileProperties.addProperty #custom "DateVal" "05/11/2001" #date -- -- Perform a scene hold to update the Contents set. max hold -- -- Get all properties pages = #( #summary, #contents, #custom) for pg in pages do ( format "--- % ---\n" (pg as string) for i=1 to (fileProperties.getNumProperties pg) do ( local pname = (fileProperties.getPropertyName pg i) local pval = (fileProperties.getPropertyValue pg i) format "\t% : " pname if (pname =="Headers") then ( format "\n" for hdr in pval do ( format "\t\t%\n" hdr local docs = fileProperties.getItems hdr if docs != undefined then for d in docs do format "\t\t\t%\n"d ) ) else format " %\n" pval ) )