Documentsコレクション|CATIAマクロの作成方法
CATIAマクロではドキュメント(CATPart,CATProduct,CATDrawingなど)を新規作成したり、既存のドキュメントファイルを開いたりすることができます。
今回はこれらの操作をするために必要な「Documentsコレクション」を詳しく解説していきます。
今回学べる内容は以下のとおりです。
Documentsコレクションとは
マクロで新規ドキュメントを作成する方法
マクロで既存のドキュメントファイルを開く方法
CATIAのオブジェクトを理解するには前提として『Infrastructure Automation Objects』について理解している必要があります。
『Infrastructure Automation Objects』が何を意味しているのか分からない方は、まず『オブジェクトとコレクション/プロパティとメソッドとは 』を先に読むことをオススメします。
Documentsコレクションとは
Documentsコレクションとは簡単にいうと開いているドキュメント(Documentオブジェクト)をひとまとめにしたオブジェクトのことをいいます。
たとえば「Part1.CATPart」「Part2.CATPart」「Part3.CATPart」という3つのドキュメントを開いている場合、3つのドキュメントをまとめてDocumentsコレクションといいます。
(イメージとしてはDocumentオブジェクトを入れている”フォルダ”のようなもの)
このオブジェクトでは「新規ドキュメントの作成」や「既存ドキュメントファイルを開く」というような、新しいドキュメントをDocumentsコレクションの中に入れるという操作を行うことができます。
Documentsコレクションの定義
Documentsコレクションは以下のとおりApplicationオブジェクトの直下のオブジェクトです。
そのためDocumentsコレクションは「Applicationオブジェクト」の「Documentsプロパティ」を使って以下のように定義することができます。
Dim DOCs As Documents
Set DOCs = CATIA.Documents
この構文により、Documentsコレクションを操作することのできる変数『DOCs』を定義することができます。(変数名は好きに変えてもらって構いません)
あとはこの変数DOCsに対してメソッドを使い、さまざまな操作を行っていきます。
Documentsコレクションのメソッドは以下のとおりです。
メソッド名 | メソッド内容 |
Add | 新規ドキュメントの作成 |
Item | 任意のDocumentオブジェクトを取り出す |
NewForm | 既存ドキュメントを開く(読み取り専用) |
Open | 既存ドキュメントを開く |
Read | 既存ドキュメントを読み取る |
メソッド
Documentsコレクションのメソッドで新規作成/開かれるドキュメントは全て「Documentオブジェクト」として取得することができます。
そのため取得したドキュメントを受け取るための変数は「Dim DOC As Document」のようにDocumentとして宣言する必要があります。
Documentオブジェクトとして取得した変数(DOC)に対しては「DOC.Save」「DOC.Activate」のようにDocumentオブジェクトのプロパティやメソッドを使うことができます。これによりDocumentsコレクションでは対応できない、ドキュメント単体に対する操作も可能になります。
Addメソッド
Addメソッドは新規のドキュメントファイルを作成することができます。
新規のドキュメントファイルを作成するには以下のように書きます。
Dim DOC As Document
Set DOC= DOCs.Add(“DocumentType“)
DocumentTypeには作成するドキュメントのタイプを入力します。
基本の3つのドキュメント(CATPart,CATProduct,CATDrawing)は以下のように書きます。
CATPart → Part
CATProduct → Product
CATDrawing → Drawing
その他のドキュメントタイプについては[新規作成]ウィンドウ(メニューバー [ファイル]>[新規作成])の[タイプのリスト]内に書かれている文字列を使用することができます。
サンプルコード
新規ドキュメント(CATPart)を作成するには以下のコードを実行します。
1 2 3 4 5 |
Dim DOCs As Documents Set DOCs = CATIA.Documents 'Documentsコレクションの定義 Dim DOC As Document Set DOC= DOCs.Add("Part") 'ドキュメント(CATPart)の新規作成 |
Itemメソッド
Itemメソッドはコレクション内にある任意のDocumentオブジェクトを取り出すことができ、主に任意のドキュメント単体に対して操作を行いたい場合に使用するメソッドです。
Documentsコレクション内にある任意のドキュメントを取り出すには以下のように書きます。
Dim DOC As Document
DOC = DOCs.Item(index)
indexにはドキュメントのインデックス番号を入力します。
インデックス番号は自動で設定される番号で、Documentsコレクションの場合は開いたドキュメントから順に1,2,3…と割り振られていきます。
1番初めに開いたドキュメントは「DOCs.Item(1)」,2番目に開いたドキュメントは「DOCs.Item(2)」のように書くことでそのドキュメントを取り出すことができます。
また「DOCs.Item(“Part1.CATPart”)」のようにドキュメント名を直接入力することも可能です。
サンプルコード
1番初めに開いたドキュメントを取得する(取り出す)には以下のコードを実行します。
取得だけでは実行結果を目で確認することができないため、取得したドキュメントの名称をメッセージボックスで表示するコードになっています。
1 2 3 4 5 6 7 |
Dim DOCs As Documents Set DOCs = CATIA.Documents 'Documentsコレクションの定義 Dim DOC As Document Set DOC= DOCs.Item(1) '1番初めに開いたドキュメントを取得 Msgbox DOC.Name '取得したドキュメントの名称を表示 |
NewFromメソッド
NewFromメソッドは既存のドキュメントファイルを読み取り専用で開くことができます。
読み取り専用で既存ファイルを開くとそのファイルを別のファイルとして開くことができます。
たとえば「Test.CATPart」というドキュメントを開くと「Test_1.CATPart」という名前で「Test.CATPart」の複製データが開かれます。
読み取り専用で既存のドキュメントファイルを開くには以下のように書きます。
Dim DOC As Document
DOC = DOCs.NewFrom(Path)
Pathには開きたいドキュメントファイルのパスを入力します。
パスとはファイル/フォルダの保存場所を表した文字列のことです。
たとえばデスクトップ上にある「Part1.CATPart」を開きたい場合はPathに「”C:\Users\ユーザー名\Desktop\Part1.CATPart”」というような文字列を入力します。
Windows10の場合、ドキュメントファイルをエクスプローラー上で選択し、[ホーム]タブの[パスをコピー]をクリックすることでパスを取得することができます。パスの取得後は、特に書き変える必要はなく上記コードのPathの部分にそのままペーストするだけです。
サンプルコード
デスクトップ上の「Part1.CATPart」を読み取り専用で開くには以下のコードを実行します。
()の中に直接パスを入力しないで、以下のように変数を使って入力することもできます。
1 2 3 4 5 6 7 8 |
Dim DOCs As Documents Set DOCs = CATIA.Documents 'Documentsコレクションの定義 Dim Path As String Path = "C:\Users\ユーザー名\Desktop\Part1.CATPart" 'パスの入力 ※自身のパスを入力して下さい。 Dim DOC As Document Set DOC = DOCs.NewFrom(Path) 'ドキュメントを読み取り専用で開く |
Openメソッド
Openメソッドは既存のドキュメントファイルを開くことができます。
既存のドキュメントファイルを開くには以下のように書きます。
Dim DOC As Document
DOC = DOCs.Open(Path)
Pathには開きたいドキュメントファイルのパスを入力します。
※詳しくは「NewFromメソッド」と同じため割愛します。
サンプルコード
デスクトップ上の「Part1.CATPart」を開くには以下のコードを実行します。
1 2 3 4 5 6 7 8 |
Dim DOCs As Documents Set DOCs = CATIA.Documents 'Documentsコレクションの定義 Dim Path As String Path = "C:\Users\ユーザー名\Desktop\Part1.CATPart" 'パスの入力 ※自身のパスを入力して下さい。 Dim DOC As Document Set DOC = DOCs.Open(Path) 'ドキュメントを読み取り専用で開く |
Readメソッド
Readメソッドは既存のドキュメントファイルを読み取ることができます。
既存のドキュメントファイルを読み取るには以下のように書きます。
Dim DOC As Document
DOC = DOCs.Read(Path)
Pathには読み取りたいドキュメントファイルのパスを入力します。
※詳しくは「NewFromメソッド」と同じため割愛します。
このメソッドではドキュメントを読み取るだけなのでドキュメント自体は開きません。
任意のドキュメントを開くことなく参照したい場合に使用します。
(たとえば既存ドキュメントを開くことなく、名称やパスを取得したい場合など)
サンプルコード
デスクトップ上の「Part1.CATPart」を読み取るには以下のコードを実行します。
1 2 3 4 5 6 7 8 9 10 11 |
Dim DOCs As Documents Set DOCs = CATIA.Documents 'Documentsコレクションの定義 Dim Path As String Path = "C:\Users\ユーザー名\Desktop\Part1.CATPart" 'パスの入力 ※自身のパスを入力して下さい。 Dim DOC As Document Set DOC = DOCs.Read(Path) 'ドキュメントを読み取る MsgBox "ドキュメント名:" & Doc.Name & vbLf & _ "パス:" & Doc.Path '読み取ったドキュメントの名称とパスを取得 |
まとめ
今回はCATIAマクロでの「Documentsコレクション」についての内容でした。
「Documentsコレクション」は「Documentオブジェクト」と合わせて非常に重要なオブジェクトなのでどちらもよく理解しておく必要があります。
1つのドキュメント内で完結するマクロの場合はこの「Documentsコレクション」はあまり使う必要はありませんが、複数のドキュメント間を移動するようなマクロの場合は必須のオブジェクトです。
はじめのうちはすぐには理解できないかもしれませんが、いくつか簡単なマクロを作ることで徐々に使い方がわかってくると思います。ぜひいろいろなマクロの作成にチャレンジしてみて下さい。
CATIAマクロを本気で勉強するなら