AutoLISP入門 関数紹介

AutoLISP初心者が最初に覚えるべき関数6選|AutoCADを無料で自動化

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

first_eyecatch
  • お金をかけずにAutoCADを自動化して楽したい
  • CADオペレーターとしてスキルアップしたい
  • プログラミングなんて自分には難しそう

AutoCAD専用のプログラミング言語「AutoLISP」なら、無料でAutoCADの自動化・効率化ができます。しかし、AutoLISPの何から覚えていいかお困りではないでしょうか。プログラミングと聞いて抵抗感を持ってしまう方も多いはず。

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

はこ
はこ

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

当記事ではこれからAutoLISPを覚えようとしている方に向けて、最初に覚えてほしいAutoLISPの基礎的な関数をご紹介します。

簡単な内容にしぼっているのでプログラミング経験がなかったり、苦手意識があったりする方でもAutoLISPの基礎が身に付きます。基礎が分かれば実用的なプログラムを作成しやすくなるので、CADオペレーターとしてのスキルアップも夢ではありません。

AutoCADの作業を今より楽にしたい方はぜひ最後まで読んでください。

AutoLISPの基本的な書き方

first_image1

AutoLISPの基本的な書き方は次のとおりです。

(関数名 引数1 引数2 ・・・)

AutoLISPの大きな特徴は式の全体をカッコででくくること。関数名は必ず左カッコの右隣に記述し、必要な引数は関数名の右側に並べます。関数名や引数は半角スペースまたは改行で区切ってください。

たとえば、setqという関数の場合は以下のように書きます。

(setq x 5)
はこ
はこ

後述しますがsetqは変数に値を格納するAutoLISP関数です。

AutoLISP初心者が最初に覚えるべき関数6選

first_image2

今回ご紹介するAutoLISP関数は次の6つです。

  • setq
  • defun
  • if
  • repeat
  • command
  • list

変数に値を格納するAutoLISP関数「setq」

setqは数値や文字列など、さまざまな値を変数に格納するAutoLISP関数です。

はこ
はこ

変数とは値を自由に出し入れできる箱のようなものと思ってください。

変数を使用するメリットは格納されている値を何度も再利用できること。長い文字列(フォルダのアドレスなど)や桁数が多い数値を記述する手間がはぶけたり、プログラム見た目がシンプルになったりします。

setqの使い方は次のとおりです。

(setq 変数名 値)

「変数名」には値を格納する変数の名前を書いてください。変数名はユーザーが自由に設定できますが、どんな値が格納されているか分かりやすい変数名がおすすめです。「値」には変数に格納する値を指定します。

たとえば、変数yearに数値の2023を格納する場合は以下のようになります。

(setq year 2023)

変数はプログラムを作成するうえで欠かせない要素の1つです。

setqの注意点やもう少し高度な使い方を知りたい方はこちらの記事をご覧ください。
>>【AutoLISP】変数にデータを格納する関数「setq」

オリジナルの関数を定義するAutoLISP関数「defun」

defunとはあらかじめ用意されている関数を組み合わせてオリジナルの関数を定義できるAutoLISP関数です。defunで定義した関数はユーザー関数と呼ばれ、通常のAutoLISP関数と同じように使用できます。

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

(defun 関数名 (引数・・・)
 処理内容・・・
)

「関数名」には定義する関数の名前を指定します。「引数」には関数に与える引数を書いてください。「処理内容」は関数が実行する処理を表しています。

はこ
はこ

与えた引数は関数の中で使用できます。

たとえば、2つの引数を合計するGoukei関数は次のように定義します。ちなみに「+」は数値を加算するAutoLISP関数です。

(defun Goukei (a b)
  (+ a b)
)

Goukei関数に2と3を与える場合は以下のように記述してください。

(Goukei 2 3)

Goukei関数は2と3を受け取るので、合計した結果の5を返します。

defunを使うことでプログラムの見た目がよくなったり、メンテナンスしやすくなったりメリットはさまざま。AutoLISPでのプログラミングにとって非常に重要な関数です。

defunの使い方をもっと詳しく知りたい方はこちらの記事をご覧ください。
>>【初心者向け】関数を作ろう!ユーザー関数を定義するAutoLISP関数「defun」

処理の分岐を制御するAutoLISP関数「if」

ifとは指定された条件を満たす場合と満たさない場合で処理を分岐できるAutoLISP関数のこと。

図面上の円だけを別の画層へ移動したり、特定のテキストだけを書きかえたり、さまざまな状況に合わせて柔軟な処理をするプログラムが作成できます。

ifは以下のように使います。

(if 条件式
 真の場合の処理
 偽の場合の処理
)

「条件式」には分岐を判定する式を書いてください。条件を満たすときは「真の場合の処理」が実行され、条件を満たさないときは「偽の場合の処理」が実行されます。

以下の例では、変数xに格納されている値が5以上の場合は「5以上です。」と表示して、5未満の場合は「5未満です。」と表示します。

(setq x 8)
(if (>= x 5)
  (print "5以上です。")
  (print "5未満です。")
)

条件式には(>= x 5)という式を指定しており、変数xが5以上か判定します。変数xには8を格納しているため、「5以上です。」と表示されます。

はこ
はこ

ちなみに、printはコマンドライン上に文字列を表示するAutoLISP関数です。

AutoLISPでは不等号も式の先頭に書くため、条件式の内容が分かりずらいと感じるかもしれません。少し見方を変えて、変数xと5の間に「>=」を入れるイメージを持ってもらうと分かりやすくなります。

ifはプログラムを正しく動作させたりメンテナンスをしやすくしたりするため、質の高いプログラムの作成に役立ちます。

複数の条件でそれぞれの処理を実行したいときはcondというAutoLISP関数がおすすめ。condの詳細はこちらの記事で解説しています。
>>【初心者向け】処理を自由に切り替えよう!条件分岐のAutoLISP関数2選

同じ処理を繰り返すAutoLISP関数「repeat」

repeatは決められた回数だけ同じ処理を繰り返すAutoLISP関数です。めんどうな繰り返しの作業を楽にしてくれます。

repeatの使い方は次のとおり。

(repeat 繰り返しの回数
 処理・・・
)

「繰り返しの回数」には処理を繰り返す回数を整数で指定してください。「処理」に書いた内容が指定された回数だけ繰り返されます。

たとえば、1~10の数値を1つずつ表示していく場合は以下のようになります。

(setq n 1)
(repeat 10
  (print n)
  (setq n (1+ n))
)
(princ)

「1+」は引数の値を1だけ増やすAutoLISP関数なので、変数nの値は繰り返しのたびに1ずつ増えていきます。繰り返しの回数には10が指定されているため、処理が10回繰り返されて1~10の数値が1つずつ表示されます。

同じことを何度も正確に繰り返せるのはプログラムの大きな強み。repeatは作業の自動化・効率化に直結する重要な関数です。

なにかの条件を満たすかぎり繰り返しを続けたい場合はwhileを使用してください。repeatやwhileなど、繰り返しの関数についてはこちらの記事で解説しています。
>>AutoCADで楽をしたい人必見【繰り返しを自動化するAutoLISP関数3選】

AutoCADコマンドを呼び出すAutoLISP関数「command」

commandとはAutoCADコマンドを呼び出すAutoLISP関数のこと。さまざまなAutoCADコマンドをAutoLISPのプログラムから呼び出せます。

commandの基本的な使い方は以下のとおり。

(command "コマンド名" "引数1" "引数2" ・・・)

「"コマンド名"」には呼び出したいコマンドの名前を指定します。「"引数1"」「"引数2"」にはコマンドを実行するために必要な引数を書いてください。引数を与える必要がない場合は引数を省略できます。

はこ
はこ

コマンド名の両側には必ず「"」を付けてください。

AutoCADコマンドの「circle」を呼び出して円を作図する例をご紹介します。

(setq center (list 0 0))
(setq radius 10)
(command "circle" center radius)

変数centerに円の中心座標、変数radiusには円の半径を格納。circleコマンドに変数centerと変数radiusを与えることで、中心(0,0)で半径10の円が作図されます。

commandはAutoCADコマンドを自動化できるため、作業の効率化を実感しやすい関数です。

commandの使用例をもっと知りたい方はこちらの記事をご覧ください。
>>【作図を自動化】コマンドを実行するAutoLISP関数「command」を解説

リストを作成するAutoLISP関数「list」

listはリストを作成するAutoLISP関数です。リストとは複数の値をグループ化して1つにまとめられるAutoLISPの特殊な変数と思ってください。

はこ
はこ

リストは他のプログラミング言語で「配列」と呼ばれるデータ形式に似ています。
>>配列とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

listは次のように使います。

(list 要素1 要素2・・・)

リストに格納される値は要素と呼ばれ、数値や文字列、別のリストなどAutoLISPで扱うさまざまな値を指定できます。要素が2つまたは3つの数値の場合は座標として扱うことも。

たとえば、数値が格納された変数x~zで3D座標を表現するときは以下のようになります。

(setq x 1)
(setq y 2)
(setq z 3)
(setq pt (list x y z))

リストはさまざまな値を格納できるだけでなく、座標としても扱えるので活躍する場面は非常に多いです。listの使い方をしっかり覚えてAutoCADの自動化に役立てましょう。

リストの使い方についての詳細はこちらの記事をご覧ください。
>>【初心者必読】リストを作成するAutoLISP関数3選|使用例も解説

AutoLISPの基礎を覚えてAutoCADの自動化を目指そう

first_image-last

今回ご紹介した、AutoLISP初心者にまず覚えてほしい関数を以下にまとめます。

関数内容詳細記事リンク
setq変数に値を格納する詳細を見る
defunオリジナルの関数を定義する詳細を見る
if条件の分岐を制御する詳細を見る
repeat同じ処理を指定の回数だけ繰り返す詳細を見る
commandAutoCADコマンドを呼び出す詳細を見る
listリストを作成する 詳細を見る

AutoLISPで実用的なプログラムを作成するためには基礎の習得が欠かせません。基礎をしっかり身に付けてAutoCADの自動化を目指しましょう。

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

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

AutoCADが楽になるツールを作成します AutoCADを効率化して面倒な作業から解放されましょう!

-AutoLISP入門, 関数紹介

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