【ARES / AutoCAD】複数のマルチテキストの背景マスク(境界オフセット係数)を一括で変更するLISP

ARES CADやAutoCADで図面を描いているとき、「複数のマルチテキスト(注釈)の背景マスクを一括で変更したい」と思ったことはありませんか?

実は、CADの標準仕様(プロパティパレット)では、複数選択すると背景マスクのON/OFFしか切り替えられず、「境界オフセット係数(余白の幅)」をまとめて変更することができません。

1つずつダブルクリックしてエディタから変更するのは気が遠くなる作業ですよね。そこで今回は、ARES CAD(Standard以上)およびAutoCADで、一瞬で複数のマルチテキストを「図面の背景色」かつ「指定したオフセット係数」に書き換える自動化スクリプト(LISP)をご紹介します!


解決内容

  • 複数のマルチテキストの背景マスクをまとめて変更したい
  • マスクの色をレイヤー色(ByLayer)ではなく、文字の後ろが綺麗に隠れる「図面の背景色」にしたい
  • 余白の幅(境界オフセット係数)を毎回自由に入力して指定したい
  • ARES CADだけでなく、AutoCADでも同じLISPを使って効率化したい

背景マスク一括変更LISPコード

以下のコードをコピーして、メモ帳などのテキストエディタに貼り付け、ファイル名を chgbm.lsp (拡張子は必ず .lsp)として保存してください。ARES CAD、AutoCADのどちらでもそのまま動作します。


(vl-load-com)

;; メイン処理の関数定義(変数をローカル化して安全性を向上)
(defun my-chgbm-process ( / offset ss i ent mtextObj entry )
  ;; 1. コマンド入力で即座に係数入力を求める
  (setq offset (getreal "\n新しい境界オフセット係数を入力 (1.0 - 5.0) <1.5>: "))
  (if (not offset) (setq offset 1.5))
  
  ;; 境界値のチェック
  (if (or (< offset 1.0) (> offset 5.0))
    (progn
      (princ "\nエラー: 係数は 1.0 から 5.0 の間で指定してください。")
      (exit)
    )
  )

  ;; 2. マルチテキストの選択
  (princ "\n背景マスクを変更するマルチテキストを選択してください:")
  (setq ss (ssget '((0 . "MTEXT"))))
  
  (if ss
    (progn
      (setq i 0)
      (while (< i (sslength ss))
        (setq ent (ssname ss i))
        (setq mtextObj (vlax-ename->vla-object ent))
        (setq entry (entget ent))
        
        ;; 既存の背景マスク設定をクリア
        (setq entry (vl-remove-if '(lambda (x) (member (car x) '(90 63 45 441))) entry))
        
        ;; 背景色(90 . 3) と 入力されたオフセット係数を追加
        (setq entry (append entry 
                            (list 
                              '(90 . 3) 
                              (cons 45 offset)
                            )))
        
        (entmod entry)
        (vla-update mtextObj)
        (setq i (1+ i))
      )
      (princ (strcat "\n完了: " (itoa i) " 個のマルチテキストを「図面の背景色(係数: " (rtos offset 2 2) ")」に更新しました。"))
    )
    (princ "\nマルチテキストが選択されませんでした。")
  )
  (princ)
)

;; コマンドの定義(大文字小文字はARESが自動で区別なく処理します)
(defun c:chgbm () (my-chgbm-process))


使い方・操作手順(ARES / AutoCAD共通)

ステップ1:LISPファイルを読み込む

  1. CADで図面を開きます。
  2. 作成した chgbm.lsp ファイルを、作図画面の中にドラッグ&ドロップします。(これでコマンドがロードされます)

ステップ2:コマンドの実行と数値入力

  1. コマンドラインに CHGBM と入力して Enter キーを押します。(大文字・小文字どちらでも構いません)
  2. 新しい境界オフセット係数を入力 (1.0 - 5.0) <1.5>:」と表示されるので、設定したい数値を入力して Enter を押します。(そのまま Enter を押すと標準の 1.5 になります)

ステップ3:オブジェクトの一括選択

  1. 背景マスクを変更するマルチテキストを選択してください:」と表示されます。
  2. 変更したい文字を画面上で窓選択(範囲選択)などでまとめて選択し、Enter キーを押します。

これだけで、選択したすべてのマルチテキストの後ろが、指定した余白幅の「図面の背景色」で綺麗にマスクされます!背景マスクが元々オフだった文字も、自動的にオンに切り替わります。


💡 このコードのこだわりポイント

  • 高い互換性: ARES CAD(Standard以上)とAutoCAD(旧コンパクト/旧LTを除く現行の各エディション)の両方に対応した「Visual LISP(ActiveXオブジェクト)」の記述を採用しているため、環境を選ばず安定して動作します。
  • 「図面の背景色」に固定: 通常、LISPで単純にマスクをオンにするとレイヤー色(ByLayer)になってしまい、文字が塗りつぶされて見えなくなることがあります。このコードではDXFグループコードの90番を 3 に指定しているため、確実に図面の背景と同じ色で隠してくれます。
  • 安全設計(ローカル変数化): 他のLISPプログラムと干渉してCADがクラッシュしたり誤作動を起こしたりしないよう、内部で使用する変数をしっかりと保護(ローカル化)しています。

一度ロードしてしまえば、図面内の大量の文字の余白調整が一瞬で終わるので、製図の仕上げ作業が圧倒的にスピードアップします。ぜひ試してみてください!