- 手動で設定を変更するのはめんどくさい
- もっと自分好みに画面や作図環境を調整したい
- システム変数ってなに?
システム変数を活用すれば、AutoCADでの作図や表示の設定などを自由にカスタマイズできます。便利なシステム変数がたくさん用意されている一方で、扱い方がわからずお困りの方も多いはず。
私はAutoLISPを独学し、業務の自動化・効率化に役立つプログラムを5年以上作成しています。数行で書けるような簡単なプログラムから、1000行以上の少し複雑なプログラムまで様々なツールを作成してきました。
そもそもAutoLISPってなに?という方はこちらの記事をご覧ください。
>>AutoCADユーザー必見!【AutoLISPを覚えるべきメリット5選】デメリットも解説
当記事ではシステム変数をコントロールするAutoLISP関数について初心者向けに解説します。さらに、作図を効率化できる便利なシステム変数も厳選してご紹介。作図環境をもっと快適にするヒントを見つけたい方は、ぜひ最後までお読みください。
あなたに代わってAutoLISPプログラムを作成します
AutoLISPで作業を自動化したいけど、プログラミングに詳しくないのでツールが作れずにお悩みの方へ。5年以上のAutoLISP経験を活かしてAutoCADを自動化するツールを作成します。既にお持ちのAutoLISPプログラム修正も対応可能です。
AutoCADの面倒くさい作業から解放されたい方は、下記リンク先の「ココナラ」からお気軽にご相談ください。
>>AutoCADが楽になるプログラムを作成します|ココナラ
最短2日で納品します
システム変数とはAutoCADの設定を決める変数

システム変数とはAutoCADの動作や設定を裏で決めている変数です。スナップの種類、文字サイズ、単位の形式など、多くの設定はシステム変数で管理されています。
たとえば、システム変数には以下のようなものがあります。
システム変数 | 内容 |
OSMODE | 端点、交点などのスナップ設定 |
CLAYER | 現在層の画層名の取得や、現在層の変更 |
TEXTSIZE | 既定とする文字の高さ |
LUNITS | 長さの単位(小数・建築) |
ちなみに、通常はオプションなどからダイアログを表示して設定の確認や変更を行いますが、AutoLISPを使えば確認や変更も簡単。
(getvar "OSMODE") ; 今の設定を確認
(setvar "OSMODE" 1) ; スナップを端点に変更

getvarとsetvarについては後述するのでお楽しみに
AutoCADで「思い通りに描ける」「いつも通りの環境で作業できる」ためには、システム変数の使い方を知ることがとても大切です。
システム変数を自在に操るAutoLISP関数2種

今回は以下のAutoLISP関数をご紹介します。どちらもシステム変数を使いこなすためには欠かせない関数です。
- getvar
- setvar

順番に解説していきます。
getvar システム変数の現在値を取得する

getvarは指定したシステム変数の現在値を取得できるAutoLISP関数です。getvarを使いこなすために押さえておきたいポイントは次の3つ。
- 引数にはシステム変数名の文字列を与える
- 指定したシステム変数の現在値をそのまま返す
- 無効なシステム変数名を指定したときはnilを返す
引数にシステム変数名の文字列を与えると、指定したシステム変数の現在値を取得できます。たとえば、現在の画層を取得したいときは以下のように書いてください。
(getvar "CLAYER")
変数を使ってシステム変数名の文字列を間接的に与えることもできます。
(setq sysvar "CLAYER")
(getvar sysvar)
引数の文字列は大文字小文字どちらでもかまいません。下記のような大文字小文字が混ざっている文字列でも返り値は同じになります。
(getvar "Clayer")
(getvar "claYer")

返り値は同じになりますが、わかりやすさを優先して大文字か小文字どちらかに統一することをおすすめします。
getvarはシステム変数の現在値をそのまま返すので、数値の変数なら整数や実数、文字列なら文字列で返します。返り値の形式はシステム変数ごとに変わるので注意してください。
ちなみに、sysvarmonitorコマンドを使うと、リスト内に登録した任意のシステム変数を確認できます。登録されたシステム変数の値が変更されるとコマンドラインに通知が表示されるため、誤った設定変更を防げます。

sysvarmonitorについてもっと知りたい方は公式のヘルプをご覧ください。
>>AutoCAD 2025 ヘルプ|Autodesk|[システム変数をモニタ]ダイアログ ボックス
また、無効な(存在しない)システム変数名を指定した場合、getvarはnilを返します。エラーで処理が止まるわけではないので、取得した値を活用して画層管理を行ったり、設定状況をチェックしたりできます。
(setq currentLayer (getvar "CLAYER"))
(if currentLayer
(princ (strcat "現在の画層は " currentLayer " です。"))
(princ "指定した変数は無効です。")
)

getvarはAutoCADの設定を簡単に知ることができる便利な関数です。
setvar システム変数の現在値を変更する

setvarは指定したシステム変数の現在値を直接変更できるAutoLISP関数です。setvarの特徴は以下のとおり。
- 引数にはシステム変数名の文字列と変更後の値を与える
- 指定したシステム変数の現在値をすぐに変更できる
- システム変数の値を変更できた場合は変更後の値を返す
- 無効なシステム変数名を指定したときはエラーで処理が止まる
setvarでシステム変数の値を変更するには、システム変数名の文字列と変更後の値が必要です。たとえば現在の画層をLayer1に変更したい場合は、以下のように記述してください。
(setvar "CLAYER" "Layer1")
setvarは指定したシステム変数の値をすぐに変更するため、上記の1行を実行した直後に現在層がLayer1に切り替わります。

意図しないタイミングで値が変わらないように、setvarを実行するタイミングには注意してください。
ちなみに、getvarと同様に引数は変数で与えることもできます。
(setq sysvar "CLAYER")
(setq layername "Layer1")
(setvar sysvar layername)
変更が正常に行われると変更後の値を返すため、以下のように後の処理で値を再利用することも可能。
(setq result (setvar "OSMODE" 1))
(princ (strcat "OSMODEの設定値を " (itoa result) " に変更しました。"))
無効な(存在しない)システム変数名や対応していない値を与えられた場合は、エラーを出して処理を止めてしまいます。エラー処理で回避する方法もありますが、まずはシステム変数の名前と値の形式を確認することが大切です。
扱いたいシステム変数について知りたい方は公式のヘルプで検索してみてください。
>>AutoCAD 2025 ヘルプ|Autodesk

setvarはAutoCADの設定を簡単に変更できるので、役立つ場面の多い関数です。
AutoCADの効率化に役立つシステム変数42選

作図の効率化に役立つシステム変数をご紹介します。先に解説したsetvarとgetvarを使えば設定変更も簡単。ちょっとした工夫で作業効率がぐんとアップしますので、ぜひ活用してみてください。
① 画面表示と操作
CMDECHO
command関数を実行中にプロンプトとユーザー入力をエコーバックするか設定できる。
値 | 内容 |
0 | エコーバックしない |
1(初期値) | エコーバックする |
command関数についてはこちらの記事で解説していますので参考にしてください。
>>【作図を自動化】コマンドを実行するAutoLISP関数「command」を解説
CMDDIA
インプレイス テキストエディタや、特定のダイアログ ボックスを表示するか設定できる。
値 | 内容 |
0 | 表示しない |
1(初期値) | 表示する |
関連コマンド: LEARDER、PLOT、TEXT
FILEDIA
ファイル選択のダイアログを表示するか設定できる。
値 | 内容 |
0 | ダイアログを表示しない |
1(初期値) | ダイアログを表示する |
FILLMODE
ハッチングや幅のあるポリラインを塗りつぶすか設定する。
値 | 内容 |
0 | オブジェクトを塗りつぶさない |
1(初期値) | オブジェクトを塗りつぶす |
関連コマンド:SOLID、PLINE、TRACE、DONUT
HIGHLIGHT
選択したオブジェクトをハイライトするか設定できる。
値 | 内容 |
0 | ハイライトしない |
1(初期値) | ハイライトする |
LASTPOINT
現在の空間で指定された最後の座標を取得できる。キーボードから「@」と入力したときに参照される座標と同じ。
値 | 内容 |
3D座標 (初期値:0.0000,0.0000,0.0000) | 現在の空間で指定された最後の座標 |
PICKBOX
オブジェクトを選択するときに表示されるピックボックスのサイズをピクセル単位で変更する。0にするとオブジェクトのプレビューが表示されない。
値 | 内容 |
0~50の整数 (初期値 3) | ピックボックスのサイズ |
QTEXTMODE
文字の省略モードをコントロールする。再作図(REGENコマンド)で設定が反映される。
値 | 内容 |
0(初期値) | 文字の省略モードをオフにする。文字が表示される。 |
1 | 文字の省略モードがオンになる。 文字の代わりにボックスが表示される。 |

② 点・線・スナップ設定
PDMODE
点オブジェクトの表示方法を設定する。点の中心と外周のマーク形状を変更できる。
値 | 内容 |
0~4 (初期値:0) | ![]() |
32~36 | ![]() |
64~68 | ![]() |
96~100 | ![]() |
関連コマンド: POINT、DIVIDE、MEASURE、PTYPE
PDSIZE
点オブジェクトの表示サイズを設定する。
値 | 内容 |
0.0000(初期値) | 図面領域の高さの5%のサイズで点を作成する |
0より大きい実数 | 絶対サイズを指定する |
0より小さい実数 | ビューポート サイズに対する比率(%)で指定する |
関連コマンド: POINT、DIVIDE、MEASURE、PTYPE
PLINEWID
ポリラインの幅の規定値を設定する。
値 | 内容 |
実数 | ポリラインの幅 |
関連コマンド:PLINE
LTSCALE
図面全体の線種尺度(グローバル線種尺度)を設定する。作成される図形にはLTSCALEとCELTSCALEの値をかけた尺度が適用される。
値 | 内容 |
0より大きい実数 (初期値:1.0000) | 図面全体の線種尺度 (グローバル線種尺度) |
CELTSCALE
新しく作成する図形の線種尺度を設定する。作成される図形にはLTSCALEとCELTSCALEの値をかけた尺度が適用される。
値 | 内容 |
0より大きい実数 (初期値:1.0000) | 新しく作成する図形の線種尺度 |
OSMODE
オブジェクトスナップを設定する。値を合計することで複数のスナップ対象を設定できる。
値 | 内容 |
0 | 解除 |
1 | 端点 |
2 | 中点 |
4 | 中心 |
8 | 点 |
16 | 四半円点 |
32 | 交点 |
値 | 内容 |
64 | 挿入基点 |
128 | 垂線 |
256 | 接線 |
512 | 近接点 |
1024 | 図心 |
2048 | 仮想交点 |
4096 | 延長 |
8192 | 平行 |

7を設定した場合は端点、中点、中心がスナップの対象になります。
PSLTSCALE
ペーパー空間ビューポートに表示される、図形の線種尺度を設定する。
値 | 内容 |
0 | 図形が存在する空間の尺度設定に従う |
1(初期値) | ペーパー空間の尺度設定に従う |
SNAPBASE
現在のビューポートでのスナップとグリッドの原点を設定する。
値 | 内容 |
2D座標 (初期値:0.0000,0.0000) | ビューポートでのスナップ原点 |
SNAPUNIT
現在のビューポートでのスナップ間隔(X方向とY方向)を設定する。
値 | 内容 |
2D座標 | ビューポートでのX方向とY方向のスナップ間隔 |
③ 図面範囲
EXTMAX
オブジェクト範囲の右上座標が格納される。読み込み専用なので値の書き換えはできない。
値 | 内容 |
3D座標 | オブジェクト範囲の右上座標 |
EXTMIN
オブジェクト範囲の左下座標が格納される。 読み込み専用なので値の書き換えはできない。
値 | 内容 |
3D座標 | オブジェクト範囲の左下座標 |
LIMMAX
図面範囲の右上座標が格納される。ペーパー空間がアクティブで、用紙の背景または余白が表示されている場合は読み込み専用。
値 | 内容 |
2D座標 | 図面範囲の右上座標 |
関連コマンド:LIMITS
LIMMIN
図面範囲の左下座標が格納される。ペーパー空間がアクティブで、用紙の背景または余白が表示されている場合は読み込み専用。
値 | 内容 |
2D座標 | 図面範囲の左下座標 |
関連コマンド:LIMITS
④ 単位と角度設定
ANGBASE
現在のユーザー座標系での0度方向を設定する。
値 | 内容 |
0~360 (初期値 0.0000) | 0度方向を表す角度 |
関連コマンド:UNITS
ANGDIR
角度を測るときの正となる方向を設定する。
値 | 内容 |
0(初期値) | 反時計回りを正の方向とする |
1 | 時計回りを正の方向とする |
関連コマンド:UNITS
AUNITS
角度の単位を設定する。
値 | 内容 |
0(初期値) | 十進数 |
1 | 度 / 分 / 秒 |
2 | グラジエント |
3 | ラジアン |
4 | 測量用単位 |
関連コマンド:UNITS
AUPREC
角度の小数点以下を何桁表示するか設定できる。
値 | 内容 |
0~8の整数 (初期値:0) | 角度を表示するときの少数点以下の桁数 |
関連コマンド:UNITS
LUNITS
長さの単位を設定する。
値 | 内容 |
1 | 指数表記 |
2(初期値) | 十進数 |
3 | 工業図面表記 |
4 | 建築図面表記 |
5 | 分数表記 |
関連コマンド:UNITS
LUPREC
長さの小数点以下を何桁表示する設定できる。
値 | 内容 |
0~8の整数 (初期値:4) | 長さを表示するときの少数点以下の桁数 |
⑤ 面取り・フィレット
CHAMMODE
面取りを作成するときの入力方法を設定する。
値 | 内容 |
0(初期値) | 2つの面取り長さを指定する |
1 | 面取り後の長さと角度を指定する |
関連コマンド:CHAMFER
CHAMFERA
CHAMMODEが0に設定されているとき、1本目の面取り長さを設定する。
値 | 内容 |
実数 (初期値:0.0000) | 1本目の面取り長さ |
関連コマンド:CHAMFER
CHAMFERB
CHAMMODEが0に設定されているとき、2本目の面取り長さを設定する。
値 | 内容 |
実数 (初期値:0.0000) | 2本目の面取り長さ |
関連コマンド:CHAMFER
CHAMFERC
CHAMMODEが1に設定されているとき、面取り後の長さを設定する。
値 | 内容 |
実数 (初期値:0.0000) | 面取り後の長さ |
関連コマンド:CHAMFER
CHAMFRED
CHAMMODEが1に設定されているとき、面取りの角度を設定する。
値 | 内容 |
実数 (初期値:0.0000) | 面取りの角度 |
関連コマンド:CHAMFER
FILLETRAD
FILLETコマンドで使用する円弧の半径を設定する。
値 | 内容 |
実数 (初期値:0.0000) | FILLETコマンドで使用する円弧の半径 |
関連コマンド:FILLET
⑥ 画層と現在設定
CLAYER
現在層を設定する。存在しない画層は設定できない。
値 | 内容 |
画層名 (初期値:"0") | 現在層の名前 |
関連コマンド:LAYER
CELCOLOR
作図する図形の色を設定する。
値 | 内容 |
BYLAYER(初期値) | 画層の色に従う |
BYBLOCK | ブロックの色に従う |
1~255の整数 | カラーインデックス |
000,000,000~255,255,255 | RGB値またはHSL値 |
red、yellow、green、 cyan、blue、magenta、while | あらかじめ設定されている色の名前 (カラーインデックスの1~7) |
関連コマンド:COLOR
CELTYPE
作図する図形の線種を設定する。ロードしていない線種は設定できない。
値 | 内容 |
線種名 (初期値:BYLAYER) | 作図する図形の線種名 |
関連コマンド:LINETYPE
DIMLAYER
新しい寸法が作成される画層を指定する。ピリオド(.) 以外の値を指定した場合は、現在層(システム変数 CLAYER)より優先され、存在しない画層を指定したときは対象の画層が自動的に作成される。
値 | 内容 |
画層名 ※初期値:ピリオド(.) (現在層) | 寸法を作成する画層 |
HPLAYER
新しく作成するハッチングおよび塗り潰しの画層を指定する。ピリオド(.) 以外の値を指定した場合は現在層(システム変数 CLAYER)より優先され、存在しない画層を指定したときは対象の画層が自動的に作成される。
値 | 内容 |
画層名 ※初期値:ピリオド(.) (現在を使用) | ハッチングおよび塗り潰しを作成する画層 |
TEXTLAYER
新しく作成する文字オブジェクトおよび新規マルチテキストオブジェクトの画層を指定する。ピリオド(.) 以外の値を指定した場合は現在層(システム変数 CLAYER)より優先され、存在しない画層を指定したときは対象の画層が自動的に作成される。
値 | 内容 |
画層名 ※初期値:ピリオド(.) (現在を使用) | 文字オブジェクトおよびマルチテキストオブジェクトを作成する画層 |
⑦ その他
COMPAREPROPS
COMPAREコマンドで比較対象に含めるオブジェクトプロパティを指定する。値を合計することで複数のオブジェクトプロパティを指定できる。
値 | 内容 |
0 | オブジェクトプロパティの変更は図面比較に含めない |
1 | 色 |
2 | 画層 |
4 | 線種 |
8 | 線種尺度 |
16 | 線の太さ |
32 | 透過性 |
64 | 厚さ |

7を指定した場合は色、画層、線種が比較対象に追加されます。
関連コマンド:COMPARE
MIRRTEXT
MIRRORコマンドで文字をどのように鏡像するか設定できる。
値 | 内容 |
0(初期値) | 文字の表示方向は変更しないで鏡像にする |
1 | 文字をそのまま鏡像にする |

関連コマンド:MIRROR
TDINDWG
直前の保存操作から次の保存操作までの総経過時間(日数)が格納される。読み込み専用。
値 | 内容 |
実数 | 総経過時間を日数で表した実数 |

秒数を求めるときは小数点以下の値に86400をかけてください。
AutoLISP×システム変数で効率化を始めよう

今回はご紹介したgetvarとsetvarについて以下にまとめます。
関数 | 内容 | 使用例 |
getvar | システム変数の現在値を取得する | (getvar "CLAYER") → 現在層を取得 |
setvar | システム変数の現在値を変更する | (setvar "CLAYER" "layer1") → 現在層を"layer1"に変更 |
システム変数を変更したり、現在の設定を確認したりすることで、作図の効率や快適さが大きく変わります。システム変数を上手に活用して、もっと自分に合ったAutoCADの作図環境を整えてみてください。