オブジェクトスナップのシステム変数 “OSMODE” を変更して、お気に入りのオブジェクトスナップ設定に変更するコマンドを作ります。
基礎知識
システム変数 ”OSMODE”
“OSMODE”は、オブジェクトスナップ設定をコントロールするシステム変数です。
ビットコード
“OSMODE”の値は「ビットコード」というものが使われています。
欲しいオブジェクトスナップの以下の表の番号を足したものが、そのオブジェクトスナップ設定の値です。
例えば、端点と中心だけがオンになっている状態にしたいのであれば、1 + 4 で、システム変数 ”OSMODE”の値を 6 にすれば、オブジェクトスナップ設定は、端点と中心だけになります。
0 | NON[解除] |
1 | END[端点] |
2 | MID[中点] |
4 | CEN[中心] |
8 | NOD[点] |
16 | QUA[四半円点] |
32 | INT[交点] |
64 | INS[挿入基点] |
128 | PER[垂線] |
256 | TAN[接線] |
512 | NEA[近接点] |
1024 | GCE[図芯] |
4096 | APP[仮想交点] |
8192 | PAR[平行] |
16384 | 現在の定常オブジェクト スナップを無効にします。 |
AutoLISP プログラム
(defun c:FavoriteSnap ()
(setvar "OSMODE" 231)
(princ))
AutoLISP の説明
お気に入り設定の例として、
- 1 ENDEND[端点]
- 2 MID[中点]
- 4 CEN[中心]
- 32 INT[交点]
- 64 INS[挿入基点]
- 128 PER[垂線]
を設定する自作コマンドを作りました。
数字の合計は、231です。
(setvar “OSMODE” 231) で、OSMODEを上書きすることで、オブジェクトスナップの設定が変わりました。
ちなみに、(setvar “OSMODE” 231) と書いても、 (setvar “OSMODE” (+ 1 2 4 32 34 128)) と書いても同じことです。わかりやすい方を選んで下さい。
Jagaimo
ビットコード調べて計算が面倒な場合は、まず、オブジェクトスナップを好きな設定にして、OSMODE とコマンドラインに入力すれば、その設定のビットコードが出てきます。
まとめ
- オブジェクトスナップ設定をコントロールするシステム変数は”OSMODE”
- “OSMODE”はビットコードと呼ばれる数値が使われている。
- 必要なオブジェクトスナップのビットコードを足したものを使う。
- OSMODEとコマンドラインに入力すれば、現在の設定が出てくる。
- AutoLISPでは、(setvar “OSMODE” ビットコード) でオブジェクトスナップ設定変更できる。
関連記事
合算されたビットコードに、特定の数字が含まれているかどうかを調べる関数 logand を使って、特定のオブジェクトスナップを切り替えるコマンドについての記事です。
Comments