DrawingLeadersコレクション|CATIAマクロの作成方法
このページでは「DrawingLeadersコレクション」について解説していきます。
このオブジェクトを使うことで、任意のテキストボックスに対して引出線(Leader)を追加したり、既存の引出線を削除したりすることができます。
今回学べる内容は以下のとおりです。
DrawingLeadersコレクションとは
マクロで引出線(Leader)を追加する方法
マクロで引出線(Leader)を削除する方法
CATIAのオブジェクトを理解するには前提として『Infrastructure Automation Objects』について理解している必要があります。
『Infrastructure Automation Objects』が何を意味しているのか分からない方は、まず『オブジェクトとコレクション/プロパティとメソッドとは 』を先に読むことをオススメします。
DrawingLeadersコレクションとは
DrawingLeadersコレクションとは簡単にいうと引出線(DrawingLeaderオブジェクト)をひとまとめにしたオブジェクトのことをいいます。
このコレクションは1つの図面にあるすべての引出線をひとまとめにしているのではなく、下図のように各テキストボックス別にまとめられています。
このコレクションでは主に任意のテキストボックスのDrawingLeadersコレクション内に引出線を追加、削除といった操作しか行うことができません。
引出線別に細かく操作をする場合は、このコレクションを使って子供である「DrawingLeaderオブジェクト」を取得する必要があります。
DrawingTextsコレクションの定義
DrawingLeadersコレクションは以下のとおりDrawingTextオブジェクトの直下のオブジェクトです。
そのためDrawingLeadersコレクションは「DrawingTextオブジェクト」の「Leadersプロパティ」を使って以下のように定義することができます。
Dim LDRs As DrawingLeaders
Set LDRs = DrawingTextオブジェクト.Leaders
この構文により、DrawingTextオブジェクトのDrawingLeadersコレクションを操作することのできる変数『LDRs』を定義することができます。(変数名は好きに変えてもらって構いません)
あとはこの変数LDRsに対してメソッドを使い、さまざまな操作を行っていきます。
DrawingLeadersコレクションのメソッドは以下のとおりです。
メソッド名 | メソッド内容 |
Add | 引出線を追加 |
Item | 任意の引出線を取得 |
Remove | 任意の引出線を削除 |
メソッド
DrawingTextsコレクションのメソッドでは上記のとおり、
「引出線の追加 / 取得 / 削除」を行うことができます。
追加もしくは取得のメソッドでは、オブジェクトを「DrawingLeaderオブジェクト」として取得することができます。
そのため取得したオブジェクトを受け取るための変数は「Dim LDR As DrawingLeader」のようにDrawingLeaderとして宣言する必要があります。
DrawingLeaderオブジェクトとして取得した変数(LDR)に対しては「LDR.HeadSymbol」「LDR.GetPoint」のようにDrawingLeaderオブジェクトのプロパティやメソッドを使うことができます。これによりDrawingLeadersコレクションでは対応できない、1つ1つの引出線に対する操作も可能になります。
Addメソッド
Addメソッドはテキストボックスに引出線を追加することができます。
引出線を追加するには以下のように書きます。
Dim LDR As DrawingLeader
Set LDR= LDRs.Add(X,Y)
X,Yには作成する引出線の終点となるX,Y座標をそれぞれ入力します。
(※座標はテキストボックスのあるビュー内での座標)
このメソッドにより「テキストボックスの左下もしくは右下(引出線をのばす方向によって自動で決まる)」から、「入力した終点の座標」をつなぐ引出線が作成されます。
Itemメソッド
Itemメソッドはコレクション内にある任意のDrawingLeaderオブジェクトを取り出すことができ、主に任意の引出線単体に対して操作を行いたい場合に使用するメソッドです。
DrawingLeadersコレクション内にある任意の引出線を取り出すには以下のように書きます。
Dim LDR As DrawingLeader
LDR = LDRs.Item(index)
indexには引出線のインデックス番号を入力します。
インデックス番号は自動で設定される番号で、DrawingLeadersコレクションの場合は追加した引出線から順に1,2,3…と割り振られていきます。(※テキストボックス別)
1番初めに追加した引出線は「LDRs.Item(1)」,2番目に追加した引出線は「LDRs.Item(2)」のように書くことでその引出線だけを取り出すことができます。
Removeメソッド
Removeメソッドは既存の引出線を削除することができます。
任意の引出線を削除するには以下のように書きます。
On Error Resume Next ‘←エラーを一時的に無視する
LDRs.Remove (index)
On Error GoTo 0 ‘←エラーの無視を無効に戻す
indexにはItemメソッド同様に引出線のインデックス番号を入力します。
1番初めに追加した引出線を削除する場合は「LDRs.Remove(1)」、
2番目に追加した引出線を削除する場合は「LDRs.Remove(2)」、
直近で追加した引き出し線を削除する場合は「LDRs.Remove(LDRs.Count)」のように書きます。
(※DrawingLeadersの数 = 直近で追加した引出線のインデックス番号)
※Removeメソッドの注意点※
このメソッドは普通に使おうとすると、バグか仕様かはわかりませんがエラーが発生します。
そのためこのメソッドを使う場合は「On Error Resume Next」を使う必要があります。
バージョンが変われば修正されるかもしれませんが、今のところは上記のように書く必要があります。
まとめ
今回はCATIAマクロでの「DrawingLeadersコレクション」についての内容でした。
マクロで引出線を扱う際には今回やった「DrawingLeadersコレクション」と、その子供の「DrawingLeaderオブジェクト」が必要になってきます。
扱える内容がかなり限定的なので使用頻度はあまり高くないですが、引出線を扱うためのオブジェクトが用意されていることは頭の中に入れておいて損はないと思います。
マクロ作成中に「引出線を使いたい」となった時に「ハッ」と思い出せれば儲けもんです。
CATIAマクロを本気で勉強するなら