・
(command) 関数で作図したオブジェクトを (entlast)
で選択する場合の注意点
・ (entmake) 関数で作図したオブジェクトを
(entlast)
で選択する場合の注意点
(command .....) ; 新しいオブジェクトの作図
(setq en (entlast) )
とすると、(command) 関数に失敗した場合、(entlast)
が全然関係の無いオブジェクトを拾ってきても、気づきにくいので
(setq en (entlast) )
(command .....) ;
新しいオブジェクトの作図
(if (entnext en) ;
新しく作図したオブジェクトが図面内で1番目の場合はエラーとなるので注意
(setq en (entlast) ) )
)
か
(setq en (entlast) )
(command .....) ;
新しいオブジェクトの作図
(if (not (equal (entlast) en) )
(setq en (entlast ) )
)
としたほうが安全です
でも、私の作ったツールはそうなっていないのがほとんど・・・(^^ゞ
ちなみに、(entmake) でオブジェクトを作成すると、成功するとエンティティーデータが、失敗すると nil が返ってきますから、それで判定できます。
(if (entmake ed)
(princ "\n成功です")
(princ "\n失敗です")
)
ただし、POLYLINE や 属性情報を持つ INSERT
図形などの従属図形を持つオブジェクトの場合、SEQEND が (entmake)
されるまで、(entlast)
で図形を選択することはできませんので注意が必要です
このばあいは、(command)
の場合と同じように処理したほうが良いでしょう
参考文献:「おぉとりすぷの広場」 記事番号<16798>