- AutoLISPで四則演算はどうやるの?
- 計算結果が思った通りにならない
AutoLISPで数値の計算をしたいけど、どんな関数を使うかわからずお困りではないでしょうか。使う関数を知っていても、計算結果が思うようにならないという方も多いはず。
私はAutoLISPを独学し、業務の自動化・効率化に役立つプログラムを5年以上作成しています。数行で書けるような簡単なプログラムから、1000行以上の少し複雑なプログラムまで様々なツールを作成してきました。
そもそもAutoLISPってなに?という方はこちらの記事をご覧ください。
>>AutoCADユーザー必見!【AutoLISPを覚えるべきメリット5選】デメリットも解説
今回の記事ではAutoLISPの四則演算関数をご紹介します。関数の使い方を初心者向けに解説していくため、これからAutoLISPを覚えたい方だけでなく、基礎を改めて確認したい方にも役立ちます。
AutoLISPでAutoCADの作業を楽にしたい方はぜひ最後までお読みください。
足し算は「+」、引き算は「-」、掛け算は「*」、割り算は「/」で計算できます。「+」は与えた引数をすべて足し合わせる関数です。「*」はすべての引数を掛け合わせます。「-」と「/」は先頭の引数に対して、その他の引数を処理するので注意してください。
AutoLISPの四則演算関数6選
今回ご紹介する四則演算の関数は以下の6つです。数値計算の基礎となる重要な関数なのでしっかり使い方を覚えてください。
- +(足し算)
- -(引き算)
- *(掛け算)
- /(割り算)
- 1+(インクリメント)
- 1-(デクリメント)
インクリメントとデクリメントについては後述するのでお楽しみに。
+(足し算)
「+」は足し算を行う関数です。「+」には次のような特徴があります。
- 複数の数値を引数として与えることができる
- 与えられた引数をすべて足し合わせた数値を返す
- 引数に1つでも実数が含まれていると返り値も実数になる
- 引数が1つの場合は引数と同じ数値を返す(引数に0を足した値が返る)
- 引数をすべて省略したときは整数の0を返す
たとえば、整数の1~3を引数とした場合は以下のように整数の6を返します。
整数の2を実数の2.0に置き換えると、返り値は実数の6.0になるので注意してください。
引数が1つの場合、エラーにはならず引数と同じ数値を返します。
ちなみにAutoCADのヘルプでは、引数に0を加えた結果を返すと表現されています。
>>+ (加算) (AutoLISP)|AutoCAD 2025 ヘルプ
引数をすべて省略してもエラーにはなりません。整数の0を返します。
「+」は動作がシンプルなので扱いやすい関数です。
-(引き算)
「-」は引き算を行う関数です。「-」の特徴は次のとおり。
- 複数の数値を引数として与えることができる
- 先頭の引数からその他の引数を引いた数値が返る
- 引数に1つでも実数が含まれていると返り値も実数になる
- 引数が1つの場合は0からその引数を引いた数値が返る(符号を反転した数値が返る)
- 引数をすべて省略したときは整数の0を返す
たとえば、整数の1~3を順番に引数として与えた場合、先頭の1から2と3を引くため返り値は整数の-4です。
整数の2を実数の2.0に置き換えた場合は実数の-4.0を返します。
引数の順番を逆にして整数の3~1を与えた場合、返り値は整数の0になります。与える引数が同じでも、先頭の引数によって結果が変わるので注意してください。
引数が1つのときは、0からその引数を引いた数値(符号を反転した数値)を返します。
引数をすべて省略した場合は整数の0を返します。
引数が複数の場合は引数と引数の間にマイナスの符号が入り、引数が1つの時は符号が反転されると覚えてください。
*(掛け算)
「*」とは掛け算を行う関数のこと。「*」には次のような特徴があります。
- 複数の数値を引数として与えることができる
- 与えられた引数をすべて掛け合わせた数値を返す
- 引数に1つでも実数が含まれていると返り値も実数になる
- 引数が1つの場合は引数と同じ数値を返す(引数に1を掛けた数値が返る)
- 引数をすべて省略したときは整数の0を返す
たとえば、整数の1~3を引数として与えると、返り値は整数の6になります。
整数の2を実数の2.0に置き換えた場合、実数の6.0を返すので注意しましょう。
前述した「+」と同様に、引数が1つのときはその引数と同じ数値を返します。
ちなみにAutoCADのヘルプでは、引数に1を掛けた結果を返すと表現されています。
>>* (乗算) (AutoLISP)|AutoCAD 2025 ヘルプ
引数をすべて省略した場合は整数の0を返します。
掛け算なので引数に1つでも0が含まれている場合は返り値も0になります。
/(割り算)
「/」は割り算を行う関数です。「/」には以下のような特徴があります。
- 複数の数値を引数として与えることができる
- 先頭の引数をその他の引数で割った数値を返す
- 引数に1つでも実数が含まれていると返り値も実数になる
- 引数が1つの場合は引数と同じ数値を返す(引数を1で割った数値)
- 引数をすべて省略したときは整数の0を返す
たとえば、整数の6と3を引数として与えると整数の2を返します。
整数の6と実数の3.0を与えた場合は実数の2.0が返り値になります。
整数の6と実数の3.0、整数の2を与えたときの返り値は実数の1.0です。
ちなみに、引数が1つのときは引数と同じ数値を返すので覚えておきましょう。
AutoCADのヘルプでは引数を1で割った数値を返すと書かれています。
>>/ (除算) (AutoLISP)|AutoCAD 2025 ヘルプ
前述した関数と同様に、引数をすべて省略した場合は整数の0を返します。
分数で表現すると先頭の引数が分子、先頭以外の引数をすべて掛けた数値が分母になります。
1+(インクリメント)
「1+」は引数の数値に1を足す関数です。インクリメントとも呼ばれます。
インクリメント
プログラミング用語の一つ。現在の数値に1を足すことを意味します。
>>インクリメントとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
「1+」の特徴は次のとおり。
- 与えられる引数は1つのみ
- 引数を省略したり、複数与えたりするとエラーになる
- 引数に足される数値は整数の1
- 引数の数値が実数のときは返り値も実数になる
たとえば、引数が整数の2の場合は整数の3を返します。
引数が実数の2.0だと、返り値は実数の3.0になります。
引数がマイナスの場合、その引数に整数の1を足した数値を返します。
ちなみに、「1+」は繰り返し関数のrepeatと相性バツグン。以下のように「1+」で変数nをカウントアップしていくと、リストのn番目を示す要素番号として使えるので便利です。
(setq n 0)
(setq lst (list 1 2 3))
(repeat lst
(print (* (nth n lst) 2))
(setq n (1+ n))
)
繰り返し関数についてもっと知りたい方はこちらの記事をご覧ください。
>>AutoCADで楽をしたい人必見【繰り返しを自動化するAutoLISP関数3選】
「+1」ではなく「1+」なので注意してください。
1-(デクリメント)
「1-」とは引数の数値から1を引く関数のこと。デクリメントとも表現されます。
デクリメント
プログラミング用語の1つ。現在の数値から1を引くことを意味します。
>>デクリメントとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
「1-」には以下のような特徴があります。
- 与えられる引数は1つのみ
- 引数を省略したり、複数与えたりするとエラーになる
- 引数から引かれる数値は整数の1
- 引数の数値が実数のときは返り値も実数になる
たとえば、引数が整数の3のときは整数の2を返します。
引数を実数の3.0にすると、返り値は実数の2.0になります。
引数としてマイナスの数値を与えた場合、その引数から1を引いた数値が返ります。
「1+」と同様に、符号は1の後ろに記述します。
AutoLISPの四則演算を覚えてプログラム作成に役立てよう
今回ご紹介した関数を以下にまとめます。
構文 | 内容 |
(+ 数値 数値 ・・・) | 与えた引数をすべて足し合わせる |
(- 数値 数値 ・・・) | 先頭の引数からその他の引数を引く |
(* 数値 数値 ・・・) | 与えた引数をすべて掛ける |
(/ 数値 数値 ・・・) | 先頭の引数をその他の引数で割る |
(1+ 数値) | 引数に整数の1を足す |
(1- 数値) | 引数から整数の1を引く |
どの関数もAutoLISPのプログラム作成には欠かせない関数です。使い方をしっかり覚えて、作業が楽になるプログラムの作成に役立ててください。
あなたに代わってAutoLISPプログラムを作成します
AutoLISPで作業を自動化したいけど、プログラミングに詳しくないのでツールが作れずにお悩みの方へ。5年以上のAutoLISP経験を活かしてAutoCADを自動化するツールを作成します。既にお持ちのAutoLISPプログラム修正も対応可能です。
AutoCADの面倒くさい作業から解放されたい方は下記リンクからお気軽にご相談ください。
>>AutoCADが楽になるプログラムを作成します