DrawingLeadersコレクション|CATIAマクロの作成方法

このページでは「DrawingLeadersコレクション」について解説していきます。
このオブジェクトを使うことで、任意のテキストボックスに対して引出線(Leader)を追加したり、既存の引出線を削除したりすることができます。

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

DrawingLeadersコレクションとは
 マクロで引出線(Leader)を追加する方法
 マクロで引出線(Leader)を削除する方法

 icon-exclamation-triangle 注意 

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

 

DrawingLeadersコレクションとは

DrawingLeadersコレクションとは簡単にいうと引出線(DrawingLeaderオブジェクト)をひとまとめにしたオブジェクトのことをいいます。

このコレクションは1つの図面にあるすべての引出線をひとまとめにしているのではなく、下図のように各テキストボックス別にまとめられています。

このコレクションでは主に任意のテキストボックスのDrawingLeadersコレクション内に引出線を追加、削除といった操作しか行うことができません。

引出線別に細かく操作をする場合は、このコレクションを使って子供である「DrawingLeaderオブジェクト」を取得する必要があります。
 

DrawingTextsコレクションの定義

DrawingLeadersコレクションは以下のとおりDrawingTextオブジェクトの直下のオブジェクトです。

そのためDrawingLeadersコレクションは「DrawingTextオブジェクト」の「Leadersプロパティ」を使って以下のように定義することができます。

  DrawingLeadersコレクションの定義

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メソッドはテキストボックスに引出線を追加することができます。
引出線を追加するには以下のように書きます。

  Addメソッド

Dim LDR As DrawingLeader
Set LDR= LDRs.Add(X,Y)

X,Yには作成する引出線の終点となるX,Y座標をそれぞれ入力します。
(※座標はテキストボックスのあるビュー内での座標)

このメソッドにより「テキストボックスの左下もしくは右下(引出線をのばす方向によって自動で決まる)」から、入力した終点の座標」をつなぐ引出線が作成されます。

 

Itemメソッド

Itemメソッドはコレクション内にある任意のDrawingLeaderオブジェクトを取り出すことができ、主に任意の引出線単体に対して操作を行いたい場合に使用するメソッドです。
DrawingLeadersコレクション内にある任意の引出線を取り出すには以下のように書きます。

  Itemメソッド

Dim LDR As DrawingLeader
LDR = LDRs.Item(index)

indexには引出線のインデックス番号を入力します。
インデックス番号は自動で設定される番号で、DrawingLeadersコレクションの場合は追加した引出線から順に1,2,3…と割り振られていきます。(※テキストボックス別)

1番初めに追加した引出線は「LDRs.Item(1)」,2番目に追加した引出線は「LDRs.Item(2)」のように書くことでその引出線だけを取り出すことができます。  

 

Removeメソッド

Removeメソッドは既存の引出線を削除することができます。
任意の引出線を削除するには以下のように書きます。

  NewFromメソッド

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オブジェクト」が必要になってきます。

扱える内容がかなり限定的なので使用頻度はあまり高くないですが、引出線を扱うためのオブジェクトが用意されていることは頭の中に入れておいて損はないと思います。
マクロ作成中に「引出線を使いたい」となった時に「ハッ」と思い出せれば儲けもんです。

 
目次へ戻る
 

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

 

 

2022年7月28日CATIA, CATIAマクロ

Posted by Lic