КАТИА v5. Макрос для извлечения значения параметра 3Dpart в текстовое поле на чертеже

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

Ситуация:

У меня есть 3D-часть с несколькими пользовательскими параметрами в виде строки. Я создаю новый рисунок с видом спереди, сверху и изометрическим видом. Я хочу создать макрос, который считывает строковые значения параметров моей 3D-детали и записывает их в определенные места на чертеже.

Работаю пока:

У меня есть текст вызова макроса для моего рисунка, но я не могу понять, как в среде VB извлечь строковое значение из пользовательского параметра в моей 3D-детали. я пытался использовать

myValue = material.Value

Где «материал» — это параметр моей 3D-детали, но я не могу получить возврат. Я не знаю, что объявить и как правильно ссылаться на параметр.

Кроме того, я могу написать простой текст на своем рисунке с помощью макроса, написав это:

Set myText = MyDrawingViews.ActiveView.Texts.Add("description", 22, 38)

Я получаю текст с надписью «описание» на моем рисунке в предполагаемом месте, но я не могу понять, как вместо этого управлять текстом с помощью переменной. Когда я пытаюсь:

dim myValue as string
myValue = "description"
Set myText = MyDrawingViews.ActiveView.Texts.Add(myValue, 22, 38)

Я не получаю возврат.

Я пытался, но я не могу ничего добиться, любая помощь будет принята с благодарностью.


person Laurens Ruben    schedule 20.11.2017    source источник


Ответы (1)


Вам нужно получить ссылку на Parameter из Part или Product, которые вы хотите видеть в тексте. Кроме того, вы должны использовать метод InsertVariable объекта DrawingText, чтобы связать параметр. При изменении параметра в детали его можно обновить на чертеже.

Вот простой Sub, который может выполнить то, что вы хотите (вы можете изменить его, чтобы выполнить то, что вы хотите более конкретно):

Sub AddTextWithLinkedParameter(dViewToContainTheText As DrawingView, xPos, yPos, Optional param As Parameter)

    Dim dtext As DrawingText
    Set dtext = dViewToContainTheText.Texts.Add("", xPos, yPos)

    If Not param Is Nothing Then
        dtext.InsertVariable 0, 0, param
    End If

End Sub

Вот пример кода для проверки:

Sub testParameterText()
    Debug.Assert False
    '
    'Manually Activate the Part Document
    'that contains a string parameter called "Property
    '
    Dim myParam As Parameter
    Dim partDoc As PartDocument
    Set partDoc = CATIA.ActiveDocument
    Set myParam = partDoc.Part.Parameters.Item("Property")

    Debug.Assert False
    'manually switch to a drawing document

    Dim dDoc As DrawingDocument
    Set dDoc = CATIA.ActiveDocument

    Dim dSheet As DrawingSheet
    Set dSheet = dDoc.Sheets.ActiveSheet

    Dim dView As DrawingView
    Set dView = dSheet.Views.Item("Main View")

    AddTextWithLinkedParameter dView, 20, 20, myParam

End Sub
person GisMofx    schedule 21.11.2017
comment
Большое спасибо! У меня есть дополнительный вопрос, но это поле для комментариев не позволяет вводить столько символов. Я новичок в stackoverflow, мне нужно задать новый вопрос или есть способ продолжить эту тему? - person Laurens Ruben; 21.11.2017
comment
@LaurensRuben Если он отвечает на ваш вопрос, вы также должны пометить его как ответ, и да, если это другой вопрос, вы можете создать для него новую тему. - person Quima; 21.11.2017
comment
@LaurensRuben Давайте закончим этот вопрос и зададим другой вопрос. Разместите ссылку на него в этих комментариях. - person GisMofx; 21.11.2017
comment
ссылка на мой следующий вопрос: stackoverflow .com/questions/47410051/ - person Laurens Ruben; 21.11.2017