型変換

文字列

AutoLISP関数
(ascii string)
string:文字列
文字列の先頭文字を整数に変換して返します。
戻り値:整数

ascii 関数は、与えられた文字列の先頭の一文字を ASCII 文字コードを表す十進数の整数に変換して返します。先頭以外の文字列は無視されます。

_$ (ascii "ABCD")⏎
65 ;A=65

日本語を含む2 バイト文字は、エラーこそ出ませんが結果は正しくありません。

_$ (ascii "あ")⏎
130

逆の働きは、chr 関数を参照してください。

AutoLISP関数
(vl-string-elt string position)
string:文字列
position:整数
文字列内の指定された位置の文字を整数に変換して返します。
戻り値:整数

vl-string-elt 関数は、文字列内の指定された位置の文字を、ASCII 文字コードで表す整数を返します。先頭文字のインデックスは 0 です。インデックスの値が不正な場合はエラーが発生します。

_$ (vl-string-elt "ABCD" 1)⏎
66 ;B=66
AutoLISP関数
(atoi string)
string:文字列
文字列を整数に変換します。
戻り値:整数

atoi 関数は、文字列を整数に変換します。

string 引数には、数値を表す文字列を指定します。

_$ (atoi "55")⏎
55
_$ (atoi "55.5")⏎
55

string 引数が正しい数値でない場合でも、atoi 関数はエラーを発生しません。文字列の先頭から見ていって、可能な限り整数に変換しようとします。まったく変換できない場合は0 を返します。ただし、いつ仕様が変更されるかわからないので、この効果をあてにしたプログラミングは避けるべ きでしょう。

逆の働きは、itoa 関数を参照してください。

AutoLISP関数
(atof string)
string:文字列
文字列を実数に変換します。
戻り値:実数

atof 関数は、文字列を実数に変換します。

string 引数には、数値を表す文字列を指定します。指数表記の文字列を断りなく与えても、正しく解釈されます。

_$ (atof "55.5")⏎
55.5
_$ (atof "5.550E+01")⏎
55.5

string 引数が正しい数値でない場合でも、atof 関数はエラーを発生しません。文字列の先頭から見ていって、可能な限り整数に変換しようとします。まったく変換できない場合は 0.0 を返します。ただし、いつ仕様が変更されるかわからないので、この効果をあてにしたプログラミングは避けるべきでしょう。

逆の働きは、rtos 関数を参照してください。

AutoLISP関数
(distof string [mode])
string:文字列
mode:整数
文字列を実数に変換します。
戻り値:実数

distof 関数は、文字列を実数に変換します。

_$ (distof "55.5")⏎
55.5
_$ (distof "5.55E+01")⏎
55.5

mode 引数には、文字列が採用している数値の単位の種類を指定することができます。atof 関数の単位系の区別がつくものです。mode の値は rtos 関数の説明を参照してください。mode 引数が省略された場合には、システム変数 LUNITS の値で解釈を行います。

_$ (distof "1.235E+01" 1) ⏎    ;指数表記
12.35
_$ (distof "12.346" 2) ⏎ ;十進表記
12.346
_$ (distof "1'-0.346¥"" 3) ⏎ ;工業図面表記
12.346
_$ (distof "1'-0 3/8¥"" 4) ⏎ ;建築図面表記
12.375
_$ (distof "12 3/8" 5) ⏎ ;分数表記
12.375

逆の働きは、rtos 関数を参照してください。

AutoLISP関数
(angtof string [unit])
string:文字列
unit:整数
文字列をラジアン単位の実数に変換します。
戻り値:実数

angtof 関数は、角度を表す文字列をラジアン単位の実数に変換します。元の文字列の値がどうであれ、変換されたラジアンの値は 0 以上 2π 未満の範囲に収まるように変換されます。

_$ (angtof "180")⏎
3.14159

unit 引数は、文字列が採用している数値の単位の種類を指定することができます。単位系の区別ができる distof 関数の角度対応版です。unit の値は angtos 関数の説明を参照してください。unit 引数が省略された場合には、システム変数 AUNITS の値で解釈を行います。

_$ (angtof "60.000" 0) ⏎        ;十進数(度)
1.0472
_$ (angtof "60d0'0¥"" 1) ⏎ ;度/分/秒
1.0472
_$ (angtof "66.667g" 2) ⏎ ;グラード
1.0472
_$ (angtof "1.047r" 3) ⏎ ;ラジアン
1.047
_$ (angtof "N 30d0'0¥" E" 4) ⏎ ;測量用単位
1.0472

逆の働きは、angtos 関数を参照してください。

AutoLISP関数
(vl-string->list string)
string:文字列
文字列を、ASCII 文字コードを表す整数のリストに変換します。
戻り値:リスト

vl-string->list 関数は、文字列を ASCII 文字コードを表す整数のリストに変換します。

_$ (vl-string->list "ABCD")⏎
(65 66 67 68)

逆の働きは、vl-list->string 関数を参照してください。

AutoLISP関数
(read string)
string:文字列
文字列から取得した最初の要素から、リストまたはアトムを返します。
戻り値:アトム、またはリスト

read 関数は、文字列の最初の要素を、適切な型に変換して返します。

最初の要素とは、整数・実数・文字列といったアトムを表す文字列や、リストを表している文字列で、空白スペースで区切られた最初の要素です。文字列の中で入れ子状に””で囲むと空白を含んでいても最初の一つの要素として扱われます。

適切な形に変換するとは、リストに変換できる文字列であればリストに、小数点の付かない整数に変換できるものであれば整数に、実数に変換できるものであれば実数に、空白を含まない文字列であればシンボル名に、そして空白を含む文字列の場合はそのままの文字列に変換されます。最初の要素がなければ、つまり空の文字列が与えられた場合は nil を返します。

_$ (read "")⏎
nil
_$ (read "(1 2 3) (4 5 6) (7 8 9)") ⏎
(1 2 3)
_$ (read "((1 2 3) (4 5 6)) (7 8 9)") ⏎
((1 2 3) (4 5 6))
_$ (read "1 2 3")⏎
1
_$ (read "10.0 20.0 30.0")⏎
10.0
_$ (read "He read the child to sleep.") ⏎
HE

英文から最初の単語を変換したものは、シンボル名あることに注意してください。そのため最初の単語にあたるものの中にシンボル名で使えない文字は使用することができず、もし含まれていた場合は、そこで空白の区切りがあるのと同じに扱われます。使えない文字は、「¥t¥n()」といったものです。

_$ (read "H(e read the child to sleep.") ⏎
H

シンボル名ではなくて文字列が返るようにするためには、最初の要素が“”で囲まれている必要があります。具体的にはエスケープ文字を使って「¥”」で囲みます。囲まれた範囲に空白が含まれていても、一つの最初の要素として扱われます。

_$ (read "¥"He¥" read the child to sleep.") ⏎
"He"
_$ (read "¥"He read the child¥" to sleep.") ⏎
"He read the child"

リスト

AutoLISP関数
(vl-list->string list)
list:整数のリスト
ASCII 文字コードに対応する十進数のリストを、文字を結合した文字列に変換します。
戻り値:文字列

vl-list->string 関数は、ASCII 文字コードを表す整数のリストを、文字を結合した文字列に変換します。

_$ (vl-list->string '(65 66 67 68))
"ABCD"

逆の働きは、vl-list->string 関数を参照してください。

シンボル

AutoLISP関数
(vl-symbol-name symbol)
symbol:シンボル
シンボルから、シンボルの名前の文字列を返します。
戻り値:文字列

vl-symbol-name 関数は、シンボルから、シンボル名を表す文字列を返します。シンボル名はすべて大文字に変換されます。

_$ (vl-symbol-name 'PI) ⏎
"PI"
_$ (vl-symbol-name 'quote) ⏎
"QUOTE"

逆のことを行いたい場合は、read 関数を参考にしてください。

オブジェクト

オブジェクト情報を文字列として表示したいなどについては、PRINx関数で説明している vlprin1-to-string 関数と vl-princ-to-string 関数とを参照してください。