MAX シーン ファイルのプロパティ

ファイル プロパティは、このトピックで説明するメソッドを使用して 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
   )
   )