SOLIDWORKS APIで自動化してみよう

はじめに


CCTが提供している調達DX(調達DX ~見積もり自動化技術~ | CCT)ではAIや3D CADのデータを使用して製造業の見積もりの自動化技術を提供しています。技術開発の際、SOLIDWORKSなどで3D CADデータを操作することがしばしばあるので、今回は一部事例を紹介したいと思います。

SOLIDWORKSとは?


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

マクロを作ってみよう


1:仕様について

今回は、3D CADファイルを変換するマクロを作ってみます。社内でのみ使用する想定なので、外見などは簡単に済ませます。詳細は以下です。

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

今回作成するのは「指定したフォルダに存在する3D CADモデルを特定の形式に変換する機能」です。

製作の背景としては冒頭に述べたように、業務上3D CADモデルの変換が必要な場合がしばしば存在し、今まではSOLIDWORKSの機能で1モデルずつ手作業で変換していましたが、マクロで一括変換できると便利であるためです。

また今回は、同一フォルダ内に「.stp」や「.SLDPRT」など様々な拡張子が存在する場合を想定しています。

◆操作フロー
  1. フォルダを選択
  2. 変換元の3D CADモデルの拡張子を選択(テキスト入力も可)
  3. 変換先の拡張子を選択(テキスト入力も可)
  4. 実行後、フォルダ内で指定した拡張子を持つ3D CADファイルが全て変換されている

今回はSOLIDWORKS2021を使用して作成します。

2:SOLIDWORKSでのマクロ作成方法

SOLIDWORKS画面上部のツールバーから「ツール」→「マクロ」→「新規」を押下すると新規マクロファイルを作成することができます。今回はマクロ名を「CADFileConverter」としました。

ファイル作成が完了するとSOLIDWORKS内蔵の統合開発環境(IDE)が立ち上がります。SOLIDWORKSのマクロは拡張子が「.swp」であり、これは「SW VBA Macros」という形式です。別途拡張子を「.vb」としたファイルを用意することでVBAとしてVS Codeなどで編集可能になりますが、今回はSOLIDWORKS内蔵IDEを使用します。

ファイル生成時のエディタ画面

このIDEはF9キーでブレークポイントを設定することができます。ブレークポイントを設定することでマクロの実行をその位置で停止させることができるため、変数に格納されている値の確認などといったデバッグ作業が可能になります。

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

各種指定をするための入力フォームを追加しましょう。今回は社内で使用するツールなので簡易的に作成します。

◆入力フォーム

SOLIDWORKS内蔵エディタで「ユーザーフォームの挿入」を押下し、フォームに以下を追加します。

  • フォルダパスの指定テキストボックス、フォルダの参照ボタン
  • 変換前拡張子の指定テキストボックス
  • 変換後拡張子の指定テキストボックス
  • 変換実行ボタン
  • 各種説明テキスト

UI

上記を実現するようにボタンやテキストボックスを配置してみました。入力フォーム同様、今回は社内で使用するツールなので一旦これで良しとします(しましょう)。

◆処理の実装

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

ファイル読み込み

フォルダの参照によって入力フォルダを指定できると便利なので、この方式を使用してみます。

今回はVBAのShell.BrowseForFolder()を使用して、以下のようにフォルダを選択するダイアログボックスを表示させました。

VBA Shell

コードは以下になります。

ファイル変換

ファイル変換機能はSOLIDWORKSの機能で提供されています。いくつかのSOLIDWORKSのAPIを組み合わせて、マクロを作っていきましょう。

〇情報の取得

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

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

〇ファイルを開く

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

〇ファイルを変換して保存する

開いたファイルを変換して保存します。対応するSOLIDWORKS APIはSaveAsになります。

また、SOLIDWORKSで開いた3D CADを閉じるAPIはCloseDocになります。

これらを実装したコードは以下です。

 

マクロを動かしてみよう


作成したマクロをSOLIDWORKSに適用して動かしてみましょう。まずはSOLIDWORKSにマクロを適用して、CommandManagerにアイコンを表示させてみたいと思います。

 

ツールバー箇所で「右クリック」→「ユーザー定義」を押下して、新規タブを表示させます。次に、ツールバー上に現れる「新規タブ」の名前を設定し、ユーザ定義から「マクロボタン」をDrag&Dropします。今回はタブ名を「SWマクロ」としました。

ボタンを追加します

これでボタンの登録が完了し、CommandManagerからマクロが実行できるようになりました!

マクロを実際に動かしてみましょう。試しにフォルダを作成して(今回はC:\testとしました)、「.SLDPRT」拡張子を持つ計5モデルを「.stp」へ変換してみます。各テキストボックスを記入し、「変換する」ボタンを押下して待ちます。

30秒ほど経つと変換が終了しました。結果を見ると、SLDPRTファイルのみ変換できていることが分かります。

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

おわりに


SOLIDWORKS APIを用いてマクロを作成することができました。APIは豊富に公開されているので、マクロによる3D CADモデル作成の自動化なども可能です。またC++, C#にも対応しているため、用途に合わせて言語を使い分けることができます。

筆者は、事前にこの記事を知り合いのFRくんに見せたのですが、大変喜んでいました。自動化は人を笑顔にしますね。

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

最近の記事

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

アーカイブ

カテゴリー

PAGE TOP