AutoLISP入門 関数紹介

【入門】AutoLISP初心者が最初に覚えるべき関数5種!

基礎

こんにちは!はこです。
AutoLISPを独学し、5年以上業務で使用しています。

今回の記事ではAutoLISP初心者が最初に覚えるべき関数について解説していきます。

AutoCADのコマンドを実行して作図する、データを変数に格納して数値の計算をするなど、単純な動作であれば今回ご紹介する関数をコマンドラインへ記述することで実現可能です。ちなみに、コマンドラインというのはAutoCAD下部にある、表示または入力を行う部分のことです。

単純な動作の効率化であっても積み重ねることで大幅な改善につながります。今よりもAutoCADの作業を楽にしたい方はぜひご覧ください。

【入門】AutoLISP初心者が最初に覚えるべき関数5種!

five

これからAutoLISPでAutoCADを自動化、効率化しようとしている方にまず覚えていただきたい関数は次の5つです。それぞれの特徴と使い方について、1つずつご紹介していきます。

①AutoCADコマンドの呼び出し command

commandの特徴は?

  • AutoCADのコマンドを自動で実行できる
  • 普段の作業を自動化しやすい
  • AutoLISPのすごさを体感しやすい

commandは「circle」や「line」などAutoCADの標準コマンドを実行する関数です。通常通りコマンドを実行したときには、座標や数値などオプションの入力を求められます。commandの引数に必要なオプションを記述しておくと、普段使っているコマンドを自動で実行できます

commandの使い方は?

実行したいコマンド名を文字列として記述したあと、必要なオプションを記述します。例えば「circle」を使用して中心(0,0)で直径10の円を作成する場合は次のようになります。

;circleを実行して円を作成する。
(command "circle" (list 0 0) "D" 10)

オプションの設定次第で作図方法を変更することが可能です。設定できるオプションについてはこちらの記事で解説しています。
【AutoLISP】円を作図するコマンド「circle」

円以外の作図コマンドについても解説していますのでよろしければこちらもご覧ください。
【AutoLISP】線分を作図するコマンド「line」
【AutoLISP】ポリラインを作成するコマンド「pline」
【AutoLISP】四角を作成するコマンド「rectang」

② 変数にデータを格納 setq

setqの特徴は?

  • AutoCADのあらゆるデータ変数にを格納(代入)できる
  • 一度の実行で複数の変数それぞれへデータを格納できる

setqは指定した変数にデータを格納(代入)する関数です。AutoLISPは変数の型宣言が不要なので、AutoCADのあらゆるデータを格納することができます。変数名とデータを連続的に並べて記述すると、それぞれの変数へ一度に格納することも可能です。

setqの使い方は?

変数名と格納したいデータを並べて記述します。複数の変数に格納する場合は下記のように連続的に記述してください。

;1つの文字列を変数に格納する
(setq str "hako")

;複数のデータを変数に格納する
(setq data1 20 data2 "auto" data3 (list 0 0))

使用できる変数名には制限があります。変数の命名ルールについて知りたい方はこちらの記事をご覧ください。
【AutoLISP】変数にデータを格納する関数「setq」

ちなみにAutoLISPでは「=」を「等しい」という意味で使います。

③ 四則演算 +、-、*、/

四則演算の使い方は?

四則演算は演算子( +、-、*、/ )が関数名となります。演算子のあとに数値を記述することで演算結果を返します。引き算と割り算は先頭の数値に対して、それ以外の数値を処理する形式なので注意してください。引数に実数が含まれていると結果も実数になります。

;足し算
(+ 1 2 3)
⇒ 5
;引き算
(- 1 2 3)
⇒ -4
;掛け算
(* 1 2 3)
⇒ 6
;割り算
(/ 1 2 3)
⇒ 0

(/ 1.0 2 3)
⇒ 0.166667

ちなみに、1だけ増加させる関数をインクリメント、1だけ減少させる関数をデクリメントと呼びます。繰り返し処理でよく使われる重要な関数の1つです。こちらの記事では四則演算と合わせて解説していますのでよろしければご覧ください。
【AutoLISP】四則演算の関数

④ リストの作成 list

listの特徴は?

  • リストが作成できる
  • 座標を表現できる
  • 専用の関数で格納したデータを取得できる

listは複数のデータをまとめて1つのリストを作成することができます。リストとはAutoLISPにおけるデータ形式の1つです。1つ以上のデータを左右一組のカッコで囲んで表現されます。

リストには数値や文字列などAutoCADのあらゆるデータを格納できます。数値を2つまたは3つ指定すると2D座標または3D座標を表現することも可能です

リストに格納したデータは要素と呼ばれて、それぞれの要素には0から始まる番号が付いています。専用の関数を使用することで要素を取得可能です。要素を取得する方法についてはこちらで解説しています。
【AutoLISP】car部とcdr部を取得する関数「car」「cdr」
【AutoLISP】リストの要素を取得する関数「nth」「last」「assoc」

また、リストにはドット対と呼ばれる特殊な形式があり、consという関数で作成することができます。ドット対とconsについては知りたい方はこちらをご覧ください。
【AutoLISP】リストを作成する関数「list」「cons」

listの使い方は?

関数名のあとに格納したいデータを並べて記述します。座標を表現するときは引数の1番目(先頭)がX座標、2番目がY座標、3番目がZ座標に対応しています。例えば、(10,15)の座標を変数ptに格納する場合は次のように記述します。

;(10,15)を変数ptへ格納
(setq pt (list 10 15))

ちなみにリスト自体も要素とすることができます。

⑤ コマンドラインへ表示 princ、print

princ、printの特徴は?

  • 変数の中身をコマンドラインに表示できる
  • ユーザーへのメッセージを表示できる

princとprintは引数の評価結果をコマンドラインに表示する関数です。文字列を引数とすればユーザーへのメッセージを表示することもできます

princ、printの使い方は?

コマンドラインへ表示したい引数を関数名のあとに記述します。表示結果が異なるため、お好みで使い分けてください。princは「"」が付加されず、表示前に改行が入りません。これに対してprintは「"」が付加されて、表示前に改行が入ります。

;princで文字列をコマンドラインに表示する
(princ "AutoLISPで楽になる")
⇒AutoLISPで楽になる
;princで文字列をコマンドラインに表示する
(print "AutoLISPで楽になる")
⇒ "AutoLISPで楽になる"

ちなみに、princとprint以外にもコマンドラインに引数を表示する関数が存在します。その他の関数についてはこちらの記事をご覧ください。
【AutoLISP】表示コントロール関数「princ」「print」

まとめ

①AutoCADコマンドの呼び出し command
普段使っているコマンドを自動で実行できるため、AutoCADの作業を効率化しやすい。 AutoLISPのすごさも体感しやすい。
変数にデータを格納 setq
AutoCADのあらゆるデータ変数にを格納する関数。 一度実行するだけで、複数の変数それぞれにデータを格納することができる
四則演算 +、-、*、/
四則演算を行う関数。引き算と割り算は先頭の数値に対して、残りを数値を処理する。
リストの作成 list
複数のデータをまとめて一つのリストを作成する関数。座標を表現できる。
コマンドラインへ表示 princ、print
コマンドラインに引数の評価結果を表示する関数。princとprintでは表示結果が異なる。

-AutoLISP入門, 関数紹介

独学おすすめ書籍はコチラ
独学おすすめ書籍はコチラ