[C# SolidWorks API] 立方体を造る
スケッチとフィーチャーの機能を利用して,簡単な部品を造ってみましょう.今回は,次の3つのステップで,立方体を造る方法を紹介します.
1. 新しいドキュメントを作る
2. 正方形をスケッチする
3. 正方形を押し出して立方体を造る
1. 新しいドキュメントを作る
部品ドキュメントを作る方法を見ていきましょう.
1.1 部品ドキュメントのつくるための設定ファイルの場所を取得する
System.string ISldWorks.GetUserPreferenceStringValue(
System.int UserPreference
)
UserPreferenceは,swUserPreferenceStringValue_eの値で指定します.今回は,部品ドキュメントを作るので,(int)swUserPreferenceStringValue_e.swDefaultTemplatePartとします.
戻り値は,設定ファイルの場所(パス)です.
他のドキュメントを作るための設定ファイルを取得するためには,swUserPreferenceStringValue_eの値を変更します.
1.2 ドキュメントを作ります
System.object IsldWorks.NewDocument(
System.string TemplateName, // テンプレートファイルの場所
System.int PaperSize, // ドキュメントのサイズ(A4やA2など)
System.double Width, // ドキュメントの幅
System.double Height // ドキュメントの高さ
)
PaperSizeは,swDwgPaperSizes_eで指定します.
WidthとHeightは,ドキュメントのサイズがユーザ定義(すなわち,swDwgPapersUserDefined)の場合に利用される引数です.
戻り値は,ドキュメント(IModelDoc2)です.
ファイルを開いてドキュメントを作る方法は,[C# SolidWorks API] ドキュメントを開くを参照してください.
2. 正方形をスケッチする
スケッチマネージャを使って,正方形をスケッチします.
2.1 ドキュメントのスケッチマネージャを取得します
ISketchManager sketchMan = IModelDoc2.SketchManager;
2.2 スケッチマネージャを使って,ドキュメントに新しいスケッチを追加します
sketchMan.InsertSketch(true);
2.3 正方形の対角線上の点を指定して,正方形を描きます
sketchMan.CreateCornerRectangle(x1, y1, z1, x2, y2, z2);
3. 正方形を押し出して立法体を造る
フィーチャーマネージャを使って,スケッチした正方形を押し出して立方体を造ります.
3.1 ドキュメントのフィーチャーマネージャを取得します
IFeatureManager featMan = IModelDoc2.FeatureManager;
3.2 スケッチを押し出します
FeatureExtrusion3メソッドには引数が23個もあります.ここでは,主要なもののみ説明します.必要に応じてリファレンスを参照して下さい.
(とはいってもリファレンスだけでは,すぐ理解できない内容もあります.そのような場合には ,通常のヘルプの関連項目が 理解の助けになることがあります.今回の場合では,押し出し PropertyMangerなどが参考になるかと思います.他には,実際に引数を変更してみて,動作がどう変わるのか実験してみるのも,メソッドの内容を理解するには有効な方法です.)
Feature FeatureExtrusion3(
System.bool Sd, // true: 一方向に押し出す (以下,正方向と呼びます)
// false: ↑と反対方向に押し出す(以下,負方向と呼びます)
System.bool Flip,
System.bool Dir, // true: 押し出す方向を反転させる
System.int T1, // 正方向の終端の条件 swEndConditions_eで指定する
System.int T2, // 負方向の終端の条件
System.double D1, // 正方向の押し出し量 [m]
System.double D2, // 負方向の押し出し量 [m]
System.bool Dchk1,
System.bool Dchk2,
System.bool Ddir1,
System.bool Ddir2,
System.double Dang1,
System.double Dang2,
System.bool OffsetReverse1,
System.bool OffsetReverse2,
System.bool TranslateSurface1,
System.bool TranslateSurface2,
System.bool Merge, // true: 押し出した形状を他の部品とマージする
System.bool UseFeatScope,
System.bool UseAutoSelect,
System.int T0, // 押し出しの起点になる対象物を指定する(ものだと思われます)
// 参考:Create Extrusion Feature Example
// swStartConditions_eで指定する
// スケッチそのものを押し出す場合は,swStartSketchPlaneを指定する
System.double StartOffset,
System.bool FlipStartOffset
)
コード
全体のコードを確認してみましょう.createCubeメソッドで立方体を造っています.引数のlengthは,立方体の一辺の長さ [m] です.
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 86 87 88 89 90 91 92 93 94 95 96 97 98 |
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 createCube(double length) { string partTemplate = swApp.GetUserPreferenceStringValue((int)swUserPreferenceStringValue_e.swDefaultTemplatePart); if ((partTemplate != null) && (partTemplate != "")) { model = (IModelDoc2)swApp.NewDocument( partTemplate, // テンプレートファイルの場所 (int)swDwgPaperSizes_e.swDwgPaperA2size, // ドキュメントのサイズ(A4やA2など) 0.0, 0.0); // 正方形を描く ISketchManager sketchMan = model.SketchManager; sketchMan.InsertSketch(true); sketchMan.CreateCornerRectangle(0, 0, 0, length, length, length); // 正方形を押し出す IFeatureManager featMan = model.FeatureManager; featMan.FeatureExtrusion3( true, // 一方向に押し出す false, false, (int)swEndConditions_e.swEndCondBlind, (int)swEndConditions_e.swEndCondBlind, length, // lengthが押し出し量 0.0, false, false, false, false, 0.0, 0.0, false, false, false, false, true, // 押し出した形状を他の部品とマージする false, false, (int)swStartConditions_e.swStartSketchPlane, // スケッチした面を押し出す 0.0, false ); } else { Console.WriteLine("There is no part template available. Please check your options and make sure there is a part template selected, or select a new part template."); } } static void Main(string[] args) { var p = new Program(); Console.WriteLine("Starting SolidWorks"); p.startSW(); double length = 0.1; Console.WriteLine("Creating Cube"); p.createCube(length); } } } |
実行例
動作を確認しましょう. 一辺が0.1 [m] の立方体を作成しています.
まとめ
CreateCornerRectangleメソッドを使って,四角形を描く方法を説明しました.
FeatureExtrusionメソッドを使って,スケッチを押し出す方法を説明しました.
一辺の長さを指定して立方体を造るcreateCubeメソッドを定義しました.
Post Thumbnail by Bruce Tuten