例えば100枚の図面に書いた文字を置換して修正する場合。
デフォルトでは1枚ずつの作業になりますが、ツールで解決できます。
注意
この記事の方法は、AutoCAD LTではできません。
AutoCADの標準機能では、一括置換ができない・・
一応、AutoCADには図面上の文字を検索/置換する機能はあります。
但し、コマンドラインではなく立ち上がるウインドウ上での動作です。そして、開いている図面に対して1件ずつしかできません。
大量の図面があるとすごく時間がかかります。
1枚ずつ開いて、検索/置換機能を立ち上げて、というのはしんどい。
自分でLISP書かないと駄目なのか・・(時間かかりそう汗)と思ったら優れたものが公開されていました。
ありがたいLISPツール、「srxText」
ツールの配布サイトはこちら。
ページの一番下側にダウンロードリンクがあります。
srxText – search/replace AutoCAD drawing texts
使っている様子を下記に挙げます。
操作の様子(gif動画)
ツールを使う様子はこんな感じ。
この動画では開いた図面に対して、検索・置換をしています。
サンプル課題として、「Aユニット」という文字を「Bユニット」に置換してみます。
複数図面への一括適用も可能(後述)。
デフォルトの置換コマンド(find)を使うよりも使い勝手がよく感じますね。
なにより正規表現が使えるし、コマンドライン上で全て完結するからです。
デフォルトの検索・置換コマンド(find)は、逐一ウインドウが立ちあがえるので操作がモッサリと遅くなる感覚があります。
以下、導入から使い方までを説明していきます。
導入
ダウンロードする
ツールの配布サイトはこちら。
ページの一番下側にダウンロードリンクがあります。
srxText – search/replace AutoCAD drawing texts
ファイルをダウンロードしたら、PCの任意の場所に解凍して下さい。
ツール本体と、使い方が書かれたテキストファイルが入っています。
AutoCADに読み込む
AutoCADを立ち上げ、コマンドラインに「appload」と打ち込んでください。
アプリケーションのロード画面が立ち上がります。
先程ダウンロードしたファイル(拡張子VLX)を選択。
「ロード」をクリックし、ロード後は「閉じる」ボタンで閉じてください。
これで、ツールがAutoCADに読み込まれました。
使い方
導入が終わったら、通常のデフォルトコマンドと同じように扱えます。
コマンドラインに「srxtext2」と打ち込めばOKです。
コマンドラインに質問が返ってくるので、指示通り進めていきます。
操作の流れはこんな感じ。
サンプル課題として、「Aユニット」という文字を「Bユニット」に置換してみます。
1.「srxtext2」と入力
コマンドラインに、「srxtext2」と入力します。
2.検索方法を聞いてきます
こんな問いが返ってきます。
Search texts using [Regular expression/Exact string/Substring] :
「正規表現か完全一致か部分一致か?」という質問です。
-
マルチテキストでは単純な置換でも、正規表現で表すのがオススメです。
部分一致がうまく働かない事があります。 -
ダイナミックテキストなら部分一致(Substring)でもよいです。
サンプル課題として、「Aユニット」という文字を「Bユニット」に置換してみましょう。
マルチテキストで書かれた文字がある事も考えて、正規表現(r)を入力します。
Search texts using [Regular expression/Exact string/Substring] : r
3.置換したい言葉を入力
以降はこんな感じで処理が進んでいきます。
検索語を入力します。
Enter the searched pattern: A(.*ユニット)
「Aユニット」と普通に書かずにこんな書き方をしたのは、マルチテキストも検索に引っかかる様にする為です。
マルチテキストは見かけ上「Aユニット」と書かれていても、フォントの記述コードが存在する場合があるからです。
▼こんな感じで。
処理は続きます。
次は置換する語を入力します。
Enter the replace pattern ($1$2 for regex captures): B$1
「$1」は検索時にマッチした文字列を参照するワードです。
今回の例だと、検索時にカッコで括った部分(.*ユニット)を「$1」で表現しています。
Search only in [Layer/All] : A
Search only [Selected/All] : A
そして次の選択肢はこちら。
Perform [Replace/Yes to all/Skip/Exit]? : Y
Yes to allで一括変換開始です。Rなら一個ずつ、になります。
完了です。
操作動画もう一回置いておきます。
正規表現の例
正規表現の表現方法については、配布サイトで例が解説されているので、ざっとよんで練習すればすぐに使えるようになります。
配布サイト
srxText – search/replace AutoCAD drawing texts
上記サイトからの引用になりますが、
「D19-457-03667」という型番を「Part:457/03667 Code:D19」に変えたい場合。
図面に何か所もある場合、手作業なら相当面倒です。
でもこのツールなら楽ができます。すごく重宝しています。
ちなみに、CSVファイルに検索・置換後をリストアップできる機能もあります。
こちらは有償ライセンスとなっています。
用途が合致する人には便利だと思います。
大量の図面に適用するには、Scriptproを使えばOK
上記ツール単体では、開いている図面にしか検索・置換ができません。
これを複数図面に一括適用するには、Autodeskで公式配布されているツールを使います。
Scriptproというツールです。
このツールの使い方については、過去記事に書きましたのでまたご参考に。
具体的には、SRXTEXT2を実行するスクリプトファイルを書いて、Scriptproで実行するイメージです。
スクリプトファイルの内容はこんな感じ。
注意としては、lispプログラムはあらかじめAUTOCAD上でスタートアップ登録をしておいてください。
メモ帳に記述して、拡張子をscrにして、Scriptproに読み込ませます。
3行目は検索語句、4行目は置換語句です。
配布サイトはこちら。
独立したプログラムとして動作します。インストールしたら、スタートメニュなどからscriptpro.exeを実行します。
1でスクリプトファイル指定、2で図面指定、3で実行できます。
処理に失敗する場合は
スクリプトの中に日本語(全角文字)が含まれる場合、処理が正常に終了しない事があります。
その場合は、スクリプトを保存する際にエンコードの種類をSHIFT-JISに設定すると、改善する可能性があります。
エンコードの種類は、一般的なテキストエディタなら保存時に指定できます。(Windowsのメモ帳の場合はANSIでいけるかもしれません)