MQObjectクラスは、オブジェクト中の頂点や面に関する情報を保持します。
基本操作 | |
DeleteThis | オブジェクトクラスをデリート(消滅)させます |
GetUniqueID | オブジェクトのユニークIDを取得します |
GetType | オブジェクトの種類を取得します |
SetType | オブジェクトの種類を設定します |
Clone | オブジェクトクラスの複製を作成します |
Merge | 2つのオブジェクトを合成します |
Freeze | 曲面や鏡面などの属性をフリーズさせて完全にポリゴン化します |
GetName | オブジェクトの名前を取得します |
SetName | オブジェクトの名前を設定します |
GetSelected | オブジェクトの選択状態を取得します |
SetSelected | オブジェクトの選択状態を設定します |
頂点 | |
GetVertexCount | 頂点の数を取得します |
GetVertex | 頂点の位置を取得します |
SetVertex | 頂点の位置を設定します |
GetVertexArray | すべての頂点の位置を配列として一括取得します |
AddVertex | 頂点を追加します |
DeleteVertex | 頂点を削除します |
GetVertexRefCount | 頂点の参照数を取得します |
GetVertexUniqueID | 頂点に割り当てられているユニークIDを取得します |
GetVertexIndexFromUniqueID | ユニークIDが割り当てられている頂点のインデックスを取得します |
GetVertexRelatedFaces | 頂点を割り当てている面の一覧を取得します。 |
GetVertexWeight | 頂点の曲面に対する重みを取得します |
SetVertexWeight | 頂点の曲面に対する重みを設定します |
CopyVertexAttribute | 属性を別の頂点にコピーします |
面 | |
GetFaceCount | 面数を取得します |
GetFacePointCount | 面に属する頂点の数を取得します |
GetFacePointArray | 面の頂点インデックスを配列として取得します |
GetFaceCoordinateArray | 面の各頂点のUV値を配列として取得します |
SetFaceCoordinateArray | 面の各頂点のUV値を配列として設定します |
GetFaceVertexColor | 面内の頂点の頂点カラーを取得します |
SetFaceVertexColor | 面内の頂点の頂点カラーを設定します |
GetFaceEdgeCrease | 面内のエッジの先鋭度を取得します |
SetFaceEdgeCrease | 面内のエッジの先鋭度を設定します |
GetFaceVisible | 面の表示・非表示を取得します |
SetFaceVisible | 面の表示・非表示をを設定します |
GetFaceMaterial | 面に割り当てられたマテリアルのインデックスを取得します |
SetFaceMaterial | 面にマテリアルを割り当てます |
GetFaceUniqueID | 面に割り当てられているユニークIDを取得します |
GetFaceIndexFromUniqueID | ユニークIDが割り当てられている面のインデックスを取得します |
AddFace | 面を追加します |
DeleteFace | 面を削除します |
InvertFace | 面の向きを反転します |
諸操作 | |
OptimizeVertex | 指定距離以下にある頂点を結合します |
Compact | 頂点・面のインデックスを切り詰めます |
属性 | |
GetVisible | オブジェクトの表示・非表示状態を取得します |
SetVisible | オブジェクトの表示・非表示状態を設定します |
GetPatchType | 曲面のタイプを取得します |
SetPatchType | 曲面のタイプを設定します |
GetPatchSegment | 曲面の分割数を取得します |
SetPatchSegment | 曲面の分割数を設定します |
GetPatchTriangle | Catmull-Clark曲面の三角形の分割方法を取得します |
SetPatchTriangle | Catmull-Clark曲面の三角形の分割方法を設定します |
GetShading | スムージングのタイプを取得します |
SetShading | スムージングのタイプを設定します |
GetSmoothAngle | スムージング角度を取得します |
SetSmoothAngle | スムージング角度を設定します |
GetMirrorType | 鏡面のタイプを取得します |
SetMirrorType | 鏡面のタイプを設定します |
GetMirrorAxis | 鏡面の座標軸を取得します |
SetMirrorAxis | 鏡面の座標軸を設定します |
GetMirrorDistance | 鏡面の接続距離を取得します |
SetMirrorDistance | 鏡面の接続距離を設定します |
GetLatheType | 回転体のタイプを取得します |
SetLatheType | 回転体のタイプを設定します |
GetLatheAxis | 回転体の座標軸を取得します |
SetLatheAxis | 回転体の座標軸を設定します |
GetLatheSegment | 回転体の分割数を取得します |
SetLatheSegment | 回転体の分割数を設定します |
GetDepth | 階層の深さを取得します |
SetDepth | 階層の深さを設定します |
GetFolding | 子オブジェクトを折りたたんで非表示にしているかどうかを取得します |
SetFolding | 子オブジェクトを折りたたんで非表示にしているかどうかを設定します |
GetLocking | 編集禁止になっているかどうかを取得します |
SetLocking | 編集禁止にするかどうかを設定します |
ローカル座標 | |
GetScaling | ローカル座標変換行列の拡大成分を取得します |
SetScaling | ローカル座標変換行列の拡大成分を設定します |
GetRotation | ローカル座標変換行列の回転成分を取得します |
SetRotation | ローカル座標変換行列の回転成分を設定します |
GetTranslation | ローカル座標変換行列の移動成分を取得します |
SetTranslation | ローカル座標変換行列の移動成分を設定します |
GetLocalMatrix | ローカル座標の変換行列を取得します |
SetLocalMatrix | ローカル座標の変換行列を設定します |
GetLocalInverseMatrix | ローカル座標の逆変換行列を取得します |
光源パラメータ | |
GetLightValue | 光源オブジェクトの光強度を取得します |
SetLightValue | 光源オブジェクトの光強度を設定します |
GetLightAttenuation | 光源オブジェクトの光減衰度を取得します |
SetLightAttenuation | 光源オブジェクトの光減衰度を設定します |
GetLightFallOffEnd | 光源オブジェクトの光減衰の終了距離を取得します |
SetLightFallOffEnd | 光源オブジェクトの光減衰の終了距離を設定します |
GetLightFallOffHalf | 光源オブジェクトの光減衰の半減距離を取得します |
SetLightFallOffHalf | 光源オブジェクトの光減衰の半減距離を設定します |
ユーザーデータ | |
AllocUserData | オブジェクトユーザーデータの確保 |
FreeUserData | オブジェクトユーザーデータの解放 |
GetUserData | オブジェクトユーザーデータの取得 |
GetUserDataPart | オブジェクトユーザーデータの部分取得 |
SetUserData | オブジェクトユーザーデータの設定 |
SetUserDataPart | オブジェクトユーザーデータの部分設定 |
AllocVertexUserData | 頂点ユーザーデータの確保 |
FreeVertexUserData | 頂点ユーザーデータの解放 |
GetVertexUserData | 頂点ユーザーデータの取得 |
GetVertexUserDataPart | 頂点ユーザーデータの部分取得 |
SetVertexUserData | 頂点ユーザーデータの設定 |
SetVertexUserDataPart | 頂点ユーザーデータの部分設定 |
AllocFaceUserData | 面ユーザーデータの確保 |
FreeFaceUserData | 面ユーザーデータの解放 |
GetFaceUserData | 面ユーザーデータの取得 |
GetFaceUserDataPart | 面ユーザーデータの部分取得 |
SetFaceUserData | 面ユーザーデータの設定 |
SetFaceUserDataPart | 面ユーザーデータの部分設定 |
void MQObject::DeleteThis(void);
オブジェクトクラスをデリート(消滅)させます。
この関数はドキュメントに登録されていないオブジェクトにのみ有効で、ドキュメントに登録されたオブジェクトを消滅させる場合はMQDocument::DeleteObject()を使用しなければなりません。
UINT MQObject::GetUniqueID(void);
(new in Rev2.40)
オブジェクトのユニークIDを取得します。
ユニークIDはMQDocument::AddObject()でドキュメントに登録した時点で割り当てられます。Clone()ではユニークIDは複製されません。
int MQObject::GetType(void);
(new in Rev3.00)
オブジェクトの種類を取得します。
void MQObject::SetType(int type);
(new in Rev3.00)
オブジェクトの種類を設定します。
MQObject MQObject::Clone(void);
オブジェクトクラスの複製を作成します。
void MQObject::Merge(MQObject source);
sourceのオブジェクトクラスをthisへ合成します。sourceの内容は変化しません。
void MQObject::Freeze(DWORD flag);
曲面や鏡面などの属性をフリーズさせて完全にポリゴン化します。
void MQObject::GetName(char *buffer, int size);
オブジェクトの名前をbufferへ格納します。
void MQObject::SetName(const char *buffer);
オブジェクトの名前をセットします。
BOOL MQObject::GetSelected();
(new in Rev3.10)
オブジェクトの選択状態を取得します。
この選択状態はオブジェクトパネル上で複数選択したときの状態を示します。カレントオブジェクトについてはMQDocument::GetCurrentObjectIndex()で取得します。
void MQObject::SetSelected(BOOL flag);
(new in Rev3.10)
オブジェクトの選択状態を設定します。
この選択状態はオブジェクトパネル上で複数選択したときの状態を示します。カレントオブジェクトについてはMQDocument::SetCurrentObjectIndex()で設定します。
int MQObject::GetVertexCount(void);
頂点の数を取得します。
実際に存在する頂点数ではなく配列要素の大きさであるので、正確な頂点数を調べるには各頂点ごとにMQObject::GetVertexRefCount()で0以外が返されるかどうかを調べる必要があります。
MQPoint MQObject::GetVertex(int index);
指定した頂点の位置を取得します。
MQObject::GetVertexRefCount()で0以外が返される頂点にのみ呼び出して下さい。
void MQObject::SetVertex(int index, MQPoint pts);
指定した頂点の位置を設定します。
void MQObject::GetVertexArray(MQPoint *ptsarray);
オブジェクト中のすべての頂点の位置を配列として一括取得します。
ptsarrayの配列要素数はMQObject::GetVertexCount()で返される数以上でなければなりません。
int MQObject::AddVertex(MQPoint p);
頂点を追加します。
メモリ不足で頂点データが確保できない場合は-1が返ります。
BOOL MQObject::DeleteVertex(int index);
頂点を削除します。
オブジェクト中のどれかの面が指定した頂点を持つ場合は、その面もいっしょに削除されます。
削除後もMQObject::GetVertexCount()の数は変化せず、削除されたインデックスへMQObject::GetVertexRefCount()は0を返すようになります。
int MQObject::GetVertexRefCount(int index);
頂点がどれだけの面で使われているかを取得します。0が返された場合、頂点は存在しないことを示します。
MQObject::AddVertex()により参照数は1がセットされ、MQObject::AddFace()で指定されるごとに値が1つずつ増え、MQObject::DeleteFace()により1つずつ減ります。
UINT MQObject::GetVertexUniqueID(int index);
(new in Rev2.40)
指定した頂点に割り当てられているユニークIDを取得します。
ユニークIDはオブジェクト中の他の頂点と重複しない値です。Compact() などによりインデックスが変更されてもユニークIDは変わらないため、特定の頂点の認識に用いることができます。
int MQObject::GetVertexIndexFromUniqueID(UINT unique_id);
(new in Rev2.40)
指定したユニークIDが割り当てられている頂点のインデックスを取得します。頂点が削除されたり、元々存在しないユニークIDを指定した場合には-1が返ります。
UINT MQObject::GetVertexRelatedFaces(int vertex, int *faces);
(new in Rev3.00)
指定した頂点を割り当てている面を取得します。MQObject::GetFacePointArray()で総当りで探索するよりも高速に処理できます。
facesにNULLを指定した場合、面の数のみを取得します。
facesにNULL以外を指定した場合、面のインデックスが格納されます。facesは戻り値で返される数以上の配列である必要があります。
DWORD MQObject::GetVertexColor(int index);
頂点カラーを取得します。
32ビットのダブルワード値のうち、0xFF000000をマスクすることで頂点カラーが有効であるかどうかを調べます。マスク結果が0の場合頂点カラーは無効であり、0xFF000000の場合は有効です。有効の場合は0x000000FFが赤、0x0000FF00で緑、0x00FF0000青を示します。
(in Rev2.30) 頂点カラーの保持方法の変更に伴い、GetVertexColor()は正しい動作を保証しません。MQObject::GetFaceVertexColor()に置き換える必要があります。
(in Rev2.40) この関数は廃止されました。
void MQObject::SetVertexColor(int index, DWORD color);
頂点カラーを設定します。
頂点カラーを消去するするときはcolorに0を、有効にするときは0xFF000000に各色の値をORします。
(in Rev2.30) 頂点カラーの保持方法の変更に伴い、SetVertexColor()は正しい動作を保証しません。MQObject::SetFaceVertexColor()に置き換える必要があります。
(in Rev2.40) この関数は廃止されました。
float MQObject::GetVertexWeight(int index);
頂点の曲面に対する重みを取得します。
ウェイトは0から1までの値になります。
void MQObject::SetVertexWeight(int index, float value);
頂点の曲面に対する重みを設定します。
valueは0から1までの値でなければなりません。
void MQObject::CopyVertexAttribute(int vert1, MQObject obj2, int vert2);
obj2中のvert2頂点に割り当てられた、位置を除いて隠し・固定・頂点カラー・ウェイトなどの属性をvert1にコピーします。
int MQObject::GetFaceCount(void);
面数を取得します。
実際に存在する面数ではなく配列要素の大きさであるので、正確な面数を得るには各面ごとにMQObject::GetFacePointCount()で0以外が返されるかどうかを調べる必要があります。
int MQObject::GetFacePointCount(int face);
指定した面に属する頂点の数を取得します。
0,2,3,4のいずれかが返されます。0の場合はMQObject::DeleteFace()により既に破棄され存在していないことを示します。
void MQObject::GetFacePointArray(int face, int *vertex);
指定した面の頂点インデックスを配列として取得します。
vertexはMQObject::GetFacePointCount()で得られる数以上の大きさをもつ配列でなければなりません。
void MQObject::GetFaceCoordinateArray(int face, MQCoordinate *uvarray);
指定した面の各頂点のUV値を配列として取得します。
uvarrayはMQObject::GetFacePointCount()で得られる数以上の大きさをもつ配列でなければなりません。
void MQObject::SetFaceCoordinateArray(int face, MQCoordinate *uvarray);
指定した面の各頂点のUV値を配列として設定します。
uvarrayはMQObject::GetFacePointCount()で得られる数以上の大きさをもつ配列でなければなりません。
DWORD MQObject::GetFaceVertexColor(int face, int vertex);
(new in Rev2.30)
指定した面内の頂点の頂点カラーを取得します。
vertexはMQObject::GetFacePointCount()で得られる数未満でなければなりません。
32ビットのダブルワード値のうち、0xFF000000が不透明度、0x000000FFが赤、0x0000FF00で緑、0x00FF0000が青を示します。
void MQObject::SetFaceVertexColor(int face, int vertex, DWORD color);
(new in Rev2.30)
指定した面内の頂点の頂点カラーを設定します。
vertexはMQObject::GetFacePointCount()で得られる数未満でなければなりません。
32ビットのダブルワード値のうち、0xFF000000が不透明度、0x000000FFが赤、0x0000FF00で緑、0x00FF0000が青を示します。
float MQObject::GetFaceEdgeCrease(int face, int line);
(new in Rev3.10)
指定した面内の辺に対して、曲面用のエッジ先鋭度を取得します。
lineはMQObject::GetFacePointCount()で得られる数未満でなければなりません。
現バージョンでは戻り値は0または1のみが返されます。将来のバージョンで0~1までの範囲で値が返されるよう変更される可能性があります。
void MQObject::SetFaceEdgeCrease(int face, int vertex, float crease);
(new in Rev3.10)
指定した面内の辺に対して、曲面用のエッジ先鋭度を設定します。
lineはMQObject::GetFacePointCount()で得られる数未満でなければなりません。
現バージョンではcreaseには0または1のみ指定できます。将来のバージョンで0~1までの範囲を設定できるよう変更される可能性があります。
BOOL MQObject::GetFaceVisible(int face);
(new in Rev3.00)
指定した面の表示・非表示を取得します。
視点や表示オプションに基づくシーン内の現在の表示状態を取得するにはMQScene::GetVisibleFace()を用います。
void MQObject::SetFaceVisible(int face, BOOL flag);
(new in Rev3.00)
指定した面の表示・非表示を設定します。
int MQObject::GetFaceMaterial(int face);
面に割り当てられたマテリアルのインデックスを取得します。インデックスはオブジェクトが属するドキュメント中のものになります。
どのマテリアルも割り当てられていない「未着色面」の場合は-1が返されます。
void MQObject::SetFaceMaterial(int face, int material);
指定した面にマテリアルを割り当てます。
UINT MQObject::GetFaceUniqueID(int face);
(new in Rev2.40)
指定した面に割り当てられているユニークIDを取得します。
ユニークIDはオブジェクト中の他の面と重複しない値です。Compact() などによりインデックスが変更されてもユニークIDは変わらないため、特定の面の認識に用いることができます。
int MQObject::GetFaceIndexFromUniqueID(UINT unique_id);
(new in Rev2.40)
指定したユニークIDが割り当てられている面のインデックスを取得します。面が削除されたり、元々存在しないユニークIDを指定した場合には-1が返ります。
int MQObject::AddFace(int count, int *index);
面を追加します。面は index に格納された count 個の頂点インデックスをもちます。
countが2の場合は辺を意味します。
メモリ不足で面データが確保できない場合は-1が返ります。
BOOL MQObject::DeleteFace(int index);
面を削除します。
削除した面に属する頂点のうち、この面にしか属していないものは、自動的に削除されます。
削除後も MQObject::GetFaceCount() の数は変化せず、削除された面インデックスへ MQObject::GetFacePointCount() は0を返すようになります。
BOOL MQObject::InvertFace(int index);
面の向きを反転します。
void MQObject::OptimizeVertex(float distance, MQBool *apply);
オブジェクト中の distance 以下の距離にある頂点を結合します。
配列数が頂点と同じ数を持つ apply がセットされている場合、頂点ごとに結合させるかどうかを決定することができます。apply が NULL の場合、すべての頂点が結合の対象となります。
DXFのように、頂点情報が独立して存在せずに、面情報に直接頂点位置が記述されたファイルを読み込んだ後、このAPIを用いると非常に有効です。
void MQObject::Compact(void);
オブジェクト中に存在する MQObject::GetVertexRefCount() で0を返す頂点や、 MQObject::GetFacePointCount() で0を返す面を切りつめて、配列のサイズを小さくします。
切り詰めた後はインデックスが変化することに注意して下さい。
データ量が小さくなるので、オブジェクトに対して大幅な操作を行った後は、このAPIを実行するのが望ましいです。
DWORD MQObject::GetVisible(void);
オブジェクトの表示・非表示状態を取得します。
戻り値は将来のバージョンでビットマスクによって頂点・辺・面の表示状態を示すように変更する予定です。
void MQObject::SetVisible(DWORD visible);
オブジェクトの表示・非表示状態を設定します。
引数は将来のバージョンでビットマスクによって頂点・辺・面の表示状態を示すように変更する予定です。
DWORD MQObject::GetPatchType(void);
オブジェクトに割り当てられた曲面のタイプを取得します。
void MQObject::SetPatchType(DWORD type);
オブジェクトに曲面のタイプを割り当てます。
int MQObject::GetPatchSegment(void);
オブジェクトの曲面の分割数を取得します。
void MQObject::SetPatchSegment(int segment);
オブジェクトに曲面の分割数を設定します。
BOOL MQObject::GetPatchTriangle(void);
Catmull-Clark曲面生成時の三角形の分割タイプを取得します。
void MQObject::SetPatchTriangle(BOOL flag);
Catmull-Clark曲面生成時の三角形の分割タイプを設定します。
int MQObject::GetShading(void);
(new in Rev2.10)
オブジェクトに設定されているスムージングのタイプを取得します。
void MQObject::SetShading(int type);
(new in Rev2.10)
オブジェクトにスムージングのタイプを設定します。
float MQObject::GetSmoothAngle(void);
(new in Rev2.10)
オブジェクトに設定されているスムージング角度を取得します。
角度は0から180までの値になります。
void MQObject::SetSmoothAngle(float degree);
(new in Rev2.10)
オブジェクトにスムージング角度を設定します。
角度は0から180までの値を指定します。
int MQObject::GetMirrorType(void);
(new in Rev2.10)
オブジェクトに設定されている鏡面のタイプを取得します。
void MQObject::SetMirrorType(int type);
(new in Rev2.10)
オブジェクトに鏡面のタイプを設定します。
DWORD MQObject::GetMirrorAxis(void);
(new in Rev2.10)
オブジェクトに設定されている鏡面の座標軸を取得します。
void MQObject::SetMirrorAxis(DWORD axis);
(new in Rev2.10)
オブジェクトに鏡面の座標軸を設定します。
float MQObject::GetMirrorDistance(void);
(new in Rev2.10)
オブジェクトに設定されている鏡面の接続距離を取得します。
void MQObject::SetMirrorDistance(float dis);
(new in Rev2.10)
オブジェクトに鏡面の接続距離を設定します。
int MQObject::GetLatheType(void);
(new in Rev2.10)
オブジェクトに設定されている回転体のタイプを取得します。
void MQObject::SetLatheType(int type);
(new in Rev2.10)
オブジェクトに回転体のタイプを設定します。
DWORD MQObject::GetLatheAxis(void);
(new in Rev2.10)
オブジェクトに設定されている回転体の座標軸を取得します。
void MQObject::SetLatheAxis(DWORD axis);
(new in Rev2.10)
オブジェクトに回転体の座標軸を設定します。
int MQObject::GetLatheSegment(void);
(new in Rev2.10)
オブジェクトに設定されている回転体の分割数を取得します。
void MQObject::SetLatheSegment(int segment);
(new in Rev2.10)
オブジェクトに回転体の分割数を設定します。
int MQObject::GetDepth(void);
(new in Rev2.40)
オブジェクトの階層の深さを取得します。ルート直下にあるオブジェクトは0を返します。
Clone()では階層の深さは複製されません。
void MQObject::SetDepth(int depth);
(new in Rev2.40)
オブジェクトの階層の深さを設定します。
深さを設定する際は、階層の不整合が生じないよう注意してください。
BOOL MQObject::GetFolding(void);
(new in Rev2.40)
オブジェクトパネル上で子オブジェクトを折りたたんで非表示にしているかどうかを取得します。
void MQObject::SetFolding(BOOL flag);
(new in Rev2.40)
オブジェクトパネル上で子オブジェクトを折りたたんで非表示にしているかどうかを設定します。
BOOL MQObject::GetLocking(void);
(new in Rev2.40)
オブジェクトが編集禁止になっているかどうかを取得します。
void MQObject::SetLocking(BOOL flag);
(new in Rev2.40)
オブジェクトを編集禁止または編集可能に設定します。
MQPoint MQObject::GetScaling(void);
(new in Rev2.40)
ローカル座標変換行列の拡大成分を取得します。
void MQObject::SetScaling(MQPoint scale);
(new in Rev2.40)
ローカル座標変換行列の拡大成分を設定します。
MQAngle MQObject::GetRotation(void);
(new in Rev2.40)
ローカル座標変換行列の回転成分を取得します。
void MQObject::SetRotation(MQAngle angle);
(new in Rev2.40)
ローカル座標変換行列の回転成分を設定します。
MQPoint MQObject::GetTranslation(void);
(new in Rev2.40)
ローカル座標変換行列の移動成分を取得します。
void MQObject::SetTranslation(MQPoint trans);
(new in Rev2.40)
ローカル座標変換行列の移動成分を設定します。
MQMatrix MQObject::GetLocalMatrix(void);
(new in Rev2.40)
ローカル座標の変換行列を取得します。
void MQObject::SetLocalMatrix(const MQMatrix& mtx);
(new in Rev2.40)
ローカル座標の変換行列を設定します。
MQMatrix MQObject::GetLocalInverseMatrix(void);
(new in Rev2.40)
ローカル座標の逆変換行列を取得します。
float MQObject::GetLightValue(void);
(new in Rev3.00)
光源オブジェクトの光強度を取得します。
void MQObject::SetLightValue(float value);
(new in Rev3.00)
光源オブジェクトの光強度を設定します。
int MQObject::GetLightAttenuation(void);
(new in Rev3.00)
光源オブジェクトの光減衰度を取得します。
void MQObject::SetLightAttenuation(int value);
(new in Rev3.00)
光源オブジェクトの光減衰度を設定します。
float MQObject::GetLightFallOffEnd(void);
(new in Rev3.00)
光源オブジェクトの光減衰の終了距離を取得します。
void MQObject::SetLightAttenuation(float distance);
(new in Rev3.00)
光源オブジェクトの光減衰の終了距離を設定します。
float MQObject::GetLightFallOffHalf(void);
(new in Rev3.00)
光源オブジェクトの光減衰の半減距離を取得します。
void MQObject::SetLightFallOffHalf(float distance);
(new in Rev3.00)
光源オブジェクトの光減衰の半減距離を設定します。
BOOL MQObject::AllocUserData(int userdata_id);
(new in Rev3.10)
オブジェクトにユーザーデータ用の領域を確保します。
userdata_id には MQDocument::CreateObjectUserData() で生成されたIDを指定します。
既に領域が確保されているユーザーデータIDを指定すると、何も行われずにTRUEが返ります。
ユーザーデータはむやみに確保するとメモリが浪費されるため、実際に設定する必要が出るまでは確保しないでください。
void MQObject::FreeUserData(int userdata_id);
(new in Rev3.10)
MQObject::AllocUserData() で確保されたユーザーデータ用領域を解放します。
頂点ユーザーデータが不要になった時点で、早々に解放してください。不用意に確保し続けるとメモリが浪費されます。
BOOL MQObject::GetUserData(int userdata_id, void *buffer);
(new in Rev3.10)
オブジェクトのユーザーデータを取得します。
buffer は MQDocument::CreateObjectUserData() で指定されたバイト数の領域である必要があります。
確保されていないオブジェクトユーザーデータIDに対して取得を行うとFALSEが返ります。また、MQObject::SetUserData() でユーザーデータが設定されていない状態で取得を行うと buffer にはすべて0が格納されます。
BOOL MQObject::GetUserDataPart(int userdata_id, int offset, int copy_bytes, void *buffer);
(new in Rev3.10)
オブジェクトのユーザーデータを部分的に取得します。
ユーザーデータ内のうち offset から始まる領域が buffer に格納されます。
buffer は copy_bytes で指定されたバイト数の領域である必要があります。 copy_bytes に 0 を指定するとユーザーデータ全体、つまりMQDocument::CreateObjectUserData() で指定されたバイト数が転送されます。
確保されていないオブジェクトユーザーデータIDに対して取得を行うとFALSEが返ります。また、MQObject::SetUserData() でユーザーデータが設定されていない状態で取得を行うと buffer にはすべて0が格納されます。
BOOL MQObject::SetUserData(int userdata_id, const void *buffer);
(new in Rev3.10)
オブジェクトのユーザーデータを設定します。
buffer は MQDocument::CreateObjectUserData() で指定されたバイト数の領域である必要があります。
確保されていないオブジェクトユーザーデータIDに対して取得を行うとFALSEが返ります。
BOOL MQObject::SetUserDataPart(int userdata_id, int offset, int copy_bytes, const void *buffer);
(new in Rev3.10)
オブジェクトのユーザーデータを部分的に設定します。
buffer に格納されているデータがユーザーデータ内の offset から始まる領域に設定されます。
buffer は copy_bytes で指定されたバイト数の領域である必要があります。 copy_bytes に 0 を指定するとユーザーデータ全体、つまりMQDocument::CreateObjectUserData() で指定されたバイト数が転送されます。
確保されていないオブジェクトユーザーデータIDに対して取得を行うとFALSEが返ります。
BOOL MQObject::AllocVertexUserData(int userdata_id);
(new in Rev3.10)
オブジェクトに頂点ユーザーデータ用の領域を確保します。
userdata_id には MQDocument::CreateVertexUserData() で生成されたIDを指定します。
既に領域が確保されているユーザーデータIDを指定すると、何も行われずにTRUEが返ります。
頂点ユーザーデータはむやみに確保するとメモリが浪費され、また頂点追加・削除にかかる時間が増大するため、実際に設定する必要が出るまでは確保しないでください。
void MQObject::FreeVertexUserData(int userdata_id);
(new in Rev3.10)
MQObject::AllocVertexUserData() で確保された頂点ユーザーデータ用領域を解放します。
頂点ユーザーデータが不要になった時点で、早々に解放してください。不用意に確保し続けるとメモリが浪費され、また頂点追加・削除にかかる時間が増大します。
BOOL MQObject::GetVertexUserData(int userdata_id, int vertex_index, void *buffer);
(new in Rev3.10)
頂点のユーザーデータを取得します。1つの頂点に対して取得できます。
vertex_index で指定された頂点に割り当てられている頂点ユーザーデータを buffer に格納します。
buffer は MQDocument::CreateVertexUserData() で指定されたバイト数の領域である必要があります。
確保されていない頂点ユーザーデータID、または存在しないインデックスに対して取得を行うとFALSEが返ります。また、MQObject::SetVertexUserData() でユーザーデータが設定されていない頂点に対して取得を行うと buffer にはすべて0が格納されます。
BOOL MQObject::GetVertexUserDataPart(int userdata_id, int vertex_start_index, int copy_vertex_num, int offset, int copy_bytes, void *buffer);
(new in Rev3.10)
頂点のユーザーデータを部分的に取得します。1つまたは複数の頂点に対して一括して取得できます。
データを vertex_start_index で始まる copy_vertex_num 個の頂点のユーザーデータを一括して buffer に格納します。
buffer は copy_vertex_num*copy_bytes で示されるバイト数の領域である必要があります。
offset と copy_bytes を指定することで頂点ごとのユーザーデータのうち一部のみを書き換えることができます。 copy_bytes に 0 を指定すると頂点ユーザーデータ全体、つまりMQDocument::CreateVertexUserData() で指定されたバイト数が転送されます。
確保されていない頂点ユーザーデータID、または存在しないインデックスに対して取得を行うとFALSEが返ります。
BOOL MQObject::SetVertexUserData(int userdata_id, int vertex_index, const void *buffer);
(new in Rev3.10)
頂点のユーザーデータを設定します。1つの頂点に対して設定できます。
buffer に格納されているデータを vertex_index で指定された頂点のユーザーデータとして設定します。
buffer は MQDocument::CreateVertexUserData() で指定されたバイト数の領域である必要があります。
確保されていない頂点ユーザーデータID、または存在しないインデックスに対して取得を行うとFALSEが返ります。
BOOL MQObject::SetVertexUserDataPart(int userdata_id, int vertex_start_index, int copy_vertex_num, int offset, int copy_bytes, const void *buffer);
(new in Rev3.10)
頂点のユーザーデータを部分的に設定します。1つまたは複数の頂点に対して一括して設定できます。
buffer に格納されているデータを vertex_start_index で始まる copy_vertex_num 個の頂点に対して一括してユーザーデータとして設定します。
buffer は copy_vertex_num*copy_bytes で示されるバイト数の領域である必要があります。
offset と copy_bytes を指定することで頂点ごとのユーザーデータのうち一部のみを書き換えることができます。 copy_bytes に 0 を指定すると頂点ユーザーデータ全体、つまりMQDocument::CreateVertexUserData() で指定されたバイト数が転送されます。
確保されていない頂点ユーザーデータID、または存在しないインデックスに対して取得を行うとFALSEが返ります。
BOOL MQObject::AllocFaceUserData(int userdata_id);
(new in Rev3.10)
オブジェクトに面ユーザーデータ用の領域を確保します。
userdata_id には MQDocument::CreateFaceUserData() で生成されたIDを指定します。
既に領域が確保されているユーザーデータIDを指定すると、何も行われずにTRUEが返ります。
面ユーザーデータはむやみに確保するとメモリが浪費され、また面追加・削除にかかる時間が増大するため、実際に設定する必要が出るまでは確保しないでください。
void MQObject::FreeFaceUserData(int userdata_id);
(new in Rev3.10)
MQObject::AllocFaceUserData() で確保された面ユーザーデータ用領域を解放します。
面ユーザーデータが不要になった時点で、早々に解放してください。不用意に確保し続けるとメモリが浪費され、また面追加・削除にかかる時間が増大します。
BOOL MQObject::GetFaceUserData(int userdata_id, int face_index, void *buffer);
(new in Rev3.10)
face_index で指定された面に割り当てられている面ユーザーデータを buffer に格納します。
buffer は MQDocument::CreateFaceUserData() で指定されたバイト数の領域である必要があります。
確保されていない面ユーザーデータID、または存在しないインデックスに対して取得を行うとFALSEが返ります。また、MQObject::SetFaceUserData() でユーザーデータが設定されていない面に対して取得を行うと buffer にはすべて0が格納されます。
BOOL MQObject::GetFaceUserDataPart(int userdata_id, int face_start_index, int copy_face_num, int offset, int copy_bytes, void *buffer);
(new in Rev3.10)
面のユーザーデータを部分的に取得します。1つまたは複数の面に対して一括して取得できます。
face_start_index で始まる copy_face_num 個の面に割り当てられている面ユーザーデータを buffer に格納します。
buffer は copy_face_num*copy_bytes で示されるバイト数の領域である必要があります。
offset と copy_bytes を指定することで面ごとのユーザーデータのうち一部のみを取得することができます。 copy_bytes に 0 を指定すると面ユーザーデータ全体、つまりMQDocument::CreateFaceUserData() で指定されたバイト数が転送されます。
確保されていない面ユーザーデータID、または存在しないインデックスに対して取得を行うとFALSEが返ります。また、MQObject::SetFaceUserData() でユーザーデータが設定されていない面に対して取得を行うと buffer にはすべて0が格納されます。
BOOL MQObject::SetFaceUserData(int userdata_id, int face_index, const void *buffer);
(new in Rev3.10)
buffer に格納されているデータを face_index で指定された面のユーザーデータとして設定します。
buffer は MQDocument::CreateFaceUserData() で指定されたバイト数の領域である必要があります。
確保されていない面ユーザーデータID、または存在しないインデックスに対して取得を行うとFALSEが返ります。
BOOL MQObject::SetFaceUserDataPart(int userdata_id, int face_start_index, int copy_face_num, int offset, int copy_bytes, const void *buffer);
(new in Rev3.10)
面のユーザーデータを部分的に設定します。1つまたは複数の面に対して一括して設定できます。
buffer に格納されているデータを face_start_index で始まる copy_face_num 個の面に対して一括してユーザーデータとして設定します。
buffer は copy_face_num*copy_bytes で示されるバイト数の領域である必要があります。
offset と copy_bytes を指定することで面ごとのユーザーデータのうち一部のみを書き換えることができます。 copy_bytes に 0 を指定すると面ユーザーデータ全体、つまりMQDocument::CreateFaceUserData() で指定されたバイト数が転送されます。
確保されていない面ユーザーデータID、または存在しないインデックスに対して取得を行うとFALSEが返ります。