Documentオブジェクト|CATIAマクロの作成方法

今回はドキュメントの保存や、切り替え、閉じるといったドキュメントの操作を行うことのできる「Documentオブジェクト」について解説していきます。

「Documentオブジェクト」と関係の深い「Documentsコレクション」を理解しておくと、本ページの内容がより理解でいると思うのであわせてご確認ください。

今回学べる内容は以下のとおりです。

Documentオブジェクトとは
 Documentオブジェクトのプロパティについて
Documentオブジェクトのメソッドについて

 icon-exclamation-triangle 注意 

CATIAのオブジェクトを理解するには前提として『Infrastructure Automation Objects』について理解している必要があります。
『Infrastructure Automation Objects』が何を意味しているのか分からない方は、まずオブジェクトとコレクション/プロパティとメソッドとは 』を先に読むことをオススメします。

 

Documentオブジェクトとは

Documentオブジェクトとは簡単にいうとドキュメント単体の操作行うことのできるオブジェクトのことをいいます。たとえばドキュメントを保存したり、閉じたり、切り替えたりすることができます。

Documentオブジェクトは以下のとおり「Documentsコレクション」の子供です。

そのため、その親であるDocumentsコレクションを使ってDocumentオブジェクトを定義します。

ただ、Documentオブジェクトは2つ親のApplicationオブジェクトから直に定義することもできます。
以下では2つのオブジェクトからのDocumentオブジェクトの定義方法を紹介します。

 
Documentsコレクションから定義

  Documentオブジェクトの定義①

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オブジェクトから定義

  Documentオブジェクトの定義②

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プロパティは任意のドキュメントのフルパスを取得することができます。
任意のドキュメントのフルパスを取得するには以下のように書きます。

  FullNameプロパティ

Dim DOCFullName As String
DOCFullName= DOC.FullName

フルパスとはファイル名も含めたパス全体のことを表します。
たとえばデスクトップ上にある「Part1.CATPart」の場合は
「C:\Users\ユーザー名\Desktop\Part1.CATPart」がフルパスとして取得できます。

 
サンプルコード

アクティブドキュメントのフルパスを取得するには以下のコードを実行します。
取得だけでは実行結果を目で確認することができないため、取得したドキュメントのフルパスをメッセージボックスで表示するコードになっています。

 
 

Pathプロパティ

Pathプロパティは任意のドキュメントのパスを取得することができます。
任意のドキュメントのフルパスを取得するには以下のように書きます。

  Pathプロパティ

Dim DOCPath As String
DOCPath= DOC.Path

ここで取得できるパスはフルパスからファイル名を除いたものです。
たとえばデスクトップ上にある「Part1.CATPart」の場合は
ファイル名を除いた「C:\Users\ユーザー名\Desktop」が取得できます。

 
サンプルコード

アクティブドキュメントのパスを取得するには以下のコードを実行します。
取得だけでは実行結果を目で確認することができないため、取得したドキュメントのフルパスをメッセージボックスで表示するコードになっています。

 
 

ReadOnlyプロパティ

ReadOnlyプロパティは任意のドキュメントが読み取り専用かをブール値([True]もしくは[False])で取得することができます。
任意のドキュメントが読み取り専用か否かを取得するには以下のように書きます。

  ReadOnlyプロパティ

Dim DOCAccess As Boolean
DOCAccess = DOC.ReadOnly

読み取り専用の場合は「True」
読み取り専用でない場合は「False」を取得することができます。

 
サンプルコード

アクティブドキュメントが読み取り専用かを取得するには以下のコードを実行します。
取得だけでは実行結果を目で確認することができないため、取得したブール値をメッセージボックスで表示するコードになっています。

 
 

Savedプロパティ

Savedプロパティは任意のドキュメントの保存状態をブール値([True]もしくは[False])で取得することができます。
任意のドキュメントの保存状態を取得するには以下のように書きます。

  ReadOnlyプロパティ

Dim DOCAccess As Boolean
DOCAccess = DOC.ReadOnly

保存状態が[オープン](保存の必要がない状態)の場合は「True」
[修正済み][新規作成]の場合は「False」を取得することができます。

※保存状態に関しては「ドキュメントの保存」ページの保存管理の項を参照ください。

 
サンプルコード

アクティブドキュメントの保存状態を取得するには以下のコードを実行します。
取得だけでは実行結果を目で確認することができないため、取得したブール値をメッセージボックスで表示するコードになっています。

 

Selectionプロパティ

Selectionプロパティ任意のドキュメント内の「選択状態」を取得することができます。
任意のドキュメント内の「選択状態」を取得するには以下のように書きます。

  Selectionプロパティ

Dim SEL As Selection
SEL = DOC.Selection

詳しい使い方は「Selectionオブジェクト」ページを参照ください。

 

メソッド

Documentオブジェクトのメソッドではドキュメントを保存したり閉じたり、アクティブにしたりと、ある1つのドキュメントに対して行うことのできる操作がまとまっています。

Documentsコレクション」とあわせればドキュメントに関する基本的な操作はほとんど行うことができます。
 

Activateメソッド

Activateメソッドは任意のドキュメントをアクティブすることができます。
任意のドキュメントをアクティブ状態にするには以下のように書きます。

  Activateメソッド

DOC.Activate

 
サンプルコード

Documentsコレクション内に入っている1番目のドキュメント(1番初めに開いたドキュメント)をアクティブ状態にするには以下のコードを実行します。

 参照:Documentsコレクション(Itemメソッド)

 

Closeメソッド

Closeメソッドは任意のドキュメントを閉じることができます。
任意のドキュメントを閉じるには以下のように書きます。

  Closeメソッド

DOC.Close

このメソッドでドキュメントを閉じるとき保存はされません。
また、保存確認のメッセージなども表示せずにドキュメントを閉じるので注意しましょう。

 
サンプルコード

アクティブドキュメントを閉じるには以下のコードを実行します。

 
 

NewWindowメソッド

NewWindowメソッドは任意のドキュメントを新しいウィンドウで開くことができます。
任意のドキュメントを新しいウィンドウで開くには以下のように書きます。

  NewWindowメソッド

DOC.NewWindow

このメソッドではメニューバー [ウィンドウ]>[新規ウィンドウ]をクリックしたときと同じ操作が行われます。[新規ウィンドウ]コマンドはドラフティングワークベンチでは実行できないため、このメソッドもドラフティングワークベンチでは使用できません。(実行するとエラーが発生します)

 
サンプルコード

アクティブドキュメントを新しいウィンドウで開くには以下のコードを実行します。

 
 

Saveメソッド

Saveメソッドは任意のドキュメントを上書き保存することができます。
任意のドキュメントを上書き保存するには以下のように書きます。

  Saveメソッド

DOC.Save

保存状態が[オープン](保存の必要がない状態)のドキュメントにこのメソッドを使っても、上書き保存は実行されません。つまりはドキュメントの更新時間も更新されないということです。

また、保存状態が[新規作成](一度も保存されていない状態)のドキュメントにこのメソッドを使うと、上書き保存という操作ができずエラーが発生してしまうので注意しましょう。

 
サンプルコード

アクティブドキュメントを上書き保存するには以下のコードを実行します。

 
 

SaveAsメソッド

Saveメソッドは任意のドキュメントを名前を付けて保存することができます。
任意のドキュメントを名前を付けて保存するには以下のように書きます。

  SaveAsメソッド

DOC.SaveAs (FullPath)

FullPathに保存する場所と保存する名前を含んだフルパスを入力します。
たとえばデスクトップ上に「Part1.CATPart」という名前で保存したい場合は、FullPathに「”C:\Users\ユーザー名\Desktop\Part1.CATPart”」と入力します。

保存先に同名のドキュメントファイルがある場合は、上書き保存するかの確認メッセージが表示されます。※表示されるッセージボックスで[いいえ]を選択するとエラーが発生するため「On Error Resume Next」を書くなどしてエラー対策をする必要があります。

 
サンプルコード

アクティブドキュメントをデスクトップ上に「Part1.CATPart」という名前で保存したい場合は以下のコードを実行します。※以下のコードのパス部分は自身のPCに合わせて書き換える必要があります。

 

まとめ

今回はCATIAマクロでの「Documentオブジェクト」についての内容でした。
「Documentオブジェクト」は「Documentsコレクション」と合わせて非常に重要なオブジェクトなのでどちらもよく理解しておく必要があります。

1Documentオブジェクトの中には「PartDocument」「ProductDocumet」「DrawingDocument」のように各ドキュメント別のプロパティ/メソッドも存在します。今回やった内容は基本的にはどのドキュメントに対しても行うことのできる操作です。

Documentオブジェクトを理解できるようになったら、つぎは「PartDocument」「ProductDocumet」「DrawingDocument」などの各ドキュメント別のオブジェクトも学んでいくとよいと思います。

目次へ戻る
 

icon-book CATIAマクロを本気で勉強するなら

 

 

2020年3月15日CATIA, CATIAマクロ

Posted by Lic