線幅が最小設定の新規ボディーを作成するマクロ|CATIAマクロの作成方法
今回の記事は「お問い合わせ」よりいただいた内容です。
送って頂いた内容は以下のようなマクロです。
件名: 形状セット/ボディーのプロパティの設定方法
メッセージ本文:
私の使うCATIA環境では、形状セット/ボディーのデフォルト線幅が太く設定されています(0.2mm)。
私は画面表示上、0.1mmが好きなので、都度、プロパティを変更しています。
これが結構、面倒なので、新規に形状セット/ボディーを作成すると共に、
グラフィック関係のプロパティを設定する方法はないでしょうか?
今回お問い合わせいただいた内容は「ボディー」は対応可能ですが、「形状セット」はどうも対応不可のようです。というもの、オブジェクトのグラフィックプロパティを変更するには「VisPropertySetオブジェクト」というものを使います。
その中でも線幅を変更するには同オブジェクトの「SetRealWidthメソッド」を使います。
しかしながらこのメソッド、ボディーには対応することができますが形状セットには対応することができません。(※形状セット内のサーフェスやワイヤー形状などには対応可能です)
そのため、本ページではボディーの場合のみのマクロの紹介をしていきます。
マクロの機能
今回作成したのは線幅が最小設定の新規ボディーを作成するマクロです。
具体的な機能は以下のとおりです。
※最小値は[オプション]の設定により変化するので線幅インデックスが一番小さいものとする
サンプルコード
マクロのコードは以下のとおりです。
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 |
Option Explicit Sub CATMain() 'アクティブドキュメント等定義 If TypeName(CATIA.ActiveDocument) <> "PartDocument" Then MsgBox "このマクロはPartDocument専用です。" & vbLf & _ "CATPartに切り替えて実行してください。" Exit Sub End If Dim doc As PartDocument: Set doc = CATIA.ActiveDocument Dim sel As Selection: Set sel = doc.Selection Dim vps As VisPropertySet: Set vps = sel.VisProperties Dim pt As Part: Set pt = doc.Part 'ボディー作成 Dim b As Body Set b = pt.Bodies.Add '線幅を最細に変更 With sel .Clear .Add b Call vps.SetRealWidth(1, 0) .Clear End With End Sub |
コード解説
アクティブドキュメント等の定義
1 2 3 4 5 6 7 8 9 10 11 |
'アクティブドキュメント等定義 If TypeName(CATIA.ActiveDocument) <> "PartDocument" Then MsgBox "このマクロはPartDocument専用です。" & vbLf & _ "CATPartに切り替えて実行してください。" Exit Sub End If Dim doc As PartDocument: Set doc = CATIA.ActiveDocument Dim sel As Selection: Set sel = doc.Selection Dim vps As VisPropertySet: Set vps = sel.VisProperties Dim pt As Part: Set pt = doc.Part |
まずはじめにアクティブドキュメントを定義をします。
今回のマクロはCATPartのみ有効なものなので、アクティブドキュメントがCATPart以外の場合はTypeName関数を使った条件分岐でマクロを終了するようにしています。つまり、アクティブドキュメントがCATPartの場合のみ変数「doc」にアクティブドキュメントを代入し、マクロの処理を続けます。
アクティブドキュメントが定義できたら、以降で必要になる変数をまとめて定義します。
「Selectionオブジェクト」「VisPropertySetオブジェクト」「Partオブジェクト」を定義します。
ボディー作成
1 2 3 |
'ボディー作成 Dim b As Body Set b = pt.Bodies.Add |
つぎに新規ボディーを作成します。
ボディーを新規作成するには「Bodiesオブジェクト」の「Addメソッド」を使います。
線幅を最細に変更
1 2 3 4 5 6 7 |
'線幅を最細に変更 With sel .Clear .Add b Call vps.SetRealWidth(1, 0) .Clear End With |
最後に新規作成したボディーの線幅を最小にします。
VisPropertySetオブジェクトのSetRealWidthメソッドでは選択しているオブジェクトの線幅を変更することができます。つまりここで先ほど新規作成したボディー(b)を選択状態にしてからSetRealWidthメソッドを使えばボディーの線幅を変更することができます。
SetRealWidthメソッドの詳しい使い方はVisPropertySetオブジェクトページを参照下さい。
まとめ
今回は線幅が最小設定の新規ボディーを作成するマクロについての内容でした。
VisPropertySetオブジェクトさえ理解できればコード自体は単純なのですぐに理解できると思います。
形状セットの場合の代替案としては、形状セット内の全てのサーフェスやワイヤー形状などを選択状態にしてSetRealWidthメソッドを使えば対応することはできます。ただこの場合、形状セットのグラフィックプロパティを変更しているのではなく各々のオブジェクトのグラフィックプロパティを変更することになるのでご注意下さい。