2012年3月20日火曜日

MAXScript 配列とビット配列


-- .NETオブジェクトの ArrayList を使用するテスト
fn TestArray1 = (
 -- .NET のArrayListオブジェクトを取得
 arrayList = dotNetObject "System.Collections.ArrayList"
 
 -- ArrayListに要素を追加
 arrayList.Add("A")
 arrayList.Add("BC")
 arrayList.Add("D")
 
 -- 配列の要素数を出力
 format "arrayList.Count = %\n" arrayList.Count
 
-- format "%\n" arrayList[1] -- ERROR
 
 str = arrayList.ToString()
 format "str = %\n" str
 
 item1 = arrayList.Item(1)
 format "%\n" item1
 
 for i = 0 to arrayList.Count - 1 do (
  --  ↓ ERROR発生
--  format "arrayList[%] = %\n" i arrayList[i] -- ERROR
  -- 指定したインデックスの要素を取得
  item = arrayList.Item(i)
  format "arrayList[%] = %\n" i item
 )

-- arrayList.Item(1) = "bc"
 
 item1 = arrayList.Item(1)
 format "item1 = %\n" item1

 for i = 0 to arrayList.Count - 1 do (
  --  ↓ get_Item()が出力される
  format "arrayList[%] = %\n" i arrayList.Item(i)
 )
)

-- 配列とビット配列のテスト
fn TestArray2 = (
 -- 空の配列を作成
 a = #()

 -- 配列に値を追加
 append a 1
 append a 2

 format "a = %\n" a

 -- 配列の要素を削除
 deleteItem a 2
 --deleteItem a 1

 format "a = % a.count = %\n" a a.count

 -- 空のビット配列を作成
 b0 = #{}
 b1 = #{}

 --b0[0] = true -- ERROR インデックスは1から開始
 b0[1] = false
 b0[20] = true
 b0[32] = true
 
 b1[8] = true

 format "b0 = % b0.count = %\n" b0 b0.count
 format "b1 = % b1.count = %\n" b1 b1.count
 
 b2 = b0 + b1 -- OR演算
 b3 = b0 * b1 -- AND演算
 
 format "b0 + b1 = %\n" b2
 format "b0 * b1 = %\n" b3
 
 b4 = -b1  -- ビットの反転
 format "-b1 = %\n" b4
 
 b1[20] = true
 b5 = b0 - b1 -- 差
 format "b0 - b1 = %\n" b5
 
 b6 = #{1..7, 16}
 format "b6 = % b6.numberSet = %\n" b6 b6.numberSet
)

TestArray2()

0 件のコメント:

コメントを投稿