DrawingWeldingオブジェクト|CATIAマクロの作成方法
今回はCATDrawingのコマンド『 溶接記号』をVBAで操作するための『DrawingWeldingオブジェクト』について詳しく解説していきます。
今回学べる内容は以下のとおりです。
DrawingWeldingオブジェクトとは
DrawingWeldingオブジェクトのプロパティの使い方
DrawingWeldingオブジェクトのメソッドの使い方
CATIAのオブジェクトを理解するには前提として『Infrastructure Automation Objects』について理解している必要があります。
『Infrastructure Automation Objects』が何を意味しているのか分からない方は、まず『オブジェクトとコレクション/プロパティとメソッドとは 』を先に読むことをオススメします。
DrawingWeldingオブジェクトとは
DrawingWeldingオブジェクトとは『 溶接記号』を操作するためのオブジェクトです。
このオブジェクトを使うことで溶接記号の変更や角度/位置の変更などが可能になります。
DrawingWeldingオブジェクトは以下のとおりの構成になっています。
溶接指示内の引出線の追加や削除は『DrawingLeadersオブジェクト』、テキスト値の変更は『DrawingTextRangeオブジェクト』、テキストのフォントやサイズ、色は『DrawingTextPropertiesオブジェクト』で操作可能になります。どのオブジェクトもDrawingWeldingオブジェクトのプロパティ/メソッドから取得することができます。
DrawingWeldingオブジェクトを使うには、DrawingWeldingオブジェクトの変数を定義します。
定義する方法はいくつかありますが、ここではアクティブビュー内の直近で作られた『溶接記号』を定義する方法を紹介します。(DrawingWeldingオブジェクトは多くの親オブジェクトを持っているので、先にそれらを定義します)
‘アクティブドキュメント定義
Dim doc As DrawingDocument
Set doc = CATIA.ActiveDocument
‘アクティブシート定義
Dim ActSheet As DrawingSheet
Set ActSheet = doc.Sheets.ActiveSheet
‘アクティブビュー定義
Dim ActView As DrawingView
Set ActView = ActSheet.Views.ActiveView
‘DrawingWelding定義
Dim WeldTxt As DrawingWelding
Set WeldTxt = ActView.Weldings.Item(ActView.Weldings.Count)
この構文により、「アクティブビュー内の直近で作られた『溶接記号』」を扱うことのできる変数『WeldTxt』を定義することができます。(変数名は好きに変えてもらって構いません)
あとはこの変数WeldTxtに対してプロパティとメソッドを使い、さまざまな操作を行っていきます。
DrawingWeldingオブジェクトの代表的なプロパティとメソッドは下記の通りです。
プロパティ名 | プロパティ内容 |
Angle | WeldTxtの角度の取得/変更 |
IdentificationLineSide | WeldTxtのインデント行サイドの取得/変更(ISO規格のみ) |
Leaders | WeldTxtのDrawingLeadersオブジェクトを取得 |
TextProperties | WeldTxtのDrawingTextPropertiesオブジェクトを取得 |
x | WeldTxtのX座標の取得/変更 |
y | WeldTxtのY座標の取得/変更 |
メソッド名 | メソッド内容 |
GetAdditionalSymbol | WeldTxtの補助記号(表面形状)の取得 |
GetFinishSymbol | WeldTxtの補助記号(仕上げ方法)の取得 |
GetSymbol | WeldTxtの基本記号の取得 |
GetTextRange | WeldTxtのDrawingTextRangeオブジェクトを取得 |
SetAdditionalSymbol | WeldTxtの補助記号(表面形状)の変更 |
SetFinishSymbol | WeldTxtの補助記号(仕上げ方法)の変更 |
SetSymbol | WeldTxtの基本記号の変更 |
そのほかのプロパティ/メソッドに関しては『CAA V5 Visual Basic Help』で『Infrastructure Automation Objects』のページから確認ください。
プロパティ
DrawingWeldingオブジェクトのプロパティでは『溶接記号』の記号以外のほとんどのものを操作することができます。子供のオブジェクトを取得するためのプロパティもいくつかあり、手動でできるほとんどの操作をVBAでも行うことができます。
Angleプロパティ
Angleプロパティは角度を取得/変更することができます。
このときの角度は反時計回りにカウントされています。([プロパティ]>[テキスト]>[角度:]と同じ)
角度を変更するには以下のように書きます。
Dim WeldAngle As Double
WeldAngle = WeldTxt.Angle
指定した角度に変更するには以下のように書きます。
WeldTxt.Angle = 90
IdentificationLineSideプロパティ
IdentificationLineSideプロパティはインデント行サイドを取得/変更することができます。
インデント行サイドとは基線の上もしくは下に書く破線のことで、溶接する位置が矢に対し手前側か向こう側かを示すISO規格専用の指示です。そのため図面の規格がJISやANSIなどのISO以外の規格では使用することができません。
インデント行サイドを取得するには以下のように書きます。
Dim WeldIdent As CatWeldingSide
WeldIdent = WeldTxt.IdentificationLineSide
上記のコードを実行すると以下のいずれかが格納されます。
catWeldingUp → 破線が基線の上側
catWeldingDown → 破線が基線の下側
また、上記の値を使い以下のように書くことでインデント行サイドを変更するができます。
WeldTxt.IdentificationLineSide = catWeldingUp
Leadersプロパティ
Leadersプロパティは「DrawingLeadersオブジェクト」を取得することができます。
(このオブジェクトのメソッドを使うことで引出線を追加したり削除したりすることができます)
DrawingLeadersオブジェクトを取得するには以下のように書きます。
Dim WeldLeaders As DrawingLeaders
Set WeldLeaders = WeldTxt.Leaders
TextPropertiesプロパティ
TextPropertiesプロパティは「DrawingTextPropertiesオブジェクト」を取得することができます。(このオブジェクトのプロパティ/メソッドを使うことでテキストのフォントやフォントサイズ、色などを取得/変更することができます)
DrawingTextPropertiesオブジェクトを取得するには以下のように書きます。
Dim WeldTxtProps As DrawingTextProperties
Set WeldTxtProps = WeldTxt.TextProperties
xプロパティ/yプロパティ
xプロパティは「溶接記号」のX座標を取得/変更することができます。
yプロパティは「溶接記号」のY座標を取得/変更することができます。
取得される座標は下図の赤点の座標(アクティブビュー内での座標)です。
引出線の”向き”によって基準の位置が変わるので注意しましょう。
X,Y座標を取得するには以下のように書きます。
Dim WeldCoordX As Double
Dim WeldCoordY As Double
WeldCoordX = WeldTxt.x
WeldCoordY = WeldTxt.y
また、以下のように書くことでX,Y座標を変更することもできます。
WeldTxt.x = 30
WeldTxt.y = 50
メソッド
DrawingWeldingオブジェクトのメソッドでは主に『溶接記号』の取得/変更を行うことが出来ます。
基本的にはどれも同じような使い方なので、1つ理解できれば他のメソッドも理解することができます。
他にはテキストを取得/変更するために必要な「DrawingTextRangeオブジェクト」を取得するtためのメソッドも存在していますが、引数がいらないのでプロパティと同じように扱うことができるようになってます。
GetAdditionalSymbolメソッド
GetAdditionalSymbolメソッドは現在の補助記号(表面形状)を取得することができます。
補助記号(表面形状)を取得するには以下のように書きます。
Dim WeldAddSym As CatWeldAdditionalSymbol
WeldAddSym = WeldTxt.GetAdditionalSymbol(iWeld)
iWeldには取得する溶接記号が基線の上側と下側のどちらかを入力します。
上側の場合は「catFirstWelding」、下側の場合は「catSecondWelding」を入力します。
取得した記号は列挙型変数CatWeldAdditionalSymbolのいずれかの値が返ってきます。
詳しくは「DrawingWeldingオブジェクトでの列挙型変数まとめ」の「CatWeldAdditionalSymbol」の項を参照下さい。
GetFinishSymbolメソッド
GetFinishSymbolメソッドは現在の補助記号(仕上げ方法)を取得することができます。
補助記号(仕上げ方法)を取得するには以下のように書きます。
Dim WeldFinishSym As CatDftWeldFinishSymbol
WeldFinishSym = WeldTxt.GetFinishSymbol(iWeld)
iWeldには取得する溶接記号が基線の上側と下側のどちらかを入力します。
上側の場合は「catFirstWelding」、下側の場合は「catSecondWelding」を入力します。
取得した記号は列挙型変数CatDftWeldFinishSymbolのいずれかの値が返ってきます。
詳しくは「DrawingWeldingオブジェクトでの列挙型変数まとめ」の「CatDftWeldFinishSymbol」の項を参照下さい。
GetSymbolメソッド
GetSymbolメソッドは現在の基本記号を取得することができます。
基本記号を取得するには以下のように書きます。
Dim WeldSym As CatWeldingSymbol
WeldSym = WeldTxt.GetSymbol(iWeld)
iWeldには取得する溶接記号が基線の上側と下側のどちらかを入力します。
上側の場合は「catFirstWelding」、下側の場合は「catSecondWelding」を入力します。
取得した記号は列挙型変数CatWeldingSymbolのいずれかの値が返ってきます。
詳しくは「DrawingWeldingオブジェクトでの列挙型変数まとめ」の「CatWeldingSymbol」の項を参照下さい。
GetTextRangeメソッド
GetTextRangeメソッドは「DrawingTextRangeオブジェクト」を取得することができます。(このオブジェクトのプロパティ/メソッドを使うことでテキストの値を取得/変更することができます)
DrawingTextRangeオブジェクトを取得するには以下のように書きます。
Dim WeldTxtRange As DrawingTextRange
Set WeldTxtRange = WeldTxt.GetTextRange(iField)
『 溶接記号』にはテキスト入力できるエリアが複数あります。
iFieldにはどの部分のDrawingTextRangeを取得するのかを入力します。
1のエリアの場合は「catWeldingFieldOne」
2のエリアの場合は「catWeldingFieldTwo」
3のエリアの場合は「catWeldingFieldThree」
4のエリアの場合は「catWeldingFieldFour」
5のエリアの場合は「catWeldingFieldFive」を入力します。
たとえば3のエリアに「ABC」と入力したい場合は以下のように書きます。
Dim WeldTxtRange As DrawingTextRange
Set WeldTxtRange = WeldTxt.GetTextRange(catWeldingFieldThree)
WeldTxtRange.Text = “ABC”
WeldTxt.TextProperties.Update
‘※「.Text」はDrawingTextRangeオブジェクトのプロパティです。
SetAdditionalSymbolメソッド
SetAdditionalSymbolメソッドは補助記号(表面形状)を設定することができます。
補助記号(表面形状)を設定するには以下のように書きます。
Call WeldTxt.SetAdditionalSymbol(iSymbol,iWeld)
iSymbolには設定する溶接記号を入力します。
入力する値は列挙型変数CatWeldAdditionalSymbolのいずれかの値を入力します。
値については「DrawingWeldingオブジェクトでの列挙型変数まとめ」の「CatWeldAdditionalSymbol」の項を参照下さい。
iWeldには設定する溶接記号が基線の上側と下側のどちらかを入力します。
上側の場合は「catFirstWelding」、下側の場合は「catSecondWelding」を入力します。
SetFinishSymbolメソッド
SetFinishSymbolメソッドは補助記号(仕上げ方法)を設定することができます。
補助記号(仕上げ方法)を設定するには以下のように書きます。
Call WeldTxt.SetFinishSymbol(iSymbol,iWeld)
iSymbolには設定する溶接記号を入力します。
入力する値は列挙型変数CatDftWeldFinishSymbolのいずれかの値を入力します。
値については「DrawingWeldingオブジェクトでの列挙型変数まとめ」の「CatDftWeldFinishSymbol」の項を参照下さい。
iWeldには設定する溶接記号が基線の上側と下側のどちらかを入力します。
上側の場合は「catFirstWelding」、下側の場合は「catSecondWelding」を入力します。
SetSymbolメソッド
SetSymbolメソッドは基本記号を設定することができます。
基本記号を設定するには以下のように書きます。
Call WeldTxt.SetSymbol(iSymbol,iWeld)
iSymbolには設定する溶接記号を入力します。
入力する値は列挙型変数CatWeldingSymbolのいずれかの値を入力します。
値については「DrawingWeldingオブジェクトでの列挙型変数まとめ」の「CatWeldingSymbol」の項を参照下さい。
iWeldには設定する溶接記号が基線の上側と下側のどちらかを入力します。
上側の場合は「catFirstWelding」、下側の場合は「catSecondWelding」を入力します。
まとめ
今回はCATIAマクロでのDrawingWeldingオブジェクトについての内容でした。
本オブジェクトは『 溶接記号』コマンドをVBAで操作するときに使うオブジェクトです。
あまり使用頻度の高いものではないので、深く理解する必要はないと思います。
ただ、海外を含めてもDrawingWeldingオブジェクトの情報はほとんど見つからなかったため、ここに情報として残しておきます。誰かしらのお役に立てれば幸いです。
CATIAマクロを本気で勉強するなら