Q6: 文字を「(最小~最大)」に変換/MTextRange
このマクロでできること
※AutoCAD図面内のマルチテキストを、数値の範囲表記に自動変換するマクロです
処理 内容
① 指定したMTextを1つ選択
② 最小値・最大値を数値で入力
③ テキストを「(◯◯~◯◯)」の形式に変換(全角カッコ+全角波ダッシュ)
④ 元のMTextの文字列が上書き更新されます
このマクロにより、配筋注記や範囲指定などの表記を、手作業なしで統一的に作成できます。 例: (300~450) や (100~150) など。
■文字を「(最小~最大)」の形式に変換する(MTextRange.lsp)
(defun c:MTextRange ( / ent obj min max newtext )
(vl-load-com)
(prompt "\n範囲を表示するマルチテキストを1つ選択してください:")
(setq ent (car (entsel "\nMTextを選択: ")))
(if (and ent (= (cdr (assoc 0 (entget ent))) "MTEXT"))
(progn
(setq obj (vlax-ename->vla-object ent))
;; ユーザーから最小・最大値を取得
(initget 7)
(setq min (getreal "\n最小値を入力してください: "))
(initget 7)
(setq max (getreal "\n最大値を入力してください: "))
;; 「(123~456)」形式で作成(全角カッコと波ダッシュ)
(setq newtext (strcat "(" (rtos min 2 0) "~" (rtos
max 2 0) ")"))
;; マルチテキスト内容を更新
(vlax-put obj 'TextString newtext)
(prompt (strcat "\nマルチテキストを \"" newtext "\" に更新しました。"))
)
(prompt "\nマルチテキストが選択されていません。")
)
(princ)
)
📝 使い方
上記コードを .lsp ファイルに保存(MTextRange.lsp)
AutoCADで APPLOAD コマンドで読み込み
コマンドラインで MTextRange と入力
対象のマルチテキストをクリック
最小・最大値を数値で入力 → (123~456) に自動変換されます

