SolidWorks 使い方 入門

ソリッドワークス
メール

3Dプリンターのデータ作成、修正、造形 株式会社 サンエツ

SolidWorks ソリッドワークス API マクロ 図面注記の全てを自動翻訳

図面注記の全てを自動翻訳(その1)
図面の注記を英語で表記したいときがあります。 そんな時にボタン1つで図面の注記が全て自動翻訳されれば、非常に便利です。 今回はそのような自動翻訳機能が付いたプログラムを作成したいと思います。 使用言語はC#です。
下の図面は日本語の注記が4個表記された図面です。
ボタン1つで4つの注記を翻訳した図面です
今回のプログラムの動作確認の動画です。こんな感じです。

注記を翻訳(その1)

class SolidWorksMacroの作成
  1. お決まりの文句を挿入します。
     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();


  2. 注記のリストを作成します。
    List< string> ar =  new List < string>();


  3. ループで注記の全てをリスト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();                 
                  }


  4. class Form1のインスタンス
    Form1 f1 =  new Form1 (); 
     
    //class Form1にarを渡す 
     
    f1.antion(ar); 
     f1.ShowDialog();


  5. 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に戻る場合はコチラ↓
LINEで送る