・ OSNAPによる影響を避ける
ユーザー関数の中で、(command)による作図や、(getpoint) によって、ポイントを指示させた場合、OSNAP(オブジェクトスナップ)による影響を受けてしまい、意図しない結果が返ってくる場合があります。
これを避けるためには、座標を (command) に渡す際に none
を挿入して、OSNAPを無効にする必要があります。
ちなみに none の代わりに、 non でも OK だそうです。
例: (command "LINE" "none" (list 0 0 0) "none" (list 10 10 0) "")
ところで、座標を渡す場合にいちいち、none をつけるのは面倒だし、忘れてしまう可能性も大きい場合には、システム変数を書き換えて、OSNAP をすべて解除してしまい、プログラム終了時に、元に戻すのが良いでしょう。
(defun sample ()
(setq osm_def (getvar "OSMODE")) ;
現在のOSMODEを退避
(setvar "OSMODE" 0) ; OSNAP
をすべて解除
(setq pt1 (getpoint "\n1点目指示:"))
(setq pt2 (getpoint pt1 "\n1点目指示:"))
(command "LINE" pt1 pt2 "")
(setvar "OSMODE" osm_def) ; OSMODE
を元に戻す
)