[C# SolidWorks API] ドキュメントを開く
SolidWorksには,部品(Part),図面(Drawing),アセンブリ(Assembly)ドキュメントがあります.あらかじめいくつか設計しておいた部品のドキュメントを読み込んで,シミュレーションによる性能評価を自動で行うことができれば便利です.
今回は,そんな自動化を見据えて,ファイル名を指定してドキュメントを開く方法をマスターしましょう.
ドキュメントを開くメソッド:OpenDoc6
SolidWorks APIで各種ドキュメントを開くには,OpenDoc6メソッドを使います.
OpenDoc6メソッドは,次に示すように6つの引数をとります.
ModelDoc2 OpenDoc6(
System.string FileName, // ファイル名 (正確には,ファイルまでのPath)
System.int Type, // ドキュメントの種類 (部品,図面,アセンブリなど)
System.int Options, // オプション
System.string Configuration, // コンフィグレーション
out System.int Errors, // Error Code
out System.int Warnings // Warnig Code
)
戻り値のModelDoc2は,ドキュメントを操作するためのオブジェクトです.
OpenDoc6を使って,ファイル名を指定してアセンブリファイルを開くメソッドopenAssemblyDocを定義してみましょう.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
void openAssemblyDoc(string fileName) { int errorCode = 0; int warningCode = 0; model = (IModelDoc2)swApp.OpenDoc6( fileName, // ファイル名 (int)swDocumentTypes_e.swDocASSEMBLY, // ドキュメントの種類 (int)swOpenDocOptions_e.swOpenDocOptions_Silent, // オプション "", // コンフィグレーション ref errorCode, // Error Code ref warningCode); // Warning Code checkStatus("openAssemblyDoc", errorCode); } |
openAssemblyDocメソッドのポイントは,名前を見て何をするメソッドかすぐ分かるようにした点と引数を一つにして使いやすくした点です.また,エラーコードをチェックするメソッドcheckStatusを利用することで,どこでどんなエラーが発生したのか追跡しやすくなっています.
部品や図面のドキュメントを開くことが多い場合には,ドキュメントの種類を部品や図面に設定したメソッドを同じ要領で準備しておくと便利です.
コード
全体のコードを確認してみましょう.checkStatusの定義もありますので確認して下さい.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; // for SolidWorks API using SolidWorks.Interop.cosworks; using SolidWorks.Interop.sldworks; using SolidWorks.Interop.swconst; // for Debuging using System.Diagnostics; namespace SwApiTutorial { class Program { // SolidWorks APIにアクセスするためのメンバ SldWorks.ISldWorks swApp; // 部品(Part),図面(Drawing),アセンブリ(Assembly)の各ドキュメントにアクセスするためのメンバ IModelDoc2 model = default(ModelDoc2); void startSW() { swApp = new SldWorks.SldWorks(); Debug.Assert(swApp != null); swApp.Visible = true; } void shutdownSW() { swApp.ExitApp(); if(swApp != null) { swApp = null; } } void openAssemblyDoc(string fileName) { int errorCode = 0; int warningCode = 0; model = (IModelDoc2)swApp.OpenDoc6(fileName, // ファイル名 (int)swDocumentTypes_e.swDocASSEMBLY, // ドキュメントの種類 (int)swOpenDocOptions_e.swOpenDocOptions_Silent, // 開く際のオプション "", // コンフィグレーション ref errorCode, // Error Code ref warningCode); // Warning Code checkStatus("openAssemblyDoc", errorCode); } // エラーが発生したときに,発生したメソッド名とエラーコードを表示するためのメソッド public static void checkStatus(string methodName, int code) { int success = 0; if (code != success) { Console.WriteLine(methodName + ": " + code); } } static void Main(string[] args) { var p = new Program(); Console.WriteLine("Starting SolidWorks"); p.startSW(); Console.WriteLine("Open Assembly Document"); string fileName = @"C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\Simulation\Examples\Nonlinear\nl_pipe_holder.sldasm"; p.openAssemblyDoc(fileName); } } } |
SolidWorksの起動については,[C# SolidWorks API] 起動と終了も参考にして下さい.
実行例
動作を確認してみましょう.ここでは,”C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\Simulation\Examples\Nonlinear\nl_pipe_holder.sldasm”というファイルを指定して開いています.
まとめ
SolidWorks APIでドキュメントを開く方法を紹介しました.
APIで提供されているOpenDoc6メソッドの使い方を確認しました.
より簡単にアセンブリファイルを開くためのメソッドopenAssemblyDocを定義しました.