3Dプリンターのデータ作成、修正、造形 株式会社 サンエツ
SolidWorks ソリッドワークス API マクロ 図面注記の全てを自動翻訳
図面注記の全てを自動翻訳(その1)
図面注記の全てを自動翻訳
図面の注記を英語で表記したいときがあります。
そんな時にボタン1つで図面の注記が全て自動翻訳されれば、非常に便利です。
今回はそのような自動翻訳機能が付いたプログラムを作成したいと思います。
使用言語はC#です。
下の図面は日本語の注記が4個表記された図面です。
ボタン1つで4つの注記を翻訳した図面です
今回のプログラムの動作確認の動画です。こんな感じです。
注記を翻訳(その1)
class SolidWorksMacroの作成
-
お決まりの文句を挿入します。
public
SldWorks
swApp;
public void Main()
{
Boolean bRet1;
Boolean bRet2;
ModelDoc2 swDoc =
null;
swDoc = ((
ModelDoc2)(swApp.ActiveDoc));
DrawingDoc
swDraw;
Note
swNote1;
Note swNote2;
Annotation swAnn1;
SolidWorks.Interop.sldworks.
View swView;
swDraw = (
DrawingDoc)swDoc;
swView = (SolidWorks.Interop.sldworks.
View)swDraw.GetFirstView();
swNote1 =(
Note) swView.GetFirstNote();
swNote2 = (
Note)swView.GetFirstNote();
swAnn1 = (
Annotation
)swNote1.GetAnnotation();
-
注記のリストを作成します。
List<
string> ar =
new List
<
string>();
-
ループで注記の全てをリストarにaddします。
while (swNote1 !=
null){
if
(swNote1.GetText() == "")
{
//swNote1が空ならループを抜ける
break;
}
bRet1 = swAnn1.Select2(
true, 0);
//注記のテキストを入手
ar.Add(swNote1.GetText());
//モデルビューの後に次のモデルビューをNote型で取得
swNote1 = (SolidWorks.Interop.sldworks.
Note
)swNote1.GetNext();
}
-
class Form1のインスタンス
Form1 f1 =
new Form1
();
//class Form1にarを渡す
f1.antion(ar);
f1.ShowDialog();
-
class Form1から値を受け取り翻訳結果を図面に表記
foreach (
string st
in f1.translated)
{
//class Form1から受け取った値を図面に表記
swNote2.SetText(st);
bRet2 = swAnn1.Select2(
true, 0);
//次のNoteに移動
swNote2 = (SolidWorks.Interop.sldworks.
Note
)swNote2.GetNext();
}
class SolidWorksMacroのコードの全文です。
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Runtime.InteropServices;
using System;
using System.Windows.Forms;
using System.Collections.Generic;
namespace translation.csproj
{
public partial class
SolidWorksMacro
{
//以下はお決まりの文句
public SldWorks
swApp;
public void
Main()
{
Boolean
bRet1;
Boolean bRet2;
ModelDoc2
swDoc = null
;
swDoc = ((
ModelDoc2)(swApp.ActiveDoc));
DrawingDoc
swDraw;
Note
swNote1;
Note swNote2;
Annotation
swAnn1;
SolidWorks.Interop.sldworks.
View swView;
swDraw = (DrawingDoc
)swDoc;
swView = (SolidWorks.Interop.sldworks.
View)swDraw.GetFirstView();
swNote1 =(Note
) swView.GetFirstNote();
swNote2 = (Note
)swView.GetFirstNote();
swAnn1 = (Annotation
)swNote1.GetAnnotation();
//注記のリスト
List<string
> ar = new
List<string
>();
ar.Clear();
//注記の全てをリストarにaddする
while
(swNote1 != null
){
if (swNote1.GetText() == "")
{
//swNote1が空ならループを抜ける
break;
}
bRet1 = swAnn1.Select2(
true, 0);
//注記のテキストを入手
ar.Add(swNote1.GetText());
//モデルビューの後に次のモデルビューをNote型で取得
swNote1 = (SolidWorks.Interop.sldworks.
Note
)swNote1.GetNext();
}
//class Form1のインスタンス
Form1
f1 = new
Form1();
//class Form1にarを渡す
f1.antion(ar);
f1.ShowDialog();
//class Form1から値を受け取る
foreach
(
string st
in f1.translated)
{
//class Form1から受け取った値を図面に表記
swNote2.SetText(st);
bRet2 = swAnn1.Select2(
true, 0);
//次のNoteに移動
swNote2 = (SolidWorks.Interop.sldworks.Note
)swNote2.GetNext();
}
}
}
}
このページではclass SolidWorksMacroのコードを掲載しました。
次のページではclass Form1のコードを掲載します。
前のページに戻る場合はコチラ↓
基本操作編INDEXに戻る場合はコチラ↓