C#ATIA

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

ちいさなプライド

こちらの続きです。
画像にバルーンを付ける - C#ATIA

無事バルーンを200個程作りました・・・。

プロットしてみると悲劇が。
かなり最初の方でバルーン付け忘れの寸法を発見しました。

忘れているところに最後のバルーン付ければ良いのですが、
周囲のバルーンと数値が違いすぎ、
"忘れてたから付け足しました" 感が半端ないです。
小さなプライドが邪魔をします。

と言って、100個以上のバルーンの文字をチマチマ書き
換えるなんて、一番嫌なヤツです。

で、マクロを作りました。

'vba
'バルーンの数値を書き換える、小さなプライド
Option Explicit

Sub CATMain()

    Dim doc As DrawingDocument
    Set doc = CATIA.ActiveDocument

    Dim ballons As Collection
    Set ballons = getBallons(doc)
    
    Call chengeBallonText(ballons, 68, 1)

End Sub


Private Sub chengeBallonText( _
    ByVal ballons As Collection, _
    ByVal startValue As Long, _
    ByVal addValue As Long)
    
    Dim ball As DrawingText
    Dim oriVal As Long
    For Each ball In ballons
        
        On Error Resume Next
            oriVal = CLng(ball.Text)
        On Error GoTo 0
        
        If oriVal < startValue Then GoTo continue

        ball.Text = CStr(oriVal + addValue)
        
        Debug.Print Str(oriVal) + " -> " + ball.Text
continue:
    Next
        
End Sub


Private Function getBallons( _
    ByVal doc As DrawingDocument) As Collection

    Dim sel As Selection
    Set sel = doc.Selection
    
    CATIA.HSOSynchronized = False
    
    sel.Clear
    sel.Search "(CAT2DLSearch.DrwBalloon + CATDrwSearch.DrwBalloon),all"

    Dim lst As Collection
    Set lst = New Collection
    
    Dim i As Long
    For i = 1 To sel.Count2
        Call lst.Add(sel.Item2(i).Value)
    Next

    Set getBallons = lst
    
    sel.Clear
    CATIA.HSOSynchronized = True
    
End Function

chengeBallonTextに、バルーンのコレクションと書き換え先頭の番号と
足す数値を投げると、指定した番号以上を書き換えます。
そう、68個目から書き換えたかったんです。