SOLIDWORKSをカスタマイズ!~マクロで簡単な開発にトライしよう

2024.2.22

API開発

こんにちは。テクノソリューションズ マーケティング担当です。
前回のブログでは「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 マクロ」で試してみてください。

各言語で可能なカスタマイズ例を見てみる

マクロのカスタマイズ例

  • ・コマンドの繰り返し操作(連続操作)の実行
  • ・コマンド結果の条件を満たす場合と満たさない場合で処理を分ける
  • ・モデルファイルを開く、モデルファイルのロード
  • ・抽出した情報のファイル出力

マクロ or VBAのカスタマイズ例

  • ・Excelとの連携(部品表、設計テーブルのカスタマイズ)
  • ・SQL、SQLiteとの連携(データベースに登録されたパラメータによる部品管理)
  • ・Office製品との連携

VB、C#(アドイン)/(スタンドアローンアプリケーション)のカスタマイズ例

  • ・汎用性の高い機能を収録した”DLL”にしてSOLIDWORKSのアドインマネージャーの利用
  • ・社内のVB、C# プログラムの資産利用
  • ・SOLIDWORKSのメニュー、ツールバーの追加
  • ・イベントの履行
    (SOLIDWORKS内で発生した動作・出来事をアプリケーションに知らせる方法。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形式での保存」処理を記録させたいので、ファイル>指定保存から、ファイルの種類を「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 = "【マクロの記録の手順で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を連携させた事例をご紹介します。これらから連想される「いつもの作業」、ありませんか?開発のヒントにどうぞ。

スケッチ面に穴を作成する <入力ミスを無くし設計効率を高める効果>

詳細を見てみる
一度に複数の穴を作成することはありませんか?

■指定したスケッチ面に穴(複数)を作成する
 ⇒Excelから穴の中心座標値を予めセルで指定して入力

Excelから穴の中心座標値を予めセルで指定して入力するイメージ

穴フィーチャーを取得する <入力ミスを無くし設計効率を高める効果>

詳細を見てみる
一度に複数の穴フィーチャーの確認をすることはありませんか?

■部品の穴フィーチャーを取得する
 ⇒Excelのセルに穴フィーチャー名を表示

Excelのセルに穴フィーチャー名を表示するイメージ

ユーザ定義プロパティを管理する <入力情報の確認、入力ミスの低減>

詳細を見てみる
プロパティの編集に困っていませんか?

■SOLIDWORKS ドキュメントのプロパティ
 ⇒アノテーションとの連携可能
 ⇒部品表との連携可能
 ⇒Excelで容易に編集、管理が可能
 ⇒ファイルレベルのプロパティはWindowsファイル情報から取得可能

ユーザ定義プロパティをExcelで管理するイメージ

■SOLIDWORKS API関連サービスのご紹介


SOLIDWORKS API サポートサービスのバナー

・自力で開発してみたい方へ

経験が少ないとゼロからの開発は大変だと思いますので、SOLIDWORKS API ヘルプ のサンプルを眺めるところから始めてみてはいかがでしょう?

そしてこのブログを読んでくださった方には大サービス!動画で使用した、ファイル保存のマクロをプレゼントしちゃいます!これを元に更にカスタマイズしたら楽して業務効率化できるかも?

ご希望の方は、お問合せフォームよりファイル保存サンプルマクロ希望」とご記入のうえ送信ください。
(※ご提供までに少しお時間をいただく場合がありますが、ご了承ください)

  SOLIDWORKS API に関するお問合せフォームはこちら

絶対に!独学よりも効率的に学べるトレーニングもオススメです。初めて開発をする方や、簡単な開発ならできるけれど一度きちんと学びたい方向けの初心者コースから、複雑な作業を自動化したい方の上級者コースまで、お客様のレベルやご要望に応じてご用意できます。

  トレーニングの一覧

\お問合せはコチラから/

開発を依頼したい方へ

テクノソリューションズでは個別の開発も承っております。「こんなことってできるのかな?」「あの作業、時間がかかっちゃっているからワンクリックでできるようにしてほしいな」など、少しでも興味がありましたらお気軽にご相談ください。

SOLIDWORKS API に関するお問い合わせフォーム

■続編のご案内


API関連の情報をお探しならこちらもご覧ください!

【コラム】失敗しない!設計者CAEの導入法とは?

【アーカイブ配信のお知らせ】APIで解析を自動化しませんか?

ついつい長くなってしまいました。最後まで読んでいただき、どうもありがとうございました。
また簡易アンケートもポチっとしていただけると嬉しいです。

ブログを読んでの感想に近いものを教えてください(複数回答可)