Создание ограничений (Constraints) в чертежах на VB

Программирование для CATIA.

Создание ограничений (Constraints) в чертежах на VB

Сообщение Wireless_Fidelity » 20 ноя 2010 19:23

Здравствуйте.

Вопрос касается программирования на VB (с использованием Automation API). Сначала предоставлю описание ситуации с тем, чтобы посетители форума могли воспроизвести проблему или узнать для себя что-то новое.
При редактировании эксизов (в модуле Sketcher) имеется возможность создания ограничений (Constraints) с помощью соответствующих команд. Для того, чтобы запрограммировать этот процесс можно воспользоваться объектом класса Constraints, который имеется у каждого объекта класса Sketch. Добавление новых ограничений происходит с помощью трёх методов: AddBiEltCst, AddMonoEltCst, AddTriEltCst - каждому из которых передаются объекты класса CATIAReference. Эти объекты можно получить, используя соответствующие методы объектов классов Part и Product.

Такая же возможность создания ограничений доступна пользователю при редактировании чертежных документов (CATDrawing). Однако, в этом случае при программировании возникают проблемы. Во-первых, объект Constraints напрямую никак не привязан ни к объектам класса DrawingView, ни к DrawingSheet. Кроме того, совершенно непонятно, как же получать объекты класса CATIAReference для объектов чертежа, если методы из Part'а и Product'а по понятным причинам недоступны, а обращение к свойству Reference при выделении геометрического объекта с чертежа вызывает ошибку:

Dim MyRef as Reference
Set MyRef = CATIA.ActiveDocument.Selection.Item(1).Reference ' Method Reference failed
Set MyRef = CATIA.ActiveDocument.Selection.Item2(1).Reference ' Method Reference failed

Вопрос: как на VB создавать ограничения в чертёжных документах?
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Создание ограничений (Constraints) в чертежах на VB

Сообщение booSter » 21 ноя 2010 15:25

Wireless_Fidelity писал(а):... объект Constraints напрямую никак не привязан ни к объектам класса DrawingView ...


Возможно "прокатит" вот такой твик:
Код: Выделить всё
...
Dim dvwMyDrwView As DrawingView
Set dvwMyDrwView=...
...
Dim fctMy2DFactory As Factory2D
Set fctMy2DFactory = dvwMyDrwView.Factory2D
Dim sctMySketch As Sketch
Set sctMySketch=fctMy2DFactory.Parent
Dim cslMyConstraints As Coonstraints
Set cslMyConstraints=sctMySketch.Constraints
...
Сделаешь доброе дело за деньги - скажут спасибо,
Сделаешь бесплатно - сядут на шею...
©пёрто
Аватара пользователя
booSter
Moderator
 
Сообщения: 227
Images: 15
Зарегистрирован: 09 фев 2008 16:48
Откуда: Minsk

Re: Создание ограничений (Constraints) в чертежах на VB

Сообщение Wireless_Fidelity » 21 ноя 2010 17:53

У меня получилось доступиться через GetItem у DrawingViews. Проблема сейчас именно в параметрах методов добавления ограничений, а именно в получении CATIAReference для геометрических элементов из чертежа.
Spoiler :
Код: Выделить всё
'===============================================================================
'   Retrieves Constraints collection for drawing view
'===============================================================================
Private Function GetViewConstraints(ByVal DrwView As DrawingView) As Constraints

    ' Define default value to return
    Set GetViewConstraints = Nothing

    ' check input data
    If (DrwView Is Nothing) Then
        Exit Function
    End If
   
    ' Get sketch corresponding to view
    Dim ViewSketch As Sketch
    Dim colViews As DrawingViews
    Dim colConstraints As Constraints
   
    ' retrieve views collection, that contain input view
    On Error Resume Next
    Set colViews = DrwView.Parent
    If (Err.Number <> 0) Then
        Exit Function
    End If
   
    ' get access to sketch using input view's name
    On Error Resume Next
    Set ViewSketch = colViews.Item(DrwView.Name)
    If (Err.Number <> 0) Then
        Exit Function
    End If
   
    ' get constraints collection
    On Error Resume Next
    Set colConstraints = ViewSketch.Constraints
    If (Err.Number <> 0) Then
        Exit Function
    End If
   
    ' return constraints collection
    Set GetViewConstraints = colConstraints

End Function
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11


Вернуться в CAA-RADE

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron