Изменить вид вырезанного текста в CATIA

В настоящее время я работаю с CATIA V5 и хочу использовать макросы (VBA), но у меня есть некоторые проблемы!

Мой вопрос: как изменить текст разреза? (см. изображение)

Я пытался использовать: myView.Texts.item(1) для доступа к этому "тексту", но я думаю, что CATIA не считает его текстовым...

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

3 ответа

Решение

Сценарии IME, VBA в рабочей среде разработки довольно сложны на первый взгляд... MyTexts - это набор объектов DrawingText.

MyDrawingText.Text = "MyNewTextValue"

Основная проблема, с которой вы столкнетесь, - получить дескриптор конкретного текстового объекта, который вы хотите изменить. Я обнаружил, что лучший способ обойти это - отсканировать всю коллекцию DrawingTexts в DrawingView и применить уникальное имя, DrawingText.Name="UniqueObjectName" или вы создаете текст для рисования из сценария, и вы можете легче получить дескриптор объекта DrawingText, чтобы поместить туда любое значение, которое вы хотите. Создание уникальных имен делает ваш рисунок более надежным для будущих сценариев

MyView.Texts.Count также будет полезно получить номер элемента, если последний создал объект (ы) DrawingText.

Я рад дополнительно объяснить, если вам нужно. Удачи!

Обновление / редактирование. Как уже упоминалось выше, создание сценариев с помощью рабочей среды разработки не всегда является простым. Оказывается, тексты выноски не совсем живут в DrawingTexts коллекция DrawingView, но они живут где-то внутри вида чертежа... В этом случае вы пытаетесь отредактировать "идентификатор" вида разреза. Это свойство также не предоставляется через VBA.

Существует хак / обходной путь, который заключается в поиске текста для рисования в родительском представлении, а затем с некоторой логикой, с которой вам нужно придумать, отсканируйте Selection для текстов, которые вы хотите изменить. Тогда вы должны переименовать, пока вы на этом, так легче вернуться и найти их снова.

Вот пример, начинающийся с разрешения объекта переднего вида (родительский вид вида в разрезе)

Sub ChangeCallout()

'---- Begin resolution script for object : Front View

Dim drawingDocument1 As DrawingDocument
Set drawingDocument1 = CATIA.ActiveDocument

Dim drawingSheets1 As DrawingSheets
Set drawingSheets1 = drawingDocument1.Sheets

Dim drawingSheet1 As DrawingSheet
Set drawingSheet1 = drawingSheets1.Item("Sheet.1")

Dim drawingViews1 As DrawingViews
Set drawingViews1 = drawingSheet1.Views

Dim drawingView1 As DrawingView
Set drawingView1 = drawingViews1.Item("Front view") 'this is the parent view of the section view

'---- End resolution script

Dim sel As Selection
Set sel = drawingDocument1.Selection
Dim CalloutText As drawingText

sel.Clear 'clear the selection / good practice
sel.Add drawingView1 'add the parent view to the selection
sel.Search "Drafting.Text,sel" 'this will search the current selection for all drawing texts and add them to the selection

Dim thing As Variant
Dim i As Integer
For i = 1 To sel.Count
    Set thing = sel.Item2(i)
    Set CalloutText = thing.Value
    'do some things/logic here to determine if this is a callout with some Ifs or Case statements
    'CalloutText.Name = "Useful Unique Name"
    'CalloutText.Text = "New Callout Label" 'whatever you want to rename it to
Next

End Sub

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

Sub CATMain()

    Dim oDraw As DrawingDocument
    Set oDraw = CATIA.ActiveDocument

    Dim oSectionView As DrawingView
    Set oSectionView = oDraw.Sheets.ActiveSheet.Views.ActiveView

    oSectionView.SetViewName "Prefix ", "B", " Suffix"

End Sub

Для сканирования текстов выноски вы можете использовать строки ниже. Это выберет тексты, относящиеся только к выноске, и не отсканирует все тексты.

Sub CATMain()

Dim drawingDocument1 As Document
Set drawingDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = drawingDocument1.Selection

selection1.Search "CATDrwSearch.DrwCallout,all"
selection1.Search "Drafting.Text,sel"

Dim i As Integer

For i = 1 To selection1.Count

MsgBox selection1.Item(i).Value.text

Next

End Sub
Другие вопросы по тегам