- プログラムの処理に合わせてAutoCADの設定を変更したい
- 手動で設定を変更するのはめんどくさい
- システム変数を操作する方法が知りたい
システム変数でAutoCADの設定を変更したいけど、使い方がわからずお困りではないでしょうか。そもそもシステム変数ってなに?という方も多いはず。
私はAutoLISPを独学で習得し、業務に役立つプログラムの作成を5年以上続けています。数行の簡単なプログラムから1000行以上の複雑なものまで、さまざまなプログラムを作成してきました。
AutoLISPってなに?という方はこちらの記事をご覧ください。
>>AutoCADを自動化したい人必見【AutoLISPを覚えるべきメリット5選】
この記事ではシステム変数を操作するAutoLISP関数をご紹介します。システム変数の操作方法だけでなく、効率化に役立つ便利なシステム変数もご紹介するためAutoCADの作業が楽になります。
システム変数の使い方をマスターして、作業を効率化するプログラム作成に役立てください。
システム変数とはAutoCADのさまざまな設定をコントロールできる特別な変数のこと。値を書き換えることで、対応する設定を変更できます。システム変数の現在値を知りたいときはgetvar、値を書き換える場合はsetvarを使います。
システム変数とはAutoCADをコントロールする特別な変数
システム変数とはコマンドの動作や操作の規定値など、AutoCADの設定を自在にコントロールする特別な変数のこと。AutoCADの各設定に対してさまざまなシステム変数が用意されており、値を書き換えることで対応する設定を変更できます。
たとえば、現在層のシステム変数に別の画層名を入れて現在層を切り替えたり、オブジェクトスナップのシステム変数に数値の0を入れてスナップを解除したりできます。
値を書き換えるだけなので、専用のウィンドウやダイアログを表示せずに設定を変更できるメリットも。システム変数は作業の効率化に役立つ便利なツールです。
中には値を確認するだけで、書き換えができないシステム変数もあります。
システム変数を操作するAutoLISP関数2選
システム変数を操作するAutoLISP関数は次の2つです。
- getvar
- setvar
システム変数の現在値を取得するAutoLISP関数「getvar」
getvarはシステム変数の現在値を取得できるAutoLISP関数です。
構文と引数、返り値は次のようになっています。
たとえば、システム変数「osmode」から現在値を取得するときは次のように書いてください。
(getvar "osmode")
osmodeとはオブジェクトスナップの設定を操作できるシステム変数です。各スナップ点に割り当てられた数値の合計が入っており、その数値からどんな点にスナップするか判別できます。
システム変数の両側には必ず「"」を付けてください。システム変数の値がgetvarの返り値となります。無効な(存在しない)システム変数の場合、返り値はnilになるので注意しましょう。
getvarはAutoCADが今どんな設定になっているかわかる重要な関数です。
システム変数の値を書き換えるAutoLISP関数「setvar」
setvarはシステム変数の値を書き換えるAutoLISP関数です。
構文と引数、返り値は以下のようになっています。
たとえば、システム変数「clayer」に画層名の”layer1”を入れて現在層を切り替える場合は次のように書きましょう。
(setvar "clayer" "layer1")
clayerとは現在層を操作できるシステム変数です。clayerに入っている文字列と同じ名前の画層が現在層になります。
getvarと同じようにシステム変数名の両側には「"」を付けてください。無効な(存在しない)システム変数のときはエラーが出ます。
ちなみに、AutoCADにはsetvarと同じ名前のコマンドが用意されており、システム変数の現在値を一覧で表示できます。
一覧を表示したい場合はまず、コマンドラインにsetvarと入力して「一覧」をクリックしてください。
Enterを押すと以下のようにシステム変数の現在値が一覧で表示されます。
さらにEnterを押すと続きを表示できます。
setvarはシステム変数を使いこなすためには欠かせない関数です。
作業を効率化できる便利なシステム変数37選
作業の効率化に役立つ便利なシステム変数をピックアップしてご紹介します。その他のシステム変数を知りたい方は公式のヘルプをご覧ください。
>>AutoCAD 2023 ヘルプ | Autodesk
システム変数のヘルプは「sysvarmonitor」というコマンドからも確認できます。
>>AutoCAD 2023 ヘルプ | [システム変数をモニタ]ダイアログ ボックス
以下の書籍では900個以上のシステム変数が紹介されているので参考にしてください。
表示に関するシステム変数
- CMDECHO
- command関数を実行中にプロンプトとユーザー入力をエコーバックするか設定できる。
値 | 内容 |
0 | エコーバックしない |
1(初期値) | エコーバックする |
- CMDDIA
- インプレイス テキストエディタや、特定のダイアログ ボックスを表示するか設定できる。
値 | 内容 |
0 | 表示しない |
1(初期値) | 表示する |
関連コマンド: LEARDER、PLOT、TEXT
- FILEDIA
- ファイル選択のダイアログを表示するか設定できる。
値 | 内容 |
0 | ダイアログを表示しない |
1(初期値) | ダイアログを表示する |
- FILLMODE
- ハッチングや幅のあるポリラインを塗りつぶすか設定する。
値 | 内容 |
0 | オブジェクトを塗りつぶさない |
1(初期値) | オブジェクトを塗りつぶす |
関連コマンド:SOLID、PLINE、TRACE、DONUT
- HIGHLIGHT
- 選択したオブジェクトをハイライトするか設定できる。
値 | 内容 |
0 | ハイライトしない |
1(初期値) | ハイライトする |
- MIRRTEXT
- MIRRORコマンドで文字をどのように鏡像するか設定できる。
値 | 内容 |
0(初期値) | 文字の表示方向は変更しないで鏡像にする |
1 | 文字をそのまま鏡像にする |
関連コマンド:MIRROR
- PDMODE
- 点オブジェクトの表示方法を設定する。点の中心と外周のマーク形状を変更できる。
値 | 内容 |
0~4 (初期値:0) | |
32~36 | |
64~68 | |
96~100 |
関連コマンド: POINT、DIVIDE、MEASURE、PTYPE
- PDSIZE
- 点オブジェクトの表示サイズを設定する。
値 | 内容 |
0.0000(初期値) | 図面領域の高さの5%のサイズで点を作成する |
0より大きい実数 | 絶対サイズを指定する |
0より小さい実数 | ビューポート サイズに対する比率(%)で指定する |
関連コマンド: POINT、DIVIDE、MEASURE、PTYPE
- PICKBOX
- オブジェクトを選択するときに表示されるピックボックスのサイズをピクセル単位で変更する。0にするとオブジェクトのプレビューが表示されない。
値 | 内容 |
0~50(初期値 3) | ピックボックスのサイズ |
- PLINEWID
- ポリラインの幅の規定値を設定する。
値 | 内容 |
実数 | ポリラインの幅 |
関連コマンド:PLINE
- QTEXTMODE
- 文字の省略モードをコントロールする。
値 | 内容 |
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度方向を表す角度 |
- 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
図形の情報に関するシステム変数
- 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
- CLAYER
- 現在層を設定する。存在しない画層は設定できない。
値 | 内容 |
画層名 (初期値:"0") | 現在層の名前 |
関連コマンド:LAYER
- LASTPOINT
- 現在の空間で指定された最後の座標を取得できる。キーボードから「@」と入力したときに参照される座標と同じ。
値 | 内容 |
3D座標 (初期値:0.0000,0.0000,0.0000) | 現在の空間で指定された最後の座標 |
- LTSCALE
- すべての線種に対する尺度(グローバル線種尺度)を設定する。
値 | 内容 |
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(初期値) | ペーパー空間の尺度設定に従う |
システム変数を使いこなしてAutoCADの作業を楽にしよう
今回の記事で解説した内容を以下にまとめます。
システム変数の特徴
- システム変数とはAutoCADの設定をコントロールできる特別な変数
- 各設定に対応したさまざまなシステム変数が用意されている
- システム変数の値を書き換えることで対応する設定を変更できる
システム変数を操作するAutoLISP関数のsetvarとgetvarは次のように使用します。
関数 | 構文 | 内容 |
getvar | (getvar "システム変数名") | システム変数の値を取得する |
setvar | (setvar "システム変数名" 値) | システム変数の値を書き換える |
システム変数を上手に活用してAutoCADの効率化に役立ててください。
あなたに代わってAutoLISPプログラムを作成します
AutoLISPで作業を自動化したいけど、プログラミングに詳しくないのでツールが作れずにお悩みの方へ。5年以上のAutoLISP経験を活かしてAutoCADを自動化するツールを作成します。既にお持ちのAutoLISPプログラム修正も対応可能です。
AutoCADの面倒くさい作業から解放されたい方は、下記リンク先の「ココナラ」からお気軽にご相談ください。
>>AutoCADが楽になるプログラムを作成します|ココナラ
最短2日で納品します