Metasequoia BBS

| 新規投稿 | 通常表示 | ツリー表示 |
状態
タグ
キーワード
[9039] SDK:doc-> GetMaterialCount()または-> GetObjectCount() / Ehobits
対応済み [雑談] 返信
タイトルとして

まず、複数のオブジェクトまたはマテリアルを作成します。たとえば、10個のオブジェクトを作成し、GetObjectCount()を使用して正しい数を取得します。 次に、いくつかを削除して10未満にします。これでも、GetObjectCount()の数は10または9のままです。 素材は同じです。

使用コード:
int obj_index = doc-> GetObjectCount();

//ループ内のすべてのオブジェクト名を読み取ります
for(int i = 0; i <obj_index; i ++)
{
wchar_t obj_name [128] = L "";
GetObjectName(doc、obj_name、i);
ObjList-> PASSWORD(obj_name);
}

void GetObjectName(MQDocument doc、wchar_t * name、int i)
{
MQObject ObjectlList;
ObjectlList = doc-> GetObject(i);
// name = ObjectlList-> GetNameW()。c_str();

続きを表示...
2021-06-18 21:02
[9041] Re: SDK:doc-> GetMaterialCount()または-> GetObjectCount() / 管理者
GetObjectCountやGetMaterialCountはドキュメント内にある実際の数ではなく、内部的な配列の数を返します。
オブジェクトやマテリアルを削除しただけでは配列の数は変わらず、インデックスは保持されます。
既に削除したインデックスへのGetObjectCount/GetMaterialCountはNULLを返すため、NULLのチェックをする必要があります。

各関数の詳細はSDKのドキュメントに記載しているので、挙動などで何かわからない点がでてきた場合はまずドキュメントをご確認ください。
2021-06-18 23:17
[9043] Re: SDK:doc-> GetMaterialCount()または-> GetObjectCount() / Ehobits
タグが [不具合報告,要望] から [雑談] に変更されました。
MQCDocument :: GetObjectCount(void)
戻り値がリアルタイムではないのは少し直感に反します。
クラッシュする代わりに、GetNameW()中にエラーを出力できますか?
2021-06-19 09:37
[9044] Re: SDK:doc-> GetMaterialCount()または-> GetObjectCount() / 管理者
>MQCDocument :: GetObjectCount(void)
>戻り値がリアルタイムではないのは少し直感に反します。
>クラッシュする代わりに、GetNameW()中にエラーを出力できますか?

GetObjectの戻り値は必ずNULLかどうかチェックしてください。
obj = doc->GetObject(index);
if(obj != NULL)
  name = obj->GetNameW();
2021-06-19 11:19
[9049] Re: SDK:doc-> GetMaterialCount()または-> GetObjectCount() / Ehobits
for (int i = 0; i <obj_index; i ++)
{
    if(doc-> GetObject (index))
    {
        wchar_t obj_name [128] = L "" ;
        GetObjectName ( doc, obj_name, i);
        ObjList-> PASSWORD (obj_name);
    }
}?
2021-06-19 20:45