AutoLISP関数 関数解説

AutoLISPの必須スキル!変数に値を入れる関数「setq」の使い方|注意点も解説

setq_eyecatch
  • AutoLISPで変数に値を入れるにはどうするの?
  • setqの使い方を知りたい
  • 変数を使うメリットってなに?

AutoLISPを使いこなすためには基本を身に付ける必要があります。中でも変数の使い方はAutoLISPを習得しようとしている人にとって、最初に覚えるべき重要な内容です。

そもそもAutoLISPってなに?という方はこちらの記事をご覧ください。
>>AutoCADユーザー必見【AutoLISPを覚えるべきメリット5選】デメリットも解説

はこ
はこ

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

この記事では変数に値を入れるAutoLISP関数「setq」の使い方を解説します。

変数を使うメリットやAutoLISPで変数を使うときの注意点も解説するので、だれでも変数に対する理解が深まります。setqの使い方をマスターして、AutoLISPのプログラム作成に役立ててください。

変数とはプログラムの処理に必要な値を入れる箱のこと。変数のメリットはプログラムをわかりやすくしたり、修正を楽にしたりする点にあります。

setqに変数名と値を書くと、その変数に値を入れることができます。変数の扱い方にはAutoLISP独自のルールがあるので注意してください。

setqの基本的な使い方

setq_image1

プログラムの作成には変数が欠かせません。変数とは数値や文字列などプログラムの処理に必要な値を入れる箱のこと。

setq_image1-1

変数に値を入れるためには専用の処理が必要です。AutoLISPでは「setq」という関数を使って変数に値を入れます。

setqの基本的な使い方は次のとおり。

setq_image1-2

変数名の右隣に、変数へ入れたい値を書きます。変数名と値の間は半角スペースか改行で区切ってください。最後の変数に入れた値がsetqの返り値となります。

はこ
はこ

返り値とは、式や関数から出てくる値のことです。

他のプログラミング言語では「=」を使って変数に値を入れます。AutoLISPでは値同士が等しいか比較するときに「=」を使うので覚えておきましょう。
>>数値の大小関係を判定!AutoLISPの比較演算を解説

setqの使用例

変数radiusに数値の10を入れる場合は次のように書きます。

;変数radiusに数値の10を入れる
(setq radius 10)

変数名と値のペアを複数並べれば、1つの式でそれぞれの変数に値を入れることも。以下の場合は変数radiusに数値の10、変数diameterに数値の20が入ります。

;変数radiusと変数diameterのそれぞれに数値を入れる
(setq radius 10 diameter 20)
はこ
はこ

setqはAutoLISPのプログラム作成に欠かせない重要な関数なので、使い方をしっかり覚えてください。

変数のメリット3選

setq_image2

setqを上手に活用するためには、変数のメリットを理解しておく必要があります。変数のメリットは次の3つです。

  • プログラムが読みやすくなる
  • 値を繰り返し使える
  • メンテナンスしやすくなる

プログラムが読みやすくなる

変数を使うとプログラムが読みやすくなります。変数には個別の名前(変数名)を付けられるので、どんな値が入っているかわかりやすくできます。

次のように、入っている値が想像しやすい変数名を付けましょう。

変数名変数に入れる値
circle_center円の中心座標
rectang_area長方形の面積
new_layer1新規作成した画層の1つ目

変数名が思いつかないときは以下のサイトを利用してください。入力した日本語から変数名を提案してくれます。
>>codic: プログラマーのためのネーミング辞書

はこ
はこ

変数を使うことで他人にも理解してもらえるプログラムになります。

値を繰り返し使える

変数に入れた値はプログラムの中で繰り返し使えます。変数は一時的に値を保管しておくことができるからです。上書きされないかぎり、変数に入れた値は変わったり消えたりしません。

何度も使う値を変数に入れておけば、値を直接書く手間がはぶけるのでプログラムの作成が楽になります。

たとえば「~は好きですか」という文章を作る場合、以下のように変数を使います。

(setq tmp "は好きですか")
(print (strcat "リンゴ" tmp))
(print (strcat "みかん" tmp))

「好きですか」の部分を変数に入れて、質問したい単語とつなぎ合わせることで同じ文字列を入力する手間がはぶけます。

strcatとは文字列同士をつなぎ合わせる関数のこと。ユーザーへのメッセージを作るときに役立ちます。
>>文字列を使いこなそう!文字列を操作するAutoLISP関数8選

変数は効率よくプログラムを作成できる便利なツールです。

メンテナンスしやすくなる

変数を使ったプログラムはメンテナンスがしやすいです。

メンテナンス

メンテナンスとはプログラムの不具合を修正したり、新しい機能を追加したりする作業のこと。プログラムの品質や安定性を保つための重要な作業です。

変数が使われていると、変数名を手がかりに不具合の原因が特定しやすくなります。同じ変数を一度に書き換えられので修正も簡単です。

たとえば、次のような円の半径から直径と面積を求めるプログラムがあるとしましょう。

(setq radius 10)
(setq diameter (* 2 radius))
(setq circle_area (* pi radius radius))

変数radiusの値が間違っていたとき、変数radiusの値だけ修正すれば2行目と3行目の式も同時に修正できます。

はこ
はこ

piは円周率を表す特殊な値です。

修正しやすいプログラムは長く使い続けられるため、作業の効率化に長く役立ちます。

AutoLISPで変数を使うときの3つの注意点

setq_image3

AutoLISPはAutoCAD専用のプログラミング言語なので、他の言語とは仕様が異なります。特に変数を使うときは次の3つに注意しましょう。

  • 変数の型宣言が不要
  • 変数名の決め方に独自のルールがある
  • 中身がない変数はnilを返す

変数の型宣言が不要

AutoLISPの変数は型宣言が要りません。

型宣言

変数にどんな種類(型)の値を入れるか、あらかじめ宣言することを型宣言と呼びます。変数の型と合わない値を入れようするとエラーが出るので、不具合を見つけやすくなります。

AutoLISPの変数は入れた値によって型が決まります。実数を入れたら実数型、文字列を入れたら文字列型へ変数の型が自動的に変わります。

間違った値が変数に入ってもエラーは出ないので注意してください。

はこ
はこ

変数の型を知りたいときは「type」という関数を使いましょう。
>>ヘルプ:type (AutoLISP)

変数名の決め方に独自のルールがある

AutoLISPでは変数名の決め方に独自のルールがあります。プログラムの処理に必要な記号など、変数に使えない文字があるからです。

たとえば、以下の記号は変数名に使用できません。

  • ( 左丸かっこ
  • ) 右丸かっこ
  • . ピリオド
  • ' クォーテーション(アポストロフィ)
  • " ダブルクォーテーション
  • ; セミコロン

「123」のような数字だけの変数名も使えません。アルファベットの大文字と小文字は区別されないので注意してください。

はこ
はこ

漢字やひらがなも変数名に使えますが、不具合の原因になるのでおすすめしません。

ルールに従ってわかりやすい変数名を付けましょう。

値がない変数はnilを返す

値がなにも入っていない変数はnilを返します。

nil

nilとはLISPと呼ばれるプログラミング言語で使われる、値が何もない状態を表す特別な値のこと。nilは真か偽(合っているかそうでないか)の偽を表すときにも使います。
>>【初心者向け】処理を自由に切り替えよう!条件分岐のAutoLISP関数2選

AutoLISPはLISPの一種なのでLISPの仕様が適用されます。特に繰り返しの処理では、変数の初期値が0や空白でないことに注意してください。

変数で数値の足し算を繰り返すとき、nilと数値では計算ができないためエラーが出ます。繰り返しの前に変数へ数値を入れるなど、エラーを出さない工夫が必要です。

変数を使うときはあらかじめ用途を決めておきましょう。

setqをマスターしてAutoLISPの基礎を固めよう

setq_image-last

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

変数とはプログラムの処理に必要な値を入れる箱のこと。AutoLISPではsetqという関数を使って値を変数に入れます。

setqの使い方は以下のとおり。

;変数radiusに数値の10を入れる
(setq radius 10)

;変数radiusと変数diameterのそれぞれに数値を入れる
(setq radius 10 diameter 20)

setqを上手に活用するためには、変数のメリットを理解しておくことが重要です。変数には次のようなメリットがあります。

  • プログラムが読みやすくなる
  • 値を繰り返し使える
  • メンテナンスしやすくなる

AutoLISPで変数を使うときには以下の3つに注意しましょう。

  • 変数の型宣言が不要
  • 変数名の決め方にはAutoLISP独自のルールがある
  • 中身がない変数はnilを返す

setqはAutoLISPの基礎であり、プログラムの作成に欠かせない重要な関数です。

はこ
はこ

使い方を覚えて実用的なプログラムの作成に役立てください。

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

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

AutoCADが楽になるプログラムを作成します AutoCADを効率化して面倒な作業から解放されましょう!

-AutoLISP関数, 関数解説