C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

DrawingTableをクリアする

"DrawingTableをクリアしたい" と御質問いただきました。
直接メソッドは提供されていないようなので、
単純にColumnとRowの二重ループさせ、長さ0の文字を
設定すれば良いかと思います。

'vba
Sub CATMain()
    Dim DrawDoc As DrawingDocument
    Set DrawDoc = CATIA.ActiveDocument
    
    Dim DrawTable As DrawingTable
    Set DrawTable = DrawDoc.Sheets.ActiveSheet.Views.ActiveView.Tables.Item(1)
    
    For i = 1 To DrawTable.NumberOfRows
        For j = 1 To DrawTable.NumberOfColumns
            Call DrawTable.SetCellString(i, j, "")
        Next
    Next
End Sub


続いて "テーブルの線の太さを変更したい" との事だったのでサンプルです。

'vba
Sub CATMain()
    Dim DrawDoc As DrawingDocument
    Set DrawDoc = CATIA.ActiveDocument
    
    Dim DrawTable As DrawingTable
    Set DrawTable = DrawDoc.Sheets.ActiveSheet.Views.ActiveView.Tables.Item(1)
    
    Dim Selection As Selection
    Set Selection = DrawDoc.Selection
    
    Selection.Clear
    Selection.Add DrawTable
    Selection.VisProperties.SetRealWidth 3, 1 'この場合3が太さ
    Selection.Clear
End Sub

"SetRealWidth" の2番目の引数の意味がわからなかったのですが、
恐らく "1" で大丈夫なはずです。


続いて "テーブル内の文字の行間を変更したい" との事ですが、
恐らく赤い印を付けた部分の値を変更したいのだと、
解釈しました。
f:id:kandennti:20160201195024p:plain
自分が探す限りこの部分の値の変更を行う為の、プロパティや
メソッドを見付ける事が出来ませんでした。
"絶対に出来ないのか?"
と言われると、先日のリンクを取得するマクロの様に、WinAPIを
利用すると変更(や値の取得)が可能となる可能性があるの
ですが、かなり調べなければならないのが本音です。


コンテキストメニュー等で表示させるプロパティで、"グラフィック" タブの部分は
VisPropertySetで提供されており、"テーブルの線の太さを変更"
の様に一度選択し VisProperties~ で変更・取得させます。
又、2Dのテキストのプロパティの "フォント" "テキスト" タブは、
DrawingTextクラスのTextPropertiesプロパティで比較的、値を取得
する事が可能です。 が、全ては提供されていないような
感じです。


今まで記載した事がなかったのですが、"マクロで可能?"
と判断する為の手段の一つをご紹介。
英語に長けていれば簡単な事なのだろうと思うのですが、
関連するプロパティ名やメソッド名が、ほとんど僕には判りません。
そこで言語を英語に設定し、実際のプロパティを表示させ
名前を控えてAutomationManualで検索します。
単純な事なのですが、案外Hitします。 
(今回の場合は Line Spacing です)
逆に類似した言葉で検索してもHitしない場合は、
"提供されていないんだなぁ" と判断しています。