CadExtractor

CadExtractor for ARES -image-

■はじめに
 CADからExcelにオブジェクト長やら座標値やらを効率よく取得するツールを作ってみました。
今さら感が強いのですが、依然としてCADからの拾いという仕事は結構あったりするので、そこそこ便利に使えるのでは無いか?という期待があります。

実際に配筋図と加工図、重量表の確認をした際は結構楽になった気もします。
自分はAutoCADでlist結果をlog出力し、それを秀丸マクロで長さ表記だけ抜きとり、Excelに持って行って整形する・・なんてことを長くやってきましたが、このCadExtractorでは選択したオブジェクトの長さを指定の単位でラウンドし、アクティブなセルに入力させることが出来るので本数、平均、合計長などは瞬時に確認できます。

●概要
CadExtractorはExcelアドインとして作成しました。

ActiveX機能を使ってCADソフトから情報を取得するので、対応するCADソフトが必要です。
今回はとりあえずARES版を公開いたします。

ActiveX機能を使ってCADソフトから情報を取得するので、対応するCADソフトが必要です。
今回はとりあえずARES版を公開いたします。
2021年10月10日:ACAD版のダウンロードを追加しました。

フリーウェアとしますが、コードが稚拙で恥ずかしいのでパスワードは設定しています。カンパは歓迎いたします。
ARESなどAutoCADを追った低価格CADソフトは基本的にほぼ同じ関数名を使用する傾向にあるようなので、少々改造すればBricsCADなどでも動くのだと思います。が、手元にソフトもないので未検証です。AutoCADはライセンス体系が少し変わって、いわゆるレギュラー版を使う人も増えそうなのでそのうちAutoCAD版も考えようと思います。

●主な機能
・オブジェクトの長さを取得します。
 対象:線分、ポリライン、3Dポリライン、円、円弧、リージョン
・文字列オブジェクトを取得します。
 対象:テキスト、マルチテキスト、マルチ引出線
・ブロックの属性値を取得します。
・オブジェクトの面積を取得します。
 対象:ポリライン、円、楕円、リージョン
・オブジェクトの座標値を取得します。
 対象:点、テキスト、円、ブロック、線、ポリライン、3Dポリライン、円弧(中心)
・寸法値を取得します。(計測値または上書き寸法)
 対象:長さ寸法、平行寸法、角度寸法、円弧寸法、半径寸法、直径寸法

・長さ、面積は取得値のラウンド桁指定や倍率設定が出来ます。
 倍率設定とは、mm定義図面をmで読みたいときなどに利用します。
 また、平均値、合計値計算を追加するオプションがあります。

●見た目

スクリーンショット

●ダウンロード

CadExtractor for ARES (538 ダウンロード)
CadExtractor for ACAD (490 ダウンロード)  2023年3月1日更新しました。

※2023年3月1日追記
AutoCADバージョンにおいて、座標取得を現在のUCSによる座標値を取得するように修正しました。

●初期設定
ActiveX機能を使用するため、Cadソフトに応じた参照設定(Alt + F11、ツールから参照設定)が必要です。

今回のARES版の場合、PCAD_AC_X 4.4 Type Library と PCAD_DB_X Type Library 4.4を選択します。

参照設定の例

これはARES 2020最終版の設定例です。
Helpによると、2019で4.3、2018で4.1だそうです。動作確認は2020で行っているためもしかしたら動作しない機能があるかもしれません。ご了承ください。

後は基本的に一般的なアドイン利用と同様で、アドインフォルダに入れてアドインの利用設定をするだけです。

アドインの利用設定画面

アドインフォルダは [ ファイル名を指定して実行 ] に[%appdata%\Microsoft\AddIns]このように入力して実行すると開きますので、これで開くのが楽です。ファイル名を指定して実行はWindowsマークを右クリックすればすぐアクセスできます。(またはWin+Rですね)

●アンインストール
レジストリを使用して環境を維持しています。
アンインストールの際はリボンの「DeleteReg」を押し、レジストリ情報を削除してください。

レジストリ情報を削除後、アドインの利用登録を解除してからアドインフォルダからファイルを削除してください。
後は参照設定から利用に際し参照利用設定したものを解除していただければアンインストール完了です。

★謝意
レジストリの扱いには@KotorinChunChunさんの快適にレジストリ操作ができるクラスを使わせていただきました。大変ありがとうございます。

その他、日暮的(byこち亀)プログラマーなのでネット上のvba参考資料に大変助けられました。ありがとうございました。