四則演算
AutoLISP関数 |
---|
(+ [number number] ...) |
number:整数、または実数 |
すべての数値の合計を返します。 |
戻り値:整数、または実数 |
AutoLISP関数 |
---|
(- [number number] ...) |
number:整数、または実数 |
1 番目の数値から 2 番目以降の数値を引いた差を返します。 |
戻り値:整数、または実数 |
AutoLISP関数 |
---|
(* [number number] ...) |
number:整数、または実数 |
すべての数値の積を返します。 |
戻り値:整数、または実数 |
AutoLISP関数 |
---|
(/ [number number] ...) |
number:整数、または実数 |
1 番目の数値を2 番目以降の数値の積で割った商を返します。 |
戻り値:整数、または実数 |
AutoLISP関数 |
---|
(rem [number number...]) |
number:整数、または実数 |
1 番目の数値を 2 番目の数値で除算し、剰余を返します。 |
戻り値:整数、または実数 |
これらの関数は、整数同士の演算では整数が答えとして返り、引数に実数が一つでも混じっている場合は実数の答えが返ります。以下の実行例は整数の場合を主に示しています。
+ 関数は、引数の合計を返します。
_$ (+ 1 2) ⏎
3
_$ (+ 1 2 3 4) ⏎
10
- 関数は、1 番目の引数から残りの引数を引いた結果が返ります。
_$ (- 2 1) ⏎
1
_$ (- 4 3 2 1) ⏎ ;(- 4 (+ 3 2 1)) と同じ
-2
なお、-1 や -A のように値にマイナス符号をつけた表現は - 関数で以下のように書けます。
_$ (- 1)⏎
-1
_$ (setq a 10) ⏎
10
_$ (- a) ⏎
-10
* 関数は、引数のすべての積を返します。
_$ (* 2 3) ⏎
6
_$ (* 2 3 4 5) ⏎
120
/ 関数は、1 番目の引数を残りの引数で割った値が返ります。引数が整数ばかりの場合では、割り切れなかったものは切り捨てられます。自動的に実数に変換されることはないので、時には意図しない答えとなることに注意してください。
_$ (/ 5 2) ⏎
2
_$ (/ 12 2 2) ⏎ ;(/ (/ 12 2) 2)と同じ
3
商の切り捨てを避けたい場合は、小数点を付加して実数としたり、float 関数で実数に型変換をしたりして、実数で計算するよう明示します。
_$ (/ 5.0 2) ⏎
2.5
_$ (/ (float 5) 2) ⏎
2.5
rem 関数は、最大の整数の商の場合の余りを返します。引数の並びの意味は / 関数と同じです。商は 0 に向かって切り捨てられ、余りはその差を埋める値です。
_$ (rem 5 3)⏎
2
_$ (rem -5 3)⏎
-2
_$ (rem 13 5 2)⏎ ;(rem (rem 13 5) 2)と同じ
1
_$ (rem 5.0 2.5)⏎
0.0
_$ (rem 5.0 2.4)⏎
0.2
整数では、計算結果が整数で表すことができる最大値や最小値を超えると間違った結果が返るので、その付近の値を扱う場合は事前に実数に型変換するなど注意が必要です。
number 引数が数値以外の場合はエラーが発生します。
インクリメント・デクリメント
AutoLISP関数 |
---|
(1+ number) |
number:整数、または実数 |
数値を1 増加します。 |
戻り値:整数、または実数 |
AutoLISP関数 |
---|
(1- number) |
number:整数、または実数 |
数値を1 減少します。 |
戻り値:整数、または実数 |
1+ 関数と 1- 関数は、数値に 1 を加えたり引いたりします。整数以外に実数でも同様です。
カウンター操作で便利に使えるように定義されています。ですので、+ 関数や - 関数でも書けるのですが、こちらのほうが少しだけシンプルに書け、意味も明確になります。
_$ (setq i 1) ⏎
1
_$ (1+ i) ⏎
2
_$ (1- i) ⏎
0
number 引数が数値以外の場合はエラーが発生します。
数学関数
AutoLISP関数 |
---|
(abs number) |
number:整数、または実数 |
引数の絶対値を返します。 |
戻り値:整数、または実数 |
数値の絶対値を返します。
_$ (abs 1) ⏎
1
_$ (abs -1) ⏎
1
number 引数が数値以外の場合はエラーが発生します。
AutoLISP関数 |
---|
(sqrt number) |
number:整数、または実数 |
数値の平方根を実数で返します。 |
戻り値:実数 |
数値の平方根を返します。戻り値は、実数となります。
_$ (sqrt 4) ⏎
2.0
number 引数が負の場合、または数値以外の場合はエラーが発生します。
AutoLISP関数 |
---|
(expt number [power]) |
number:整数、または実数 power:整数、または実数 |
指定された値で数値をべき乗した結果を返します。 |
戻り値:整数、または実数 |
number 引数の power 引数乗の値を返します。power 引数が省略されると、1 として扱われます。引数がすべて整数の場合は、整数が返りますので注意してください。
_$ (expt 2 2) ⏎ ;2 の 2 乗
4
_$ (expt 4 0.5) ⏎ ;sqrt と同じ
2.0
引数が数値以外の場合はエラーが発生します。
AutoLISP関数 |
---|
(exp number) |
number:整数、または実数 |
自然対数の底 e を指定された値でべき乗した結果を返します。 |
戻り値:実数 |
自然対数の底 e を number 乗した値を返します。
_$ (exp 0) ⏎
1.0
_$ (exp 1) ⏎ ;e の値そのもの
2.71828
number 引数が数値以外の場合はエラーが発生します。
AutoLISP関数 |
---|
(log number) |
number:整数、または実数 |
数値の自然対数を実数で返します。 |
戻り値:実数 |
数値の自然対数を返します。exp 関数とlog 関数は、互いに逆関数の関係にあります。
_$ (log 1) ⏎
0.0
_$ (log (exp 1)) ⏎
1.0
なお、常用対数の計算は、以下のような関数として定義できます。
(defun logc (num) (/ (log num) (log 10.0)) )
number 引数が数値以外の場合はエラーが発生します。
AutoLISP関数 |
---|
(gcd int1 int2) |
int1,int2:整数 |
2 つの整数の最大公約数を返します。 |
戻り値:整数 |
二つの整数の最大公約数を返します。
_$ (gcd 12 18)⏎
6
引数は整数である必要があります。引数が整数以外の場合には、例え実数でもエラーになります。
AutoLISP関数 |
---|
(max [number number...] ) |
number:整数、または実数 |
指定された数値の中の最大値を返します。 |
戻り値:整数、または実数 |
AutoLISP関数 |
---|
(min [number number...]) |
number:整数、または実数 |
指定された数値の中の最小値を返します。 |
戻り値:整数、または実数 |
max 関数と min 関数は与えられたnumber 引数の最大値と最小値をそれぞれ返します。引数は二つ以上とることができます。number 引数がすべて省略された場合は、つまり引数なしで max 関数と min 関数を呼び出すと、0 が返ります。
_$ (max 1 2 3 4 5) ⏎
5
_$ (min 1 2 3 4 5) ⏎
1
_$ (min) ⏎
0
_$ (max) ⏎
0
number 引数が数値以外の場合はエラーが発生します。
三角関数
AutoLISP関数 |
---|
(sin angle) |
angle:整数、または実数 |
角度のサイン(正弦)の値を返します。 |
戻り値:実数 |
AutoLISP関数 |
---|
(cos angle) |
angle:整数、または実数 |
角度のコサイン(余弦)の値を返します。 |
戻り値:実数 |
sin 関数と cos 関数は、サインとコサインを返します。
_$ (sin (/ PI 6)) ⏎
0.5
_$ (cos (/ PI 3)) ⏎
0.5
なお、以下のように数学的には cos が 0 になる場合でも、非常に小さな値が返り、完全な 0 にはなりません。
_$ (cos (/ PI 2))⏎
6.12323e-17
angle 引数が数値以外の場合はエラーが発生します。
sin 関数と cos 関数で、以下のように tan 関数が定義できます。
(defun tan (angle) (/ (sin angle) (cos angle)) )
なお、以下のように数学的には無限大となる場合も、大きな値が返り、エラーにはなりません。
_$ (tan (/ PI 4)) ⏎
1.0
_$ (tan (/ PI 2)) ⏎
1.63312e+16
AutoLISP関数 |
---|
(atan num1 [num2]) |
num1,num2: 整数、または実数 |
数値のアークタンジェント(逆正接)をラジアン単位で返します。 |
戻り値:実数 |
atan 関数は、num1 引数のアークタンジェントを返します。num2 引数が指定さると、num1/num2 のアークタンジェントを返します。引数が数値以外の場合はエラーが発生します。
_$ (/ PI 4) ⏎
0.785398
_$ (atan 1) ⏎ ;45°のアークタンジェント
0.785398
_$ (atan 2 2) ⏎ ;(atan (/ 2 2))と同じ
0.785398
num1,num2 引数が数値以外の場合はエラーが発生します。
単位変換
AutoLISP関数 |
---|
(cvunit value from-unit to-unit) |
value: 整数、または実数 from-unit,to-unit:文字列 |
ある計測単位から別の計測単位に値を変換します。 |
戻り値:実数 |
数値を、ある単位から別の単位に変換します。例えばメートルをフィートに直すなどです。単位は文字列で指定します。重さの単位から長さの単位に変換することはできないので、その時は nil が返ります。
_$ (cvunit 1 "min" "sec")⏎ ;分→秒
60.0
_$ (cvunit 1 "m" "'")⏎ ;メートル→フィート
3.28084
_$ (cvunit 0 "c" "k")⏎ ;℃→ケルビン
273.15
使用できる単位の文字列は support フォルダ内の acad.unt ファイル内に定義されています。非常に多くあるので、ここでは使用できる文字列の一部を抜粋します。
“centimeter”,”centimeter”,”cm”
“kilometer”,”kilometer”,”km”
“millimeter”,”millimeter”,”mm”
“kilogram”,”kg”
“gram”,”gm”,”g”
“second”,”sec”
“minute”,”min”
“hour”,”hr”
“day”
“week”,”wk”
“year”,”yr”
“foot”,”feet”,”ft”,”'”
“inch”,”in”
“hectare”
“sq_meter”,”sq_metre”,”sq_m”
“kelvin”,”k”
“celsius”,”centigrade”,”c”
“newton”,”n”
“joule”
“liter”
“barrel”,”bbl”
“cu_meter”,”cu_metre”,”cu_m”
“gallon”,”gal”