AutoLISP入門

【AutoCADの作業効率アップ】システム変数を操作するAutoLISP関数2選

※当サイトではアフィリエイトおよびGoogle Adsenseの広告を掲載しています。

system-variable_eyecatch
  • プログラムの処理に合わせてAutoCADの設定を変更したい
  • 手動で設定を変更するのはめんどくさい
  • システム変数を操作する方法が知りたい

システム変数でAutoCADの設定を変更したいけど、使い方がわからずお困りではないでしょうか。そもそもシステム変数ってなに?という方も多いはず。

はこ
はこ

私はAutoLISPを独学で習得し、業務に役立つプログラムの作成を5年以上続けています。数行の簡単なプログラムから1000行以上の複雑なものまで、さまざまなプログラムを作成してきました。

AutoLISPってなに?という方はこちらの記事をご覧ください。
>>AutoCADを自動化したい人必見【AutoLISPを覚えるべきメリット5選】

この記事ではシステム変数を操作するAutoLISP関数をご紹介します。システム変数の操作方法だけでなく、効率化に役立つ便利なシステム変数もご紹介するためAutoCADの作業が楽になります。

システム変数の使い方をマスターして、作業を効率化するプログラム作成に役立てください。

システム変数とはAutoCADのさまざまな設定をコントロールできる特別な変数のこと。値を書き換えることで、対応する設定を変更できます。システム変数の現在値を知りたいときはgetvar、値を書き換える場合はsetvarを使います。

システム変数とはAutoCADをコントロールする特別な変数

system-variable_image1

システム変数とはコマンドの動作や操作の規定値など、AutoCADの設定を自在にコントロールする特別な変数のこと。AutoCADの各設定に対してさまざまなシステム変数が用意されており、値を書き換えることで対応する設定を変更できます。

たとえば、現在層のシステム変数に別の画層名を入れて現在層を切り替えたり、オブジェクトスナップのシステム変数に数値の0を入れてスナップを解除したりできます。

値を書き換えるだけなので、専用のウィンドウやダイアログを表示せずに設定を変更できるメリットも。システム変数は作業の効率化に役立つ便利なツールです。

はこ
はこ

中には値を確認するだけで、書き換えができないシステム変数もあります。

システム変数を操作するAutoLISP関数2選

system-variable_image2

システム変数を操作するAutoLISP関数は次の2つです。

  • getvar
  • setvar

システム変数の現在値を取得するAutoLISP関数「getvar」

getvarはシステム変数の現在値を取得できるAutoLISP関数です。

構文と引数、返り値は次のようになっています。

system-variable_image2-1

たとえば、システム変数「osmode」から現在値を取得するときは次のように書いてください。

(getvar "osmode")

osmodeとはオブジェクトスナップの設定を操作できるシステム変数です。各スナップ点に割り当てられた数値の合計が入っており、その数値からどんな点にスナップするか判別できます。

システム変数の両側には必ず「"」を付けてください。システム変数の値がgetvarの返り値となります。無効な(存在しない)システム変数の場合、返り値はnilになるので注意しましょう。

はこ
はこ

getvarはAutoCADが今どんな設定になっているかわかる重要な関数です。

システム変数の値を書き換えるAutoLISP関数「setvar」

setvarはシステム変数の値を書き換えるAutoLISP関数です。

構文と引数、返り値は以下のようになっています。

system-variable_image2-2

たとえば、システム変数「clayer」に画層名の”layer1”を入れて現在層を切り替える場合は次のように書きましょう。

(setvar "clayer" "layer1")

clayerとは現在層を操作できるシステム変数です。clayerに入っている文字列と同じ名前の画層が現在層になります。

getvarと同じようにシステム変数名の両側には「"」を付けてください。無効な(存在しない)システム変数のときはエラーが出ます。

ちなみに、AutoCADにはsetvarと同じ名前のコマンドが用意されており、システム変数の現在値を一覧で表示できます。

一覧を表示したい場合はまず、コマンドラインにsetvarと入力して「一覧」をクリックしてください。

system-variable_image2-3

Enterを押すと以下のようにシステム変数の現在値が一覧で表示されます。

system-variable_image2-4

さらにEnterを押すと続きを表示できます。

system-variable_image2-5
はこ
はこ

setvarはシステム変数を使いこなすためには欠かせない関数です。

作業を効率化できる便利なシステム変数37選

system-variable_image3

作業の効率化に役立つ便利なシステム変数をピックアップしてご紹介します。その他のシステム変数を知りたい方は公式のヘルプをご覧ください。
>>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文字をそのまま鏡像にする
system-variable_image3-mirrtext-1

関連コマンド:MIRROR

PDMODE
点オブジェクトの表示方法を設定する。点の中心と外周のマーク形状を変更できる。
内容
0~4
(初期値:0)
system-variable_image3-pdmode-1
32~36system-variable_image3-pdmode-2
64~68system-variable_image3-pdmode-3
96~100system-variable_image3-pdmode-4

関連コマンド: 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の作業を楽にしよう

system-variable_image-last

今回の記事で解説した内容を以下にまとめます。

システム変数の特徴

  • システム変数とはAutoCADの設定をコントロールできる特別な変数
  • 各設定に対応したさまざまなシステム変数が用意されている
  • システム変数の値を書き換えることで対応する設定を変更できる

システム変数を操作するAutoLISP関数のsetvarとgetvarは次のように使用します。

関数構文内容
getvar(getvar "システム変数名")システム変数の値を取得する
setvar(setvar "システム変数名" 値)システム変数の値を書き換える
はこ
はこ

システム変数を上手に活用してAutoCADの効率化に役立ててください。

AutoLISPの基礎を書籍で学びたい方には「AutoCAD 自動化攻略読本」がおすすめ。初心者向けに解説されており、AutoLISP以外の自動化方法も学べるお得な一冊。とにかくAutoCADで楽をしたい方はぜひご覧ください。

>>【AutoLISPの教科書】AutoCAD自動化攻略読本のメリット5選|おすすめ活用法も解説

-AutoLISP入門

AutoLISPのおすすめ書籍はコチラ
AutoLISPのおすすめ書籍はコチラ