【ARES Standard 2027対応】簡易注釈(TEXT)をマルチテキスト(MTEXT)に一括変換するLISP

CADで図面調整をしているとき、「簡易注釈(TEXT)で書かれた文字を、一発でマルチテキスト(MTEXT)に変換したい!」と思ったことはありませんか?

AutoCADであれば標準の TXT2MTXT コマンドで一発ですが、ARES Standard にはそのコマンド(XtraTools機能)が搭載されていません。

さらに、ARES StandardでLISPを自作しようとすると、内部ローダーのバグによって「最初の引用符がありません」という謎のエラーが出たり、変換時に文字の位置が右下に大きく吹き飛んでズレたりする罠が存在します。

今回は、これらのARES特有のバグをすべてすり抜け、「文字の位置合わせ(左・中央・右)を完全にキープしたまま一括変換できる完全版LISP」を公開します。


💻 ARES Standard 2027 最適化 LISPコード

以下のコードを丸ごとコピーして、メモ帳などに貼り付け、ファイル名を txtomtext.lsp として保存してください。

;; メイン処理の関数定義
(defun my-txtomtext-process ()
  (setq ss (ssget '((0 . "TEXT"))))
  (if ss
    (progn
      (setvar "CMDECHO" 0)
      (setq i 0)
      (repeat (sslength ss)
        (setq ename (ssname ss i))
        (setq dxf (entget ename))
        (setq txt (cdr (assoc 1 dxf)))
        (setq ht  (cdr (assoc 40 dxf)))
        (setq lay (cdr (assoc 8 dxf)))
        (setq rot (cdr (assoc 50 dxf)))
        (setq rot (/ (* rot 180.0) pi))
        
        (setq h72 (if (cdr (assoc 72 dxf)) (cdr (assoc 72 dxf)) 0)
              v73 (if (cdr (assoc 73 dxf)) (cdr (assoc 73 dxf)) 0))
              
        (if (and (= h72 0) (= v73 0))
          (setq m71 1 pnt (cdr (assoc 10 dxf)))
          (setq pnt (cdr (assoc 11 dxf))
                m71 (cond
                      ((= v73 3) (cond ((= h72 0) 1) ((= h72 1) 2) (t 3)))
                      ((= v73 2) (cond ((= h72 0) 4) ((= h72 1) 5) (t 6)))
                      ((= v73 1) (cond ((= h72 0) 7) ((= h72 1) 8) (t 9)))
                      (t (cond ((= h72 1) 8) ((= h72 2) 9)
                               ((= h72 3) 5) ((= h72 4) 5) (t 9))))))
        
        (command "._-MTEXT" pnt "H" ht "R" rot "W" 0 txt "")
        
        (setq ent (entget (entlast)))
        (setq ent (subst (cons 8 lay) (assoc 8 ent) ent))
        
        (if (and (= h72 0) (= v73 0)) (setq m71 7))
        
        (if (assoc 71 ent)
          (setq ent (subst (cons 71 m71) (assoc 71 ent) ent))
          (setq ent (append ent (list (cons 71 m71))))
        )
        (entmod ent)
        
        (entdel ename)
        (setq i (1+ i))
      )
      (setvar "CMDECHO" 1)
      (princ "\nConverted ")
      (princ i)
    )
  )
  (princ)
)

;; 【ARES対策】あらゆる表記パターンのコマンド名にメイン処理を紐付ける
(defun c:txtomtext () (my-txtomtext-process))
(defun c:TXTOMTEXT () (my-txtomtext-process))
(defun c:TxtToMtext () (my-txtomtext-process))

※コードは注意してご使用ください。


⚙️ ARES 2027 での自動ロード(スタートアップ)登録手順

毎回ロードする手間を省くため、CAD起動時に自動で読み込ませる設定を行います。ARES 2027では「オプション」画面から一瞬で登録可能です。

  1. ARESを起動し、コマンドラインに OP(または OPTIONS)と入力して Enter
  2. 左メニューから 「システム オプション」 を選択。
  3. リストから 「アドイン(Add-ins)」 の左にある [+] を開き、「スタートアップ」 を選択。
  4. 右側にある 「追加(Add...)」 ボタンを押し、先ほど保存した txtomtext.lsp を選択して開く。
  5. 「適用」「OK」 を押してダイアログを閉じる。

これで設定は完了です!一度ARESを再起動してください。


📋 使い方

  1. ARESを起動し、図面を開きます。
  2. コマンドラインに txtomtext と入力して Enter
  3. カーソルが四角い選択モードに切り替わるので、変換したい文字を一括選択して Enter
  4. 元の文字が消去され、画層・文字高・角度・位置合わせが維持されたマルチテキストに一瞬で置き換わります!