文字列|結合・切り出し・数値変換の基本
要点
strcat、substr、itoa、rtosなどを使って文字列を整えます。文字と数値を区別し、図面ラベルを組み立てる小さな例から始めます。
始める前に
先に確認すると読み進めやすい記事:
確認の手順
- 二重引用符で囲んだ文字列をコマンド欄に入力します。
- strcatで文字をつなぎ、結果を確認します。
- itoaやrtosで数値を文字列へ変換します。
- 掲載例のラベルを作り、substrで必要な部分を取り出します。
文字列とは?
AutoLISPでは、文字列は "abc" のようにダブルクォーテーションで囲まれたデータです。図面の属性値やユーザー入力など、さまざまな場面で登場します。
よく使う文字列操作関数一覧
| 関数名 | 説明 | 使用例 |
|---|---|---|
(strcat s1 s2 ...) | 文字列を結合する | (strcat "A" "uto" "CAD") → "AutoCAD" |
(strlen s) | 文字列の長さを取得 | (strlen "Hello") → 5 |
(substr s start [length]) | 文字列の一部を抽出 | (substr "AutoCAD" 5 3) → "CAD" |
(itoa n) | 整数を文字列に変換 | (itoa 123) → "123" |
(atof s) | 文字列を実数に変換 | (atof "3.14") → 3.14 |
(rtos r [unit] [precision]) | 実数を文字列に変換(書式指定可能) | (rtos 3.14159 2 2) → "3.14" |
(ascii s) | 文字列の先頭文字のASCIIコードを取得 | (ascii "A") → 65 |
(chr n) | ASCIIコードから文字を取得 | (chr 65) → "A" |
実用例:図面ラベルの自動生成
(defun c:labelgen ()
(setq base "部品番号-")
(setq num (itoa 105))
(setq label (strcat base num))
(alert label) ; → "部品番号-105"
)このように、strcat と itoa を組み合わせることで、数値を含むラベルを簡単に生成できます。
応用ポイント
substrを使えば、属性値の一部だけを抽出して分類できます。rtosを使えば、寸法値を図面に表示する際の書式を統一できます。asciiとchrを使えば、文字コードベースの処理も可能です(例:英字の並び替えなど)。
まとめ
AutoLISPの文字列操作は、単なる文字の結合や抽出だけでなく、図面の自動化やユーザーインターフェースの整備にも大きく貢献します。まずは基本関数を使いこなし、次のステップでは正規表現や文字列のパターン処理にも挑戦してみましょう!
結果の確認
数字の値と数字を含む文字列は別のデータです。表示桁数や単位を決めてから、図面へ書き込む処理に進みます。
参照資料
対象環境・動作確認
AutoLISP対応環境(関数・OSごとの対応は要確認)。内容更新:2026年10月5日。掲載コードのCAD実機検証は未実施です。図形を変更する例は、コピーした図面で結果を確認してください。