CATDrawingの寸法プロパティを変更するマクロ|CATIAマクロの作成方法

今回はお問い合わせより頂いた内容です。
送って頂いた内容は以下の通りです。

・CATDrawingで円要素に寸法コマンドで直径寸法が記入されている状態で、
 直径寸法のプロパティ内の項目をマクロで変更することは可能でしょうか?

【変更したいプロパティの項目について】
・「寸法線タブ」/「表現」項目を
 『標準』から『2成分に分割』

・「寸法線タブ」/「シンボル」項目の
 『シンボル2』のチェックを外す。

・「寸法テキストダブ」/「接頭部-接尾部」項目の
  接頭部に『直径記号』のシンボルを挿入。

上記内容をVBAで変更したいということですが、2つ目の「『シンボル2』のチェックを外す」方法だけはどうしても見つからなかったため、ここではその内容については端折り残り2つの変更方法についてのみ解説していきます。

もし変更方法をご存知の方は情報を共有していただけると幸いです。
教えてもいいよという方は是非「お問い合わせ」よりご連絡ください。

マクロの機能

今回作成したマクロは、「選択した直径寸法のプロパティを変更する」というものです。
プロパティの変更内容は冒頭で紹介した通り「寸法線を『2成分に分割』に変更」「接頭部に『直径記号』のシンボルを挿入」の2点です。

具体的な機能は以下のとおりです。

 icon-wrench マクロの機能まとめ ・選択した直径寸法のプロパティを変更
 → 寸法線を『2成分に分割』に変更
 → 接頭部に『直径記号』のシンボルを挿入
・直径寸法以外が選択された場合は再度ユーザーに選択を促す

寸法のプロパティは「DrawingDimensionオブジェクト」で操作します。

今回の変更内容は「DrawingDimension」以下にある「DrawingDimValue」「DrawingDimLine」を使うことで操作することができます。今回のやる内容以外の寸法プロパティもこれらオブジェクトで操作することが可能です。

 

サンプルコード

マクロのサンプルコードは以下のとおりです。
CATDrawing内で直径寸法を選択するとプロパティの変更を行うことができます。

 

コード解説

本マクロのコードを上から順に部分ごとにわけて解説していきます。

アクティブドキュメントの定義

まずはじめにアクティブドキュメントの定義をします。
今回のマクロはCATDrawingでのみ有効なものなので、アクティブドキュメントがCATDrawing以外の場合はTypeName関数を使った条件分岐でマクロを終了するようにしています。

条件分岐の先、つまりはアクティブドキュメントがCATDrawingの場合は変数「DOC」にアクティブドキュメントを代入します。
 

ユーザー選択(SelectElement2)

次にSelectElement2メソッドを使ってユーザーの選択したオブジェクトを取得します。

フィルターをかけて寸法しか選択できないようにしていますが、その中でも「直径寸法」以外の寸法を選択された場合は「GoTo文」を使い再度ユーザー選択を行うようにしています。
 

寸法線を『2成分に分割』に変更

実際にプロパティで見ると以下の画像部分の変更です。
デフォルトでは「標準」ですが今回は「2成分に分割」に変更します。

[寸法線]>[表現:]の内容をVBAで変更する方法は「DrawingDimLineオブジェクト」の「DimLineGraphRepプロパティ」の値を変更するだけです。
 

まずはDrawingDimensionオブジェクトとして先に定義していた「MyDimension」を使って、「DrawingDimLineオブジェクト」を定義します。定義方法は至ってシンプルでDrawingDimensionオブジェクトの「GetDimLineメソッド」を使って以下のように書くだけです。

 icon-code DrawingDimLineオブジェクトの定義 

Dim DimDimLine As DrawingDimLine
Set DimDimLine = MyDimension.GetDimLine

 
あとは上記で定義した「DimDimLine」と「DimLineGraphRepプロパティ」を使って以下のように書けば[寸法線]>[表現:]の内容を変更することができます。ここでは「2成分に分割」以外への変更方法も解説していきます。

 icon-code DimLineGraphRepプロパティの変更 

‘数字で指定する場合
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以外の数字を入れると全て「標準」になります。
 

接頭部に『直径記号(Φ)』のシンボルを挿入

実際にプロパティで見ると以下の画像部分の変更です。

[寸法テキスト]>[接頭部-接尾部]のシンボルをVBAで変更するには「DrawingDimValueオブジェクト」の「SetPSTextメソッド」を使います。

 
まずはDrawingDimensionオブジェクトとして先に定義していた「MyDimension」を使って、「DrawingDimValueオブジェクト」を定義します。定義方法は至ってシンプルでDrawingDimensionオブジェクトの「GetValueメソッド」を使って以下のように書くだけです。

 icon-code DrawingDimValueオブジェクトの定義 

Dim DimDimValue As DrawingDimValue
Set DimDimValue = MyDimension.GetValue

 
あとは上記で定義した「DimDimValue」と「SetPSTextメソッド」を使って以下のように書けば接頭語と接尾部に任意のシンボルを追加/変更することができます。

 icon-code SetPSTextメソッド 

Call DimDimValue.SetPSText(1, “接頭部のシンボル名称”, “接尾部のシンボル名称”)
  
‘接頭部に直径記号を追加する場合
Call DimDimValue.SetPSText(1, “<DIAMETER>”, “”)

シンボルは接頭語と接尾部の両側には付けることができないので、入力するシンボル名称のどちらかは空白[“”]にする必要があります

またシンボル名称はプロパティを見ることで調べることができます。
たとえば「±」を接尾部に追加したい場合を見てみましょう。
プロパティでシンボル名を確認すると「<PLUSMINUS>」ということがわかります。

よってコード的には以下のように書けば「±」を接尾部に追加することができます。

 icon-code SetPSTextメソッド 

Call DimDimValue.SetPSText(1, “”, “<PLUSMINUS>”)

 

まとめ

今回は「寸法プロパティをマクロで変更する方法」についての内容でした。

ここでは要望頂いた変更しか解説しませんでしたが、実際はその他の寸法プロパティも変更が可能です。

たとえば寸法線でいえばシンボル(寸法線の矢印)の向きや色、太さなどを変更することができますし、寸法値でいえば「疑似(Fake)値」を入れたりすることもできます。(冒頭でもいいましたが「寸法線の『シンボル2』のチェックを外す」はできなさそうです)

ぜひその他の寸法プロパティについても勉強してみて下さい。
  

目次へ戻る
 

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

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

Posted by Lic