久々にCATIAです。 そう、また面倒になったので。
左の様にバルーンで数字だけだと、使う度に数字がカウントアップ
してくれるのですが、右の様に数字意外だとカウントアップしないので
困っちゃいます。
取りあえず数字だけでバルーンを作りまくり、最後にマクロで
先頭文字を追加するのが楽だな と気が付きました。
で、マクロを作りました。
'vba Draw_AddBallonsHeader Ver0.0.1 using-'KCL0.0.12' by Kantoku 'バルーンの先頭に文字を追記 Option Explicit Sub CATMain() 'ドキュメントのチェック If Not KCL.CanExecute("DrawingDocument") Then Exit Sub 'ドキュメント Dim doc As DrawingDocument Set doc = CATIA.ActiveDocument 'バルーン Dim ballons As Collection Set ballons = getBallons(doc) '問い合わせ Dim msg As String Dim res As String msg = "バルーンの先頭に追加する文字を入力してください(例:S)" res = InputBox(msg, "バルーンの先頭文字", "S") If res = "" Then Exit Sub End If '追記 Call addBallonHeader(ballons, res) End Sub Private Sub addBallonHeader( _ ByVal ballons As Collection, _ ByVal header As String) Dim newCount As Long newCount = Len(header) Dim ball As DrawingText For Each ball In ballons If Mid(ball.Text, 1, newCount) = header Then GoTo continue End If ball.Text = header & 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
既に先頭の文字が追加されているっぽい部分には追記しません。
劇的に楽。