ExcelのVBAの知識が少し必要ですがとりあえずはコピペでOKなので手順を理解するところから始めてみましょう。
CATIA V5 マクロ入門 点の座標をExcelに書き出す
Excelに書き出す準備
CATIAのマクロでExcelのオブジェクトを使うための設定が必要です
標準ではチェックが外れています。
CATIAからVBAを開きます
ツール ⇒ マクロ ⇒ Visual Basic エディター
ツール ⇒ 参照設定
「Microsoft Excel 16.0 Object Library」 を選択します。
16.0の部分はバージョンによって変わります
「Excel」が付くライブラリは一つしかないので迷うことはないと思います。
Excelに書き出す設定は下記をコピペでOK
内容はExcelのVBAでExcelを起動してワークブックとシートを指定する内容です。
詳しく知りたい人はExcelのVBAで検索しましょう。
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 |
'------------------------------------------------------------------------ ' Excel の取得設定 '------------------------------------------------------------------------ Sub CATMain() On Error Resume Next 'エラーを無視して続行するようにする Dim appExcel As Excel.Application 'Excelを取得 Set appExcel = GetObject(, "EXCEL.Application") 'オブジェクト生成 If Err.Number <> 0 Then 'Excelが起動していない(エラーが出た場合) Err.Clear Set appExcel = CreateObject("Excel.Application") 'Excelを起動 End If On Error GoTo 0 '------------------------------------------------------------------------------ appExcel.Visible = True Dim WB As Workbook Set WB = appExcel.Workbooks.Add 'ExcelワークブックをWBと定義する Dim WS As Worksheet Set WS = WB.Sheets(1) 'Excelの1つ目にあるシートをWSと定義する ActiveSheet.Name = "CATIA_Point" 'シートの名前を変更 '---------------------------ここまでがExcelに書き出す設定--------------------------------------------------- CATIAの実行したい処理を入力 '---------------------------ここからExcelに書き出す内容の設定--------------------------------------------------- Excelのセルを指定したりします End Sub |
CATIAでマクロを記録する
CATIAのコードは知らなくても 「マクロの記録」で操作を記録すればコピペするだけで大丈夫です。
「今回は点を検索する」ことがCATIAでの操作です。
点を選択するまでをマクロで記録してみます。
先にマクロライブラリーを設定しましょう
検索する操作をマクロで記録します
検索コマンドで点をすべて選択します
(照会の項目が パートデザイン、点、all になっています)
操作が終わったらマクロの記録を終了させます。
記録された内容はライブラリーに記述されますので確認してみましょう
選択方法を変更して記録してみましょう。
マクロを記録すれば新しくモジュール2が作られます
検索コマンドでマゼンタの点をすべて選択します
(照会の項目が パートデザイン、点、色=マゼンタall になっています)
モジュール1の内容を確認
1 2 3 4 5 6 7 8 9 10 11 |
Sub CATMain() Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim selection1 As Selection Set selection1 = partDocument1.Selection selection1.Search "CATPrtSearch.Point,all" End Sub |
「Set」 の後の項目に 「=」 の後のコードを変換する感じです
selection1 が長いので SEL に変更しておきます。ここは任意に決めれます
短くしておくとコードが書きやすいので SELにします
1 2 3 4 5 6 7 8 9 10 11 |
Sub CATMain() Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim SEL As Selection Set SEL = partDocument1.Selection SEL.Search "CATPrtSearch.Point,all" End Sub |
マクロを記録で記録した内容をコピペする
モジュール1では Search “CATPrtSearch.Point,all” と記録されています
Search が検索で 検索内容が ”partファイル内のすべての点” になります。
これを先のExcel書き込み設定の下にコピペします。
選択した点の座標をセルに配列します
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
'------------------------------------------------------------------------ ' 点の座標をセルに入力する配列を宣言 '------------------------------------------------------------------------ Dim SELCou As Integer SELCou = SEL.Count Dim myArray(2) Dim i As Integer For i = 1 To SELCou Dim SELPoint As AnyObject Set SELPoint = SEL.Item(i).Value SELPoint.GetCoordinates myArray ' 点の座標を取得して配列に代入 |
ここからはExcelのVBAになりますので詳しく知りたい人はExcelのVBAで検索しましょう。
数値の桁数をしています。[Double] になっていますが整数にしたい場合は「Integer] にします。
座標情報をXYZに代入します
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
'------------------------------------------------------------------------------------------ ' 「Integer] は整数 [Single] 小数点以下 有効桁数は7桁 [Double] 倍精度 7桁を超える値 '------------------------------------------------------------------------------------------ Dim XP As Double Dim YP As Double Dim ZP As Double '------------------------------------------------------------------------ ' myArrayを指定 '------------------------------------------------------------------------ XP = myArray(0) 'XPにX座標を代入 YP = myArray(1) 'YPにY座標を代入 ZP = myArray(2) 'ZPにZ座標を代入 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
'------------------------------------------------------------------------ ' Excelのセルに入力する項目を指定 '------------------------------------------------------------------------ WS.Cells(1, 1).Value = "PT" 'ExcelのB1に「PT」を入力 WS.Cells(1, 2).Value = "座標" 'ExcelのB1に「座標」を入力 WS.Cells(2, 1).Value = "名前" 'ExcelのA1に「名前」を入力 WS.Cells(2, 2).Value = "X" 'ExcelのB1に「X」を入力 WS.Cells(2, 3).Value = "Y" 'ExcelのC1に「Y」を入力 WS.Cells(2, 4).Value = "Z" 'ExcelのD1に「Z」を入力 WS.Cells(i + 2, 1).Value = SELPoint.Name 'ExcelのA列に点の名前を入力 WS.Cells(i + 2, 2).Value = XP 'ExcelのB列に点のX座標を入力 WS.Cells(i + 2, 3).Value = YP 'ExcelのC列に点のY座標を入力 WS.Cells(i + 2, 4).Value = ZP 'ExcelのD列に点のZ座標を入力 |
マクロを実行
マクロを実行してみましょう
エディターを開いたままユーザーフォームの実行をします
すべての点が選択されてExcelに書き出しされます。
色を指定したモジュール2では Search “CATPrtSearch.Point.Color='(255,0,255)’,all” になりカラーが追記されています
数字の部分は今回はマゼンタを選択したのでRGBコードで 255,0,255 になっています。
Search “CATPrtSearch.Point.Color='(255,0,255)’,all”に変更すればマゼンタの点だけが出力されます。
他の選択方法もマクロで記録してコードをコピペすれば違う方法で選択ができますので試してみましょう
セルに色を付けたい場合はカラーコードで指定すればできますよ。
1 |
WS.Range("B2:C2:D2").Interior.ColorIndex = 34 'セルに色を付けます |
今回は簡単な選択だけですがCATIAのコードを詳しく見たい場合はヘルプで確認できます
例えばCATIAのコードのPartDocumentとかSearchを選択して F1 キーを押せば HELPウインドウが出てきますにで
マクロの記録した内容をヘルプで確認してみましょう。
サンプルコード
サンプルコードです。 コピペして動かしてみましょう。
選択の種類を何種類か入れています
‘ を付ければ読まなくなるので実行したい選択方法以外に‘ を付ければ選択方法を変更できます。
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
'POINT ⇒ Excel TOOL 3d-raku '------------------------------------------------------------------------ ' Excel の取得設定 '------------------------------------------------------------------------ Sub CATMain() On Error Resume Next 'エラーを無視して続行するようにする Dim appExcel As Excel.Application 'Excelを取得 Set appExcel = GetObject(, "EXCEL.Application") 'オブジェクト生成 If Err.Number <> 0 Then 'Excelが起動していない(エラーが出た場合) Err.Clear Set appExcel = CreateObject("Excel.Application") 'Excelを起動 End If On Error GoTo 0 '------------------------------------------------------------------------------ appExcel.Visible = True Dim WB As Workbook Set WB = appExcel.Workbooks.Add 'ExcelワークブックをWBと定義する Dim WS As Worksheet Set WS = WB.Sheets(1) 'Excelの1つ目にあるシートをWSと定義する ActiveSheet.Name = "CATIA_Point" 'シートの名前を変更 '---------------------------ここまでがExcelに書き出す設定--------------------------------------------------- '------------------------------------------------------------------------ 'CATIAの定義 マクロの記録で記録されたコードを参考にして入力します '------------------------------------------------------------------------ Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim SEL As Selection Set SEL = partDocument1.Selection '--------------------------------------------------------------------------------------- '点を検索 '-------------------------------------------------------------------------------------------------------------- ' ("CATPrtSearch.Point,all") にするとドキュメント内のすべての点を検索して選択します 非表示の点も選択されます。 ' 注意 ⇒ 交点があるとエラーになりますので交点を分離してデータム化してから実行してください。 ' カラーを指定すれば指定した色の点のみ検索されます サンプルではマゼンタ(255,0,255)です '--------------------------------------------------------------------------------------------------------------- SEL.Search ("CATPrtSearch.Point,all") '⇒ ドキュメント内のすべての点を検索して選択します 非表示の点も選択されます。 'SEL.Search ("CATPrtSearch.Point,scr") '⇒ ,scr に変更すると画面に表示されたマゼンタ色の点のみ選択されます. 'SEL.Search ("CATPrtSearch.Point.Color='(255,0,255)',all") '⇒ マゼンタ色の点のみ選択されます 'SEL.Search ("CATPrtSearch.Point.Color='(255,0,255)',scr") '⇒ 画面に表示されたマゼンタ色の点のみ選択されます 'SEL.Search ("CATPrtSearch.Point,scr") '⇒ 画面に表示されたマゼンタ色の点のみ選択されます '------------------------------------------------------------------------ ' 点の座標をセルに入力する配列を宣言 '------------------------------------------------------------------------ Dim SELCou As Integer SELCou = SEL.Count Dim myArray(2) Dim i As Integer For i = 1 To SELCou Dim SELPoint As AnyObject Set SELPoint = SEL.Item(i).Value '------------------------------------------------------------------------ ' 点の座標を取得して配列に代入 '------------------------------------------------------------------------ SELPoint.GetCoordinates myArray '------------------------------------------------------------------------------------------ ' 「Integer] は整数 [Single] 小数点以下 有効桁数は7桁 [Double] 倍精度 7桁を超える値 '------------------------------------------------------------------------------------------ Dim XP As Double Dim YP As Double Dim ZP As Double '------------------------------------------------------------------------ ' myArrayを指定 '------------------------------------------------------------------------ XP = myArray(0) 'XPにX座標を代入 YP = myArray(1) 'YPにY座標を代入 ZP = myArray(2) 'ZPにZ座標を代入 '------------------------------------------------------------------------ ' Excelのセルに入力する項目を指定 '------------------------------------------------------------------------ WS.Cells(1, 1).Value = "PT" 'ExcelのB1に「PT」を入力 WS.Cells(1, 2).Value = "座標" 'ExcelのB1に「座標」を入力 WS.Cells(2, 1).Value = "名前" 'ExcelのA1に「名前」を入力 WS.Cells(2, 2).Value = "X" 'ExcelのB1に「X」を入力 WS.Cells(2, 3).Value = "Y" 'ExcelのC1に「Y」を入力 WS.Cells(2, 4).Value = "Z" 'ExcelのD1に「Z」を入力 WS.Cells(i + 2, 1).Value = SELPoint.Name 'ExcelのA列に点の名前を入力 WS.Cells(i + 2, 2).Value = XP 'ExcelのB列に点のX座標を入力 WS.Cells(i + 2, 3).Value = YP 'ExcelのC列に点のY座標を入力 WS.Cells(i + 2, 4).Value = ZP 'ExcelのD列に点のZ座標を入力 WS.Range("B2:C2:D2").Interior.ColorIndex = 34 'セルに色を付けます Next i End Sub |
いろいろ試してみるとマクロのヒントになると思います
サンプルダウンロード
マクロの設定方法
マクロライブラリーを追加
マクロライブラリー ⇒ 既存ライブラリーの追加
マクロのアイコン化
簡単に追加できます
ツール ⇒ カスタマイズ ⇒ ツールバー ⇒ 新規作成
①新規作成
空白の新しいツールバーが制作されますのでツールバーに名前を付けてOKします。
② 任意の名前を付ける
MACRO-TOOL と名前を付けました
ここまではツールバーの追加方法と同じです。
③マクロコマンド選択
コマンドを追加ではなく カスタマイズ のコマンドタブを選択して左の項目から「マクロ」を選択
マクロラブラリーで登録されているマクロが出てきます
プロパティを選択するとアイコンを変更できます
自作のアイコンを作れば使うことも出来ます。
参考書籍
Excelのマクロ VBA について 詳しく勉強したい方はExcelのマクロの書籍を購入してみましょう。
価格:2,618円 |
CATIA V5 のマクロについては詳しく勉強したい方は下記をおすすめ
できれば電子書籍を購入しましょう コピペできるので便利です
CATIA V5Macro Programming with Visual Basic Script【電子書籍】[ Dieter R. Ziethen ] 価格:11,989円 |