Sponsored links

【AutoLISP ドリル】エラー対策/処理 1 解答編

Sponsored links
person about to catch four dices AutoLISP
Photo by fotografierende on Pexels.com
Sponsored links
Jagaimo
Jagaimo

オブジェクトスナップに邪魔されないAutoLISP作成の問題の解答編です。

Sponsored links

解答

一時オブジェクトスナップを使った場合

(defun c:test ()
    (command-s "._MOVE" pause "" "NON" "0,0" "NON" "150,50")
(princ))

一時オブジェクトスナップでオブジェクトスナップをオフにするのは、”NON”です。
コマンド操作で点の指定をする直前に”NON”を追加することで、オブジェクトスナップの影響を受けなくなります。

システム変数を変更する場合

(defun c:test ( / Old_Os)

 (setq Old_Os (getvar "OSMODE"))  
   (setvar "OSMODE" 0)

    (command-s "._MOVE" pause "" "0,0" "150,50")

   (setvar "OSMODE" Old_Os)

(princ))

(setq Old_Os (getvar “OSMODE”))
まず、getvarでシステム変数OSMODEの値を得て、変数 Old_Osに入れておきます。

(setvar “OSMODE” 0)
setvarを使い、OSMODEの値を0にします。
これでオブジェクトスナップはオフになりました。

(setvar “OSMODE” Old_Os)
移動コマンドの実行後、setvarでOSMODEの値を、最初に変数 Old_Osに入れた値に戻します。

システム変数を変更するコマンドを作った場合、途中でキャンセルして最後の (setvar “OSMODE” Old_Os) が実行されないとオブジェクトスナップの設定がオフのままになってしまいますので、エラー処理を加えることをおススメします。

システム変数を元の値に戻す、エラー処理の練習問題はこちらです。

関連記事

一時オブジェクトスナップ

システム変数について

コマンド実行

ドリル一覧

Comments