Documentオブジェクト|CATIAマクロの作成方法
今回はドキュメントの保存や、切り替え、閉じるといったドキュメントの操作を行うことのできる「Documentオブジェクト」について解説していきます。
「Documentオブジェクト」と関係の深い「Documentsコレクション」を理解しておくと、本ページの内容がより理解でいると思うのであわせてご確認ください。
今回学べる内容は以下のとおりです。
Documentオブジェクトとは
Documentオブジェクトのプロパティについて
Documentオブジェクトのメソッドについて
CATIAのオブジェクトを理解するには前提として『Infrastructure Automation Objects』について理解している必要があります。
『Infrastructure Automation Objects』が何を意味しているのか分からない方は、まず『オブジェクトとコレクション/プロパティとメソッドとは 』を先に読むことをオススメします。
Documentオブジェクトとは
Documentオブジェクトとは簡単にいうとドキュメント単体の操作行うことのできるオブジェクトのことをいいます。たとえばドキュメントを保存したり、閉じたり、切り替えたりすることができます。
Documentオブジェクトは以下のとおり「Documentsコレクション」の子供です。
そのため、その親であるDocumentsコレクションを使ってDocumentオブジェクトを定義します。
ただ、Documentオブジェクトは2つ親のApplicationオブジェクトから直に定義することもできます。
以下では2つのオブジェクトからのDocumentオブジェクトの定義方法を紹介します。
Documentsコレクションから定義
Dim DOCs As Documents
Set DOCs = CATIA.Documents
Dim DOC As Document
Set DOC = DOCs.Item(1)
上記のコードではDocumentsコレクション内にある1つ目のドキュメントを定義しています。
これはDocumentsコレクションの「Itemメソッド」を使用した定義方法です。
DocumentsコレクションからDocumentオブジェクトを定義する他の方法は「Documentsコレクション」ページを参照ください。
Applicationオブジェクトから定義
Dim DOC As Document
Set DOC = CATIA.ActiveDocument
「Applicationオブジェクト」の「ActiveDocumentプロパティ」を使うことで、Documentオブジェクトとしてアクティブドキュメントを定義することができます。
1つのドキュメントで完結する多くのマクロではこの方法でドキュメントを定義します。
上記の2つの構文により、ドキュメント単体を操作することのできる変数『DOC』を定義することができます。(変数名は好きに変えてもらって構いません)
あとはこの変数DOCに対してプロパティ/メソッドを使い、さまざまな操作を行っていきます。
Documentオブジェクトの代表的なプロパティとメソッドは以下のとおりです。
プロパティ名 | プロパティ内容 |
FullName | ドキュメントのフルパスを取得 |
Path | ドキュメントのパスを取得 |
ReadOnly | ドキュメントが読み取り専用の場合 Trueを取得 |
Saved | ドキュメント保存状態がオープンの場合 Trueを取得 |
Selection | ドキュメント内の選択状態を取得 (参照:Selectionオブジェクト) |
メソッド名 | メソッド内容 |
Activate | ドキュメントをアクティブにする |
Close | ドキュメントを閉じる |
NewWindow | ドキュメントを新しいウィンドウで開く |
Save | ドキュメントを上書き保存する |
SaveAs | ドキュメントを名前を付けて保存する |
その他のプロパティ/メソッドに関しては『CAA V5 Visual Basic Help』で『Infrastructure Automation Objects』のページから確認ください。
プロパティ
Documentオブジェクトのプロパティでは任意のドキュメントの保存場所や保存状態、アクセス状態(読み取り専用か否か)などの、ある1つのドキュメントのプロパティ情報を取得することができます。
FullNameプロパティ
FullNameプロパティは任意のドキュメントのフルパスを取得することができます。
任意のドキュメントのフルパスを取得するには以下のように書きます。
Dim DOCFullName As String
DOCFullName= DOC.FullName
フルパスとはファイル名も含めたパス全体のことを表します。
たとえばデスクトップ上にある「Part1.CATPart」の場合は
「C:\Users\ユーザー名\Desktop\Part1.CATPart」がフルパスとして取得できます。
サンプルコード
アクティブドキュメントのフルパスを取得するには以下のコードを実行します。
取得だけでは実行結果を目で確認することができないため、取得したドキュメントのフルパスをメッセージボックスで表示するコードになっています。
1 2 3 4 5 6 7 |
Dim DOC As Document Set DOC= CATIA.ActiveDocument Dim DOCFullName As String DOCFullName = DOC.FullName Msgbox DOCFullName |
Pathプロパティ
Pathプロパティは任意のドキュメントのパスを取得することができます。
任意のドキュメントのフルパスを取得するには以下のように書きます。
Dim DOCPath As String
DOCPath= DOC.Path
ここで取得できるパスはフルパスからファイル名を除いたものです。
たとえばデスクトップ上にある「Part1.CATPart」の場合は
ファイル名を除いた「C:\Users\ユーザー名\Desktop」が取得できます。
サンプルコード
アクティブドキュメントのパスを取得するには以下のコードを実行します。
取得だけでは実行結果を目で確認することができないため、取得したドキュメントのフルパスをメッセージボックスで表示するコードになっています。
1 2 3 4 5 6 7 |
Dim DOC As Document Set DOC= CATIA.ActiveDocument Dim DOCPath As String DOCPath = DOC.Path Msgbox DOCPath |
ReadOnlyプロパティ
ReadOnlyプロパティは任意のドキュメントが読み取り専用かをブール値([True]もしくは[False])で取得することができます。
任意のドキュメントが読み取り専用か否かを取得するには以下のように書きます。
Dim DOCAccess As Boolean
DOCAccess = DOC.ReadOnly
読み取り専用の場合は「True」
読み取り専用でない場合は「False」を取得することができます。
サンプルコード
アクティブドキュメントが読み取り専用かを取得するには以下のコードを実行します。
取得だけでは実行結果を目で確認することができないため、取得したブール値をメッセージボックスで表示するコードになっています。
1 2 3 4 5 6 7 |
Dim DOC As Document Set DOC= CATIA.ActiveDocument Dim DOCAccess As Boolean DOCAccess = DOC.ReadOnly MsgBox DOCAccess |
Savedプロパティ
Savedプロパティは任意のドキュメントの保存状態をブール値([True]もしくは[False])で取得することができます。
任意のドキュメントの保存状態を取得するには以下のように書きます。
Dim DOCAccess As Boolean
DOCAccess = DOC.ReadOnly
保存状態が[オープン](保存の必要がない状態)の場合は「True」
[修正済み][新規作成]の場合は「False」を取得することができます。
※保存状態に関しては「ドキュメントの保存」ページの保存管理の項を参照ください。
サンプルコード
アクティブドキュメントの保存状態を取得するには以下のコードを実行します。
取得だけでは実行結果を目で確認することができないため、取得したブール値をメッセージボックスで表示するコードになっています。
1 2 3 4 5 6 7 |
Dim DOC As Document Set DOC= CATIA.ActiveDocument Dim DOCSaved As Boolean DOCSaved = DOC.Saved MsgBox DOCSaved |
Selectionプロパティ
Selectionプロパティ任意のドキュメント内の「選択状態」を取得することができます。
任意のドキュメント内の「選択状態」を取得するには以下のように書きます。
Dim SEL As Selection
SEL = DOC.Selection
詳しい使い方は「Selectionオブジェクト」ページを参照ください。
メソッド
Documentオブジェクトのメソッドではドキュメントを保存したり閉じたり、アクティブにしたりと、ある1つのドキュメントに対して行うことのできる操作がまとまっています。
「Documentsコレクション」とあわせればドキュメントに関する基本的な操作はほとんど行うことができます。
Activateメソッド
Activateメソッドは任意のドキュメントをアクティブすることができます。
任意のドキュメントをアクティブ状態にするには以下のように書きます。
DOC.Activate
サンプルコード
Documentsコレクション内に入っている1番目のドキュメント(1番初めに開いたドキュメント)をアクティブ状態にするには以下のコードを実行します。
1 2 3 4 |
Dim DOC As Document Set DOC = CATIA.Documents.Item(1) DOC.Activate |
参照:Documentsコレクション(Itemメソッド)
Closeメソッド
Closeメソッドは任意のドキュメントを閉じることができます。
任意のドキュメントを閉じるには以下のように書きます。
DOC.Close
このメソッドでドキュメントを閉じるとき保存はされません。
また、保存確認のメッセージなども表示せずにドキュメントを閉じるので注意しましょう。
サンプルコード
アクティブドキュメントを閉じるには以下のコードを実行します。
1 2 3 4 |
Dim DOC As Document Set DOC = CATIA.ActiveDocument DOC.Close |
NewWindowメソッド
NewWindowメソッドは任意のドキュメントを新しいウィンドウで開くことができます。
任意のドキュメントを新しいウィンドウで開くには以下のように書きます。
DOC.NewWindow
このメソッドではメニューバー [ウィンドウ]>[新規ウィンドウ]をクリックしたときと同じ操作が行われます。[新規ウィンドウ]コマンドはドラフティングワークベンチでは実行できないため、このメソッドもドラフティングワークベンチでは使用できません。(実行するとエラーが発生します)
サンプルコード
アクティブドキュメントを新しいウィンドウで開くには以下のコードを実行します。
1 2 3 4 |
Dim DOC As Document Set DOC = CATIA.ActiveDocument DOC.NewWindow |
Saveメソッド
Saveメソッドは任意のドキュメントを上書き保存することができます。
任意のドキュメントを上書き保存するには以下のように書きます。
DOC.Save
保存状態が[オープン](保存の必要がない状態)のドキュメントにこのメソッドを使っても、上書き保存は実行されません。つまりはドキュメントの更新時間も更新されないということです。
また、保存状態が[新規作成](一度も保存されていない状態)のドキュメントにこのメソッドを使うと、上書き保存という操作ができずエラーが発生してしまうので注意しましょう。
サンプルコード
アクティブドキュメントを上書き保存するには以下のコードを実行します。
1 2 3 4 |
Dim DOC As Document Set DOC = CATIA.ActiveDocument DOC.Save |
SaveAsメソッド
Saveメソッドは任意のドキュメントを名前を付けて保存することができます。
任意のドキュメントを名前を付けて保存するには以下のように書きます。
DOC.SaveAs (FullPath)
FullPathに保存する場所と保存する名前を含んだフルパスを入力します。
たとえばデスクトップ上に「Part1.CATPart」という名前で保存したい場合は、FullPathに「”C:\Users\ユーザー名\Desktop\Part1.CATPart”」と入力します。
保存先に同名のドキュメントファイルがある場合は、上書き保存するかの確認メッセージが表示されます。※表示されるッセージボックスで[いいえ]を選択するとエラーが発生するため「On Error Resume Next」を書くなどしてエラー対策をする必要があります。
サンプルコード
アクティブドキュメントをデスクトップ上に「Part1.CATPart」という名前で保存したい場合は以下のコードを実行します。※以下のコードのパス部分は自身のPCに合わせて書き換える必要があります。
1 2 3 4 |
Dim DOC As Document Set DOC = CATIA.ActiveDocument DOC.SaveAs ("C:\Users\ユーザー名\Desktop\Part1.CATPart") |
まとめ
今回はCATIAマクロでの「Documentオブジェクト」についての内容でした。
「Documentオブジェクト」は「Documentsコレクション」と合わせて非常に重要なオブジェクトなのでどちらもよく理解しておく必要があります。
1Documentオブジェクトの中には「PartDocument」「ProductDocumet」「DrawingDocument」のように各ドキュメント別のプロパティ/メソッドも存在します。今回やった内容は基本的にはどのドキュメントに対しても行うことのできる操作です。
Documentオブジェクトを理解できるようになったら、つぎは「PartDocument」「ProductDocumet」「DrawingDocument」などの各ドキュメント別のオブジェクトも学んでいくとよいと思います。
CATIAマクロを本気で勉強するなら