AutoLISP入門 関数紹介

【itoa】文字列を使いこなそう!AutoLISPの文字列関数を解説

文字列

今回の記事ではAutoLISPの文字列関数について解説していきます。

ユーザーへのメッセージ作成や、取得した寸法値の処理など幅広い用途がある関数です。

使用例を交えて説明していますので、AutoCADを効率化したい方はぜひご覧ください。

【itoa】文字列を使いこなそう!AutoLISPの文字列関数を解説

text

数値⇒文字列変換:itoa / rtos

itoaとrtosは数値を文字列に変換する関数です。

特にitoaは整数を文字列に、rtosは実数を文字列に変換します。

rtosは引数の設定次第で、変換される文字列の表記を変更することができます。

itoaの書式

(itoa 数値)

引数内容
数値整数または実数。
返り値内容
文字列整数が文字列に変換される。
引数が実数の場合、文字列に変換されるのは整数部のみ。

rtosの書式

(rtos 数値 [モード [精度]]) ※[]内は省略可能

引数内容
数値整数または実数。
モード表記のモードを表す整数。
1:指数表記
2:十進表記
3:工業図面表記(フィートと小数インチ)
4:建築図面表記(フィートと分数インチ)
5:分数表記
制度精度を示す整数。
返り値内容
文字列実数が文字列に変換される。
引数が整数の場合、小数点以下は表示されない。

itoa / rtosの使用例

;数値をitoaで文字列に変換する
(itoa 1)
⇒ "1"

(itoa 1.5)
⇒ "1"
;数値をrtosで文字列に変換する
(rtos 1)
⇒ "1"

(rtos 1.5)
⇒ "1.5"
;実数を小数点以下2位までの文字列として表示する
(rtos 10.564 2 2)
⇒ "10.56"

(rtos 10.565 2 2)
⇒ "10.57"

小数点以下の数値は四捨五入されます。

文字列⇒数値変換:atoi / atof

atoiとatofは文字列を数値に変換する関数です。

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

文字列が数値形式ではない場合は0または0.0が返ります。

atoiの書式

(atoi 文字列)

引数内容
文字列数値形式の文字列。数値形式でない文字列も指定できる。
返り値内容
整数引数が数値形式の文字列の場合、整数部のみを整数として返す。
数値形式でない場合は0が返る。

atofの書式

(atof 文字列)

引数内容
文字列 数値形式の文字列。数値形式でない文字列も指定できる。
返り値内容
実数数値形式の文字列を実数として返す。
引数が数値形式でない場合は0.0が返る。

atoi / atofの使用例

;文字列をatoiで数値に変換する
(atoi "1")
⇒ 1

(atoi "1.5")
⇒ 1

(atoi "aaa")
⇒ 0
;文字列をatofで数値に変換する
(atof "1")
⇒ 1.0

(atof "1.5")
⇒ 1.5

(atof "aaa")
⇒ 0.0

文字列の結合:strcat

strcatは複数の文字列を結合する関数です。

引数の文字列は記述した順番で結合されます。

strcatの書式

(strcat 文字列 ...)

引数内容
文字列結合する文字列。複数指定することが可能。
返り値内容
文字列引数を順番に結合した文字列が返る。

strcatの使用例

(strcat "今日は" "晴れ" "です")
⇒ "今日は晴れです"

文字列の抽出:substr

substrは文字列から一部の文字列を抽出する関数です。

抽出を開始する文字の順番と文字数を指定して抽出します。

文字の順番と文字数は半角文字でカウントされるので注意してください。

substrの書式

(strcat 文字列 整数1 整数2)

引数内容
文字列文字列を抽出される側の文字列。
整数1抽出開始文字の順番。先頭から半角文字でカウント
整数2半角文字でカウントした抽出する文字数。
抽出文字数を超える場合は抽出開始文字から最後までの文字列が返る。
返り値内容
文字列抽出した文字列。抽出される文字列が無かった場合は空白が返る。

substrの使用例

;文字列を抽出する
(substr "AutoLISP" 2 3)
⇒ "uto"

(substr "今日は晴れです" 7 15)
⇒ "晴れです"

(substr "a" 2 3)
⇒ ""

大文字・小文字変換:strcase

strcaseは文字を大文字または小文字に変換する関数です。

引数にnil以外を設定すると小文字が大文字に変換され、nilまたは省略だと大文字が小文字に変換されます。

strcaseの書式

(strcase 文字列 [引数1])

引数内容
文字列大文字または小文字に変換する文字列。
引数1大文字または小文字のどちらに変換する判別する引数。
nil(省略)またはnil以外を指定する。
返り値内容
文字列・引数1がnilまたは省略
小文字が大文字に変換された文字列が返る。

・引数1がnil以外
大文字が小文字に変換された文字列が返る。
変換する文字がない場合は引数の文字列がそのまま返る。

大文字⇒小文字はT、小文字⇒大文字は省略と思っていただければ大丈夫です。

strcaseの使用例

;文字列を大文字または小文字に変換する
(strcase "AutoLISP" nil)
⇒ "AUTOLISP"

(strcase "AutoLISP")
⇒ "AUTOLISP"

(strcase "AutoLISP" T)
⇒ "autolisp"

文字数カウント:strlen

strlenは文字列の文字数を半角文字でカウントする関数です。

文字列を指定しないとエラーになるので注意してください。

strlenの書式

(strlen 文字列)

引数内容
文字列文字数をカウントする文字列。文字列でないとエラーになる。
返り値内容
整数半角文字でカウントした文字数。空白もカウントされる。

strlenの使用例

;文字列の文字数をカウントする
(strlen "AutoLISP")
⇒ 8

(strlen "今日は晴れです")
⇒ 14

(strlen "Tom and Jon")
⇒ 11

まとめ

  • 数値⇒文字列の変換はitoa / rtos、文字列⇒数値の変換はatoi / atofを使用する
  • 文字列はsubstrで抽出できる
  • 大文字⇒小文字はstrcaseでTを引数に指定する。小文字⇒大文字は引数を省略。
  • strlenでカウントするのは半角文字数
構文内容
(itoa 数値)
(rtos 数値 [モード [精度]])
数値を文字列に変換する。
(atoi 文字列)
(atof 文字列)
文字列を数値に変換する。
(strcat 文字列 ...)複数の文字列を結合する。
(substr 文字列 整数1 整数2)文字列から部分的に文字列を抽出する。
(strcase 文字列 [引数1])大文字・小文字の変換をする。
(strlen 文字列)文字数を半角でカウントする。

-AutoLISP入門, 関数紹介

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