AutoLISP と ObjectARX のアプリケーション間で選択セットの受け渡しを行うときは、次の点に注意してください。
選択セットが AutoLISP で作成され、AutoLISP の変数に格納されている場合に、ObjectARX アプリケーションから返された値で上書きされると、元の選択セットはガベージ コレクションの対象になります(次の自動または人為的なガベージ コレクションで解放されます)。
これは、ObjectARX アプリケーションから返される値が元の選択セットであっても、そうなります。次の例では、ObjectARX 関数 adsfunc は、引数で指定された選択セットをそのまま返すとします。その場合でも、この選択セットはまだ同じ変数に代入されているにもかかわらず、ガーベージ コレクションの対象になります。
(setq var1 (ssget)) (setq var1 (adsfunc var1))
元の選択セットをガーベージ コレクションの対象にしたくない場合は、ObjectARX アプリケーションからの戻り値を、既に選択セットが代入されている AutoLISP 変数に代入しないでください。上記の例を次のように変更すると、var1 に代入されている選択セットは、ガーベージ コレクションの対象にはなりません。
(setq var1 (ssget)) (setq var2 (adsfunc var1))