この掲示板は AutoCADマクロ屋本舗 の掲示板です。

【 注意 】最初に必ず ↓↓ 下記内容 ↓↓ を参照ください。
① マクロが分からない方は、まず 【 マクロ講座 】 を参照ください。
② 質問の前に 【 マクロ使用前の注意事項 】 をお読みください。
③ 質問する時は、新規投稿フォーム下の【 新規投稿時のお願い 】を必ずお読みください。

部品表データ取得について
こんにちは。
AutoCAD Mechanical 2025で設計しています。
部品表(エンティティ・グループ・コード ACMPARTLIST)で書かれた表を
AutoLISPでcsvファイルに抜き出したいのですが
なかなか出来ません。
部品表のダイアログボックスのある「書き出し」ではcsvファイルに書き出すことができるのですが
一回一回ファイルをオープンし部品表を開き、書き出しコマンドを実行するルーティンが面倒で
アプリを作りたいのですが。。。
もし、可能でしたらヒントでもいいので教えてください。
よろしくお願いいたします。
  • パン君
  • 2025/02/02 (Sun) 16:05:08
Re: 部品表データ取得について
Mechanicalは、全く判りませんが、

複数のファイルを連続処理するにはAutoLISPだけでは無理なので、
スクリプトも併用しましょう。(VBAなら出来るかもしれない。知らんけど)

「部品表を開き、書き出しコマンドを実行するルーティン」
この作業は、マウスを使わずに、コマンドラインにキーボードから文字(コマンド)を入力するだけで実行できますか?

できるなら、その処理をスクリプトにすれば良いです。

コマンド入力だけでは無理であるなら、LISPを使って部品長の情報を抜き出すことが出来るか調べる。
抜き出せたなら、その情報ををテキストファイルに書き出す。
このLISPをスクリプトにして連続処理させる。

もしかしたら、簡単に出来る方法が有るのかもしれませんが、Mechanicalを持ってないのでゴメンナサイ。
  • ろびゃん
  • 2025/02/03 (Mon) 14:22:53
Re: 部品表データ取得について
VBAなら、こちらに参考になりそうなものがありました。
https://www.autodesk.com/jp/support/technical/article/caas/tsarticles/ts/3qvavl9J4BvU49XExKmYXM.html

VBAの使い方は、このあたりが詳しいかと
https://bimcim-kenkyujo.com/cad/autocad/vba/#outline_1__4

AutoCAD 用の Microsoft Visual Basic for Applications (VBA)モジュールはこちらから
https://www.autodesk.com/jp/support/technical/article/caas/tsarticles/tsarticles/JPN/ts/3kxk0RyvfWTfSfAIrcmsLQ.html
  • LUNE
  • 2025/02/03 (Mon) 17:08:08
Re: 部品表データ取得について
https://www.autodesk.com/jp/support/technical/article/caas/tsarticles/ts/3qvavl9J4BvU49XExKmYXM.html
ここのVBAコードをAIに頼んでautolispコードに移植してもらいました。動くのかは判りません。

(defun c:exportPartsListExcel ()
(setq BasePath "C:\\TEMP")
(setq BomName "MAIN")

(setq acadDoc (vla-get-ActiveDocument (vlax-get-acad-object)))

;; SymbolBBMMgrを取得
(setq symBBmgr (vlax-invoke-method acadDoc 'GetInterfaceObject "SymBBAuto.McadSymbolBBMgr"))

;; McadBOMMgrを取得
(setq cadBOMmgr (vlax-get-property symBBmgr 'BOMMgr))

;; BOMNameのBOMTableが存在するかをチェック
(if (vlax-invoke-method cadBOMmgr 'BOMTableExists BomName)
(progn
;; BOMTableを取得
(setq cadBom (vlax-invoke-method cadBOMmgr 'GetBOMTableByName BomName))

;; パーツリストを取得
(setq partsList (vlax-get-property (vlax-get-property cadBom 'partLists) 'Item 0))

;; エクセル形式でエクスポート
(if partsList
(progn
(setq fileName (strcat BasePath "\\" (car (vl-string->list (vla-get-Name acadDoc) ".")) ".xls"))
(vlax-invoke-method cadBOMmgr 'ExportPartList 1 partsList fileName "MAIN" :vlax-true)
)
)
)
)
)
  • ChatGPX
  • 2025/02/04 (Tue) 09:15:46
Re: 部品表データ取得について
ろびゃんさん、LUNEさんお返事ありがとうございます。
ろびゃんさんからご案内いただきました
「部品表を開き、書き出しコマンドを実行するルーティン」ですが
書き出しコマンドですがキーボードから入力ができないようです。

LUNEさんから教えて頂きました
VBAのコードを実行したのですが
Set cadBOMmgr = symBBmgr.BOMMgr
の箇所でエラーとなりました。
実行時エラー'-2147721005(800401f3);
「アプリケーションのロードに問題が発生しました」
何が原因がわかりますでしょうか。
  • パン君
  • 2025/02/07 (Fri) 19:10:58
Re: 部品表データ取得について
あいにく、Mechanicalを持っていないので検証できないのですが、コードが掲載されているHPに記載のあった参照設定はされていますよね?
  • LUNE
  • 2025/02/10 (Mon) 09:34:06
Re: 部品表データ取得について
LUNEさんお返事ありがとうございます。
参照設定はしているのですが
エラーが発生してしまします。
  • パン君
  • 2025/02/10 (Mon) 15:18:02
Re: 部品表データ取得について
[ツール]-[参照設定]からAutoDesk SymBBAuto 2021 Type Library、とコード掲載のHPにはありましたが、
バージョンは、お使いの2025に合わせて、AutoDesk SymBBAuto 2025 Type Library ですよね?

また、同じPCに他のバージョンのmechanicalがインストールされてないですか?
  • LUNE
  • 2025/02/10 (Mon) 15:42:40
Re: 部品表データ取得について
もし、他のバージョンがインストールされているなら、
Set symBBmgr = acadDoc.Application.GetInterfaceObject("SymBBAuto.McadSymbolBBMgr")
の部分を
Set symBBmgr = acadDoc.Application.GetInterfaceObject("SymBBAuto.McadSymbolBBMgr.25")
にしてみてください。
  • LUNE
  • 2025/02/10 (Mon) 15:44:45
Re: 部品表データ取得について
LUNEさん、早々のお返事ありがとうございます。
>バージョンは、お使いの2025に合わせて、AutoDesk SymBBAuto 2025 Type Library ですよね?
はい。

>また、同じPCに他のバージョンのmechanicalがインストールされてないですか?
されていません。

Set symBBmgr = acadDoc.Application.GetInterfaceObject("SymBBAuto.McadSymbolBBMgr.25")
に変更すると事実行できました。
どこをみれば「McadSymbolBBMgr.25」とわかるのでしょうか。
  • パン君
  • 2025/02/10 (Mon) 17:55:40
Re: 部品表データ取得について
実行できたのなら、よかったです。

>どこをみれば「McadSymbolBBMgr.25」とわかるのでしょうか。
おそらく、レジストリのどこかを見れば分かるらしいですが、どの値なのかは私は分かりかねます。

私は、下記を参考にしました。
https://forums.autodesk.com/t5/autocad-mechanical-forum/autocad-mechanical-2025-error-when-instantiating-mcadsymbolbbmgr/td-p/12734138

  • LUNE
  • 2025/02/12 (Wed) 09:24:02
Re: 部品表データ取得について
LUNEさんご案内ありがとうございます。
紹介していただいたサイトを拝見しました。
英語でチョット面喰いましたが大変勉強になりました。
ありがとうございます。
  • パン君
  • 2025/02/15 (Sat) 18:50:41

返信フォーム






プレビュー (投稿前に内容を確認)