UserDataBlob.ByteArray operator

導入

v8.0 (2010)

詳細

UserDataBlob 上のバイナリユーザデータを符号なし整数の SafeArrayとして設定したり、戻したりします。このプロパティの操作に適した言語は Python です。

このデータは内部でコピーされ、シーンの一部として保存されます。ユーザデータのストラクチャのサイズに制限はありません。内部的には、UserDataBlob.ValueUserDataBlob.Array32、および ByteArray プロパティは同じデータを参照します。ただし、わかりやすいように、プラグインの全域でいずれか1 つを使用するようにします。

UserDataBlob.Array32プロパティは ByteArray プロパティの最適化です。また、これらの 2 つのプロパティの操作に適した言語は Python です。

戻り値は、指定されたスクリプト言語に対して予想外なものとして表示されることがあります。最終的な表示にかかわらず、戻されたコンテナには保存されたバイトごとに1 つのエレメントが含まれ、値は 0~255の範囲になります。

警告:明確にするために、ByteArray プロパティは SafeArrayオブジェクトのみを受け入れ、それ以外のデータが指定された場合は失敗するようになっています。Python の場合、推奨されるデータ構造は array.array('B')です。JScript の場合、ネイティブ配列が受け入れられます。PythonおよびJScript の配列は、内部でSafeArrayオブジェクトに変換されます。また、安全配列の各エレメントは内部でバイトに変換されます。これらの変換が不可能な場合は、プロパティの設定は失敗し、データは変更されないまま残ります。

注:データを適切に保持するために、符号なしバイト値(0~-255 の範囲)の安全配列を設定するようにしてください。

Python の例

# Setting the data using UserDataBlob.ByteArray
#
import array
Application.NewScene("", False)
n = Application.GetPrim("Null", "", "", "")
Application.CreateModel("", "", "", "")
blob = n.AddProperty("UserDataBlob", False, "Bytes");
# Create an array of bytes and set it as the blob data
#
WriteArray = array.array('B', [1,3,5,7]);
blob.ByteArray = WriteArray;
# Retrieve the data. In Python, the data comes back as a tuple
#
BlobTuple = blob.ByteArray;
# Convert it back to an array
#
ReadArray = array.array('B');
ReadArray.fromlist(list(BlobTuple));
Application.LogMessage("ReadArray  = " + str(ReadArray));
# Expected results:
# INFO : ReadArray  = array('B', [1, 3, 5, 7])

関連項目

UserDataBlob.Array32 UserDataBlob.Value UserDataItem.Value CustomProperty.BinaryData CustomProperty.AddParameter