CATDrawingの寸法プロパティを変更するマクロ|CATIAマクロの作成方法
今回は「お問い合わせ」より頂いた内容です。
送って頂いた内容は以下の通りです。
・CATDrawingで円要素に寸法コマンドで直径寸法が記入されている状態で、
直径寸法のプロパティ内の項目をマクロで変更することは可能でしょうか?【変更したいプロパティの項目について】
・「寸法線タブ」/「表現」項目を
『標準』から『2成分に分割』・「寸法線タブ」/「シンボル」項目の
『シンボル2』のチェックを外す。・「寸法テキストダブ」/「接頭部-接尾部」項目の
接頭部に『直径記号』のシンボルを挿入。
上記内容をVBAで変更したいということですが、2つ目の「『シンボル2』のチェックを外す」方法だけはどうしても見つからなかったため、ここではその内容については端折り残り2つの変更方法についてのみ解説していきます。
もし変更方法をご存知の方は情報を共有していただけると幸いです。
教えてもいいよという方は是非「お問い合わせ」よりご連絡ください。
マクロの機能
今回作成したマクロは、「選択した直径寸法のプロパティを変更する」というものです。
プロパティの変更内容は冒頭で紹介した通り「寸法線を『2成分に分割』に変更」と「接頭部に『直径記号』のシンボルを挿入」の2点です。
具体的な機能は以下のとおりです。
→ 寸法線を『2成分に分割』に変更
→ 接頭部に『直径記号』のシンボルを挿入
・直径寸法以外が選択された場合は再度ユーザーに選択を促す
寸法のプロパティは「DrawingDimensionオブジェクト」で操作します。
今回の変更内容は「DrawingDimension」以下にある「DrawingDimValue」「DrawingDimLine」を使うことで操作することができます。今回のやる内容以外の寸法プロパティもこれらオブジェクトで操作することが可能です。
サンプルコード
マクロのサンプルコードは以下のとおりです。
CATDrawing内で直径寸法を選択するとプロパティの変更を行うことができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
Option Explicit Sub CATMain() If TypeName(CATIA.ActiveDocument) <> "DrawingDocument" Then MsgBox "CATDrawingのみ対応のマクロです。" Exit Sub End If Dim DOC As DrawingDocument Set DOC = CATIA.ActiveDocument Dim SEL 'As Selection Set SEL = DOC.Selection Dim Filter Filter = Array("DrawingDimension") Dim Status As String label1: Status = SEL.SelectElement2(Filter, "直径寸法を選択してください。", False) If Status <> "Normal" Then MsgBox "キャンセルします。" Exit Sub End If Dim MyDimension As DrawingDimension Set MyDimension = SEL.Item(1).Value If MyDimension.DimType <> catDimDiameter Then MsgBox "直径寸法を選択してください。" SEL.Clear GoTo label1 End If '2成分に分割 Dim DimDimLine As DrawingDimLine Set DimDimLine = MyDimension.GetDimLine DimDimLine.DimLineGraphRep = 1 '接頭部にΦを追加 Dim DimDimValue As DrawingDimValue Set DimDimValue = MyDimension.GetValue Call DimDimValue.SetPSText(1, "<DIAMETER>", "") End Sub |
コード解説
本マクロのコードを上から順に部分ごとにわけて解説していきます。
アクティブドキュメントの定義
1 2 3 4 5 6 7 |
If TypeName(CATIA.ActiveDocument) <> "DrawingDocument" Then MsgBox "CATDrawingのみ対応のマクロです。" Exit Sub End If Dim DOC As DrawingDocument Set DOC = CATIA.ActiveDocument |
まずはじめにアクティブドキュメントの定義をします。
今回のマクロはCATDrawingでのみ有効なものなので、アクティブドキュメントがCATDrawing以外の場合はTypeName関数を使った条件分岐でマクロを終了するようにしています。
条件分岐の先、つまりはアクティブドキュメントがCATDrawingの場合は変数「DOC」にアクティブドキュメントを代入します。
ユーザー選択(SelectElement2)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Dim SEL 'As Selection Set SEL = DOC.Selection Dim Filter Filter = Array("DrawingDimension") Dim Status As String label1: Status = SEL.SelectElement2(Filter, "直径寸法を選択してください。", False) If Status <> "Normal" Then MsgBox "キャンセルします。" Exit Sub End If Dim MyDimension As DrawingDimension Set MyDimension = SEL.Item(1).Value If MyDimension.DimType <> catDimDiameter Then MsgBox "直径寸法を選択してください。" SEL.Clear GoTo label1 End If |
次に「SelectElement2メソッド」を使ってユーザーの選択したオブジェクトを取得します。
フィルターをかけて寸法しか選択できないようにしていますが、その中でも「直径寸法」以外の寸法を選択された場合は「GoTo文」を使い再度ユーザー選択を行うようにしています。
寸法線を『2成分に分割』に変更
1 2 3 4 |
Dim DimDimLine As DrawingDimLine Set DimDimLine = MyDimension.GetDimLine DimDimLine.DimLineGraphRep = 1 '1の代わりに「catDimLine2Parts」でも可 |
実際にプロパティで見ると以下の画像部分の変更です。
デフォルトでは「標準」ですが今回は「2成分に分割」に変更します。
[寸法線]>[表現:]の内容をVBAで変更する方法は「DrawingDimLineオブジェクト」の「DimLineGraphRepプロパティ」の値を変更するだけです。
まずはDrawingDimensionオブジェクトとして先に定義していた「MyDimension」を使って、「DrawingDimLineオブジェクト」を定義します。定義方法は至ってシンプルでDrawingDimensionオブジェクトの「GetDimLineメソッド」を使って以下のように書くだけです。
Dim DimDimLine As DrawingDimLine
Set DimDimLine = MyDimension.GetDimLine
あとは上記で定義した「DimDimLine」と「DimLineGraphRepプロパティ」を使って以下のように書けば[寸法線]>[表現:]の内容を変更することができます。ここでは「2成分に分割」以外への変更方法も解説していきます。
‘数字で指定する場合
DimDimLine.DimLineGraphRep = 0 ‘標準
DimDimLine.DimLineGraphRep = 1 ‘2成分に分割
DimDimLine.DimLineGraphRep = 2 ‘引出線1パーツ
DimDimLine.DimLineGraphRep = 3 ‘引出線2パーツ
‘文字列で指定する場合
DimDimLine.DimLineGraphRep = catDimLine1Part ‘標準
DimDimLine.DimLineGraphRep = catDimLine2Parts ‘2成分に分割
DimDimLine.DimLineGraphRep = catDimLineLeader1Part ‘引出線1パーツ
DimDimLine.DimLineGraphRep = catDimLineLeader2Part ‘引出線2パーツ
数字で指定する場合、1,2,3以外の数字を入れると全て「標準」になります。
接頭部に『直径記号(Φ)』のシンボルを挿入
1 2 3 4 |
Dim DimDimValue As DrawingDimValue Set DimDimValue = MyDimension.GetValue Call DimDimValue.SetPSText(1, "<DIAMETER>", "") |
実際にプロパティで見ると以下の画像部分の変更です。
[寸法テキスト]>[接頭部-接尾部]のシンボルをVBAで変更するには「DrawingDimValueオブジェクト」の「SetPSTextメソッド」を使います。
まずはDrawingDimensionオブジェクトとして先に定義していた「MyDimension」を使って、「DrawingDimValueオブジェクト」を定義します。定義方法は至ってシンプルでDrawingDimensionオブジェクトの「GetValueメソッド」を使って以下のように書くだけです。
Dim DimDimValue As DrawingDimValue
Set DimDimValue = MyDimension.GetValue
あとは上記で定義した「DimDimValue」と「SetPSTextメソッド」を使って以下のように書けば接頭語と接尾部に任意のシンボルを追加/変更することができます。
Call DimDimValue.SetPSText(1, “接頭部のシンボル名称”, “接尾部のシンボル名称”)
‘接頭部に直径記号を追加する場合
Call DimDimValue.SetPSText(1, “<DIAMETER>”, “”)
シンボルは接頭語と接尾部の両側には付けることができないので、入力するシンボル名称のどちらかは空白[“”]にする必要があります。
またシンボル名称はプロパティを見ることで調べることができます。
たとえば「±」を接尾部に追加したい場合を見てみましょう。
プロパティでシンボル名を確認すると「<PLUSMINUS>」ということがわかります。
よってコード的には以下のように書けば「±」を接尾部に追加することができます。
Call DimDimValue.SetPSText(1, “”, “<PLUSMINUS>”)
まとめ
今回は「寸法プロパティをマクロで変更する方法」についての内容でした。
ここでは要望頂いた変更しか解説しませんでしたが、実際はその他の寸法プロパティも変更が可能です。
たとえば寸法線でいえばシンボル(寸法線の矢印)の向きや色、太さなどを変更することができますし、寸法値でいえば「疑似(Fake)値」を入れたりすることもできます。(冒頭でもいいましたが「寸法線の『シンボル2』のチェックを外す」はできなさそうです)
ぜひその他の寸法プロパティについても勉強してみて下さい。