こちらの続きです。
画像にバルーンを付ける - 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個目から書き換えたかったんです。