iLogicからのエクセルファイル書込み

iLogicからのエクセルファイル書込み

masaya.sekido
Advocate Advocate
1,942件の閲覧回数
9件の返信
メッセージ1/10

iLogicからのエクセルファイル書込み

masaya.sekido
Advocate
Advocate

久しぶりの投稿になります。

Inventor2022の APIを利用して、アセンブリ内の全部品から所定のカスタムプロパティ

を抜き出して、社内規定フォーマットのエクセルファイルに書き込み(貼り付け)たいと考えています。

(EXCELを直接操作するとタスクキルしないといけない問題もありますが)

 

その他案として、まだ自己調査すらしてないですがiLogic⇒EXCELという選択肢はありますか??

OpenFIleDialog使えないので、とてもやり難そうですが。

 

部品表で出力も出来るんですが、融通が利かない部分もあり

(図番等、関数などでフィルタかけて所定の条件が整ったものだけ出力したいので)

カスタムしたいと考えています。

ご意見いただけますと助かります。

1,943件の閲覧回数
9件の返信
返信 (9)
メッセージ2/10

ohta_akira
Advocate
Advocate

私はInventor VBA⇒Excelでやったことがありますが、Excelの書式は手入力用に作られているケースが普通なので、それに完全に合わせようとするとエラー処理がかなり大変です。Excel書式側も自動化に歩み寄らないとかなり大変になります。先に値が入っていたりセルがずれていたり、設計変更前の値や誤った値が入っていた時の処理、それでエラーになったときにどこが問題だったか示すなど、エラー処理がコードの大半になってしまいました。。

この手のプログラムはそんなに短くないので、デバッグ環境のあるVBAをおすすめします。
個人的には全自動ではなく半自動である程度人間が判断するフローの方がスムーズという感覚を持っています。たとえば、Excel書式にコピペしやすい中間形式を出力するとか、クリップボードに書き込むとか。

ご参考まで。


Ohta Akira

AUG-JP

メッセージ3/10

masaya.sekido
Advocate
Advocate
解決済み

いつもお世話になっております。

早速のご回答有難うございます。

やはりそうですよねぇ・・一旦Listに入れてから結合してクリップボードに貼り付けて進めていましたが、

人に頼らない自動化を目指す、ワンクリック作業、ということも一応検討しておりまして・・

どうしても無くせないところはありますよね。

中間ファイルなら csv+マクロなどが妥当ですかね。

0 件のいいね
メッセージ4/10

masaya.sekido
Advocate
Advocate

ちょっとシンプルな実行例ですが ありました。私もやらないし、そのまま使える事ではないですが

皆様のご参考になれば。

 

Exporting data into Excel from Inventor using iLogic – Cadline Community

メッセージ5/10

ohta_akira
Advocate
Advocate

社内規定フォーマットが変則的でないか、自動化に合わせてある程度フォーマットの修正が可能であれば、できれば全自動で転記できたらカッコイイですよね。

何例かやった経験からすると、全自動は「かなり大変」です。

でも決して不可能ではないので、その難易度感を参考に是非チャレンジしていただければと思います。


Ohta Akira

AUG-JP

メッセージ6/10

HideoYamada
Advisor
Advisor
解決済み

BOMに必要な情報が全てあるという前提で、以下のようなVBAをExcel側で実装すればどうでしょう。

(私は、そうしています)

 

1) Inventorを遠隔操作して、BOMをCSVで保存する。

2) ExcelでCSVを開き、成形する。

 

コードをInventor側とExcel側の2か所に分散させるのは悪手です。

完全に片側に集約するか、それが無理なら汎用的かつ小さなコードだけ片側に残す実装にすると保守が楽。

どうしても両側にそれなりのコードが必要なら、きちんとクライアント - サーバーの概念を持ち込んで検討しないと、収拾がつかなくなりそうで危険。

 

=====
Freeradical
 Hideo Yamada
https://www.freeradical.jp
メッセージ7/10

masaya.sekido
Advocate
Advocate

いつもお世話になっております。

やったことは無いですが EXCEL側からという手がありましたね。

タスクのゴミ問題もないし。

 

最近VBAは避けていますが、検討してみます。

有難うございます。

 

0 件のいいね
メッセージ8/10

Octave.Lab
Advocate
Advocate
解決済み

@masaya.sekido さん

 

Inventor2022の APIを利用して、アセンブリ内の全部品から所定のカスタムプロパティ

を抜き出して、社内規定フォーマットのエクセルファイルに書き込み(貼り付け)たいと考えています。

まさに、その通りの事を以前はやっておりました。

Inventorから任意のカスタムプロパティを取り出して、Excelで編集し、元にもどす。といった運用です。

Excel VBA で InventorのApperentice API を使っていて、お客様には結構好評でした。

※ Apperentice を使わないと滅茶苦茶遅くなります。

 

ただ、今、それをやるかというとやらないと思います。以下にその理由。

  1. BOMのUI上でプロパティ編集ができるようになり、その方が便利になった事。
  2. 今更VBA?という空気。
  3. 使う人のPCの環境依存で動かないことが有った事。
  4. VBA実行中、エラー処理 (On Error.. )が無視されるようになった事。

自分だったら、条件判断の処理をVB.NETで書いてクラスにしておき、iLogicからアドインで呼ぶ処理にすること思います。で、直接Excelに書くのでなく、やはり中間ファイルにすると思います。

 

-YO
Octave.Lab
https://note.com/yo420186 
メッセージ9/10

masaya.sekido
Advocate
Advocate

いつも大変お世話になっております。

ご回答有難うございます。

うーーんVBAかぁ・・もう忘れちゃったんだけど、というのが正直私もありまして・・。

VBAレガシーにするなら、もう少しiLogicの環境が整ったら完璧なんだけどなぁ・・とも。

(私は2022からの導入でしたので VBAはエクセルくらいでした使ったことなく)

 

こんなに複数の方々に回答いただけるとは思いませんでした。

直接EXCELは出来るんですけど、結構大変だし推奨されないんですよね・・・

 

結局クリップボードになるかもしれませんが 

(コーディングは .netで行っております。)

全てのご回答が参考になりました。ありがとうございました。

0 件のいいね
メッセージ10/10

HideoYamada
Advisor
Advisor

iLogicではなくて、VisualStudioで.netが出来るんなら、そこに統一すると良いかも。

実行中のInventorのprocessを捕まえることができます。

NetFrameworkだと簡単だけど、NETなら一手間が必要。(ググったら出てきます)

 

Excelを外部から操作するのは、メモリーリーク云々があるから、気を使いますね。

それも、VisualStudioが使えるのならnugetでClosedXMLを入れると、Excel無しでワークブックを操作できますよ。

ちょうど、そんなコードを書いていました。

public static List<RenameResult> CollectChangeForRename(string workbookPath)
{
    using var workbook = new XLWorkbook(workbookPath);
    var worksheet = workbook.Worksheet(1);
    int rowIndex = RowIndex.DataAreaTop;
    List<RenameResult> RenameResults = [];
    while (true)
    {
        var row = worksheet.Row(rowIndex);
        if (row.Cell(ColumnIndex.OldFolderPath).Value.IsBlank)
        {
            break;
        }
        var newBaseName = row.Cell(ColumnIndex.NewBaseName).Value.ToString().Trim();

// 以下略

こんな感じで、ワークシートを直接操作して保存できます。

 

=====
Freeradical
 Hideo Yamada
https://www.freeradical.jp