MAXScript BitArray クラスは、3ds Max の SDK BitArray クラスへの直接アクセスを提供します。
SDK BitArray は、3ds Max での選択をビットの文字列として簡潔に暗号化するために使用されます。
リテラル
#{ <selection> } -- these are curly brackets!
ここで、<selection> は、カンマで区切られた次のリストです。
<integer> -- integers must be > 0 <integer> .. <integer>
たとえば、#5, 10..200, 302, 1 では、ビット 5、10、200 ~ 302 が「オンになっている」ことを示します。
3ds Max 内での選択(頂点、面、コントロール頂点)と関連して使用される場合、「オン」ビットは、インデックスを持つ要素やサブオブジェクトが選択されていることを意味します。
プロパティ
<bitarray>.count : Integer
その時点での BitArray に含まれる最大のインデックスを返します。
この値は、特定のインデックスが選択されているかどうかに依存しません。BitArray は、配列のように BitArray 内で使用されるインデックスを収容するために、必要に応じて動的に拡張されます。
.count プロパティへの書き込みによって、指定されたビット数に記憶領域が設定されます。
演算子
<bitarray>[<integer>]
選択されている場合は true、その他の場合は false を返します。
<bitarray>[<integer>] = <boolean>
インデックスで指定されたビットを設定またはクリアします。
<bitarray> + <bitarray>
和(「OR」演算)
<bitarray> * <bitarray>
交差(「AND」 演算)
<bitarray> - <bitarray>
違い
-<bitarray>
BitArray の反転
メソッド
append <bitarray> <integer>
必要に応じて、インデックスに BitArray または可変 BitArray を追加します。
join <bitarray> <bitarray>
2 つの BitArray の和(「OR」演算)です。
findItem <bitarray> <integer>
インデックスを生成します。選択されている場合は <integer> 、それ以外の場合は 0 になります。
deleteItem <bitarray> <integer>
インデックスの選択を解除します。
copy <bitarray>
BitArray の独立したコピーを作成します。
例: |
$foo.verts[#{20..1023}] --selects all vertices between 20 and 1023 |
現在選択されている項目に対応するインデックス番号のシーケンスを生成する for ループを使用することによって BitArray を順序づけることができます。
例: |
for i in #{2..200} do print i -- print the numbers between 2 & 200 |
2 つの BitArray の差を反転することにより、「AND」演算を実行できます。
例: |
a=#{1..5} b=#{3..10} c=-(a-b) -- result in c is #{3..5} |
bitArray から配列へ、および整数配列から bitArrays への強制
<bitArray> as array <integer array> as bitArray
例: |
a=#{1..5,10} b=a as array c=b as bitarray |
配列要素を強制的に整数に置き換えることができない場合、エラーが発生します。 .numberSet および .isEmpty は、 BitArrayValue クラスに追加された読み込み専用プロパティです。
.numberSet
設定されたビット数を返します。
.isEmpty
ビットが設定されていない場合は true を返し、1 つ以上のビットが設定されている場合は false を返します。
例: |
a=#{1..5,10..20} a.numberset --> 16 a.isEmpty --> false a=#{} a.numberset --> 0 a.isEmpty --> true |