Как найти Constraint'ы, связанные с выбранным Продуктом?

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

Как найти Constraint'ы, связанные с выбранным Продуктом?

Сообщение ANovikov » 15 янв 2010 09:59

Здравствуйте, уважаемые пользователи.

Возникла проблема с нахождением ограничений (constraint), наложенных на выбранный Продукт. Пробовал покопаться в свойствах Ограничений - безрезультатно. Макросы это тоже не записывают. Так что пока никак не получается. Самое обидное, что и идей то нет. Вобщем, прошу помочь.
ANovikov
Новичок
Новичок
 
Сообщения: 9
Зарегистрирован: 18 ноя 2009 14:11

Re: Как найти Constraint'ы, связанные с выбранным Продуктом?

Сообщение Artem » 15 янв 2010 11:24

viewtopic.php?f=140&t=1558 Придется наверное идти не от детали/сборки, а от констрейнов
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Как найти Constraint'ы, связанные с выбранным Продуктом?

Сообщение ANovikov » 15 янв 2010 13:39

Супер. Я кстати заходил на эту тему, когда искал. Но видимо не сильно присмотрелся к решению. Спасибо.


Только я чуток видоизменил код. Потому что у меня к механизму не привязано.
Здесь выводятся все констрейнты из корневого продукта и входящие в них элементы и парты.

Код: Выделить всё
Sub CATMain()

Dim productDocument1 As ProductDocument
Set productDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = productDocument1.Selection

Dim cc As Constraint
Dim Data As String
Dim InsN As String
Dim MyName As String
Dim MyFatherName As String

Dim MyProduct As Product
Dim MyPart As Part
Dim MyElemF As AnyObject
Dim MyElem As Reference

Dim Str As String

On Error Resume Next
    For j = 1 To productDocument1.Product.Connections("CATIAConstraints").Count
        Set cc = productDocument1.Product.Connections("CATIAConstraints").Item(j)
        Str = Str + cc.Name + Chr(13)
        For k = 1 To 3
            Err.Clear
            Set MyElem = cc.GetConstraintElement(k)
            If Err.Number <> 0 Then
                Err.Clear
                Exit For
            End If
            InsN = Left(Right(MyElem.DisplayName, Len(MyElem.DisplayName) - InStr(MyElem.DisplayName, "/")), _
            InStr(Right(MyElem.DisplayName, Len(MyElem.DisplayName) - InStr(MyElem.DisplayName, "/")), "/") - 1)
            selection1.Clear
            Call selection1.Add(MyElem)
            MyFatherName = Left(Right(CATIA.StatusBar, Len(CATIA.StatusBar) - InStr(CATIA.StatusBar, "/")), _
            InStr(Right(CATIA.StatusBar, Len(CATIA.StatusBar) - InStr(CATIA.StatusBar, "/")), "/") - 1)
            MyName = Left(CATIA.StatusBar, InStr(CATIA.StatusBar, "/") - 1)
            Set MyProduct = productDocument1.Product.Products.Item(InsN)
            Set MyPart = MyProduct.ReferenceProduct.Parent.Part
            'Set MyElemF = MyPart.FindObjectByName(MyFatherName)

            Str = Str + MyProduct.PartNumber + "  " + MyElem.DisplayName + "   " + MyPart.Name + Chr(13)
        Next
    Next

MsgBox Str
End Sub
ANovikov
Новичок
Новичок
 
Сообщения: 9
Зарегистрирован: 18 ноя 2009 14:11

Re: Как найти Constraint'ы, связанные с выбранным Продуктом?

Сообщение Vladimir » 30 мар 2011 13:48

Добрый день.

В САА RADE есть объект CATICst – Constraint, есть ли возможность извлечь информацию и сохранить (например в текстовом файле) достаточную для создания его последующего аналогичной сборке функцией CreateConstraintIn.
С переменные iOwner, iType, iValue, iMode я представляю где взять. А вот в переменной iElemList я не представляю, как сохранить список объектов.
Vladimir
Новичок
Новичок
 
Сообщения: 31
Images: 0
Зарегистрирован: 10 фев 2008 15:44
Откуда: TLT


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

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

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