Metasequoia BBS

| New message | Normal | Tree |
Status
Tag
Keyword
[9039] SDK:doc-> GetMaterialCount()または-> GetObjectCount() / Ehobits
Done [Talk] Response
タイトルとして

まず、複数のオブジェクトまたはマテリアルを作成します。たとえば、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();

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

各関数の詳細はSDKのドキュメントに記載しているので、挙動などで何かわからない点がでてきた場合はまずドキュメントをご確認ください。
2021-06-18 23:17
[9043] Re: SDK:doc-> GetMaterialCount()または-> GetObjectCount() / Ehobits
Tag has been changed from [Bug report,要望] to [Talk].
MQCDocument :: GetObjectCount(void)
戻り値がリアルタイムではないのは少し直感に反します。
クラッシュする代わりに、GetNameW()中にエラーを出力できますか?
2021-06-19 09:37
[9044] Re: SDK:doc-> GetMaterialCount()または-> GetObjectCount() / Administrator
>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