## MQDocument class

オブジェクトや材質を管理します。

### Property

get | set | Type | Name | Description
--- | --- | --- | --- | ---
o | x | int | numObject | オブジェクトの数
o | x | int | numMaterial | 材質の数
o | x | list<MQObject> | object | オブジェクトのリスト
o | x | list<MQMaterial> | material | 材質のリスト
o | o | int | currentObjectIndex | カレントオブジェクトのインデックス
o | o | int | currentMaterialIndex | カレント材質のインデックス
o | x | string | filename | ファイル名
o | x | MQEnvMap | envmap | 環境マップ
o | x | int | numMaxUVChannel | オブジェクト当たりのUVチャンネルの最大数

### Method

Member | Description
--- | ---
getScene | ドキュメント内のシーンを取得します。
addObject | ドキュメントにオブジェクトを追加します。
insertObject | ドキュメントにオブジェクトを挿入します。
removeObject | ドキュメント中からオブジェクトを外します。オブジェクト自体は存続します。
deleteObject | ドキュメント中のオブジェクトを削除します。
getObjectIndex | オブジェクトのインデックスを取得します。
getParentObject | 指定したオブジェクトの親オブジェクトを取得します。
getChildObjectCount | 指定したオブジェクトの直下にある子オブジェクトの数を取得します。
getChildObject | 指定したオブジェクトの直下にある子オブジェクトの数を取得します。
isAncestorObject | ancestorがdescendantの先祖かどうかを調べます。
getUnusedObjectName | 使用されていないオブジェクトの名前を取得します。
getGlobalMatrix | 指定したオブジェクトのグローバル座標変換行列を取得します。
getGlobalInverseMatrix | 指定したオブジェクトのグローバル座標変換逆行列を取得します。
addMaterial | ドキュメント中にマテリアルを追加します。
deleteMaterial | ドキュメント内のマテリアルを削除します。
getUnusedMaterialName | 使用されていないマテリアルの名前を取得します。
clearSelect | すべての頂点・辺・面の選択状態を解除します。
addSelectVertex | 指定した頂点を選択します。
deleteSelectVertex | 指定した頂点の選択を解除します。
isSelectVertex | 指定した頂点が選択されているかを調べます。
addSelectLine | 指定した辺を選択します。
deleteSelectLine | 指定した辺の選択を解除します。
isSelectLine | 指定した辺が選択されているかを調べます。
addSelectFace | 指定した面を選択します。
deleteSelectFace | 指定した面の選択を解除します。
isSelectFace | 指定した面が選択されているかを調べます。
addSelectUVVertex | 指定したUV頂点を選択します。
deleteSelectUVVertex | 指定したUV頂点の選択を解除します。
isSelectUVVertex | 指定したUV頂点が選択されているかを調べます。
createObjectUserData | オブジェクト用のユーザーデータのIDを生成します。
deleteObjectUserData | オブジェクト用のユーザーデータのIDを削除します。
findObjectUserData | 作成済みのオブジェクト用のユーザーデータのIDを検索します。
createVertexUserData | 頂点用のユーザーデータのIDを生成します。
deleteVertexUserData | 頂点用のユーザーデータのIDを削除します。
findVertexUserData | 作成済みの頂点用のユーザーデータのIDを検索します。
createFaceUserData | 面用のユーザーデータのIDを生成します。
deleteFaceUserData | 面用のユーザーデータのIDを削除します。
findFaceUserData | 作成済みの面用のユーザーデータのIDを検索します。
createMaterialUserData | 材質用のユーザーデータのIDを生成します。
deleteMaterialUserData | 材質用のユーザーデータのIDを削除します。
findMaterialUserData | 作成済みの材質用のユーザーデータのIDを検索します。
getUVChannelID | 指定した名前に対応するUVチャンネルIDを生成・取得します。
getUVChannelName | UVチャンネルの名前を取得します。
compact | ドキュメント中の配列に存在するNullを切り詰めます。
save | ファイルへ保存します。
undo | アンドゥを実行します。
redo | リドゥを実行します。
clearUndoBuffer | アンドゥバッファを消去します。

getScene(index)
ドキュメント内のシーンを取得します。
  引数：
  int | index | - | シーンのインデックス
  戻り値：
  MQScene | - | シーン

addObject(obj[, parent])
ドキュメントにオブジェクトを追加します。
  引数：
  MQObject | obj | - | オブジェクト
  MQObject | parent | - | 親オブジェクト 省略した場合は直下に追加されます。
  戻り値：
  int | - | 登録されたオブジェクトのインデックス
注意点： オブジェクトを挿入した場合、他のオブジェクトのインデックスが変更されます。

insertObject(obj, brother)
ドキュメントにオブジェクトを挿入します。
  引数：
  MQObject | obj | - | オブジェクト
  MQObject | brother | - | 兄弟オブジェクト
  戻り値：
  int | - | 登録されたオブジェクトのインデックス
注意点： parentを指定して階層化されたオブジェクトを追加した場合、他のオブジェクトのインデックスが変更されます。

removeObject(object)
ドキュメント中からオブジェクトを外します。オブジェクト自体は存続します。
  引数：
  MQObject | object | - | オブジェクト
注意点： 取り外し後のobject[index]はNoneを返します。

deleteObject(index)
ドキュメント中のオブジェクトを削除します。
  引数：
  int | index | - | オブジェクトのインデックス
注意点： 削除後のobject[index]はNoneを返します。

getObjectIndex(obj)
オブジェクトのインデックスを取得します。
  引数：
  MQObject | obj | - | オブジェクト
  戻り値：
  int | - | オブジェクトのインデックス [-1] ドキュメントに登録されていないオブジェクト

getParentObject(obj)
指定したオブジェクトの親オブジェクトを取得します。
  引数：
  MQObject | obj | - | 子オブジェクト
  戻り値：
  MQObject | - | 親オブジェクト [None] オブジェクトがルート直下にある場合

getChildObjectCount(obj)
指定したオブジェクトの直下にある子オブジェクトの数を取得します。
  引数：
  MQObject | obj | - | 親オブジェクト
  戻り値：
  int | - | 子オブジェクトの数

getChildObject(obj, index)
指定したオブジェクトの直下にある子オブジェクトの数を取得します。
  引数：
  MQObject | obj | - | 親オブジェクト
  int | index | - | 子オブジェクトのインデックス
  戻り値：
  MQObject | - | 子オブジェクト

isAncestorObject(ancestor, descendant)
ancestorがdescendantの先祖かどうかを調べます。
  引数：
  MQObject | ancestor | - | 先祖オブジェクト
  MQObject | descendant | - | 孫オブジェクト
  戻り値：
  int | - | 関係 [0] 直系の先祖・子孫関係にならない [1] 直系の先祖・子孫関係である

getUnusedObjectName([base_name])
使用されていないオブジェクトの名前を取得します。
  引数：
  string | base_name | - | ベースの名前
  戻り値：
  string | - | 名前

getGlobalMatrix(obj)
指定したオブジェクトのグローバル座標変換行列を取得します。
  引数：
  MQObject | obj | - | オブジェクト
  戻り値：
  MQMatrix | - | グローバル行列

getGlobalInverseMatrix(obj)
指定したオブジェクトのグローバル座標変換逆行列を取得します。
  引数：
  MQObject | obj | - | オブジェクト
  戻り値：
  MQMatrix | - | グローバル逆行列

addMaterial(mat)
ドキュメント中にマテリアルを追加します。
  引数：
  MQMaterial | mat | - | マテリアル
  戻り値：
  int | - | 登録されたマテリアルのインデックス

deleteMaterial(index)
ドキュメント内のマテリアルを削除します。
  引数：
  int | index | - | マテリアルのインデックス
注意点： 削除後のmaterial[index]はNoneを返します。

getUnusedMaterialName([base_name])
使用されていないマテリアルの名前を取得します。
  引数：
  string | base_name | - | ベースの名前
  戻り値：
  string | - | 名前

clearSelect
すべての頂点・辺・面の選択状態を解除します。

addSelectVertex(obj_index, vert_index)
指定した頂点を選択します。
  引数：
  int | obj_index | - | オブジェクトのインデックス
  int | vert_index | - | 頂点のインデックス

deleteSelectVertex(obj_index, vert_index)
指定した頂点の選択を解除します。
  引数：
  int | obj_index | - | オブジェクトのインデックス
  int | vert_index | - | 頂点のインデックス

isSelectVertex(obj_index, vert_index)
指定した頂点が選択されているかを調べます。
  引数：
  int | obj_index | - | オブジェクトのインデックス
  int | vert_index | - | 頂点のインデックス
  戻り値：
  int | - | 選択状態 [0] 選択されていない [1] 選択されている

addSelectLine(obj_index, face_index, line_index)
指定した辺を選択します。
  引数：
  int | obj_index | - | オブジェクトのインデックス
  int | face_index | - | 面のインデックス
  int | line_index | - | 辺のインデックス

deleteSelectLine(obj_index, face_index, line_index)
指定した辺の選択を解除します。
  引数：
  int | obj_index | - | オブジェクトのインデックス
  int | face_index | - | 面のインデックス
  int | line_index | - | 辺のインデックス

isSelectLine(obj_index, face_index, line_index)
指定した辺が選択されているかを調べます。
  引数：
  int | obj_index | - | オブジェクトのインデックス
  int | face_index | - | 面のインデックス
  int | line_index | - | 辺のインデックス
  戻り値：
  int | - | 選択状態 [0] 選択されていない [1] 選択されている

addSelectFace(obj_index, face_index)
指定した面を選択します。
  引数：
  int | obj_index | - | オブジェクトのインデックス
  int | face_index | - | 面のインデックス

deleteSelectFace(obj_index, face_index)
指定した面の選択を解除します。
  引数：
  int | obj_index | - | オブジェクトのインデックス
  int | face_index | - | 面のインデックス

isSelectFace(obj_index, face_index)
指定した面が選択されているかを調べます。
  引数：
  int | obj_index | - | オブジェクトのインデックス
  int | face_index | - | 面のインデックス
  戻り値：
  int | - | 選択状態 [0] 選択されていない [1] 選択されている

addSelectUVVertex(obj_index, face_index, apex_index)
指定したUV頂点を選択します。
  引数：
  int | obj_index | - | オブジェクトのインデックス
  int | face_index | - | 面のインデックス
  int | apex_index | - | 面内頂点のインデックス

deleteSelectUVVertex(obj_index, face_index, apex_index)
指定したUV頂点の選択を解除します。
  引数：
  int | obj_index | - | オブジェクトのインデックス
  int | face_index | - | 面のインデックス
  int | apex_index | - | 面内頂点のインデックス

isSelectUVVertex(obj_index, face_index, apex_index)
指定したUV頂点が選択されているかを調べます。
  引数：
  int | obj_index | - | オブジェクトのインデックス
  int | face_index | - | 面のインデックス
  int | apex_index | - | 面内頂点のインデックス
  戻り値：
  int | - | 選択状態 [0] 選択されていない [1] 選択されている

createObjectUserData(productID, pluginID, identifier, bytes_per_object)
オブジェクト用のユーザーデータのIDを生成します。
  引数：
  long | productID | - | プラグインの制作者ID
  long | pluginID | - | プラグインのID
  string | identifier | - | 識別用の任意文字列（15文字まで）
  int | bytes_per_object | - | オブジェクトごとに割り当てるデータのバイト数（65535バイト以内）
  戻り値：
  int | - | オブジェクトユーザーデータID [0] 失敗
注意点： 既に作成されているユーザーデータと同じ productID、pluginID、identifier を指定した場合、ユーザーデータは新規作成されず、既存のユーザーデータのIDが返されます。複数のユーザーデータを扱うには異なる identifier を指定してください。

deleteObjectUserData(userdata_id)
オブジェクト用のユーザーデータのIDを削除します。
  引数：
  long | userdata_id | - | オブジェクトユーザーデータID

findObjectUserData(productID, pluginID, identifier)
作成済みのオブジェクト用のユーザーデータのIDを検索します。
  引数：
  long | productID | - | プラグインの制作者ID
  long | pluginID | - | プラグインのID
  string | identifier | - | 識別用の任意文字列（15文字まで）
  戻り値：
  int | - | オブジェクトユーザーデータID [0] 取得失敗

createVertexUserData(productID, pluginID, identifier, bytes_per_vertex)
頂点用のユーザーデータのIDを生成します。
  引数：
  long | productID | - | プラグインの制作者ID
  long | pluginID | - | プラグインのID
  string | identifier | - | 識別用の任意文字列（15文字まで）
  int | bytes_per_vertex | - | 頂点ごとに割り当てるデータのバイト数（65535バイト以内）
  戻り値：
  int | - | 頂点ユーザーデータID [0] 失敗
注意点： 既に作成されているユーザーデータと同じ productID、pluginID、identifier を指定した場合、ユーザーデータは新規作成されず、既存のユーザーデータのIDが返されます。複数のユーザーデータを扱うには異なる identifier を指定してください。

deleteVertexUserData(userdata_id)
頂点用のユーザーデータのIDを削除します。
  引数：
  long | userdata_id | - | 頂点ユーザーデータID

findVertexUserData(productID, pluginID, identifier)
作成済みの頂点用のユーザーデータのIDを検索します。
  引数：
  long | productID | - | プラグインの制作者ID
  long | pluginID | - | プラグインのID
  string | identifier | - | 識別用の任意文字列（15文字まで）
  戻り値：
  int | - | 頂点ユーザーデータID [0] 取得失敗

createFaceUserData(productID, pluginID, identifier, bytes_per_face)
面用のユーザーデータのIDを生成します。
  引数：
  long | productID | - | プラグインの制作者ID
  long | pluginID | - | プラグインのID
  string | identifier | - | 識別用の任意文字列（15文字まで）
  int | bytes_per_face | - | 面ごとに割り当てるデータのバイト数（65535バイト以内）
  戻り値：
  int | - | 面ユーザーデータID [0] 失敗
注意点： 既に作成されているユーザーデータと同じ productID、pluginID、identifier を指定した場合、ユーザーデータは新規作成されず、既存のユーザーデータのIDが返されます。複数のユーザーデータを扱うには異なる identifier を指定してください。

deleteFaceUserData(userdata_id)
面用のユーザーデータのIDを削除します。
  引数：
  long | userdata_id | - | 面ユーザーデータID

findFaceUserData(productID, pluginID, identifier)
作成済みの面用のユーザーデータのIDを検索します。
  引数：
  long | productID | - | プラグインの制作者ID
  long | pluginID | - | プラグインのID
  string | identifier | - | 識別用の任意文字列（15文字まで）
  戻り値：
  int | - | 面ユーザーデータID [0] 取得失敗

createMaterialUserData(productID, pluginID, identifier, bytes_per_material)
材質用のユーザーデータのIDを生成します。
  引数：
  long | productID | - | プラグインの制作者ID
  long | pluginID | - | プラグインのID
  string | identifier | - | 識別用の任意文字列（15文字まで）
  int | bytes_per_material | - | 材質ごとに割り当てるデータのバイト数（65535バイト以内）
  戻り値：
  int | - | 材質ユーザーデータID [0] 失敗
注意点： 既に作成されているユーザーデータと同じ productID、pluginID、identifier を指定した場合、ユーザーデータは新規作成されず、既存のユーザーデータのIDが返されます。複数のユーザーデータを扱うには異なる identifier を指定してください。

deleteMaterialUserData(userdata_id)
材質用のユーザーデータのIDを削除します。
  引数：
  long | userdata_id | - | 材質ユーザーデータID

findMaterialUserData(productID, pluginID, identifier)
作成済みの材質用のユーザーデータのIDを検索します。
  引数：
  long | productID | - | プラグインの制作者ID
  long | pluginID | - | プラグインのID
  string | identifier | - | 識別用の任意文字列（15文字まで）
  戻り値：
  int | - | 材質ユーザーデータID [0] 取得失敗

getUVChannelID(name)
指定した名前に対応するUVチャンネルIDを生成・取得します。
  引数：
  string | name | - | UVチャンネル名
  戻り値：
  int | - | UVチャンネルID
注意点： 存在しない名前を指定した場合、新しいUVチャンネルIDが生成されます。

getUVChannelName(channel)
UVチャンネルの名前を取得します。
  引数：
  int | channel | - | UVチャンネルID
  戻り値：
  string | - | UVチャンネル名
注意点： 存在しないIDまたは0を指定した場合、空文字が返ります。

compact
ドキュメント中の配列に存在するNullを切り詰めます。

save(filename[, productID, pluginID, index])
ファイルへ保存します。
  引数：
  string | filename | - | ファイル名
  long | productID | - | プラグインの制作者ID
  long | pluginID | - | プラグインのID
  int | index | - | プラグイン内の拡張子のインデックス
  戻り値：
  int | - | 結果 [0] 失敗 [1] 成功

undo
アンドゥを実行します。
  戻り値：
  int | - | 結果 [0] 失敗 [1] 成功

redo
リドゥを実行します。
  戻り値：
  int | - | 結果 [0] 失敗 [1] 成功

clearUndoBuffer
アンドゥバッファを消去します。