ちなみに、Noneオブジェクトを以下のようにオブジェクトリストに再挿入しようとしたところ以下の様にエラーがでました。
for obj in doc.object:
if obj is None:
doc.addObject(obj)
↓
Failed to execute a script in line 7.
Inappropriate argument type.
argument 1 must be MQObject, not None
一度Noneになったオブジェクトはオブジェクトとして扱われないので、完全にアクセスできないようです。
insertを使った場合このようになりました。やはり兄弟オブジェクトというオブジェクトの指定がイマイチ分からないです。カレントオブジェクトを指定しても
doc = MQSystem.getDocument()
Target= doc.object[doc.currentObjectIndex]
for obj in doc.object:
if obj is None:
doc.insertObject(obj,Target)
↓
続きを表示...
Failed to execute a script in line 5, 'test.py'.
Inappropriate argument type.
argument 1 must be MQObject, not None
どちらも、追加、挿入するオブジェクトではNoneではダメと言われておりremoveしてしまうとNoneになるのでNoneオブジェクトは実質的に再追加、挿入することが不可能に見えます。
ちなみに、代替の方法として以下の方法で上手くいきそうではあります。
指定した数の一括削除が不安定なので、一旦Cloneしたオブジェクトをdocではなくリストに追加し、その後一括で全て削除してから元のオブジェクトを追加する。
この方法だと上手くいきそうですが、これもNoneオブジェクトが残り続けると一括削除するときにメタセコが落ちそうな気もします…。
doc = MQSystem.getDocument()
doc.compact
clonelist = []
for i, obj in enumerate(doc.object):
print(obj)
if obj is not None:
clonelist.append(obj.clone())
for i, obj in enumerate(doc.object):
if obj is not None:
doc.removeObject(obj)
for i, c in enumerate(clonelist):
c.name = 'ab' + str(i)
doc.addObject(c)