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

ファイル プロパティ は、このトピックで説明するメソッドを使用して MAXScript 内でアクセスすることができます。

ファイル プロパティは、3 種類のセットで構成されています。これらのセットは、[メイン メニュー](Main Menu) > [ファイル] (File) > [ファイル プロパティ](File Properties)ダイアログ ボックスの 3 つのページに対応しています。

#summary

この設定には、概要ページのタイトル、サブタイトル、作成者、キーワード、およびコメントのフィールドがあります。

#contents

このセットには、一般やメッシュ総数などの内容ページの管理者、会社名、カテゴリ、およびすべてのヘッダの配列があります。内容ページの内容は、ファイルが保存されたときのみ更新されるので注意してください。シーンを一時保存するには、max hold を使用します。ファイルが保存され、内容ページが更新されます。

#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]

ヘッダは、内容ページに表示される一般、メッシュ総数などの項目です。

例:

たとえば、内容ページからのヘッダの配列は、次のメソッドを使って取得できます。

    fileproperties.getPropertyValue #contents 1

次のように返されます。

    #("General", "Mesh Totals",...)
fileProperties.getItems <header_string>

与えられたヘッダのすべての項目を含む文字列の配列を返します。

例:

たとえば、内容ページからのヘッダの配列は、次のメソッドを使って取得できます。

    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
    )
    )