ですが、内容的にはこちらを変更したものです。
2D属性リンクを扱いたい4 - C#ATIA
前回CSVファイルとしてエクスポートしたのですが、
同じレイアウトでセルのオブジェクト名を記載したテーブルを
横に作成した方が確認が楽な事に気が付きました。
'vba sample_CreateCellNameTable using-'KCL0.0.13' by Kantoku '指定したDrawTableを隣にコピペしセルのオブジェクト名を書き出す Option Explicit '元テーブルとのマージン距離 Private Const MARGIN_X = 10# Sub CATMain() 'ドキュメントのチェック If Not CanExecute("DrawingDocument") Then Exit Sub Dim dDoc As DrawingDocument Set dDoc = CATIA.ActiveDocument 'テーブル選択 Dim msg As String msg = "テーブル選択/ESCキー中止" Dim dwTblOri As DrawingTable Set dwTblOri = KCL.SelectItem(msg, "DrawingTable") If dwTblOri Is Nothing Then Exit Sub 'テーブルコピペ Dim dwTblNew As DrawingTable Set dwTblNew = CopyTable(dwTblOri) If dwTblNew Is Nothing Then MsgBox "テーブルのコピペに失敗しました" Exit Sub End If 'テーブル幅取得 Dim moveX As Double moveX = GetColumnSizeAll(dwTblNew) dwTblNew.X = dwTblNew.X + moveX + MARGIN_X 'テーブルにオブジェクト名記入 WriteCellName dwTblNew MsgBox "done" End Sub Private Sub WriteCellName( _ ByVal table As DrawingTable) Dim r As Long, c As Long With table For r = 1 To .NumberOfRows For c = 1 To .NumberOfColumns .SetCellString r, c, .GetCellObject(r, c).name Next Next End With End Sub Private Function CopyTable( _ ByVal table As DrawingTable) _ As DrawingTable Dim sel As selection Set sel = CATIA.ActiveDocument.selection Dim vi As DrawingView Set vi = KCL.GetParent_Of_T(table, "DrawingView") If vi Is Nothing Then Exit Function CATIA.HSOSynchronized = False With sel .Clear .Add table .Copy .Clear .Add vi .Paste Set CopyTable = .Item2(1).Value .Clear End With CATIA.HSOSynchronized = True End Function Private Function GetColumnSizeAll( _ ByVal table As DrawingTable) As Double Dim sumClm As Long sumClm = 0 Dim i As Long For i = 1 To table.NumberOfColumns sumClm = sumClm + table.GetColumnSize(i) Next GetColumnSizeAll = sumClm End Function
レイアウトは元のテーブルと同じで、隣にセル名の入ったテーブルを
作ります。
後は、やっぱりチマチマと確認です・・・。
新たに作成したテーブルは元のテーブルをコピペして
セルの中身を書き換えただけの為、こちらの問題から
属性リンクが残っています。
2D属性リンクを扱いたい2 - C#ATIA
未だに属性リンクをマクロで削除する方法が見つかりません。
又、一部KCLの関数がエラーになり止まってしまう事がシバシバ
起きているので、こっそりVer0.0.12 → Ver0.0.13 に更新しました。
(例外入れただけです)
非常に個人的なCATVBA用ライブラリ - C#ATIA