Product内のCATPartをSTEPファイルで出力|CATIAマクロの作成方法
今回の記事はマクロ案募集でいただいた内容です。
送って頂いた内容は以下のようなマクロです。
ワークベンチ:アセンブリーデザイン
マクロ案:Product内のパートファイルを、 STP形式でエクスポートする。(ST1ライセンス前提)
※STP/STEP(拡張子.stp):国際標準化機構{ISO]により規格された中間ファイル
CATIAではST1ライセンスを取得していないと使用不可なファイル形式
今回の内容はほとんど下記ページと同じです。
そのため本ページではあまり深くまでは踏み込んでいないのであらかじめご了承下さい。
マクロの機能
今回作成したマクロはCATPartをSTEPファイル(拡張子.stp)として出力するマクロです。
具体的な機能は以下のとおりです。
・CATPartを選択した場合はそのCATPartのみをSTEPファイルとして出力
・ファイル名は「各CATPartのパーツ番号.stp」
・マクロ実行後にデスクトップに新規作成される「STEP書き出し 日時」フォルダに出力
・出力後はフォルダを開く
※注意点
・設計モードになっているCATPartのみ対応
・「STEP書き出し 日時」と同名のフォルダがデスクトップにある場合はマクロ中断
(日時には現在の「年/月/日/時/分/秒」が入力されるため、同名フォルダは存在しないはず )
上記の注意点にも書かれているとおり設計モードのCATPartのみ出力することができます。
そのため構成部品数が多いProductの場合は特に、出力漏れがないか注意が必要です。
サンプルコード
マクロのコードは以下のとおりです。
マクロ実行後に選択したProduct以下にあるCATPartをすべてSTEPファイルとして出力します。
実行後にマクロの操作をキャンセルしたい場合は[Esc]キーを押下してください。
※コピペで実行可能ですが、保存場所のパスだけは自身の環境に合わせて書き直す必要あり。
下記コード45行目の”SavePath”の中身を自身の環境に合わせて書き換えないと、
66行目の「Set CreateFold = FileSys.CreateFolder(FoldPath)」でエラーが発生するので注意。
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 |
Option Explicit Sub CATMain() Dim ProDOC As ProductDocument If TypeName(CATIA.ActiveDocument) <> "ProductDocument" Then MsgBox "このマクロはProductDocument専用です。" & vbLf & _ "アセンブリーワークベンチに切り替えて実行してください。" Exit Sub End If Set ProDOC = CATIA.ActiveDocument '********************************************* ' Product選択 '********************************************* Dim SEL Set SEL = ProDOC.Selection SEL.Clear Dim InputType(0) InputType(0) = "Product" Dim msg As String msg = "Productを選択してください。" Dim Status As String Status = SEL.SelectElement2(InputType, msg, False) If ((Status = "Cancel") Or (Status = "Undo")) Then Exit Sub End If SEL.Search ("パート・デザイン.パーツ,sel") If SEL.Count = 0 Then MsgBox "選択したProduct内にPartは存在しません。" Exit Sub End If '********************************************* ' 書き出し用フォルダ作成 '********************************************* Dim SavePath As String SavePath = "C:\Users\ユーザー名\Desktop" '保存場所のパスを入力 ※必ず自分の環境のものに書き換えて下さい Dim FoldName As String FoldName = "STEP書き出し " & Year(Date) & Month(Date) & Day(Date) & _ Hour(Time) & Minute(Time) & Second(Time) '作成するフォルダ名を指定 Dim FoldPath As String FoldPath = SavePath & "\" & FoldName '新規フォルダのパス" Dim FileSys 'As FileSystem Set FileSys = CATIA.FileSystem Dim FoldExi As Boolean FoldExi = FileSys.FolderExists(FoldPath) If FoldExi = True Then MsgBox "予期せぬエラーが発生しました。" & vbLf & _ "再度マクロを実行し直してください。" Exit Sub End If Dim CreateFold As Folder Set CreateFold = FileSys.CreateFolder(FoldPath) '********************************************* ' IGES出力 '********************************************* Dim i As Integer Dim SELPart As Part Dim SELDOC As Document For i = 1 To SEL.Count Set SELPart = SEL.Item(i).Value Set SELDOC = SELPart.Parent SELDOC.ExportData FoldPath & "\" & SELPart.Name, "stp" '.stpで出力" Next i SEL.Clear Shell "C:\Windows\Explorer.exe " & FoldPath, vbNormalFocus End Sub |
今回のコードは以前にやった「Product内のCATPartをIGESファイルで出力」とほとんど同じなので、コードの詳細はそちらを参照下さい。以下ではリンク先ページのコードから変更した部分のみの解説をしていきます。
コード解説
本マクロのコードを上から順に部分ごとにわけて解説していきます。
STEP出力
1 2 3 4 5 6 7 8 9 |
Dim i As Integer Dim SELPart As Part Dim SELDOC As Document For i = 1 To SEL.Count Set SELPart = SEL.Item(i).Value Set SELDOC = SELPart.Parent SELDOC.ExportData FoldPath & "\" & SELPart.Name, "stp" '.stpで出力" Next i SEL.Clear |
任意のドキュメントを別ファイルとして書き出すには
「Documentオブジェクト」の「ExportDataメソッド」を使います。
Documentオブジェクト.ExportData パス,“拡張子“
この構文によりDocumentオブジェクトを指定した拡張子で書き出すことができます。
パスには出力先のパス(ファイル名も含む)を入力、
拡張子には出力するファイルの拡張子を入力します。
「Product内のCATPartをIGESファイルで出力」の場合は拡張子の部分が「igs」でしたが、今回はSTEPファイルとして書き出すので拡張子の部分を「stp」に変更するだけです。(実際はフォルダ名も「IGES書き出し」から「STEP書き出し」に変更していますが)
まとめ
今回は任意のCATPartをSTEPファイルとして出力するマクロについての内容でした。
ほとんどIGESファイル出力と同じ方法なので、内容が同じになってしまっています。
ここではコードの解説などもかなり端折っているため、
「Product内のCATPartをIGESファイルで出力」ページも併せて読むことをお勧めします。