【AutoLISP システム変数】setvar getvar

システム変数

システム変数は、AutoCADの設定を決めている変数。

AutoLISP 関数のgetvar ではシステム変数の値を得ることができて、setvarでは変数の値を変更できます。 

システム変数とは

システム変数は、特定のコマンドの動作をコントロールする設定です。

Autodesk Knowledge Network

システム変数は、現在の画層、レイアウト、文字スタイル、寸法設定などなど、AutoCADのいろんな設定を決めている変数です。めちゃくちゃたくさんあります。が、使うのはごく一部です。
この変数を見れば現在の設定がわかるし、この変数を変更すればAutoCADの設定を変更することができます。

システム変数の一覧はAutoCADのヘルプページ (F1で出てくる)にあります。

例 現在の画層設定のシステム変数 ”CLAYER”

現在の画層設定のシステム変数は、”CLAYER” です。この変数の中に、現在の画層の情報があり、この情報を変更すれば現在の画層も変更します。

コマンドラインに、普通のコマンドと同じように、CLAYER と入力してみてください。

このように、通常のコマンドと違い、システム変数には左側に歯車のマークが出てきます。
CLAYER は現在の画層をコントロールするシステム変数なので、ここで別の画層名を入れれば、それが現在の画層になります。

AutoLISP でシステム変数操作

AutoLISP 関数 getvar で情報を取り出す

getvar は、システム変数の値を得る機能を持ったAutoLISP関数です。
引数はシステム変数名です。

(getvar "CLAYER")

で、現在の画層名を得ることができます。
コマンドラインに入力して試してみてください。現在の画層名が戻り値になり、コマンドラインに現れます。

AutoLISP 関数 setvar で情報を上書きする

setvar は、システム変数の値を変更する機能を持ったAutoLISP関数です。
引数はシステム変数名と、上書きして新しく入れたい値です。
例えば、現在の画層を 0 にしたい場合は、

(setvar "CLAYER" "0")

と入力します。現在の画層を 0 以外にして、コマンドラインに入力して試してみてください。
現在の画層が 0 になります。

Jagaimo
Jagaimo

AutoLISPでシステム変数を変更することで、自作コマンド内でAutoCADの各種設定を変更することができるよ。

まとめ

  • システム変数は、AutoCADのシステムをコントロールしている変数。
  • システム変数をそのままコマンドラインに入力すると、変数の値を見たり変更したりできる。
  • AutoLISP関数 getvar はシステム変数の情報を得る機能がある。
  • AutoLISP関数 setvar はシステム変数の情報を上書きする機能がある。

関連記事

コマンドの途中でシステム変数を変更し最後に元の値に戻す。
というプログラムを作った場合、最後に元の値を戻す以前にエラーやキャンセルでコマンドが中断されることも想定する必要があります。