選択したビュー内の線を黒色に変換するマクロ|CATIAマクロの作成方法
回の記事は「マクロ案」よりいただいた内容です。
送って頂いた内容は以下のようなマクロです。
ワークベンチ: ドラフティングワークベンチ
マクロ案:
CATDrawingを色々な色になっているのを自動で選択してすべて黒にするマクロ。
今回のマクロは一言でいえば、「色を変更するマクロ」です。
そこまで複雑な内容ではないので、コツさえ理解できればすぐに応用できる内容だと思います。
マクロの機能
今回作成したのは選択したビュー内の生成項目、つまりは3Dから投影された形状を一括で黒色にするマクロです。やっていること自体は、手動で色を変えたいオブジェクトを選択して黒色に切り替えているのと変わりません。
そのため手動でもやったことがある人ならわかるかもしれませんが、選択しているオブジェクトが多すぎると色の変更にかなり時間がかかるという点はマクロでも変わらないのでご注意ください。
具体的な機能は以下のとおりです。
※生成項目が多いと時間がかかる恐れあり
VBAコード
コード全体は下記の通りです。
マクロ実行後、CATDrawingのビューを選択することで色を変換することができます。
変換後は[Ctrl]+[Z]で元に戻すことも可能ですが、多少時間がかかります。
Option Explicit
Sub CATMain()
'アクティブドキュメント等の定義
If TypeName(CATIA.ActiveDocument) <> "DrawingDocument" Then
MsgBox "このマクロはDrawingDocument専用です。" & vbLf & _
"CATDrawingに切り替えて実行してください。"
Exit Sub
End If
Dim doc As DrawingDocument
Set doc = CATIA.ActiveDocument
Dim sel 'As Selection
Set sel = doc.Selection
sel.Clear
Dim vps As VisPropertySet
Set vps = sel.VisProperties
'ユーザー選択でビューを選択
Dim filter: filter = Array("DrawingView")
Dim res As String
res = sel.SelectElement2(filter, "黒線化するビューを選択してください", False)
If res <> "Normal" Then
MsgBox "キャンセルしました。"
End If
'ビュー内の生成項目(3Dから投影された線)を全選択
sel.Search ("ドラフティング.生成項目,sel")
'選択中のオブジェクトを全て黒色にする
Call vps.SetRealColor(0, 0, 0, 1)
sel.Clear
End Sub
コード解説
アクティブドキュメント等の定義
'アクティブドキュメント等の定義
If TypeName(CATIA.ActiveDocument) <> "DrawingDocument" Then
MsgBox "このマクロはDrawingDocument専用です。" & vbLf & _
"CATDrawingに切り替えて実行してください。"
Exit Sub
End If
Dim doc As DrawingDocument
Set doc = CATIA.ActiveDocument
Dim sel 'As Selection
Set sel = doc.Selection
sel.Clear
Dim vps As VisPropertySet
Set vps = sel.VisProperties
まずはじめにアクティブドキュメントを定義をします。
今回のマクロはCATDrawingのみ有効なものなので、アクティブドキュメントがCATDrawing以外の場合はTypeName関数を使った条件分岐でマクロを終了するようにしています。つまり、アクティブドキュメントがCATDrawingの場合のみ変数「doc」にアクティブドキュメントを代入し、マクロの処理を続けます。
アクティブドキュメントが定義できたら、以降で使うためのオブジェクトをまとめて定義しておきます。ここでは下記の用途で各オブジェクトを定義しています。
Selectionオブジェクト :ユーザー選択でのオブジェクト取得用
VisPropertySetオブジェクト :選択しているオブジェクトを黒色にする用
黒色にするオブジェクトをすべて選択状態にする
'ユーザー選択でビューを選択
Dim filter: filter = Array("DrawingView")
Dim res As String
res = sel.SelectElement2(filter, "黒線化するビューを選択してください", False)
If res <> "Normal" Then
MsgBox "キャンセルしました。"
End If
'ビュー内の生成項目(3Dから投影された線)を全選択
sel.Search ("ドラフティング.生成項目,sel")
次に黒色に変換するビューをSelectionオブジェクトのSelectElement2メソッドを使ってユーザーに選択させます。
加えて選択状態のオブジェクトの中から同オブジェクトの「Searchメソッド」を使って、生成項目のみを選択状態にします。
ここの処理で、選択状態にしたオブジェクトが次の処理ですべて黒色に置き換えられます。上記コードの生成項目を別のものに変更したら、その他のオブジェクトにも対応させることができます。
形状セットをユーザー選択で取得
'選択中のオブジェクトを全て黒色にする
Call vps.SetRealColor(0, 0, 0, 1)
sel.Clear
最後にVisPropertySetオブジェクトの「SetRealColorメソッド」を使って、現在選択中のオブジェクトをすべて黒色に変換します。
今回は黒色ということで引数をRGB(0,0,0)としていますが、値を変えることで他の色に変換することもできます。詳しくはVisPropertySetオブジェクトページを参照下さい。
まとめ
今回は選択したビュー内の生成項目を一括で黒色にするマクロについての内容でした。
重要なのは色を変更するVisPropertySetオブジェクトの「SetRealColorメソッド」部分です。
これさえ理解できれば、あとはこの処理の前に色を変更したいオブジェクトを選択させる処理をはさむだけでOKです。








