MQDocumentクラス

 MQDocumentクラスは、オブジェクトや材質などのデータを管理するクラスです。

オブジェクト
GetObjectCount オブジェクトの数を取得します
GetObject オブジェクトクラスへのポインタを取得します
GetCurrentObjectIndex カレントオブジェクトのインデックスを取得します
AddObject オブジェクトクラスをドキュメントに登録します
InsertObject オブジェクトを指定してオブジェクトの後ろに登録します。
DeleteObject オブジェクトを外し、オブジェクトクラスを消滅させます
GetObjectIndex オブジェクトのインデックスを取得します
GetParentObject 指定したオブジェクトの親オブジェクトを取得します
GetChildObjectCount オブジェクトに属する子オブジェクトの数を取得します
GetChildObject オブジェクトの子オブジェクトを取得します
GetGlobalMatrix オブジェクトのグローバル座標変換行列を取得します
GetGlobalInverseMatrix オブジェクトのグローバル座標逆変換行列を取得します
マテリアル
GetMaterialCount マテリアルの数を取得します
GetMaterial マテリアルクラスへのポインタを取得します
GetCurrentMaterialIndex カレントマテリアルのインデックスを取得します
SetCurrentMaterialIndex カレントマテリアルをインデックス指定します
AddMaterial マテリアルクラスをドキュメントに登録します
DeleteMaterial ドキュメントからマテリアルを外し、マテリアルクラスを消滅させます
メモリ
Compact ドキュメント中の配列に存在するNULLを切り詰めます
選択
ClearSelect ドキュメント中の指定した要素の選択をすべて解除します
AddSelectVertex 頂点を選択します
DeleteSelectVertex 頂点の選択を解除します
IsSelectVertex 頂点が選択されているかどうかをチェックします
AddSelectLine ラインを選択します
DeleteSelectLine ラインの選択を解除します
IsSelectLine ラインが選択されているかどうかをチェックします
AddSelectFace 面を選択します
DeleteSelectFace 面の選択を解除します
IsSelectFace 面が選択されているかどうかをチェックします
AddSelectUVVertex 頂点をUV選択します
DeleteSelectUVVertex 頂点のUV選択を解除します
IsSelectUVVertex 頂点がUV選択されているかどうかをチェックします
マッピング
FindMappingFile ファイル名を絶対パスに変換します
シーン
GetScene シーンを取得します

int MQDocument::GetObjectCount(void);

戻り値
オブジェクトの配列要素数

 ドキュメント中のオブジェクトの数を取得します。
 実際に存在するオブジェクト数ではなく配列要素の大きさが返されるので、 MQDocument::DeleteObject() によりNULLになったものも数として入れられます。正確な数を得るには MQDocument::GetObject() によりNULL以外のものを数える必要があります。


MQObject MQDocument::GetObject(int index);

index
オブジェクトのインデックス
戻り値
オブジェクトクラス

 オブジェクトクラスへのポインタを取得します。
 指定したインデックスにオブジェクトが存在しない場合はNULLが返されます。


int MQDocument::GetCurrentObjectIndex(void);

戻り値
カレントオブジェクトのインデックス

カレントオブジェクトのインデックスを取得します。


void MQDocument::SetCurrentObjectIndex(int index);

index
オブジェクトのインデックス

 カレントオブジェクトをインデックス指定します。


int MQDocument::AddObject(MQObject obj);

obj
追加するオブジェクトクラス
戻り値
追加されたオブジェクトのインデックス

 オブジェクトクラスをドキュメントに登録します。
 objそのものが参照されるので、ドキュメントに追加されたオブジェクトを MQObject::DeleteThis() で消滅させてはいけません。


int MQDocument::InsertObject(MQObject obj, MQObject before);

obj
追加するオブジェクトクラス
before
このオブジェクトの後ろに追加する(NULLの場合は先頭)
戻り値
追加されたオブジェクトのインデックス

(new in Rev2.41)

オブジェクトクラスをドキュメント内の指定したオブジェクトの後ろのインデックスに登録します。

beforeがNULLの場合、リストの先頭に登録されます。

オブジェクトの挿入により、リストの後ろにあるオブジェクトのインデックスは変更されます。

objそのものが参照されるので、ドキュメントに追加されたオブジェクトを MQObject::DeleteThis() で消滅させてはいけません。


void MQDocument::DeleteObject(int index);

index
削除するオブジェクトのインデックス

ドキュメントからオブジェクトを外し、オブジェクトクラスを消滅させます。

削除したインデックスに対して MQDocument::GetObject() はNULLを返すようになります。


int MQDocument::GetObjectIndex(MQObject obj);

obj
オブジェクトクラス
戻り値
オブジェクトのインデックス

ドキュメント中のオブジェクトのインデックスを取得します。

指定したオブジェクトがドキュメント中に存在しない場合は-1が返されます。


MQObject MQDocument::GetParentObject(MQObject obj);

obj
子オブジェクトクラス
戻り値
親オブジェクトクラス

(new in Rev2.40)

ドキュメント中の指定したオブジェクトの親オブジェクトを取得します。

指定したオブジェクトがルートにある場合はNULLが返されます。


int MQDocument::GetChildObjectCount(MQObject obj);

obj
親オブジェクトクラス
戻り値
子オブジェクトの数

(new in Rev2.40)

ドキュメント中の指定したオブジェクトに属する子オブジェクトの数を取得します。

子オブジェクトは直下にあるもののみがカウントされ、孫以下はカウントされません。


MQObject MQDocument::GetChildObject(MQObject obj, int index);

obj
親オブジェクトクラス
index
子オブジェクトのインデックス
戻り値
子オブジェクト

(new in Rev2.40)

ドキュメント中の指定したオブジェクトの子オブジェクトを取得します。

インデックスは MQDocument::GetChildObjectCount() で返される数より小さい値を指定してください。


void MQDocument::GetGlobalMatrix(MQObject obj, MQMatrix& mtx);

obj
オブジェクトクラス
mtx
[OUT] グローバル座標変換行列

(new in Rev2.40)

ドキュメント中の指定したオブジェクトのグローバル座標変換行列を取得します。


void MQDocument::GetGlobalInverseMatrix(MQObject obj, MQMatrix& mtx);

obj
オブジェクトクラス
mtx
[OUT] グローバル座標逆変換行列

(new in Rev2.40)

ドキュメント中の指定したオブジェクトのグローバル座標逆変換行列を取得します。


int MQDocument::GetMaterialCount(void);

戻り値
マテリアルの配列要素数

ドキュメント中のマテリアルの数を取得します。

実際に存在するマテリアル数ではなく配列要素の大きさが返されるので、 MQDocument::DeleteMaterial() によりNULLになったものも数として入れられます。正確な数を得るには MQDocument::GetMaterial() によりNULL以外のものを数える必要があります。


MQMaterial MQDocument::GetMaterial(int material);

material
マテリアルのインデックス
戻り値
マテリアルクラス

マテリアルクラスへのポインタを取得します。

指定したインデックスにマテリアルが存在しない場合はNULLが返されます。


int MQDocument::GetCurrentMaterialIndex(void);

戻り値
カレントマテリアルのインデックス

カレントマテリアルのインデックスを取得します。

-1が返された場合はカレントは未着色面であることを示します。


void MQDocument::SetCurrentMaterialIndex(int index);

index
マテリアルのインデックス

カレントマテリアルをインデックス指定します。


int MQDocument::AddMaterial(MQMaterial mat);

mat
追加するマテリアルクラス
戻り値
追加されたマテリアルのインデックス

マテリアルクラスをドキュメントに登録します。

matそのものが参照されるので、ドキュメントに追加されたマテリアルをMQMaterial::DeleteThis()により消滅させてはいけません。


void MQDocument::DeleteMaterial(int index);

index
削除するマテリアルのインデックス

ドキュメントからマテリアルを外し、マテリアルクラスを消滅させます。

削除したインデックスに対して MQDocument::GetMaterial() はNULLを返すようになります。


void MQDocument::Compact(void);

ドキュメント中のオブジェクトやマテリアル配列に存在するNULLを切り詰めて、配列の大きさを実際に存在するオブジェクトやマテリアル数と同じにします。また、オブジェクト中に存在する頂点や面の配列も切り詰めます。ただし、頂点や面のインデックスが変化することに注意して下さい。

データ量が小さくなるので、ドキュメントやオブジェクトに対して大幅な操作を行った後は、このAPIを実行するのが望ましいです。

ファイルの保存の際には自動的に実行されます。


void MQDocument::ClearSelect(DWORD flag);

flag
[MQDOC_CLEARSELECT_VERTEX] 頂点
[MQDOC_CLEARSELECT_LINE]
[MQDOC_CLEARSELECT_FACE]
[MQDOC_CLEARSELECT_ALL] すべての要素

ドキュメント中の指定した要素の選択をすべて解除します。


BOOL MQDocument::AddSelectVertex(int objindex, int vertindex);
BOOL MQDocument::AddSelectVertex(MQSelectVertex sel);

objindex
オブジェクトのインデックス
vertindex
頂点のインデックス
sel
選択頂点
戻り値
成功の可否

指定した頂点を選択します。


BOOL MQDocument::DeleteSelectVertex(int objindex, int vertindex);
BOOL MQDocument::DeleteSelectVertex(MQSelectVertex sel);

objindex
オブジェクトのインデックス
vertindex
頂点のインデックス
sel
選択頂点
戻り値
成功の可否

指定した頂点の選択を解除します。


BOOL MQDocument::IsSelectVertex(int objindex, int vertindex);
BOOL MQDocument::IsSelectVertex(MQSelectVertex sel);

objindex
オブジェクトのインデックス
vertindex
頂点のインデックス
sel
選択頂点
戻り値
[TRUE] 選択されている
[FALSE] 選択されていない、または頂点が存在しない

指定した頂点が選択されているかどうかをチェックします。


BOOL MQDocument::AddSelectLine(int objindex, int faceindex, int lineindex);
BOOL MQDocument::AddSelectLine(MQSelectLine sel);

objindex
オブジェクトのインデックス
faceindex
面のインデックス
lineindex
ラインのインデックス
sel
選択ライン
戻り値
成功の可否

指定したラインを選択します。


BOOL MQDocument::DeleteSelectLine(int objindex, int faceindex, int linelidex);
BOOL MQDocument::DeleteSelectLine(MQSelectLine sel);

objindex
オブジェクトのインデックス
faceindex
面のインデックス
lineindex
ラインのインデックス
sel
選択ライン
戻り値
成功の可否

指定したラインの選択を解除します。


BOOL MQDocument::IsSelectLine(int objindex, int faceindex, int lineindex);
BOOL MQDocument::IsSelectLine(MQSelectLine sel);

objindex
オブジェクトのインデックス
faceindex
面のインデックス
lineindex
ラインのインデックス
sel
選択ライン
戻り値
[TRUE] 選択されている
[FALSE] 選択されていない、またはラインが存在しない

指定したラインが選択されているかどうかをチェックします。


BOOL MQDocument::AddSelectFace(int objindex, int faceindex);
BOOL MQDocument::AddSelectFace(MQSelectFace sel);

objindex
オブジェクトのインデックス
faceindex
面のインデックス
sel
選択面
戻り値
成功の可否

指定した面を選択します。


BOOL MQDocument::DeleteSelectFace(int objindex, int faceindex);
BOOL MQDocument::DeleteSelectFace(MQSelectFace sel);

objindex
オブジェクトのインデックス
faceindex
面のインデックス
sel
選択面
戻り値
成功の可否

指定した面の選択を解除します。


BOOL MQDocument::IsSelectFace(int objindex, int faceindex);
BOOL MQDocument::IsSelectFace(MQSelectFace sel);

objindex
オブジェクトのインデックス
faceindex
面のインデックス
sel
選択面
戻り値
[TRUE] 選択されている
[FALSE] 選択されていない、または面が存在しない

指定した面が選択されているかどうかをチェックします。


BOOL MQDocument::AddSelectUVVertex(int objindex, int faceindex, int vertindex);

objindex
オブジェクトのインデックス
faceindex
面のインデックス
vertindex
面内頂点のインデックス
戻り値
成功の可否

(new in Rev2.30)

指定した頂点をUV選択します。


BOOL MQDocument::DeleteSelectUVVertex(int objindex, int faceindex, int vertindex);

objindex
オブジェクトのインデックス
faceindex
面のインデックス
vertindex
面内頂点のインデックス
戻り値
成功の可否

(new in Rev2.30)

指定した頂点のUV選択を解除します。


BOOL MQDocument::IsSelectUVVertex(int objindex, int faceindex, int vertindex);

objindex
オブジェクトのインデックス
faceindex
面のインデックス
vertindex
面内頂点のインデックス
戻り値
[TRUE] 選択されている
[FALSE] 選択されていない、または面・頂点が存在しない

(new in Rev2.30)

指定した頂点がUV選択されているかどうかをチェックします。


BOOL MQDocument::FindMappingFile(char *out_path, const char *filename, DWORD map_type);

outpath
絶対パスを格納するバッファ
filename
ファイル名
maptype
マッピング画像のタイプ
[MQMAPPING_TEXTURE] テクスチャマッピング
[MQMAPPING_ALPHA] 透明マッピング
[MQMAPPING_BUMP] バンプマッピング
戻り値
[TRUE] 変換成功
[FALSE] 変換失敗

(new in Rev2.10)

MQMaterial::GetTextureName(), GetAlphaName(), GetBumpName() で得られるファイル名を絶対パスに変換します。

outpath は MAX_PATH 以上のサイズを持つ必要があります。


MQScene MQDocument::GetScene(int index);

index
シーンのインデックス
戻り値
シーンクラス

(new in Rev2.10)

ドキュメントに割り当てられているシーンを取得します。

indexに0を指定するとパースペクティブビューが取得されます。現行バージョンではindexは0以外は指定しないで下さい。