В настоящее время у меня есть набор макрокодов VB CATIA, который, когда пользователь запускает код, открывает форму, которая предлагает пользователю ввести текст, который он / она хочет изменить (см. Изображение для формы, котораяпоявится код) Затем код будет проходить по всем чертежам для поиска и замены текста, введенного пользователем, соответственно.
В настоящее время я изменяю код так, чтобы изменения были применены ко всем открытым чертежам CAT.
Что я хочу, чтобы код делал: например, пользователь открывает 5 чертежей CATIA -> Когда пользователь запускает код -> открывается форма, предлагающая пользователю ввести текст для поиска и текст для заменыfor -> Как только пользователь заполняет два ввода и нажимает кнопку «Применить ко всем открытым листам» -> код запускается и изменяет все 5 открытых CATDrawings соответственно.
Я новичок в языке сценариев VB и практически не имею опыта работы с языком сценариев VB.Любая помощь будет оценена.
Ниже приведены рабочие коды, которые будут применять изменения только к 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 * введите описание изображения здесь