Как запрограммировать макрос CATIA, который ищет набор текста через чертежный лист и заменяет их - PullRequest
0 голосов
/ 08 июня 2019

В настоящее время я пытаюсь запрограммировать макрос CATIA для поиска по определенному тексту: «ДД / ММ / ГГГ» на листе чертежа 2D CATIA и заменить этот же текст введенным пользователем текстом.(В основном, чтобы обновить текстовое поле)

В настоящее время я новичок в языке сценариев VBA и не имею опыта в этом.Я тщательно исследовал это, но не нашел ни одного кода, подходящего для решения проблем, которые я пытаюсь решить.

Содержимое текстового поля, которое должен заменить пользователь

Click this link to see problem: Textbox contents to be replaced by user

что я хотел, чтобы макрос CATIA делал Click this link to see what I wanted the CATIA macro to do

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Этот короткий фрагмент будет искать все сущности Texts и пытаться заменить на фиксированную строку:

Sub Catmain()

Dim oDoc As Document
Dim oView as DrawingView
Dim oText As DrawingTexts
Dim txt_to_src As String
Dim txt_to_place As String
Dim n As Integer

n = 0
Set oDoc = CATIA.ActiveDocument
Set oSheets = oDoc.Sheets
Set oViews = oSheets.ActiveSheet.Views
Set oView = oViews.ActiveView
Set oTexts = oView.Texts
txt_to_src = "STACK OVERFLOW."
txt_to_place = "REPLACED"

For Each srcText In oTexts
    If srcText.Text = txt_to_src Then
        srcText.Text = txt_to_place
        n = n + 1
    End If
Next
MsgBox n & " text frames have been replaced"

End Sub

Это только поиск всех текстов в активном представлении активного листа открытого документа. Рассмотрите возможность использования более конкретных критериев проверки, таких как Instr (проверьте, содержится ли строка в другой строке), используемое равенство является просто представительной проверкой. Вам, вероятно, потребуется циклически просмотреть все представления листа (то есть все элементы коллекции oViews) и все листы документа (то есть все элементы коллекции oSheets). Затем разверните все циклические чертежи, если хотите.

Помните, что пустой документ с титровальным блоком уже имеет 2 вида (фоновый и основной), поэтому если на чертеже, скажем, только 1 вид спереди, сценарий должен циклически переключаться между 3 видами.

0 голосов
/ 09 июня 2019

Я совершенно уверен, что ваша текстовая строка даты имеет определенное имя в блоке заголовка, поэтому найдите это конкретное имя текстовой строки и назначьте другое значение.

Если вам нужно сделать много рисунковВ этом задании вы можете выполнить это в пакетном режиме, открыть один за другим чертежи в папке, заменить дату, сохранить чертеж, закрыть документ ... нет ввода от дизайнера, просто назначьте новое значение даты в вашем новом макросе.

...