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

Добавлено:
15 янв 2010 09:59
ANovikov
Здравствуйте, уважаемые пользователи.
Возникла проблема с нахождением ограничений (constraint), наложенных на выбранный Продукт. Пробовал покопаться в свойствах Ограничений - безрезультатно. Макросы это тоже не записывают. Так что пока никак не получается. Самое обидное, что и идей то нет. Вобщем, прошу помочь.
Re: Как найти Constraint'ы, связанные с выбранным Продуктом?

Добавлено:
15 янв 2010 11:24
Artem
viewtopic.php?f=140&t=1558 Придется наверное идти не от детали/сборки, а от констрейнов
Re: Как найти Constraint'ы, связанные с выбранным Продуктом?

Добавлено:
15 янв 2010 13:39
ANovikov
Супер. Я кстати заходил на эту тему, когда искал. Но видимо не сильно присмотрелся к решению. Спасибо.
Только я чуток видоизменил код. Потому что у меня к механизму не привязано.
Здесь выводятся все констрейнты из корневого продукта и входящие в них элементы и парты.
- Код: Выделить всё
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
Re: Как найти Constraint'ы, связанные с выбранным Продуктом?

Добавлено:
30 мар 2011 13:48
Vladimir
Добрый день.
В САА RADE есть объект CATICst – Constraint, есть ли возможность извлечь информацию и сохранить (например в текстовом файле) достаточную для создания его последующего аналогичной сборке функцией CreateConstraintIn.
С переменные iOwner, iType, iValue, iMode я представляю где взять. А вот в переменной iElemList я не представляю, как сохранить список объектов.