こんにちは。テクノソリューションズ マーケティング担当です。
前回のブログでは「SOLIDWORKS APIとは、SOLIDWORKSをオリジナルカスタマイズして業務効率化できる便利な魔法である」というようなお話をしました。今回は「誰にでも使える魔法なら使ってみたい!」という方に向けた内容です。無償で試すことができますので、一緒にやってみませんか?
(前回のブログで簡易アンケートにご回答いただいた方への回答にもなっていると思います。届きますように)
少し深い内容も含んでいますので、小難しい話はさておき実際の開発手順に興味があるという方は「SOLIDWORKS マクロを使ってみよう!」の章、どんなものが作れるのか参考にしたいという方は「SOLIDWORKS マクロを使った事例集」の章(動画あり!)までスキップしてご覧ください。
SOLIDWORKS API開発の事前準備フロー
まずは開発前に考えておくべきことをざっくりお伝えします。

1.やりたい操作の手順化
開発において一番最初に必要なのは「何を作るか」を決めることです。
毎日 / 週一など定期的に実施している反復作業のスピードアップや、ユーザが手動で実施している作業の入力ミスによるエラーの削減が期待できるようなツールを作りましょう。さらに高度な使用方法として、設計の自動化も可能です。
SOLIDWORKSでの操作 / 手順化を検討し、その中にモデルの選択など人の手で操作することが含まれていたら、プログラムが操作できるように工夫する必要があります。
どんなものを作るかまだピンと来ていない方は、後の章で事例をご紹介しますので参考にしてみてくださいね。
2.面やエッジのID指定
たとえば、「立方体の上面を選択する」ことは、マウス操作では簡単にできますね。プログラムが同じことをしようとした場合、立方体の6つの面に個別で割り振られているIDで指定することになります。

しかし、SOLIDWORKSでは内部では面やエッジが持っているIDをユーザに公開していません。そのため、プログラムで制御するときには、プログラムが認識できるように予めユーザがIDを指定しておく必要があります。皆さんも普段からお使いの面プロパティやエッジプロパティで簡単に指定できます。
3.実装方法の検討
SOLIDWORKS マクロ / アドイン / スタンドアローンアプリケーションのうちどの実行方法で実装するかを検討します。
SOLIDWORKS マクロはSOLIDWORKSの標準機能で、SOLIDWORKSと一緒にインストールされています。開発の難易度は低いですが、大規模な開発には不向きです。
アドインはSOLIDWORKSに機能拡張用のユーザが作成したソフトウェアを合体させることでSOLIDWORKS機能を増やせるソフトウェアのことで、開発の難易度は高いです。
スタンドアローンアプリケーションは、SOLIDWORKSに合体させずに単独で動作するソフトウェアです。SOLIDWORKSの環境に依存せず独立した環境で動作します。アドインに比べて開発の難易度は低いです。
それぞれの特徴は以下の表をご覧ください。

SOLIDWORKSをカスタマイズできる言語
どういうものを作るかが決まったら、どのプログラミング言語を使って開発するかをご検討ください。SOLIDWORKS APIは、数百のオブジェクト、数千のメソッド、数千のプロパティから構成されています。それらを呼び出してSOLIDWORKSをカスタマイズするのに使えるプログラミング言語を以下にリストアップします。
- 1.SOLIDWORKS マクロ
- 2.Excel VBA(Visual Basic for Application)(Excel上で動作する、SOLIDWORKS マクロと同じような機能です)
- 3.VB.NET (アドイン)/(スタンドアローンアプリケーション)
- 4.C#.NET (アドイン)/(スタンドアローンアプリケーション)
この中の1つも使ったことがないし聞いたこともないという方は、特別な準備のいらない「SOLIDWORKS マクロ」で試してみてください。
SOLIDWORKS マクロについて
今回はSOLIDWORKS API の習得するにあたって初心者に一番優しいSOLIDWORKS マクロの使い方をご紹介します。
SOLIDWORKS マクロはSOLIDWORKSの標準機能で、SOLIDWORKSと一緒にインストールされています。開発環境を購入したり設定する必要がありませんので、ちょっとAPIをさわってみたいという方にぴったりですし、上級者になっても効率的な開発のために使用している方が多いです。
SOLIDWORKSのコマンド実行履歴を記録し、それをベースに開発できます。
API ヘルプにサンプル マクロが記載されていて参考にすることができます(弊社からも提供可能ですのでご相談ください)。
SOLIDWORKS マクロのメリットとデメリットをまとめると以下のようになります。
メリット

- ・SOLIDWORKS マクロはSOLIDWORKSの動作を記録できます
- ・プログラミングの知識があまり必要ではありません
- ・Excel VBAをお使いであれば、ほぼ同じと考えても問題ありません
デメリット

- ・複雑な処理を実装することが困難です(簡単な入力画面は作成できます)
- ・プログラミングやデバッグも容易ではありますが社内展開する場合に問題が起きることもあります
SOLIDWORKS マクロを使ってみよう!
お待たせしました!いよいよ実際の開発手順のご紹介です。
・作りたいもの
通常業務として「SW_Files」フォルダの中のアセンブリファイルを開いて、「STEP_Files」フォルダにSTEPファイルを保存しています。その手順の一部をSOLIDWORKS APIで自動化してみましょう。

・開発手順(マクロの記録)
1.SOLIDWORKSでアセンブリファイル(car.sldasm)を開きます。自動化検討のためにSOLIDWORKS マクロを使うことにします。

2.SOLIDWORKS マクロの記録を開始します。
マクロツールバーの「マクロの記録 / 一時停止」をクリックすると、それ以降の作業内容が記録されます。

3.ファイルの種類をSTEP AP203ファイル(car.step)に変えて指定のフォルダ(STEP_Files)に保存します。

4.ここまでが自動化したい作業なので、マクロの記録を停止して保存(SaveAsSTEPFile.swp)します。せっかくなので、ここではマクロを保存するフォルダも変更(Macro_Files)します。


「記録した後に自動的にマクロを編集」にチェックを入れていた場合は、ここで記録されたマクロが表示されます。手動で開くには、マクロツールバーの「マクロ編集」から保存した「SaveAsSTEPFile.swp」を開いてください。


・開発手順(マクロの編集)
記載されているソースコードの解説をします。
最初の3行はマクロの保存場所や記録した日時などの情報です。「 ❜ 」で始まっている緑色の文字の行は、ただのコメントとして扱われてプログラムには影響しません。どういう処理をしている部分なのか、他の人が見ても分かるように説明を入れておくようにしましょう。それがないと、過去の自分が作ったプログラムでさえ解読に無駄な時間を要することがありますのでご注意ください(経験者は語る)。
4行目からの「Dim」で始まる部分は変数の宣言です。プログラムの中で必要になる変数は最初に用意しておきます。
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
そして「Sub main()」から「End Sub」までがプログラムの本体で、実際にマクロを記録した間の処理を実行している部分です。SOLIDWORKS API オブジェクトを生成し、アクティブなモデルドック(部品、アセンブリ、図面などのオブジェクト)を取得して、「STEP_Files」フォルダに「car.STEP」として保存しています。中に含まれる処理部分は以下のようにインデントを下げると見やすいです。
Sub main()
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
' Save As
longstatus = Part.SaveAs3("C:\ModelFiles\STEP_Files\car.STEP", 0, 2)
End Sub
6.汎用的に使える用に書き換えていきます。※緑のコメント部分と赤い文字が追記したところです。
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim sStepFileFolder As String
Dim sPathName As String
Sub main()
'* STEPファイルを保存するフォルダ名
sStepFileFolder = "C:\ModelFiles\STEP_Files\"
'*-------------------------------------------------------------
'*
'* SOLIDWORKS API オブジェクトを取得します
'*
Set swApp = Application.SldWorks
'*
'* 現在、アクティブなモデルドックを取得します
'* モデルドックとは部品、アセンブリ、図面などのオブジェクトです
'*
Set Part = swApp.ActiveDoc
'*
'*-------------------------------------------------------------
'* 少しだけ汎用的に現在、開いているモデルの名前を取得します
'* 必要な変数の宣言と、ファイルシステムのオブジェクトを取得します
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
'* 現在、開いているファイルのパスを取得します
sPathName = Part.GetPathName
'* モデル名を取得します、ファイル名を取得するのにVBAの関数を使用します
'* GetBaseNameを使用して取得した拡張子なしのファイル名に、拡張子(STEP)を追加します
sPathName = objFSO.GetBaseName(sPathName)
sPathName = sPathName + ".STEP"
'* STEPファイルで保存するフォルダ名とモデルのファイル名を設定します
'* この例で現在開いているファイル名は"car"ですので以下のようになります
'* sPathName = "C:\ModelFiles\STEP_Files\car.STEP"
'*
sPathName = sStepFileFolder & sPathName
'* STEP ファイルを保存します
' Save As
longstatus = Part.SaveAs3(sPathName, 0, 2)
End Sub
ポイントは、保存先のフォルダ名は固定で指定することと、ファイル名は固定ではなく、開いているモデルの舐名前を元に決定しているということです。これで、作成したマクロでSOLIDWORKSファイルからSTEPファイルに変換する一部の処理を自動化できました。
8.編集したマクロを上書き保存します。

9.完成したマクロの動作確認をしてみましょう。新たにアセンブリファイルを開き、マクロツールバーの「マクロ実行」から先ほど保存した「SaveAsSTEPFile.swp」を実行します。


STEPファイルが指定したフォルダの中に保存されていれば開発成功です。
SOLIDWORKS マクロを使った事例集
前回のブログで紹介したB社の例で、SOLIDWORKS マクロを使って自動化した様子を動画にしてみました。

自動化なしの手動で同じ作業をすると、難しくはないものの時間がかかりますし、保存場所を間違えたり忘れたりする可能性があります。こうしてSOLIDWORKS APIを使って自動化しておくことで確実に楽に作業完了できるのですから、導入しない手はないですよね?
さて、ここまでの例では必要がなかった入力画面が必要になる場合もあります。簡単な入力画面などのユーザインタフェースであればSOLIDWORKS マクロでも作成できますが、Excelを使用する方が簡単なので、以下にSOLIDWORKS APIとExcelを連携させた事例をご紹介します。これらから連想される「いつもの作業」、ありませんか?開発のヒントにどうぞ。
・スケッチ面に穴を作成 <入力ミスを無くし設計効率を高める効果>
・穴フィーチャーを取得 <入力ミスを無くし設計効率を高める効果>
・ユーザ定義プロパティを管理する <入力情報の確認、入力ミスの低減>
SOLIDWORKS API関連サービスのご紹介
・自力で開発してみたい方へ
経験が少ないとゼロからの開発は大変だと思いますので、SOLIDWORKS API ヘルプ のサンプルを眺めるところから始めてみてはいかがでしょう?
そしてこのブログを読んでくださった方には大サービス!動画で使用した、ファイル保存のマクロをプレゼントしちゃいます!これを元に更にカスタマイズしたら楽して業務効率化できるかも?
ご希望の方は、お問合せフォームより「サンプルマクロ希望」とご記入のうえ送信ください。
SOLIDWORKS API に関するお問合せフォームはこちら
絶対に!独学よりも効率的に学べるトレーニングもオススメです。初めて開発をする方や、簡単な開発ならできるけれど一度きちんと学びたい方向けの初心者コースから、複雑な作業を自動化したい方の上級者コースまで、お客様のレベルやご要望に応じてご用意できます。
\お問合せはコチラから/

・開発を依頼したい方へ
テクノソリューションズでは個別の開発も承っております。「こんなことってできるのかな?」「あの作業、時間がかかっちゃっているからワンクリックでできるようにしてほしいな」など、少しでも興味がありましたらお気軽にご相談ください。
SOLIDWORKS API に関するお問い合わせフォームついつい長くなってしまいました。最後まで読んでいただき、どうもありがとうございました。
また簡易アンケートもポチっとしていただけると嬉しいです。