【AutoLISP 初めの一歩】変数って?-関数 setqの使い方

初めの一歩

情報に名前を付けて、その後、名前だけでその情報の代わりに使うことができるよ。

変数とは

変数、漢字の”数”がつきますが、これも関数と同じく数字のことではありません。

変数 を英語に訳すと、Variableです。
変わる、変えられる、変動できる、、、、などの意味がある単語ですね。

シンボル、つまり変数の名前を決めて、そのシンボルに文字列や数字などの情報を入れておけます。
その後、その情報を使いたいときには、変数名を使えばその情報の代わりになります。
変数名に入れる値、つまり文字列や数字は変更できるので、変えられる、変動できるということで変数( Variable) です。

例えば

数字の1の値は常に1です。
変えることはできません。なので変数ではありません。

しかし、変数の値は変えることができます。
例えば変数のシンボルをXとして、

Jagaimo
Jagaimo

Xには数字の10を入れたよ!

と宣言すれば、その後、Xの値は10としてAutuCADは作業してくれます。
長さXの線を引くとか、同じ図形をX個作るとか、AutoLISPを使って指示できます。

今度は、

Jagaimo
Jagaimo

Xには文字列の”リンゴ”をいれたよ!

と宣言をすれば、その後、Xの値は”リンゴ”になります。
AutoCADに、Xをテキストにして挿入して、Xと言う名前のレイアウトタブを作って!など指示できます。

このように、変数Xの値は、10になったり”リンゴ”になったり、宣言すれば、値は何度でも変わります。

関数 setq

AutoLISPでプログラミングをするにあたり、一番よく使う関数が、このsetq だと思います。

新しい関数を見かけたら、一度、AutoCADの公式ヘルプページで確認しましょう。

setq (AutoLISP)
シンボル(1 つまたは複数)に式の値を代入します

AutoCAD 公式ヘルプページ

正直、よくわからないことが多いとは思いますが、やはり公式ページが一番信頼できる情報です。

setq は、変数を定義する機能があります。
関数を使うときは、必ず(で始まり、)で終わります。どの関数でも同じです。

この setq を使うのに必要な情報(引数)は、

  • 変数名(シンボル)
  • 後で使いたい情報

です。

(setq 変数名 変数名に入れたい情報)

という形で使います。

例えば、先ほどの、

Jagaimo
Jagaimo

Xには数字の10を入れたよ!

では、変数名はX、後で使いたい情報は10です。
これをAutoCADが理解できるようにAutoLISP言語に翻訳すると、

Jagaimo
Jagaimo

(setq X 10)

になります。

Jagaimo
Jagaimo

Xには文字列の”リンゴ”をいれたよ!

これは、

Jagaimo
Jagaimo

(setq X “リンゴ”)

となります。

気を付けなければいけないのは、同じ変数名を使うと、上書きされます。

(setq X 1)
(setq X “リンゴ”)

この場合だと、先に入っていた「Xの値は1」という情報は消えて、「Xの値は”リンゴ”」になります。
どちらの情報も変数として後から使いたいときは、変数名を変えて、

(setq X 1)
(setq Y “リンゴ”)

というようにしましょう。これで、Xは1、Yは”リンゴ”になりました。

ちなみに、一度にいくつかの変数を定義したいときは、変数名とそこに入れたい情報を並べて、

(setq X 1 Y “リンゴ”)

という形にもできます。

分けても一つにしても結果は同じなので、どちらでもわかりやすい方法を使って下さい。

変数の中身の確認の仕方 !

変数にどんな値が入っているのか確認する方法です。
!変数名
エクスクラメーションマーク、通称びっくりマークと変数をコマンドラインに入力します。

例えば

(setq X 1)
(setq Y "リンゴ")

変数XとYに情報を入れました。

その後、!X とコマンドラインに入れると1が、!Y と入れると”リンゴ”が出てきます。

nil 空っぽ

エクスクラメーションマークを付けて調べた変数に、何も情報が入っていない場合は、AutoCADはnil を戻します。

変数を消すには

変数を保存するようにプログラムを組んでいなければ、ファイルを閉じれば変数情報は消えます

その場で消したい場合は、何もない。と言う意味のnilを入れれば、情報はnilに上書きされて消えます。変数XとYの変数情報を消したいときは、

(setq X nil Y nil)

これでどちらの変数も空っぽになりました。

まとめ

  • 変数はシンボル(変数名)に後から使う情報を入れておけるもの。
  • 入れた後は、変数名だけでその情報の代わりに使える。
  • setq は、変数名に情報を入れる機能を持ったAutoLISP関数
  • 同じ変数名を使うと、情報は上書きされる。
  • (setq X 1)(setq Y”リンゴ”)(setq X 1 Y “リンゴ”)と書いても同じ。
  • !変数名で、変数の中の情報を確認できる。
  • nil は空っぽという意味。その変数には何も情報が無い。
  • 変数は保存するようにプログラムを組んでなければファイルを閉じれば消える。
  • (setq 変数名 nil) で、情報をnil に上書きしても消える。

関連記事

空っぽという意味のnil これは はい/いいえ 二択の返事をコンピューターがするときの「いいえ」という意味もあります。

変数をパソコンに保存する方法について。

Comments