C#ATIA

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

検索したテキストの文字を、指定したテキストに追記する

御質問頂いた内容を正しく理解できているかわからないのですが、
「Drawで検索してHitしたテキストの文字を、他のテキストに追記したい」
と理解しました。

テストするものは、このような感じにしました。
f:id:kandennti:20190604125304p:plain

コードはこちら。

'vba
Sub CATMain()
    
    'ドキュメント
    Dim dwDoc As DrawingDocument
    Set dwDoc = CATIA.ActiveDocument
    
    'selection
    Dim sel As selection
    Set sel = dwDoc.selection
    
    '検索-紫の文字
    sel.Clear
    sel.Search "CATDrwSearch.DrwText.Color='(128,0,255)',all"
    
    If sel.Count2 < 1 Then
        MsgBox "該当する文字は見つかりませんでした"
        Exit Sub
    End If
    
    '文字取得
    Dim txts() As String
    ReDim txts(sel.Count2 - 1)
    
    Dim i As Long
    For i = 1 To sel.Count2
        txts(i - 1) = sel.Item2(i).Value.Text
    Next
    
    '挿入する文字選択
    Dim selVar As Variant
    Set selVar = sel
    
    Dim msg As String
    msg = "挿入するテキストを指定してください"
    
    Dim filter As Variant
    filter = Array("DrawingText")
    
    Select Case selVar.SelectElement2(filter, msg, False)
        Case "Cancel", "Undo", "Redo"
            Exit Sub
    End Select
    
    Dim target As DrawingText
    Set target = selVar.Item2(1).Value
    
    '検索した文字をターゲットに追加-改行入れてます
    target.Text = target.Text & vbCrLf & Join(txts, vbCrLf)
    
    '終わり
    MsgBox "Done"

End Sub

ここから紫色の文字を検索で取得し、指定したテキストに取得した
文字を追記します。
仮に「バージョン 5 の終了」の文字を指定するとこんな感じになります。
f:id:kandennti:20190604125249p:plain