VBA向けテンプレートエンジン「MiniTemplator」の使い方例。コラムCADおすすめ本カテゴリ一覧お問合せホームCADVBA向けテンプレートエンジン「MiniTemplator」の使い方例。2018.03.04VBA向けのテンプレエンジン「MiniTemplator」を紹介します。テンプレートにエクセルから情報を流し込んで、ファイルを生成することができます。このおかげで、プログラミングが最小限に抑えられます。手軽に品質の良い結果が得られ、かなり助かりました。公式サイト公式サイトはこちら。files各種言語にむけて配布されています。テンプレートエンジンとは「MiniTemplator」はテンプレートエンジンの一種です。テンプレートエンジンとは、「テンプレート(ひな型)となるデータに情報を流し込んで、ファイルを生成するためのライブラリー(コンポーネント)」です。何が便利なのか?独立したソフトではないので、プログラミングがゼロになるわけではありません。何をさせたいかは、自分で書く必要があります。都度必要になる下記のような処理は、「MiniTemplator」から機能を呼べばよいだけ。少ない記述で済みます。・テンプレを読み込む・定義どおりに置換する・出力する・・・などこれを一から作るのは、考えただけでぞっとします。シンプルで明快なルール「MiniTemplator」はシンプルでコンパクトだけど、十分に使えます。テンプレートの文法も簡単なので、覚える手間がほとんどかかりません。LTや互換CAD(DraftsightやBricsなど)で使うための、「スクリプトファイル」を生成しました。「スクリプトファイル」とは、図面への処理内容を記述したファイル。大量の図面に処理を適用するために使います。dwg形式のファイルが100枚あるとします。それらを、「バージョンを指定してDXFに変換したい」としましょう。その場合、100枚分の処理を1つのファイルに記述せねばなりません。下記のような条件があります。ファイル名の末尾がA3なら、バージョンは2000へ変換する。ファイル名の末尾がA4なら、バージョンは2013へ変換する。いう条件を加味したスクリプトファイルを、手早く生成できるのです。最終的に、こんなアウトプットファイルが出来ました。図面一枚あたり数行のスクリプトを、図面枚数分繰り返して、一つのファイルにすべて記述した(一部可変させながら)繰り返しの中で一部可変させたのは、ファイルパスとバージョン。1000行以上のコードが一瞬で生成されるわけです。LTではないAutoCADならば、複数ファイルに適用できる専用ツールがあります。LTで動作確認しました。変換対象の図面が入ったフォルダに、下記のファイルを置きます。ひな型となるテンプレートファイルVBAを仕込んだエクセルファイルひな型となるテンプレートファイルはこんな感じテンプレートは、図面一枚あたりの処理内容を書いておくだけ。これをVBAから出す指示で、図面の枚数分繰り返したファイルを生成します。色付きの部分(${file}や${ver})は、私が任意に設定した変数です。$と{}で囲むのは文法として決まっているので、従っています。VBAを仕込んだエクセルファイルはこんな感じB列は、上記のひな形の${file}に流し込むためのリストです。生成されたスクリプトファイルちゃんと100枚分が、条件通りに生成されています。一枚あたりの18行ほどのコードを、100枚分繰り返して1つのファイルに記述しています。(更に、ファイル名がA3なら変換バージョンを2000に。A4は2013、という条件でしたね)さあ、では次からは詳細な使い方を解説していきます。その前に、使うツールを準備して下さい。使うツールの準備MiniTemplatorこれがないと始まりません。fileswww.source-code.biz各種言語にむけて配布されています。ダウンロードしたら、ZIPファイルを解凍しておいて下さい。エクセルVBAを使うので、「開発タブ」を有効にしてください。Basic」をクリック。Basicが立ち上がったら、「ファイル」→「ファイルのインポート」をクリック。先ほどダウンロードしたMiniTemplatorの「MiniTemplator.cls」をインポートして下さい。ちなみに、コードは「挿入」→「標準モジュール」で追加されるエリアに書き込んでいきます。テキストエディタエンコードによりエラーが出る可能性もあるので、必須といえると思います。無料で高機能のMeryがおすすめです。作り方の詳細ファイルの置き場所これから説明するファイルは、同じフォルダの中に置く想定です。最後に実行して作られるファイルも、同じ場所に生成されます。テンプレートファイルを作る繰り返すベースとなる、テンプレート(ひな形)を作ります。ファイルの文法はシンプルです。拡張子はtxtのテキストファイルとして、保存しておけばOKです。ファイル名は、「cad-script-template.txt」としておきます。可変部分のカタマリを、beginblockとendblockで囲みます。変数(条件によって可変させたい部分)を、${hogehoge}で表現します。hogehogeは、自分で好きに決めて下さい。全機能の詳細は、公式サイトのドキュメントに記載されています。Documentationいきなりスクリプトを生成せず、一枚だけのテストスクリプトを書いて必ず正常動作を確認してください。LTとBricsCADなど互換CADでは同じスクリプトが動かない可能性があります。どちらも、今回の課題「dwgファイルを、バージョン指定して変換する」スクリプトです。LTの場合は、変換後のファイル名はエンターで自動的に決めてくれます。上記のコードが表示されない方は、こちらのリンク先をご覧ください。V17の場合しかしBricsCADは、変換後の名前はきっちりと具体的に指示してやらねばなりません。いうCADごとの細かい違いにご注意ください。上記のコードが表示されない方は、こちらのリンク先をご覧ください。VBAを仕込んだエクセルファイルを作る今回の課題では、下記のような流れで処理します。エクセルファイルにファイル名のリストを貼付まず、エクセルで、変換対象のファイルリストを作ります。これを、後から作るVBAのプログラムで読み取っていきます。実行ボタンの作り方は、後述します。ファイルリストの作り方ここで、「ファイルリストってどうやって作るの??もしかして手打ち?」と心配になった方。大丈夫です、自動でできます。変換対象のdwgファイルを、一つのフォルダにまとめて入れておきます。次に、下記のバッチファイルのコード5行をテキストエディタでコピペして、「file.bat」とでも名付けて同フォルダに置きます。上記のコードが表示されない方は、こちらのリンク先をご覧ください。そのbatファイルをダブルクリックして実行します。すると、「file-list.txt」というファイルが出来ています。それを開いて、エクセルにコピペすればOKです。batファイルを見て頂くとわかりますが、わざと拡張子無しのリストを生成する仕様です。VBAから順次リストを読み出し、テンプレの変数へ流し込むこんな感じのコードで処理しました。Basicをクリック。モジュール」をクリックしてできたエリアに書き込んでください。上記のコードが表示されない方は、こちらのリンク先をご覧ください。1.で作ったエクセルリストがありますね。そのセルB2から順にファイルリストを読み取って、テンプレートの変数に流し込んでいます。読み取ったファイル名の条件により、変換バージョンを分岐させています。テンプレートの読み込みや書き出し、ブロックへの追加はエンジンの規則に従った定型文です。全機能の詳細は、公式サイトのドキュメントに記載されています。DocumentationVBAでのコードの流れは、下記サイトを参考にさせて頂きました。フォームコントロールのボタンの絵をクリック。適当にボタンを配置して下さい。すると、ダイアログが出てきます。実行させたいプロージャ名を選択してください。この記事のサンプルコードではmainの中にコードを書きました。mainを選択します。作った実行ボタンをクリックすれば、プログラムが実行されファイルが生成されます。注意スクリプトファイルは、必ず動作前にテストファイルで正常動作を確認してください。思わぬミス(ファイルの消失)などが発生する可能性があります。「CADを立ち上げて、スクリプトファイルをドラッグアンドドロップするだけ」です。CADのメニューからスクリプトファイルを実行しても構いません。「output-cad-script.scr」というファイルを生成したとしましょう。CADを立ち上げます。新規作成で空の図面をひらいておきます。そこへ、先の「output-cad-script.scr」をドラッグあんどドロップします。すると、処理が実行されます。VBAでやるメリットテンプレートエンジンはいろんな言語向けに、様々に存在します。そのなかで、VBAがおすすめな理由を書いてみました。親しみやすいいくらテンプレートエンジンが便利でも、それを操る言語を覚えるハードルが高いと億劫になってしまいます。エクセルなら、日常的に使っている方は多いはず。私もCADのカスタマイズやエクセルの自動化でVBAを日常的に触っていて、得意ではなくとも抵抗がありませんでした。「使ってないからわからない」という方もいるかもしれません。VBAなら今の時点でわからなくても、エクセルが使えるならすぐに馴染めます。資料や書籍も豊富です。私は、この本で勉強しました。分厚く取っつきにくく感じるかもしれませんが、順を追って丁寧に書かれています。文中の説明用の細かいサンプルコードも、地味に役立ちますよ。2015-05-16AmazonKindle楽天ブックスhontoUIも手軽に作れるVBAなので、エクセルとの連携は容易です。そのエクセルのワークシートで最低限のUIを手軽に作れるのが良いです。パラメータの入力欄など、テンプレートに流し込む情報をエクセル上で表現できます。実行ボタンやメッセージウインドウの表示なども、手軽に使えますよね。人に渡しやすいエクセルは大抵のPCにインストールされています。一般的なPC環境であればほぼ誰でも実行が可能です。pythonにも、jinja2という割と手軽に使えるテンプレートエンジンがあって時々使っています。一人で使う分には良いですが、python環境がないと実行できないのがネックです。さいごにちなみに、今回出会った「MiniTemplator」を知る前、自作VBAで生成していました。単純な繰り返しならこれで賄えていましたが、しかし!繰り返すスクリプトを変化させたいなど、条件が増えるとお手上げになります。テンプレートエンジンの作者様に感謝しています。Writer」が便利。AutoCAD上で複数図面にコマンドを適用できるよ。Writer」というAutoCADのLispツールを紹介します。AutoCAD上で、複数図面へコマンドを一括適用することができます。コピーnoboyuのぼゆエンジニアリング関連記事スポンサーリンクエクセルで作る簡易な部品表の紹介。考えてみましたスポンサーリンクプロフィールのぼゆです。普段は個人事業主として、機械設計や製図の請負などに従事しています。独学から入ったので、その勉強法や業務上のTipsなどを綴ります。モールの応力円とは?意味と書き方を、計算をすっとばして説明するよ【超初心者向け】2017.07.082020.02.01「片持ちばり」のSFDとBMD。3パターンの計算を解説するよ2017.08.032019.12.09超初心者向け。(曲げモーメント図)書き方マニュアル2016.12.042019.12.09AutoCAD互換の「IJCAD」、2D業務での使用感と違いをレポート。維持費が大幅にダウンできそうです2017.07.162019.12.09超初心者向け。目次へトップサイドバースポンサーリンクプロフィールのぼゆです。普段は個人事業主として、機械設計や製図の請負などに従事しています。独学から入ったので、その勉強法や業務上のTipsなどを綴ります。モールの応力円とは?意味と書き方を、計算をすっとばして説明するよ【超初心者向け】2017.07.082020.02.01「片持ちばり」のSFDとBMD。3パターンの計算を解説するよ2017.08.032019.12.09超初心者向け。(曲げモーメント図)書き方マニュアル2016.12.042019.12.09AutoCAD互換の「IJCAD」、2D業務での使用感と違いをレポート。維持費が大幅にダウンできそうです2017.07.162019.12.09超初心者向け。生成したスクリプトファイルの使い方VBAでやるメリットさいごに関連記事タイトルとURLをコピーしました。