SOLIDWORKS APIで自動化してみよう2:Excel APIの併用

はじめに


CCTが提供している調達DX(調達DX ~見積もり自動化技術~ | CCT)ではAIや3D CADのデータを使用して製造業の見積もりの自動化技術を提供しています。技術開発の際、SOLIDWORKSなどで3D CADデータを操作することがしばしばあります。例えば、モデル拡張子の変換や、モデル情報の抽出、コンフィグレーションの切り替えなどがあります。今回は一部事例を紹介したいと思います。
本記事は、この記事(SOLIDWORKS APIで自動化してみよう)の続編です。

SOLIDWORKSとは?


Dassault Systèmes SolidWorks Corporationから発売されている3D CADソフトウェアです。[Wikipedia] メジャーな3D CADソフトウェアのうちの1つであり、「使いやすさ」を主軸に製品開発が行われています。3D CADシステムで達成したい主な操作はすべて可能です。また、APIが豊富に公開されているため、これらを使用することで、操作を自動化するマクロを作成することができます。マクロを利用することで、繰り返し行う作業を自動化することができ、SOLIDWORKSをさらに便利に使うことができます。


マクロの作成


仕様について

今回は、3D CADモデルを読み込み、その情報をExcelに出力するマクロを作ってみます。社内でのみ使用する想定なので、外見などは簡単に済ませます。詳細は以下です。

◆作りたい機能とその背景

今回作成するのは「指定したフォルダに存在する3D CADモデルについて、その質量特性をExcelに出力する機能」です。業務上モデルの質量特性を収集する機会が多く、今まではSOLIDWORKSの機能で都度確認しExcelに転記していましたが、マクロで完結できると大変便利です。VBAを用いることで、Excel APIはSOLIDWORKS上から使用可能です。また今回は、Excel出力が可能であることを簡潔に示すため、対象ファイル形式をSLDPRTに限定しています。
それでは、マクロを作成していきましょう。SOLIDWORKS2021で動作することを目指します。

SOLIDWORKSでのマクロ作成方法(前回記事からの追加手順のみ)

SOLIDWORKSでのマクロ作成方法については、前回記事を参照してください。
ここでは、Excel APIを用いるために必要な追加手順についてのみ言及します。

◆参照設定の追加

Excel APIを用いた開発するにあたり、必要ライブラリへのパスを追加で繋ぎこむ必要があります。これを「参照設定の追加」と呼びます。
SOLIDWORKS画面上部のツールバーから「ツール」→「参照設定」へと遷移し、Microsoft Excel Object Libraryを追加します。これを追加することで、Excel APIを使用することが可能になります。
今回使用したPCではver16.0ですが、ここはお使いのPCによって適宜変更してください。

参照設定の追加

Excel参照設定の追加

◆入力フォームを作成しよう

前項と同様、詳細については、前回記事を参照してください。
今回は、以下の操作ができることを目指します。

  1. フォルダを選択
  2. 「Start」ボタンを押下
  3. フォルダ内に”モデル名+.xlsx”がそれぞれ出力される

ここでは結果のみ掲載します。社内ツールのため、簡素なUIにしています(センスもないので……)

画面

画面

◆処理の実装

SWP形式はVBAと同様に実装することができます。

フォルダ読み込み

こちらは前回記事からの流用で済ませました。このように機能ごとに実装を分割することによって、別プログラムでも使用できる場合があります。ぜひ検討してみて下さい。

ファイル読み込み

フォルダ内のファイルのうち、SLDPRTファイルの場合にその質量特性をExcel出力するように実装しましょう。

質量特性のExcel出力

質量特性の取得メソッドはSOLIDWORKS APIで提供されています。また、Excelファイル新規作成、セル書き込み、出力などの機能はExcel APIで提供されています。これらのAPIを組み合わせて、マクロを作っていきましょう。今回はToExcel()関数として実装しています。

〇情報の取得

マクロを動かすためにはまず、SOLIDWORKSオブジェクトを取得します。これは

で可能です。これにより、SOLIDWORKSオブジェクトswAppを使用してSOLIDWORKSのAPIを使うことができます。また、立ち上げている3D CADモデルの情報を取得する場合はModelDocメソッドを使用します。

〇ファイルを開く

今回はOpendoc6というSOLIDWORKS APIを使って3D CADファイルを開くことにします。引数で挙動をいくつか制御可能です。

〇質量特性の取得

CreateMassProperty2というSOLIDWORKS APIを使って質量特性を取得可能です。またこのAPIを使用するためにはExtension Propertyを経由します。

〇Excelワークシートの新規作成 / 保存

ここからはExcel APIを使用します。Microsoft Learnというページを検索すると、Excelファイルの新規作成についてはAddメソッドを使用すると実現可能であることが分かります。対して、Excelファイルの保存については、SaveAsメソッドを使用すると実現可能であることが分かります。

〇セルへの書き込み

上記手順で作成したエクセルにおいて、書き込みたい領域のセルをアクティブにします。これはActivateメソッドやRangeメソッドにて実現可能です。
今回は手軽に作る社内ツールということで、横着してある程度ハードコーディング(コード内に番号などを直接実装すること)しています。
単位系などは、お使いのSOLIDWORKSや、出力したい単位に合わせて適宜変更してください。

これでマクロが作成できました。これらを実装したコードを記載します。


マクロを動かしてみよう


作成したマクロをSOLIDWORKSに適用して動かしてみましょう。SOLIDWORKSにマクロを適用する方法は前回記事をご覧ください。
今回は、7種類のSLDPRTファイルを用意しました。簡単のため、フォルダは”C:\test” 配下とします。

DateSet

DateSet

実行完了時にメッセージボックスが表示され、処理件数が表示されます。

End

End

マクロ実行後、フォルダにモデル毎のExcelファイルが出力されていることが分かります。実装次第では、まとめて1ファイルにすることも可能です。

Model+Excel

Model+Excel

肝心のExcelの中身ですが、ちゃんと出力されています。今回密度の設定はデフォルトのままなので、Mass=Volumeになっています。

Output

Output

変換したいモデルが1000個あっても、同様の手順で変換可能です。待ち時間は少し長くなりますが、その間はゆっくりルイボスティーでも飲めばOKです。

おわりに


SOLIDWORKS APIとExcel APIを用いてマクロを作成することができました。APIは豊富に公開されているので、マクロによる3D CADモデル作成の自動化なども可能です。またC++, C#にも対応しているため、用途に合わせて言語を使い分けることができます。加えて、ExcelやWord、さらにはVisioなどへの連携も可能です。
発展的な使用方法としては、これらのデータを収集してグラフ化することでデータ分析を行う などが考えられます。

それではみなさんも、楽しい自動化ライフをおくりましょう~!

最近の記事

  • 関連記事
  • おすすめ記事
  • 特集記事

アーカイブ

カテゴリー

PAGE TOP