pythonスクリプトについてお聞きしたいことがあります。
MQSystem.getDocument().numObjetでオブジェクト数が返ってきますが、この数値は削除してしまったobjもカウントされるみたいで、
メタセコイア上でobj1,obj2からobj2を削除しても、スクリプトを走らせると、
オブジェクト数は2となってしまいます。
このnumObjectに基いて再帰的にMQSystem.getDocument().object.nameを参照しようとしても、
"Attribute not found."とエラーが返されます。
----------------
doc = MQSystem.getDocument()
print = MQSystem.println
print("count_of_obj %d" % doc.numObject)
for obj in doc.object:
print("%s" % obj.name)
----------------
例えばこのようなスクリプトだと初回起動時やobjを追加する分には問題ありませんが、削除するとどうも参照できない消してしまったobjを参照しようとしてエラーになるようです。
事前に何かやっておくべきチェックを怠っているのでしょうか?
何かアドバイスがあれば助かります。
2013-02-04 02:05
[2985] Re: pythonスクリプトのnumObjectによるobj数と実際のobj数の違いについて / 管理者
numObjectは存在するオブジェクトの数ではなく配列のサイズを返します。
オブジェクトを削除した後もメモリのコンパクト化処理が行われるまではインデックスは保持され、そのインデックスにはNoneがセットされます。
そのため、for文内で
if obj is None: continue
のようにNoneがどうかチェックする必要があります。
サンプルとして入っているスクリプトにもこの処理をしたものがありますのでご確認ください。
2013-02-04 10:34
[2987] Re: Re: pythonスクリプトのnumObjectによるobj数と実際のobj数の違いについて / k2k
サンプルが御座いましたか。お手数かけました。
ありがとう御座います。
2013-02-04 18:15