Как распространить сценарий для применения ко всем Открытым чертежам CATIA - PullRequest
0 голосов
/ 15 июня 2019

В настоящее время у меня есть набор макрокодов VB CATIA, который, когда пользователь запускает код, открывает форму, которая предлагает пользователю ввести текст, который он / она хочет изменить (см. Изображение для формы, котораяпоявится код) Затем код будет проходить по всем чертежам для поиска и замены текста, введенного пользователем, соответственно.

В настоящее время я изменяю код так, чтобы изменения были применены ко всем открытым чертежам CAT.

Что я хочу, чтобы код делал: например, пользователь открывает 5 чертежей CATIA -> Когда пользователь запускает код -> открывается форма, предлагающая пользователю ввести текст для поиска и текст для заменыfor -> Как только пользователь заполняет два ввода и нажимает кнопку «Применить ко всем открытым листам» -> код запускается и изменяет все 5 открытых CATDrawings соответственно.

Я новичок в языке сценариев VB и практически не имею опыта работы с языком сценариев VB.Любая помощь будет оценена.

MainForm

Ниже приведены рабочие коды, которые будут применять изменения только к 1 открытому чертежу CATIA.

'For the Module,

Sub CATMain()

MainForm.Show

End Sub



'For the Form, 

Dim b As Variant

Dim a As String

Dim c As String

Dim selection1 As Selection

Dim drawingDocument1 As DrawingDocument

Private Sub CommandButton1_Click()

    a = TextBox1.Value
    b = TextBox2.Value
    c = "CATDrwSearch.DrwText.TextString_CAP=*" & a & "*,all"
        Set drawingDocument1 = CATIA.ActiveDocument
        Set DrawSheets1 = drawingDocument1.Sheets
        Set DrawSheet1 = DrawSheets1.ActiveSheet
        Set selection1 = drawingDocument1.Selection


    selection1.Search c
    TextBox3 = selection1.Count

End Sub

Private Sub CommandButton2_Click()

    a = TextBox1.Value
    b = TextBox2.Value
    c = "CATDrwSearch.DrwText.TextString_CAP=*" & a & "*,all"
        Set drawingDocument1 = CATIA.ActiveDocument
        Set selection1 = drawingDocument1.Selection

    selection1.Search c
    Text2 = selection1.Count
    i = 1

    For i = 1 To Text2
        If Text2 > 0 Then
        selection1.Item(i).Value.Text = b
        End If
    Next
End Sub

Private Sub CommandButton3_Click()

On Error Resume Next
Err.Clear

Set myCATIA = GetObject(, "CATIA.Application")

Dim myDocs As Documents
Set myDocs = myCATIA.Documents

Dim numofopeneddoc, n, j As Integer
numofopeneddoc = myDocs.Count

    For n = 1 To numofopeneddoc

       a = TextBox1.Value
       b = TextBox2.Value
       c = "CATDrwSearch.DrwText.TextString_CAP=*" & a & "*,all"

        Set drawingDocument1 = CATIA.ActiveDocument
        Set selection1 = drawingDocument1.Selection
        selection1.Search c     'Starts the search
        Text2 = selection1.Count
         i = 1

        For i = 1 To Text2
        If Text2 > 0 Then
            selection1.Item(i).Value.Text = b  'actual text replacement
        End If
        Next

    Next n

End Sub

Кроме того, я также попробовал этот метод, но безрезультатно.Видимо, я могу обойти. Выбор часть 1015 * введите описание изображения здесь

...